:root{--bg:#eff1ed;--surface:#fff;--surface2:#f7f8f6;--ink:#23281f;--ink-soft:#5a6154;--line:#d8dcd4;--line-soft:#e6e9e3;--saw:#a06b10;--saw-bg:#f5ead2;--paint:#1d4e89;--paint-bg:#dfe8f4;--ok:#2e6b34;--ok-bg:#dfecdb;--warn:#a3391f;--warn-bg:#f6e2da;--neutral-bg:#e8eae5;--accent:#1d4e89;--radius:6px}@media (prefers-color-scheme:dark){:root{--bg:#171a16;--surface:#21251f;--surface2:#1b1e19;--ink:#e3e6df;--ink-soft:#9aa192;--line:#3a4036;--line-soft:#2b3028;--saw:#d9a544;--saw-bg:#3a3120;--paint:#7aa7dd;--paint-bg:#1d2a3c;--ok:#8cc48f;--ok-bg:#22301f;--warn:#e08a70;--warn-bg:#3a231b;--neutral-bg:#2a2e27;--accent:#7aa7dd}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Archivo,Segoe UI,Arial,sans-serif;font-size:14.5px;line-height:1.45}header.site{flex-wrap:wrap;align-items:baseline;gap:14px;padding:18px 22px 0;display:flex}header.site h1{letter-spacing:-.01em;margin:0;font-size:21px;font-weight:800}header.site .sub{color:var(--ink-soft);font-size:13px}nav.site{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:2px;padding:12px 22px 0;display:flex}nav.site a{color:var(--ink-soft);border-bottom:3px solid #0000;padding:8px 12px 9px;font-weight:600;text-decoration:none}nav.site a:hover{color:var(--ink)}nav.site a.active{color:var(--ink);border-bottom-color:var(--accent)}main{max-width:1080px;padding:18px 22px 60px}h2{margin:22px 0 10px;font-size:16px;font-weight:800}h2:first-child{margin-top:4px}.hint{color:var(--ink-soft);max-width:68ch;margin:4px 0 12px;font-size:13px}table{border-collapse:collapse;background:var(--surface);border:1px solid var(--line);font-variant-numeric:tabular-nums;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line-soft);vertical-align:top;padding:7px 10px}th{color:var(--ink-soft);background:var(--surface2);font-size:12.5px;font-weight:600}tr:last-child td{border-bottom:none}td.num,th.num{text-align:right}.sortbtn{all:unset;cursor:pointer;box-sizing:border-box;width:100%;font:inherit;color:inherit;text-align:inherit;display:block}.sortbtn:hover{color:var(--ink)}.sortbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}th[aria-sort]{color:var(--ink);white-space:nowrap}th[aria-sort=ascending] .sortbtn:after{content:" ▲";color:var(--accent);font-size:9px}th[aria-sort=descending] .sortbtn:after{content:" ▼";color:var(--accent);font-size:9px}thead tr.colfilter td{background:var(--surface2);border-bottom:1px solid var(--line-soft);padding:0 6px 6px}tr.colfilter input{box-sizing:border-box;text-align:left;width:100%;min-width:0;padding:3px 6px;font-size:12.5px}tr.colfilter .range{justify-content:flex-end;gap:4px;display:flex}tr.colfilter .range input{text-align:right;max-width:72px}.ctxmenu{z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:150px;padding:4px;position:fixed;box-shadow:0 6px 20px #0000002e}.ctxmenu button{all:unset;box-sizing:border-box;cursor:pointer;border-radius:4px;width:100%;padding:6px 12px 6px 8px;font-size:13px;display:block}.ctxmenu button:before{content:"✓";visibility:hidden;width:18px;color:var(--accent);display:inline-block}.ctxmenu button[aria-checked=true]:before{visibility:visible}.ctxmenu button:hover,.ctxmenu button:focus-visible{background:var(--surface2)}.chip{white-space:nowrap;border-radius:99px;padding:1px 8px 2px;font-size:12px;font-weight:600;display:inline-block}.chip.saw{background:var(--saw-bg);color:var(--saw)}.chip.paint{background:var(--paint-bg);color:var(--paint)}.chip.ok{background:var(--ok-bg);color:var(--ok)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.plain{background:var(--neutral-bg);color:var(--ink-soft)}button.act{font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer;padding:5px 11px;font-size:13px;font-weight:600}button.act:hover{border-color:var(--ink-soft)}button.act.primary{background:var(--accent);border-color:var(--accent);color:#fff}@media (prefers-color-scheme:dark){button.act.primary{color:#10151c}}button.act.danger{background:var(--warn);border-color:var(--warn);color:#fff}@media (prefers-color-scheme:dark){button.act.danger{color:#10151c}}button.act:disabled{opacity:.45;cursor:default}input,select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px;font-size:13.5px}input[type=number]{text-align:right;width:90px}.bar{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 12px;display:flex}.bar label{color:var(--ink-soft);font-size:13px}td .indent1{padding-left:22px}td .indent2{padding-left:44px}td .indent3{padding-left:66px}tr.drop-over td{background:var(--paint-bg)}.drop-over{outline:2px dashed var(--paint);outline-offset:-2px}.loading{color:var(--ink-soft);padding:30px 0}.cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.card h3{margin:0 0 6px;font-size:14.5px;font-weight:800}.kv{justify-content:space-between;gap:10px;padding:2px 0;font-size:13px;display:flex}.kv span:first-child{color:var(--ink-soft)}.inlineform{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.cards.roomy{grid-template-columns:repeat(auto-fill,minmax(460px,1fr))}.userbar{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;font-size:13px;display:inline-flex}.authbox{max-width:380px;margin:40px auto}.authbox form{gap:10px;display:grid}.authbox input{width:100%}.authbox label{color:var(--ink-soft);gap:4px;font-size:13px;display:grid}.card.wide{grid-column:1/-1}table.usage{font-size:12.5px}table.usage th,table.usage td{padding:5px 7px}.subform{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface2);margin-top:10px;padding:10px 12px}.subform h4{margin:0 0 6px;font-size:13.5px;font-weight:800}.subform table{margin-top:6px}.var-pos{color:var(--warn);font-weight:600}.var-neg{color:var(--ok);font-weight:600}.bar label.check,.inlineform label.check{color:var(--ink);align-items:center;gap:5px;display:inline-flex}.tablewrap{overflow-x:auto}.toast{background:var(--ink);color:var(--bg);border-radius:var(--radius);opacity:0;pointer-events:none;max-width:90vw;padding:9px 16px;font-size:13.5px;transition:opacity .18s;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}.muted{color:var(--ink-soft)}.small{font-size:12.5px}@media (max-width:640px){main,header.site,nav.site{padding-left:12px;padding-right:12px}th,td{padding:6px 7px}.cards.roomy{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.toast{transition:none}}a.act{color:var(--ink);font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:5px 11px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}a.act:hover{border-color:var(--ink-soft)}.pkform{margin-top:6px}.pkform table td,.pkform table th{padding-top:3px;padding-bottom:3px}.picklist{flex-wrap:wrap;gap:6px 16px;margin-top:8px;display:flex}.picklist label.check{align-items:center;gap:5px;font-size:13px;display:inline-flex}.labels{flex-wrap:wrap;gap:16px;margin-top:12px;display:flex}.label{box-sizing:border-box;color:#000;border:1px solid var(--line);background:#fff;border-radius:4px;flex-direction:column;gap:3mm;width:105mm;min-height:148mm;padding:8mm 7mm;display:flex}.label-head{border-bottom:2px solid #000;flex-direction:column;gap:1mm;padding-bottom:2mm;display:flex}.label-head b{letter-spacing:-.01em;font-size:20px;font-weight:800}.label-head span{font-size:13px}.label-dims{font-size:22px;font-weight:800}.label-qty{justify-content:space-between;gap:8px;font-size:17px;display:flex}.label-qty b{font-size:30px;font-weight:800}.label-kv{background:0 0;border:0;width:100%;font-size:12.5px}.label-kv td{color:#000;vertical-align:top;background:0 0;border:0;padding:1.2mm 0}.label-kv td:first-child{color:#444;width:28mm}.label-code{justify-content:center;margin-top:auto;display:flex}@media print{@page{size:A6;margin:0}header.site,nav.site,.noprint,.toast{display:none!important}body{background:#fff}main{max-width:none;padding:0}.labels{margin:0;display:block}.label{page-break-after:always;break-after:page;border:0;border-radius:0;width:105mm;height:148mm;min-height:0}}.labels.small{gap:8px}.label.small{justify-content:space-between;gap:.5mm;width:50mm;height:25mm;min-height:0;padding:1.5mm 2mm}.label.small .label-serial{white-space:nowrap;text-overflow:ellipsis;font-size:9.5px;font-weight:800;overflow:hidden}.label.small .label-item{white-space:nowrap;text-overflow:ellipsis;font-size:7.5px;overflow:hidden}.label.small .label-code{height:13mm;margin:0}.label.small .label-code svg{width:auto;max-width:46mm;height:13mm}@page unit{size:50mm 25mm;margin:0}@media print{.labels.small{display:block}.label.small{page:unit;page-break-after:always;break-after:page;border:0;border-radius:0;width:50mm;height:25mm}}.delivery{color:#000;border:1px solid var(--line);background:#fff;border-radius:4px;max-width:186mm;margin-top:12px;padding:14mm 12mm}.delivery h1{margin:0 0 2mm;font-size:20px}.delivery table{background:0 0;width:100%;margin-top:4mm;font-size:12.5px}.delivery th,.delivery td{color:#000;background:0 0;border-color:#999}.delivery .kv2{grid-template-columns:1fr 1fr;gap:1mm 10mm;margin-top:3mm;font-size:13px;display:grid}.delivery .signs{grid-template-columns:1fr 1fr;gap:16mm;margin-top:18mm;font-size:12.5px;display:grid}.delivery .signs div{border-top:1px solid #000;padding-top:1.5mm}@page note{size:A4;margin:12mm}@media print{.delivery{page:note;border:0;border-radius:0;max-width:none;margin:0;padding:0}}fieldset.bare{border:0;min-width:0;margin:0;padding:0}:is(body:has(.floor) header.site,body:has(.floor) nav.site){display:none}body:has(.floor) main{max-width:none;padding:0}.floor{max-width:640px;margin:0 auto;padding:10px 14px 84px;font-size:16px}.floor h2{font-size:19px}.floor button.act{min-height:44px;padding:0 16px;font-size:16px}.floor button.act.big{width:100%;min-height:52px;margin:6px 0;font-size:18px}.floor .fl-top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.floor .fl-top b{font-size:17px}.floor .fl-seg{gap:6px;margin:6px 0 12px;display:flex}.floor .fl-seg button{flex:1}.floor .fl-seg button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.floor .fl-task{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:100%;min-height:64px;font:inherit;color:inherit;cursor:pointer;margin-bottom:8px;padding:12px 14px;display:block}.floor .fl-task b{font-size:17px}.floor .fl-task small{color:var(--ink-soft);margin-top:3px;display:block}.floor .fl-tabs{background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:40;display:flex;position:fixed;bottom:0;left:0;right:0}.floor .fl-tabs button{min-height:58px;font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;flex:1;font-size:15px}.floor .fl-tabs button[aria-pressed=true]{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent);font-weight:800}.floor .fl-scan input{box-sizing:border-box;width:100%;min-height:52px;padding:0 12px;font-size:20px}.floor .fl-banner{border-radius:var(--radius);margin:10px 0;padding:12px 14px;font-weight:700}.floor .fl-banner.hold{background:var(--warn-bg);color:var(--warn)}.floor .fl-banner.ok{background:var(--ok-bg);color:var(--ok)}.floor .fl-sheet{background:var(--bg,#f4f3ef);z-index:50;padding:10px 14px 96px;position:fixed;inset:0;overflow-y:auto}.floor .fl-sheet>div{max-width:640px;margin:0 auto}.floor .fl-sheet section{margin:14px 0}.floor .fl-sheet section>h3{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:0 0 6px;font-size:13px}.floor .fl-unit{border-bottom:1px solid var(--line);align-items:center;gap:10px;min-height:44px;display:flex}.floor .fl-unit input[type=checkbox]{width:26px;height:26px}.floor .fl-actions{background:var(--surface);border-top:1px solid var(--line);padding:8px 14px calc(8px + env(safe-area-inset-bottom));z-index:55;position:fixed;bottom:0;left:0;right:0}.floor .fl-actions>div{max-width:640px;margin:0 auto}.floor video{border-radius:var(--radius);background:#000;width:100%}button.linklike{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.unitdoc{color:#000;border:1px solid var(--line);background:#fff;border-radius:4px;max-width:186mm;margin-top:12px;padding:12mm}.unitdoc h1{margin:0 0 2mm;font-size:19px}.unitdoc h2{margin:5mm 0 1mm;font-size:15px}.unitdoc table{background:0 0;width:100%;margin-top:2mm;font-size:11.5px}.unitdoc th,.unitdoc td{color:#000;background:0 0;border-color:#999;padding:2px 4px}.unitdoc .unit{break-inside:avoid;border-top:1px solid #999;margin-top:3mm;padding-top:2mm}@page doc{size:A4;margin:12mm}@media print{.unitdoc{page:doc;border:0;border-radius:0;max-width:none;margin:0;padding:0}}.gantt{border:1px solid var(--line);background:var(--surface);border-radius:4px}.gantt .g-grid{stroke:var(--line);stroke-width:1px}.gantt .g-grid.strong{stroke:var(--ink-soft);stroke-opacity:.35}.gantt .g-tick{fill:var(--ink-soft);font-size:10px}.gantt .g-today{stroke:var(--accent);stroke-width:2px;stroke-dasharray:3 3}.gantt .g-group{fill:var(--ink-soft);fill-opacity:.08}.gantt .g-group-label{fill:var(--ink);font-size:12px;font-weight:700}.gantt .g-label{fill:var(--ink);font-size:11px}.gantt .g-bar{fill:var(--accent);fill-opacity:.75}.gantt .g-bar.ready{fill-opacity:.9}.gantt .g-bar.in_progress{fill:var(--ok)}.gantt .g-bar.planned,.gantt .g-bar.blocked{fill-opacity:.45}.gantt .g-bar.late,.gantt .g-bar.over{fill:var(--warn);fill-opacity:.9}.gantt .g-bar.pinned{stroke:var(--ink);stroke-width:1.5px}.gantt .g-bar.movable{cursor:grab}.gantt .g-dep{fill:none;stroke:var(--ink-soft);stroke-width:1px;stroke-opacity:.6}.gantt .g-dep.bad{stroke:var(--warn);stroke-opacity:1}.tiles{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin:10px 0 16px;display:grid}.tile{text-align:left;border:1px solid var(--line);background:var(--surface);cursor:pointer;font:inherit;color:inherit;border-radius:6px;padding:10px 12px}.tile b{font-size:26px;line-height:1.1;display:block}.tile.warn b{color:var(--warn)}.tile[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.kanban{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;display:grid}.kanban-col{background:var(--surface2);border:1px solid var(--line-soft);border-radius:var(--radius);min-width:0;padding:8px}.kanban-col h3{margin:0 0 6px;font-size:13px}.kanban-card{text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;width:100%;font:inherit;color:inherit;margin-bottom:6px;padding:8px;display:block}.progress{background:var(--neutral-bg);border-radius:3px;height:5px;margin-top:4px;display:block;overflow:hidden}.progress>span{background:var(--ok);height:100%;display:block}.report .rbar{background:var(--neutral-bg);border-radius:2px;height:4px;margin-top:2px;display:block}.report .rbar>span{background:var(--accent);border-radius:2px;height:100%;display:block}.report tfoot td{border-top:2px solid var(--line)}@page report{size:A4 landscape;margin:12mm}@media print{.report{page:report}.report table{font-size:10.5px}.report .rbar{display:none}}
