/* extroCut — workshop-friendly UI. (c) extroMind */
:root{
  --bg:#f4f1ea; --panel:#fffdf9; --panel2:#f8f5ee; --line:#e3ddcf; --line2:#d3cab6;
  --ink:#1f2421; --ink2:#5b6159; --muted:#8a8f86;
  --brand:#155e4f; --brand2:#0f4a3e; --brand-soft:#dcefe8; --accent:#c8772b; --accent-soft:#f7e6d3;
  --ok:#2b8a3e; --warn:#b7791f; --err:#c92a2a; --sheet:#f6eedd;
  --r:12px; --r2:8px; --shadow:0 1px 2px rgba(40,30,10,.06),0 4px 14px rgba(40,30,10,.06);
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",Ubuntu,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --top:56px; --nav:212px; --bnav:64px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#131614; --panel:#1b1f1c; --panel2:#202521; --line:#2d332e; --line2:#3b433d; --ink:#e9ece7; --ink2:#b8beb5; --muted:#868d84;
  --brand:#3fb393; --brand2:#5fd0ae; --brand-soft:#1d3a32; --accent:#e39a52; --accent-soft:#3a2b1b; --sheet:#3a3428; color-scheme:dark}}
:root[data-theme="dark"]{--bg:#131614; --panel:#1b1f1c; --panel2:#202521; --line:#2d332e; --line2:#3b433d; --ink:#e9ece7; --ink2:#b8beb5; --muted:#868d84;
  --brand:#3fb393; --brand2:#5fd0ae; --brand-soft:#1d3a32; --accent:#e39a52; --accent-soft:#3a2b1b; --sheet:#3a3428; color-scheme:dark}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 var(--font);-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
svg{width:20px;height:20px;flex:none}
code{font-family:var(--mono);font-size:.86em;background:var(--panel2);border:1px solid var(--line);padding:0 4px;border-radius:4px}
h1{font-size:1.45rem;margin:0;letter-spacing:-.01em} h2{font-size:1.05rem;margin:0 0 12px;display:flex;align-items:center;gap:8px} h3{font-size:1rem}
.muted{color:var(--muted)} .sm{font-size:.82rem} .hint{color:var(--muted);font-size:.8rem} .bad{color:var(--err);font-weight:600}

/* top bar */
.topbar{position:sticky;top:0;z-index:30;height:var(--top);display:flex;align-items:center;gap:12px;padding:0 14px;padding-top:env(safe-area-inset-top);background:var(--panel);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;font-size:1.15rem;letter-spacing:-.01em;white-space:nowrap}
.brand img{border-radius:8px}
.brand b{color:var(--brand)}
.proj-name{flex:1;min-width:60px;max-width:420px;border:1px solid transparent;background:transparent;padding:7px 10px;border-radius:var(--r2);font-weight:600}
.proj-name:hover{border-color:var(--line)} .proj-name:focus{border-color:var(--brand);outline:none;background:var(--panel2)}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.status{font-size:.82rem;padding:5px 10px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);color:var(--ink2);white-space:nowrap;display:flex;align-items:center;gap:6px}
.status.ok{background:var(--brand-soft);color:var(--brand);border-color:transparent;font-weight:600}
.status.warn{background:#fff1d6;color:#8a5a00;border-color:transparent} .status.stale{opacity:.7}
.spin{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:sp .7s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r2);border:1px solid var(--line2);background:var(--panel);cursor:pointer;min-height:40px;font-weight:550;white-space:nowrap;transition:background .15s,border-color .15s}
.btn:hover{background:var(--panel2);border-color:var(--ink2)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand2);border-color:var(--brand2)}
:root[data-theme="dark"] .btn.primary{color:#062018}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn.primary{color:#062018}}
.btn.ghost{border-color:transparent;background:transparent;color:var(--ink2)}
.btn.big{min-height:48px;padding:10px 20px;font-size:1rem}
.btn.wide{width:100%;justify-content:center;margin-top:14px}
.ib{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--r2);border:1px solid transparent;background:transparent;cursor:pointer;color:var(--ink2)}
.ib:hover{background:var(--panel2);border-color:var(--line)}
.ib.sm{width:32px;height:32px} .ib.sm svg{width:17px;height:17px}
.ib.danger:hover{color:var(--err)}
.chip{border:1px solid var(--line2);background:var(--panel);border-radius:99px;padding:4px 11px;cursor:pointer;font-size:.85rem}
.chip:hover{border-color:var(--brand);color:var(--brand)}
.pill{display:inline-block;font-size:.75rem;padding:2px 8px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-weight:600}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* layout */
.shell{display:flex;min-height:calc(100vh - var(--top))}
.sidenav{width:var(--nav);flex:none;padding:14px 10px;border-right:1px solid var(--line);background:var(--panel);position:sticky;top:var(--top);height:calc(100vh - var(--top));display:flex;flex-direction:column;gap:3px}
.sidenav button{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--r2);border:0;background:transparent;cursor:pointer;color:var(--ink2);font-weight:550;text-align:left}
.sidenav button:hover{background:var(--panel2);color:var(--ink)}
.sidenav button.active{background:var(--brand-soft);color:var(--brand)}
.sidenav .cnt{margin-left:auto;font-style:normal;font-size:.75rem;color:var(--muted)}
.side-proj{margin-top:14px;padding-top:10px;border-top:1px solid var(--line);flex:1;min-height:0;display:flex;flex-direction:column}
.sp-h{display:flex;align-items:center;justify-content:space-between}
.sidenav .sp-title{padding:6px 12px;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);gap:8px}
.sidenav .sp-title svg{width:16px;height:16px}
.sp-list{overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:2px;padding-right:2px}
.sidenav .sp-item{flex-direction:column;align-items:flex-start;gap:0;padding:7px 12px;border-left:3px solid transparent;border-radius:0 var(--r2) var(--r2) 0}
.sp-item b{font-weight:600;font-size:.88rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.sp-item small{font-size:.74rem;color:var(--muted)}
.sidenav .sp-item.cur{background:var(--panel2);border-left-color:var(--accent)}
.sidenav .sp-more{font-size:.8rem;color:var(--brand);padding:6px 12px}
.side-proj + button{margin-top:8px}
.proj-search{max-width:420px;margin-bottom:14px}
.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:14px}
.pcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);display:flex;flex-direction:column}
.pcard.cur{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.pc-open{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;border:0;background:transparent;padding:14px 14px 8px;cursor:pointer;color:var(--ink)}
.pc-open b{font-size:1.02rem}
.pc-open small{font-size:.82rem;color:var(--ink2)}
.pc-act{display:flex;align-items:center;gap:2px;justify-content:flex-end;padding:4px 8px 8px;border-top:1px solid var(--line)}
.pc-act .pill{margin-right:auto}
.side-contact{display:flex;flex-direction:column;gap:2px;padding:10px 12px 2px;margin-top:8px;border-top:1px solid var(--line);font-size:.8rem;color:var(--muted)}
.side-contact b{color:var(--ink2)}.side-contact a{color:var(--brand);text-decoration:none}
main{flex:1;min-width:0;outline:none}
.page{padding:22px clamp(14px,3vw,34px) 40px;max-width:1500px}
.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.sub{margin:4px 0 0;color:var(--ink2)}
.tools{display:flex;gap:8px;flex-wrap:wrap}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);margin-bottom:16px}
.bottomnav{display:none}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding-top:12vh;color:var(--ink2)}
.empty svg.big{width:56px;height:56px;color:var(--brand)}
.alert{padding:11px 14px;border-radius:var(--r2);margin-bottom:14px;font-size:.92rem}
.alert.warn{background:#fff5df;color:#7a5100;border:1px solid #f2d79b}
.alert.err{background:#fde8e8;color:#8c1d1d;border:1px solid #f3b9b9}
:root[data-theme="dark"] .alert.warn,:root[data-theme="dark"] .alert.err{background:var(--panel2);color:var(--ink)}

/* forms */
input,select,textarea{background:var(--panel);border:1px solid var(--line2);border-radius:var(--r2);padding:8px 10px;min-height:40px;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
input.bad{border-color:var(--err);box-shadow:0 0 0 3px #fde8e8}
input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--brand)}
input[type=color]{width:38px;height:38px;padding:2px;cursor:pointer}
textarea{font-family:var(--mono);font-size:.85rem}
.fld{margin-bottom:12px} .fld label{display:block;font-size:.82rem;color:var(--ink2);margin-bottom:4px;font-weight:550}
.fld.inline{display:flex;align-items:center;gap:8px;margin:0} .fld.inline label{margin:0;white-space:nowrap}
.fld.chk label{display:flex;gap:8px;align-items:center;color:var(--ink);font-size:.92rem}
.w5{width:90px}
.tgl{display:flex;align-items:center;gap:9px;cursor:pointer;margin:8px 0;font-size:.93rem}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 12px}
.stepper{display:flex;align-items:stretch}
.stepper button{width:40px;border:1px solid var(--line2);background:var(--panel2);cursor:pointer;font-size:1.15rem}
.stepper button:first-child{border-radius:var(--r2) 0 0 var(--r2)} .stepper button:last-child{border-radius:0 var(--r2) var(--r2) 0}
.stepper input{border-radius:0;text-align:center;border-left:0;border-right:0}
details.adv{margin:4px 0 14px;border-top:1px dashed var(--line2);padding-top:10px}
details.adv summary{cursor:pointer;color:var(--brand);font-weight:600;margin-bottom:10px}

/* parts table */
.ptable{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.phead,.prow{display:grid;grid-template-columns:34px minmax(120px,1.5fr) 92px 12px 92px 58px minmax(130px,1.2fr) 40px 56px minmax(110px,1fr) 72px;gap:6px;align-items:center;padding:6px 10px}
.phead{background:var(--panel2);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;border-bottom:1px solid var(--line)}
.phead small{text-transform:none;letter-spacing:0}
.prow{border-bottom:1px solid var(--line)}
.prow:last-child{border-bottom:0}
.prow:focus-within{background:var(--panel2)}
.prow.flash{animation:fl 1.4s}
@keyframes fl{0%,40%{background:var(--accent-soft)}}
.prow input,.prow select{min-height:36px;padding:6px 8px}
.pno{color:var(--muted);font-size:.8rem;text-align:right;font-variant-numeric:tabular-nums}
.f-len,.f-qty{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.x{color:var(--muted);text-align:center}
.grain-btn{width:36px;height:36px;border-radius:var(--r2);border:1px solid var(--line2);background:var(--panel);color:var(--line2);cursor:pointer;display:grid;place-items:center}
.grain-btn.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.f-edge{display:grid;place-items:center;color:var(--ink2)}
.edge-ic{width:52px;height:32px}
.ehit{cursor:pointer} .ehit:hover{stroke:rgba(21,94,79,.25)}
.row-act{display:flex;gap:2px;justify-content:flex-end}
.add-row{display:flex;gap:10px;margin:14px 0;flex-wrap:wrap}
.legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:.85rem;color:var(--ink2)}
.legend span{display:inline-flex;align-items:center;gap:6px} .legend i{width:18px;height:4px;border-radius:2px;display:inline-block}

/* modules */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.tpl{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:12px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);cursor:pointer;color:var(--ink)}
.tpl svg{width:40px;height:40px;color:var(--brand)}
.tpl small{color:var(--muted);font-size:.78rem;line-height:1.3}
.tpl:hover{border-color:var(--brand)}
.tpl.active{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}
.mod-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px}
.prev-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.sketch{width:auto;height:auto;color:var(--ink2);max-height:150px}
.mod-list{display:grid;gap:6px}
.mod-item{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r2)}
.mod-item span{color:var(--muted);font-size:.85rem;margin-left:auto}

/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;padding:6px 8px;border-bottom:1px solid var(--line)}
.tbl td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl .edge-ic{width:42px;height:24px}
.tbl.stock input{min-height:36px;padding:6px 8px}
.tbl.cost tr.tot td{border-top:2px solid var(--ink);font-size:1.05rem}

/* materials */
.mat-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.mat-h h2{margin:0;margin-right:auto}
.mat-name{flex:1;min-width:180px;font-weight:650}
.presets{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}

/* layouts */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:16px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:0}
.kpi small{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;font-weight:650}
.kpi b{font-size:1.55rem;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.kpi em{font-style:normal;font-size:.78rem;color:var(--ink2);overflow:hidden;text-overflow:ellipsis}
.lay-ctl{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.seg{display:flex;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r2);padding:3px;gap:2px}
.seg button{border:0;background:transparent;padding:6px 11px;border-radius:6px;cursor:pointer;font-size:.86rem;color:var(--ink2)}
.seg button.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow);font-weight:600}
.sheets{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,560px),1fr));gap:14px;margin-bottom:16px}
.sheet-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.sheet-card header{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.sheet-card header span{color:var(--ink2);font-size:.88rem}
.yield{margin-left:auto;font-weight:700;color:var(--brand)!important;background:linear-gradient(90deg,var(--brand-soft) var(--u),transparent var(--u));padding:2px 10px;border-radius:99px;border:1px solid var(--line)}
.svg-wrap{padding:8px}
.sheet-svg{width:100%;height:auto;display:block}
.sheet-svg .pt{cursor:pointer}
.sheet-svg .pt:hover rect{filter:brightness(.95)}
.sheet-svg .pt.hl rect:first-child{stroke:var(--accent);stroke-width:8;filter:brightness(1.03)}
.sheet-card footer{padding:8px 14px;font-size:.82rem;color:var(--muted);border-top:1px solid var(--line)}

/* labels */
.lab-grid{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px}
.lab-preview{position:relative;overflow:hidden;background:var(--panel2);border-radius:var(--r2)}
.lab-scale{transform-origin:0 0;position:absolute;left:0;top:0}
.lab-scale .lpage{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.15)}

/* label & report print styles (also used for preview) */
.lpage{position:relative;overflow:hidden;background:#fff;color:#111;page-break-after:always;break-after:page}
.lslot{position:absolute;overflow:hidden}
.lb{--s:1;position:absolute;inset:calc(1.6mm*var(--s));display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif;color:#000;line-height:1.1}
.lb.bordered{outline:.2mm solid #999;inset:calc(1mm*var(--s));padding:calc(.8mm*var(--s))}
.lb-top{display:flex;justify-content:space-between;gap:2mm;font-size:calc(2mm*var(--s));color:#444;white-space:nowrap;overflow:hidden}
.lb-top span{overflow:hidden;text-overflow:ellipsis}
.lb-top b{background:#000;color:#fff;padding:0 1mm;border-radius:.6mm}
.lb-name{font-weight:700;font-size:calc(3.3mm*var(--s));margin-top:calc(.6mm*var(--s));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-dim{font-weight:800;font-size:calc(4.6mm*var(--s));letter-spacing:-.01em;white-space:nowrap}
.lb-dim small{font-size:.62em;font-weight:600}
.lb-meta{font-size:calc(2.2mm*var(--s));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222}
.lb-bot{margin-top:auto;display:flex;align-items:flex-end;gap:1.5mm;min-height:0}
.lb-edge svg{width:calc(10mm*var(--s));height:calc(6mm*var(--s));color:#000}
.lb-bc{flex:1;display:flex;flex-direction:column;align-items:center;height:calc(8.5mm*var(--s));min-width:0}
.lb-bc svg{flex:1;width:100%;height:100%}
.lb-bc i{font-style:normal;font-size:calc(1.8mm*var(--s));font-family:monospace}
.lb-code{flex:1;font-family:monospace;font-size:calc(2mm*var(--s))}
.lb-no{font-size:calc(2.1mm*var(--s));text-align:right;font-weight:700;line-height:1.15}

.rpage{width:210mm;min-height:297mm;padding:12mm 12mm 10mm;background:#fff;color:#111;font:9.5pt/1.35 Arial,Helvetica,sans-serif;page-break-after:always;break-after:page}
.rpage.flow{min-height:0}
.rp-head{display:flex;justify-content:space-between;border-bottom:2px solid #155e4f;padding-bottom:3mm;margin-bottom:4mm}
.rp-head small{color:#555}.rp-t{text-align:right;font-weight:700;font-size:12pt}
.rp-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:2mm;margin-bottom:5mm}
.rp-kpi{border:1px solid #ccc;border-radius:2mm;padding:2mm 3mm}.rp-kpi small{display:block;color:#666;font-size:7.5pt;text-transform:uppercase}.rp-kpi b{font-size:13pt}
.rp-tbl{width:100%;border-collapse:collapse;margin-bottom:4mm}
.rp-tbl th{background:#eef3f1;text-align:left;font-size:8pt;padding:1.4mm 2mm;border-bottom:1px solid #999}
.rp-tbl td{padding:1.2mm 2mm;border-bottom:.2mm solid #ddd;vertical-align:top}
.rp-tbl .n{text-align:right;white-space:nowrap}
.rp-tbl.sm{font-size:8pt}
.rp-sum{width:55%;margin-left:auto}.rp-sum tr.tot td{border-top:2px solid #111;font-weight:700;font-size:11pt}
.rp-warn{color:#a61e1e;font-weight:600}.rp-note{color:#666;font-size:8pt}
.rp-sheet-h{margin-bottom:2mm}
.rp-diagram svg{width:100%;height:auto;max-height:150mm}
.rp-cols{display:grid;grid-template-columns:1fr 1fr;gap:4mm;margin-top:3mm}
.rpage h3{margin:3mm 0 2mm;font-size:10.5pt;color:#155e4f}

/* modal / sheets / toast */
.modal{position:fixed;inset:0;background:rgba(20,22,20,.45);z-index:60;display:grid;place-items:center;padding:16px}
.modal[hidden]{display:none}
.modal-box{background:var(--panel);border-radius:var(--r);width:min(640px,100%);max-height:90vh;overflow:auto;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.modal-h h2{margin:0}
.modal-f{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}.modal-f .btn.primary{margin-left:auto}
.proj-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.proj-list{display:grid;gap:6px}
.proj{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--r2);padding:4px 6px 4px 4px}
.proj.cur{border-color:var(--brand);background:var(--brand-soft)}
.proj-open{flex:1;text-align:left;border:0;background:transparent;padding:8px;cursor:pointer;display:flex;flex-direction:column}
.proj-open small{color:var(--muted)}
.help li{margin-bottom:8px}
.bottom-sheet{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;width:min(560px,calc(100% - 24px));z-index:50;background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);box-shadow:0 12px 40px rgba(0,0,0,.25);padding:14px}
.bottom-sheet[hidden]{display:none}
.bs-h{display:flex;align-items:center;gap:10px;margin-bottom:10px}.bs-h b{font-size:1.05rem}.bs-h .ib{margin-left:auto}
.bs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-bottom:12px}.bs-grid small{display:block;color:var(--muted);font-size:.75rem}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);opacity:0;background:#222;color:#fff;padding:10px 16px;border-radius:var(--r2);z-index:80;transition:.25s;pointer-events:none;max-width:90vw;font-size:.92rem}
.toast.show{opacity:1;transform:translate(-50%,0)}.toast.err{background:var(--err)}
#print-root{display:none}
.show-sm{display:none}
@media (max-width:900px){.show-sm{display:inline-grid}}

/* responsive */
@media (max-width:1180px){
  .phead{display:none}
  .prow{grid-template-columns:28px 1fr 1fr 14px 1fr 64px;grid-template-areas:"no lab lab lab lab act" ". L L x W qty" ". mat mat mat grain edge" ". mod mod mod mod mod";padding:10px;row-gap:8px}
  .pno{grid-area:no;align-self:center}.f-label{grid-area:lab}.prow .f-len[data-f="L"]{grid-area:L}.x{grid-area:x}.prow .f-len[data-f="W"]{grid-area:W}.f-qty{grid-area:qty}
  .f-mat{grid-area:mat}.grain-btn{grid-area:grain;justify-self:end}.f-edge{grid-area:edge}.f-mod{grid-area:mod}.row-act{grid-area:act}
  .prow input,.prow select{min-height:42px}
}
@media (max-width:900px){
  :root{--top:54px}
  .sidenav{display:none}
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(var(--bnav) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--panel);border-top:1px solid var(--line)}
  .bottomnav button{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.7rem;color:var(--muted);cursor:pointer}
  .bottomnav button svg{width:22px;height:22px}
  .bottomnav button.active{color:var(--brand);font-weight:650}
  main{padding-bottom:calc(var(--bnav) + 20px)}
  .page{padding:16px 14px 30px}
  .mod-grid,.lab-grid{grid-template-columns:1fr}
  .btn span{white-space:nowrap}
  .top-actions .btn.primary span{display:none}
  .hide-sm{display:none}
  .toast{bottom:calc(var(--bnav) + 18px)}
  .bottom-sheet{bottom:calc(var(--bnav) + 10px)}
  .brand span{display:none}
  .kpi b{font-size:1.3rem}
  .tbl.stock th:nth-child(5),.tbl.stock td:nth-child(5){width:40px}
}
@media (max-width:520px){
  .status{display:none}
  .tools .btn span{display:none}
  .tools .btn.primary span{display:inline}
  .tools .btn{padding:8px 11px}
  .kpis{grid-template-columns:1fr 1fr}
  .hint{display:block;margin-top:2px}
  .tbl.stock{font-size:.85rem}.tbl.stock td{padding:4px 3px}
}

/* print */
@media print{
  body.printing > *:not(#print-root):not(#pageStyle){display:none!important}
  body.printing #print-root{display:block}
  body.printing{background:#fff}
  .rpage,.lpage{box-shadow:none;margin:0}
  .rpage:last-child,.lpage:last-child{page-break-after:auto;break-after:auto}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.modal-box.sm{width:min(420px,100%)}
