/* Just Saving Food — Inventory. Brand: orange #FF7B04, red #EA3524, yellow #FDB91A, green #36933A, charcoal #2B2B2B, off-white #FAF8F3 */
@font-face{font-family:"Inter";src:url("../fonts/inter-var.woff2") format("woff2");font-weight:400 800;font-style:normal;font-display:swap}
:root{
  --orange:#FF7B04;--orange-d:#E06A00;--red:#EA3524;--yellow:#FDB91A;--green:#36933A;--green-d:#2A7A2E;
  --char:#2B2B2B;--off:#FAF8F3;--white:#fff;--linen:#ECE8DE;--muted:#5F6152;--olive:#838871;
  --red-t:#FDEBE8;--green-t:#E9F4E9;--yellow-t:#FFF4D6;--orange-t:#FFEBD7;
  --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);
  --hdr-h:54px;--nav-h:60px;--maxw:600px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--off)}
body{margin:0;font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--off);color:var(--char);font-size:16px;line-height:1.35;overscroll-behavior-y:none;-webkit-font-smoothing:antialiased}
body.noscroll{overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit;touch-action:manipulation}
input,select,textarea{font-size:16px} /* >=16px: iOS Safari will not zoom on focus */
button{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
h1,h2,h3,p{margin:0}
.num{font-variant-numeric:tabular-nums}

/* ---------- header / nav ---------- */
.hdr{position:fixed;top:0;left:0;right:0;z-index:20;background:var(--char);color:#fff;padding-top:var(--sat);padding-left:var(--sal);padding-right:var(--sar)}
.hdr-in{max-width:var(--maxw);margin:0 auto;height:var(--hdr-h);display:flex;align-items:center;gap:10px;padding:0 14px}
.hdr-in img{width:34px;height:34px;border-radius:9px;background:var(--off);flex:none}
.hdr h1{font-size:19px;font-weight:800;letter-spacing:-.02em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr .back{background:none;border:0;color:#fff;font-size:15px;font-weight:600;height:44px;padding:0 10px 0 0;display:flex;align-items:center;gap:2px}
.pill-sample{white-space:nowrap;background:var(--yellow);color:var(--char);font-weight:800;font-size:11px;letter-spacing:.04em;text-transform:uppercase;padding:5px 9px;border-radius:99px;flex:none}
.main{max-width:var(--maxw);margin:0 auto;padding:calc(var(--hdr-h) + var(--sat) + 12px) calc(14px + var(--sal)) calc(var(--nav-h) + var(--sab) + 20px) calc(14px + var(--sar))}
.main.has-savebar{padding-bottom:calc(var(--nav-h) + var(--sab) + 92px)}
.nav{overflow:visible;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--white);border-top:1px solid var(--linen);padding-bottom:var(--sab);padding-left:var(--sal);padding-right:var(--sar)}
.nav-in{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);height:var(--nav-h)}
.nav button{background:none;border:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600;position:relative}
.nav button svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.nav button.on{color:var(--char);font-weight:800}
.nav button.on svg{stroke:var(--orange);stroke-width:2.3}
.nav button.on::before{content:"";position:absolute;top:0;left:22%;right:22%;height:3px;border-radius:0 0 3px 3px;background:var(--orange)}
.badge{position:absolute;top:5px;left:calc(50% + 6px);min-width:19px;height:19px;border-radius:10px;background:var(--red);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 5px}
.badge.neutral{background:var(--char)}

/* ---------- generic ---------- */
.card{background:var(--white);border:1px solid var(--linen);border-radius:18px;padding:14px;margin-bottom:12px}
.card h2{font-size:17px;font-weight:800;letter-spacing:-.02em;margin-bottom:8px}
.h-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}
.sec-title{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 2px 8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 20px;border-radius:14px;border:2px solid var(--char);background:var(--white);font-weight:700;font-size:16px;text-align:center}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--orange);border-color:var(--orange);color:var(--char);font-weight:800}
.btn.green{background:var(--green);border-color:var(--green);color:#fff;font-weight:800}
.btn.danger{border-color:var(--red);color:var(--red)}
.btn.ghost{border-color:var(--linen);background:var(--white)}
.btn.sm{min-height:42px;padding:0 14px;font-size:14px;border-radius:12px}
.btn.block{display:flex;width:100%}
.btn[disabled]{opacity:.4;pointer-events:none}
.link{background:none;border:0;color:var(--muted);font-weight:700;font-size:14px;text-decoration:underline;padding:10px 6px;min-height:44px}
.empty{text-align:center;color:var(--muted);padding:28px 12px}
.empty b{display:block;color:var(--char);font-size:17px;margin-bottom:4px}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;background:var(--linen);color:var(--muted);vertical-align:middle}
.tag.sample{background:var(--yellow-t);color:#7A5600}
.cat-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:var(--olive)}
.cat-produce .cat-dot,.cat-dot.produce{background:var(--green)}
.cat-dot.protein{background:var(--red)}.cat-dot.dairy{background:var(--yellow)}.cat-dot.dry{background:var(--orange)}.cat-dot.finished{background:var(--char)}
.banner{background:var(--yellow-t);border:1px solid #F3D58A;border-radius:14px;padding:11px 13px;font-size:13.5px;color:#5C4300;margin-bottom:12px}
.banner b{font-weight:800}
.banner.info{background:var(--white);border-color:var(--linen);color:var(--char)}

/* ---------- dashboard ---------- */
.hero{padding:0;overflow:hidden;text-align:center;background:var(--off);border:0;margin-bottom:6px}
.hero img{display:block;width:100%;max-width:360px;height:auto;aspect-ratio:2.1/1;object-fit:cover;object-position:50% 54%;margin:0 auto;mix-blend-mode:multiply}
.hero .tag-line{font-weight:800;letter-spacing:-.02em;font-size:20px;margin-top:2px}
.hero .tag-sub{color:var(--muted);font-size:14px;margin-top:2px}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.kpi{background:var(--white);border:1px solid var(--linen);border-radius:18px;padding:13px 14px;text-align:left;display:block;width:100%;min-height:98px}
.kpi .k-label{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.kpi .k-val{font-size:32px;font-weight:800;letter-spacing:-.03em;line-height:1.1;margin-top:4px}
.kpi .k-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.kpi.bad .k-val{color:var(--red)}.kpi.good .k-val{color:var(--green-d)}.kpi.warn .k-val{color:var(--orange-d)}
.k-val.sm{font-size:22px;padding-top:6px}
.actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:12px}
.actions .btn{flex-direction:column;gap:2px;min-height:58px;padding:0 6px;font-size:14px}
.list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--linen);width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left}
.list-row:last-child{border-bottom:0}
.list-row .l-main{min-width:0;flex:1}
.list-row .l-title{font-weight:700}
.list-row .l-sub{font-size:13px;color:var(--muted)}
.list-row .l-end{text-align:right;font-weight:800;white-space:nowrap}
.bar-row{display:grid;grid-template-columns:76px 1fr 62px;gap:8px;align-items:center;font-size:13.5px;margin:7px 0}
.bar-row .bar{height:12px;border-radius:7px;background:var(--linen);overflow:hidden}
.bar-row .bar i{display:block;height:100%;background:var(--orange);border-radius:7px}
.bar-row .v{text-align:right;font-weight:700}

/* ---------- count ---------- */
.count-tools{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.seg-group{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--muted)}
.seg{height:38px;min-width:46px;padding:0 12px;border-radius:10px;border:1.5px solid var(--linen);background:var(--white);font-weight:800;font-size:15px}
.seg.on{background:var(--char);border-color:var(--char);color:#fff}
.area-tabs{position:sticky;top:calc(var(--hdr-h) + var(--sat));z-index:10;background:var(--off);padding:8px 0 10px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.area-tab{border:1.5px solid var(--linen);background:var(--white);border-radius:14px;padding:7px 2px 6px;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;font-size:13px;line-height:1.15}
.area-tab small{font-size:12px;font-weight:600;color:var(--muted);margin-top:2px}
.area-tab.on{background:var(--char);border-color:var(--char);color:#fff}
.area-tab.on small{color:#D8D4C8}
.area-tab.done:not(.on){border-color:var(--green)}
.area-tab.done small{color:var(--green-d);font-weight:800}.area-tab.on.done small{color:#9ADB9D}
.item{background:var(--white);border:1.5px solid var(--linen);border-radius:20px;padding:13px 13px 12px;margin-bottom:11px}
.item.counted{border-color:#CFE4CF}
.item.counted.lowc{border-color:#F4B9B1}
.item-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px}
.item-name{font-size:18px;font-weight:800;letter-spacing:-.02em;line-height:1.2}
.item-sub{font-size:13px;color:var(--muted);margin-top:2px}
.status{font-size:12px;font-weight:800;padding:4px 10px;border-radius:99px;white-space:nowrap;flex:none}
.status.none{background:var(--linen);color:var(--muted)}
.status.ok{background:var(--green-t);color:var(--green-d)}
.status.low{background:var(--red-t);color:#C42415}
.chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:9px}
.chip{height:42px;padding:0 15px;border-radius:21px;border:1.5px solid var(--linen);background:var(--white);font-weight:700;font-size:15px;display:inline-flex;align-items:center;gap:6px}
.chip.on{background:var(--orange);border-color:var(--orange);color:var(--char);font-weight:800}
.chip b{background:var(--char);color:#fff;border-radius:10px;font-size:12px;padding:1px 7px;min-width:20px;text-align:center}
.stepper{display:grid;grid-template-columns:78px 1fr 78px;gap:9px;align-items:stretch}
.step-btn{height:66px;border-radius:18px;border:2px solid var(--char);background:var(--white);font-size:36px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;padding:0}
.step-btn.plus{background:var(--orange);border-color:var(--orange);color:var(--char)}
.step-btn:active{transform:scale(.95)}
.qty-wrap{position:relative}
.qty{width:100%;height:66px;border-radius:18px;border:2px solid var(--linen);background:var(--off);text-align:center;font-size:28px;font-weight:800;padding:0 4px 14px;-moz-appearance:textfield;appearance:textfield;letter-spacing:-.02em}
.qty::-webkit-outer-spin-button,.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.qty:focus{outline:none;border-color:var(--orange);background:#fff}
.qty-unit{position:absolute;left:0;right:0;bottom:7px;text-align:center;font-size:12px;font-weight:700;color:var(--muted);pointer-events:none}
.item-total{margin-top:9px;font-size:14px;color:var(--muted);min-height:20px}
.item-total b{color:var(--char);font-size:15px}
.item-total .short{color:#C42415;font-weight:700}
.savebar{position:fixed;z-index:15;left:50%;transform:translateX(-50%);width:calc(100% - 24px);max-width:calc(var(--maxw) - 16px);bottom:calc(var(--nav-h) + var(--sab) + 10px);background:var(--char);color:#fff;border-radius:18px;padding:9px 9px 9px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;box-shadow:0 6px 22px rgba(0,0,0,.25)}
.savebar .sb-t{font-weight:800;font-size:15px;line-height:1.15}
.savebar .sb-s{font-size:12px;color:#CFCBBE;font-weight:500}
.savebar .btn{min-height:48px;border-color:var(--orange)}

/* ---------- reorder ---------- */
.seg-wide{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}
.seg-wide .seg{height:44px}
.grp{background:var(--white);border:1px solid var(--linen);border-radius:18px;margin-bottom:14px;overflow:hidden}
.grp-h{padding:13px 14px 10px;background:var(--off);border-bottom:1px solid var(--linen)}
.grp-h h2{font-size:17px;font-weight:800;letter-spacing:-.02em}
.grp-h .sub{font-size:12.5px;color:var(--muted);margin-top:1px}
.ro{display:grid;grid-template-columns:38px 1fr;gap:6px;padding:12px 12px 12px 8px;border-bottom:1px solid var(--linen)}
.ro:last-of-type{border-bottom:0}
.ro.skipped .ro-body{opacity:.45}
.ck{width:38px;height:38px;border-radius:11px;border:2px solid var(--char);background:var(--white);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;color:transparent;padding:0;margin-top:2px}
.ck.on{background:var(--green);border-color:var(--green);color:#fff}
.ro-name{font-weight:800;font-size:16.5px;letter-spacing:-.01em}
.ro-have{font-size:13px;color:var(--muted);margin-top:1px}
.ro-line{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.mini-step{display:inline-flex;align-items:center;border:2px solid var(--linen);border-radius:14px;overflow:hidden;background:var(--white)}
.mini-step button{width:46px;height:46px;border:0;background:var(--off);font-size:24px;font-weight:700}
.mini-step button.p{background:var(--orange)}
.mini-step span{min-width:52px;text-align:center;font-weight:800;font-size:18px}
.ro-pack{font-size:14px;font-weight:600}
.ro-pack small{display:block;color:var(--muted);font-weight:500;font-size:12px}
.ro-cost{margin-left:auto;font-weight:800;font-size:16px}
.ro-sel{width:100%;margin-top:8px;height:46px;border-radius:12px;border:1.5px solid var(--linen);background:var(--off);padding:0 10px}
.grp-f{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:var(--off);border-top:1px solid var(--linen)}
.grp-f .tot{font-weight:800}
.total-card{background:var(--char);color:#fff;border:0}
.total-card .big{font-size:30px;font-weight:800;letter-spacing:-.03em}
.total-card .row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.total-card .btn{border-color:var(--orange);color:var(--char)}

/* ---------- waste ---------- */
.waste-total{display:flex;align-items:baseline;gap:8px}
.waste-total .big{font-size:38px;font-weight:800;letter-spacing:-.03em;color:var(--red)}
.field{margin-bottom:12px}
.field label,.lbl{display:block;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:5px}
.inp,.sel{width:100%;height:52px;border-radius:14px;border:2px solid var(--linen);background:var(--off);padding:0 14px}
.sel{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'><path d='M1 1l6 6 6-6' fill='none' stroke='%232B2B2B' stroke-width='2.2' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.inp:focus,.sel:focus,.txt:focus{outline:none;border-color:var(--orange);background:#fff}
.txt{width:100%;border-radius:14px;border:2px solid var(--linen);background:var(--off);padding:12px 14px;min-height:80px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.reasons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.reason{height:50px;border-radius:14px;border:2px solid var(--linen);background:var(--white);font-weight:700}
.reason.on{background:var(--red);border-color:var(--red);color:#fff;font-weight:800}
.qty-line{display:grid;grid-template-columns:56px 1fr 56px 1fr;gap:8px;align-items:center}
.qty-line .step-btn{height:52px;font-size:28px;border-radius:14px}
.qty-line .inp{text-align:center;font-weight:800;font-size:20px;padding:0 4px}
.recent-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.recent-chips .chip{height:36px;font-size:13.5px;padding:0 12px}
.x-btn{width:44px;height:44px;border-radius:12px;border:0;background:none;color:var(--olive);font-size:22px;flex:none}

/* ---------- more / library / sheets ---------- */
.menu-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:58px;padding:8px 14px;width:100%;background:var(--white);border:1px solid var(--linen);border-radius:16px;margin-bottom:8px;text-align:left;font-weight:700}
.menu-row small{display:block;font-weight:500;color:var(--muted);font-size:13px}
.menu-row .chev{color:var(--olive);font-size:22px}
.filters{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;margin:0 -14px;padding-left:14px;padding-right:14px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filters .chip{height:38px;flex:none;font-size:14px}
.sheet{position:fixed;inset:0;z-index:50;background:rgba(43,43,43,.55);display:none;align-items:flex-end;justify-content:center}
.sheet.open{display:flex}
.sheet-panel{background:var(--off);width:100%;max-width:var(--maxw);max-height:94dvh;max-height:94vh;border-radius:24px 24px 0 0;display:flex;flex-direction:column;overflow:hidden;animation:up .18s ease-out}
@supports (height:1dvh){.sheet-panel{max-height:94dvh}}
@keyframes up{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.sheet-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px}
.sheet-h h2{font-size:20px;font-weight:800;letter-spacing:-.02em}
.sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 16px 12px;flex:1}
.sheet-f{padding:10px 16px calc(12px + var(--sab));display:flex;gap:10px;border-top:1px solid var(--linen);background:var(--white)}
.sheet-f .btn{flex:1}
.sub-card{background:var(--white);border:1px solid var(--linen);border-radius:16px;padding:12px;margin-bottom:10px}
.sub-card .rm{float:right}
.mini-lbl{font-size:12px;font-weight:700;color:var(--muted);display:block;margin-bottom:3px}
.eq-row{display:grid;grid-template-columns:1fr 18px 1fr auto;gap:6px;align-items:end;margin-bottom:8px}
.eq-row .inp{height:48px}
.eq-row span.eq{text-align:center;font-weight:800;padding-bottom:12px}
.eq-row .rm-btn{width:44px;height:48px;border-radius:12px;border:1.5px solid var(--linen);background:var(--white);font-size:20px;color:var(--red)}
.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.map-grid .full{grid-column:1/-1}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl td,.tbl th{padding:8px 4px;border-bottom:1px solid var(--linen);text-align:left}
.tbl th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.tbl td.r,.tbl th.r{text-align:right}
.tbl tr.low td{color:#C42415;font-weight:700}
.toast{position:fixed;left:50%;transform:translate(-50%,20px);bottom:calc(var(--nav-h) + var(--sab) + 84px);background:var(--char);color:#fff;padding:12px 18px;border-radius:14px;font-weight:700;font-size:14.5px;opacity:0;pointer-events:none;transition:.2s;z-index:80;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
/* ---------- barcodes: header button, editor rows, count highlight, toast action ---------- */
.hdr-scan{flex:none;display:inline-flex;align-items:center;gap:7px;height:42px;padding:0 14px;border-radius:21px;border:0;background:var(--orange);color:var(--char);font-weight:800;font-size:15px}
.hdr-scan svg{width:20px;height:20px}
.hdr-scan:active{transform:scale(.96)}
.code-list{margin-bottom:8px}
.code-row{display:flex;align-items:center;gap:8px;background:var(--white);border:1px solid var(--linen);border-radius:12px;padding:2px 4px 2px 12px;margin-bottom:6px;min-height:46px}
.code-row .code{flex:1;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums;word-break:break-all}
.code-row .fmt{font-size:11px;font-weight:700;color:var(--muted);background:var(--linen);border-radius:99px;padding:2px 8px}
.code-add{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:8px}
.code-add .inp{height:48px}
.code-add .btn{min-height:48px;padding:0 16px}
.btn.scan-btn{gap:8px}
.warn-box{background:var(--yellow-t);border:1.5px solid var(--yellow);border-radius:14px;padding:11px 12px;margin:2px 0 10px;font-size:14px}
.warn-box b{font-weight:800}
.warn-box .row{display:flex;gap:8px;margin-top:9px}
.warn-box .btn{min-height:42px;flex:1;font-size:14px}
.nib-code{display:flex;align-items:center;gap:8px;background:var(--white);border:1px solid var(--linen);border-radius:12px;padding:9px 12px;margin-bottom:12px;font-weight:800;font-variant-numeric:tabular-nums;word-break:break-all}
.nib-code small{font-weight:700;color:var(--muted);margin-left:auto;font-size:11px;background:var(--linen);border-radius:99px;padding:2px 8px;white-space:nowrap}
.item.hl{animation:hl 2.6s ease-out;border-color:var(--orange)}
@keyframes hl{0%,35%{box-shadow:0 0 0 4px var(--orange),0 8px 24px rgba(255,123,4,.45);background:var(--orange-t)}100%{box-shadow:0 0 0 0 transparent}}
.toast.act{pointer-events:auto;display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px}
.toast-act{background:var(--orange);border:0;border-radius:10px;color:var(--char);font-weight:800;font-size:14.5px;min-height:40px;padding:0 16px}

/* ---------- scanner overlay (above the count screen, below sheets so "new item" can open over it) ---------- */
.scan{position:fixed;left:0;right:0;top:0;height:100%;z-index:100;background:#000;color:#fff;overflow:hidden;touch-action:manipulation}
.scan-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#111}
.scan-top{position:absolute;left:0;right:0;top:0;z-index:3;display:flex;align-items:center;gap:8px;padding:calc(var(--sat) + 8px) calc(10px + var(--sar)) 24px calc(10px + var(--sal));background:linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,0))}
.scan-x{width:46px;height:46px;border-radius:23px;border:0;background:rgba(255,255,255,.18);color:#fff;font-size:30px;line-height:1;padding:0 0 3px}
.scan-title{flex:1;font-weight:800;font-size:18px;letter-spacing:-.01em;min-width:0}
.scan-title small{display:block;font-weight:600;font-size:11.5px;color:#cfcbbe;letter-spacing:0}
.scan-torch{height:44px;padding:0 16px;border-radius:22px;border:2px solid rgba(255,255,255,.55);background:rgba(0,0,0,.25);color:#fff;font-weight:800;font-size:14px}
.scan-torch.on{background:var(--yellow);border-color:var(--yellow);color:var(--char)}
.scan-vf{position:absolute;z-index:2;left:50%;top:27%;transform:translateX(-50%);width:min(82vw,380px);height:min(46vw,200px);min-height:150px;border-radius:18px;box-shadow:0 0 0 100vmax rgba(0,0,0,.55)}
.scan.kb .scan-vf{top:18%;min-height:96px;height:110px}
.scan-vf .c{position:absolute;width:34px;height:34px;border:0 solid var(--orange)}
.scan-vf .tl{left:-2px;top:-2px;border-width:5px 0 0 5px;border-top-left-radius:18px}
.scan-vf .tr{right:-2px;top:-2px;border-width:5px 5px 0 0;border-top-right-radius:18px}
.scan-vf .bl{left:-2px;bottom:-2px;border-width:0 0 5px 5px;border-bottom-left-radius:18px}
.scan-vf .br{right:-2px;bottom:-2px;border-width:0 5px 5px 0;border-bottom-right-radius:18px}
.scan-vf .laser{position:absolute;left:8%;right:8%;top:50%;height:2px;background:var(--red);box-shadow:0 0 10px var(--red);animation:laser 1.7s ease-in-out infinite alternate}
@keyframes laser{from{top:12%}to{top:88%}}
.scan-vf.hit .c{border-color:var(--green)}
.scan-vf.hit{box-shadow:0 0 0 100vmax rgba(54,147,58,.45)}
.scan.paused .laser{display:none}
.scan-msg{position:absolute;z-index:3;left:16px;right:16px;top:calc(27% + min(46vw,200px) + 22px);text-align:center;font-weight:700;font-size:15px;text-shadow:0 1px 4px #000}
.scan.kb .scan-msg{top:calc(18% + 128px)}
.scan-msg.warn{color:var(--yellow)}
.scan-err{position:absolute;z-index:4;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;justify-content:center;padding:84px 18px 190px;background:#171717;overflow-y:auto}
.scan-err[hidden]{display:none}
.scan-err-in{max-width:420px;font-size:15px;line-height:1.4}
.scan-err-in b:first-child{display:block;font-size:20px;margin-bottom:8px;letter-spacing:-.02em}
.scan-err-in p{margin:0 0 10px;color:#e6e2d6}
.scan-retry{height:50px;padding:0 24px;border-radius:14px;border:0;background:var(--orange);color:var(--char);font-weight:800;font-size:16px}
.scan-panel{position:absolute;z-index:5;left:0;right:0;bottom:0;padding:12px calc(14px + var(--sar)) calc(12px + var(--sab)) calc(14px + var(--sal));background:rgba(20,20,20,.88);border-radius:22px 22px 0 0;display:flex;flex-direction:column;gap:10px}
.scan-cont{display:flex;align-items:center;gap:12px;font-weight:700;font-size:15px;min-height:44px}
.scan-cont small{display:block;font-weight:500;color:#bdb9aa;font-size:12px}
.scan-cont input{position:absolute;opacity:0;width:1px;height:1px}
.scan-cont .sw{flex:none;width:52px;height:30px;border-radius:15px;background:#555;position:relative;transition:.15s}
.scan-cont .sw::after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:.15s}
.scan-cont input:checked+.sw{background:var(--green)}
.scan-cont input:checked+.sw::after{left:25px}
.scan-cont input:focus-visible+.sw{outline:3px solid var(--orange);outline-offset:2px}
.scan-last{display:flex;align-items:center;gap:10px;justify-content:space-between;background:rgba(54,147,58,.28);border:1px solid var(--green);border-radius:12px;padding:6px 6px 6px 12px;font-weight:700;font-size:14.5px;min-height:46px}
.scan-last.warn{background:rgba(253,185,26,.2);border-color:var(--yellow)}
.scan-last.new{background:rgba(255,123,4,.25);border-color:var(--orange)}
.scan-undo{height:38px;padding:0 14px;border-radius:10px;border:0;background:var(--orange);color:var(--char);font-weight:800;flex:none}
.scan-manual{display:grid;grid-template-columns:1fr auto;gap:8px}
.scan-in{height:50px;border-radius:14px;border:2px solid #555;background:#2b2b2b;color:#fff;padding:0 14px;min-width:0}
.scan-in::placeholder{color:#a39f90}
.scan-in:focus{outline:none;border-color:var(--orange)}
.scan-go{height:50px;padding:0 22px;border-radius:14px;border:0;background:var(--orange);color:var(--char);font-weight:800;font-size:16px}
.sheet.top{z-index:110} /* "new item from barcode" sheet opens above the scanner overlay */
.toast{z-index:130}
@media (min-width:700px){body{background:#EFEBE0}.main{background:transparent}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.scan-last[hidden],.scan-torch[hidden],.scan-vf[hidden],.scan-msg[hidden]{display:none}

/* =====================================================================
   Accountability layer: cooks, take-out, live board, points, variance, containers, labels
   ===================================================================== */
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;letter-spacing:-.02em}
.av{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:#fff;font-weight:800;font-size:14px;flex:none}
.av.sm{width:30px;height:30px;font-size:12px}.av.lg{width:56px;height:56px;font-size:20px}
.cook-chip{background:rgba(255,255,255,.12);border:0;border-radius:99px;min-height:44px;min-width:44px;padding:0 5px;display:flex;align-items:center;gap:6px;color:#fff;flex:none}
.cook-chip.none{background:var(--yellow);color:var(--char);padding:0 5px}
.cc-t{font-size:13px}
.cook-row{display:flex;align-items:center;gap:12px;width:100%;min-height:62px;padding:8px 12px;margin-bottom:8px;background:var(--white);border:2px solid var(--linen);border-radius:16px;text-align:left}
.cook-row.on{border-color:var(--orange);background:var(--orange-t)}
.cr-main{flex:1;display:flex;flex-direction:column}.cr-main b{font-size:17px}.cr-main small{color:var(--muted);font-size:13px}
.lock{opacity:.6}
.pin-dots{display:flex;justify-content:center;gap:14px;margin:6px 0 10px}
.pin-dots i{width:18px;height:18px;border-radius:50%;border:2px solid var(--char);display:block}
.pin-dots i.on{background:var(--char)}.pin-dots i.bad{border-color:var(--red);background:var(--red-t)}
.pin-pad{display:grid;grid-template-columns:repeat(3,76px);gap:10px;justify-content:center;margin:14px 0 6px}
.pin-k{height:62px;border-radius:50%;border:2px solid var(--linen);background:var(--white);font-size:24px;font-weight:700;width:76px;justify-self:center}
.pin-k:active{background:var(--orange-t);border-color:var(--orange)}
/* nav: raised centre action */
.nav button.use-btn{position:relative;color:var(--char);font-weight:800}
.nav button.use-btn::before{display:none}
.use-fab{width:50px;height:50px;border-radius:50%;background:var(--orange);display:flex;align-items:center;justify-content:center;margin-top:-22px;box-shadow:0 4px 12px rgba(255,123,4,.45);border:3px solid var(--white)}
.nav button.use-btn .use-fab svg{stroke:var(--char);stroke-width:2.6;width:26px;height:26px}
.nav button.use-btn.on .use-fab{background:var(--char)}.nav button.use-btn.on .use-fab svg{stroke:var(--orange)}
.nav button.use-btn span:last-child{margin-top:-1px}
/* ticker */
.ticker{display:flex;align-items:stretch;background:var(--char);color:#fff;border-radius:14px;overflow:hidden;margin-bottom:10px;height:42px}
.live-badge{display:flex;align-items:center;gap:6px;background:var(--red);font-size:11px;font-weight:800;letter-spacing:.08em;padding:0 11px;flex:none}
.live-badge i,.live-dot{width:8px;height:8px;border-radius:50%;background:#fff;display:inline-block;animation:pulse 1.6s infinite}
.live-dot{background:var(--green);margin-right:4px}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.tk-view{flex:1;overflow:hidden;white-space:nowrap;position:relative;display:flex;align-items:center}
.tk-track{display:inline-flex;gap:26px;padding-left:20px;animation:tk 70s linear infinite;will-change:transform}
@keyframes tk{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tk{font-size:14px;display:inline-flex;gap:5px;align-items:baseline}
.tk b{font-weight:800}.tk em{font-style:normal;font-weight:800}
.tk.down em{color:#FF8A7C}.tk.up em{color:#7FD383}
.tk i{font-style:normal;color:#B9BCAF;font-size:12px}.tk u{text-decoration:none}
@media (prefers-reduced-motion:reduce){.tk-view{overflow-x:auto}.tk-track{animation:none}}
.cta-row{display:grid;grid-template-columns:1.4fr 1fr;gap:10px;margin-bottom:8px}
.btn.big{min-height:58px;font-size:18px;font-weight:800}
.btn.green{background:var(--green)}
.live-line{font-size:12px;color:var(--muted);margin:0 2px 10px;font-weight:600}
/* board rows */
.brow{padding:10px 0;border-bottom:1px solid var(--linen)}.brow:last-child{border-bottom:0}
.b-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.b-name{font-weight:700;font-size:16px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-num{white-space:nowrap}.b-num b{font-size:19px;font-weight:800}.b-num small{color:var(--muted);font-size:12px}
.brow.st-crit .b-num b{color:var(--red)}.brow.st-low .b-num b{color:#B27A00}.brow.st-ok .b-num b{color:var(--green-d)}
.b-bot{display:flex;align-items:center;gap:8px;margin-top:6px}
.gauge{position:relative;flex:1;height:10px;border-radius:99px;background:var(--linen);overflow:hidden}
.gauge i{display:block;height:100%;border-radius:99px;background:var(--green)}
.brow.st-crit .gauge i{background:var(--red)}.brow.st-low .gauge i{background:var(--yellow)}.brow.st-none .gauge i{background:var(--olive)}
.gauge.thin{height:8px}.gauge.thin i{background:var(--orange)}
.par-tick{position:absolute;right:0;top:0;bottom:0;width:2px;background:var(--char);opacity:.35}
.b-pct{font-size:12px;font-weight:800;width:38px;text-align:right;color:var(--muted)}
.spark{flex:none}.spark rect{fill:var(--olive);opacity:.55}.spark rect.today{opacity:1}
.spark.st-crit rect{fill:var(--red)}.spark.st-low rect{fill:#D9A010}.spark.st-ok rect{fill:var(--green)}
.b-trend{font-size:12px;font-weight:800;width:62px;text-align:right;white-space:nowrap}.b-trend small{font-weight:600;color:var(--muted);margin-left:3px}
.b-trend.down{color:var(--red)}.b-trend.up{color:var(--green-d)}.b-trend.flat{color:var(--muted)}
.mover{display:flex;align-items:center;gap:8px;padding:6px 0}.m-n{width:38%;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m-bar{flex:1;height:10px;background:var(--linen);border-radius:99px;overflow:hidden}.m-bar i{display:block;height:100%;background:var(--orange);border-radius:99px}.m-bar.good i{background:var(--green)}
.m-v{font-size:13px;font-weight:700;min-width:70px;text-align:right}
.st-t.crit{color:var(--red)}.st-t.low{color:#B27A00}.st-t.ok{color:var(--green-d)}.short{color:var(--red);font-size:12px}
/* use / receive */
.who-bar{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:8px 12px;margin-bottom:10px;background:var(--white);border:1.5px solid var(--linen);border-radius:16px;min-height:56px}
.who-bar span:last-child{display:flex;flex-direction:column}.who-bar small{color:var(--muted);font-size:12px}
.who-bar.none{border-color:var(--yellow);background:var(--yellow-t)}
.use-scan{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.scan-btn{flex-direction:column;gap:2px;min-height:64px;font-size:15px}
.scan-btn.block{flex-direction:row}
.use-item{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:8px 0 10px}.use-item small{display:block;color:var(--muted);font-size:12px}
.recent-chips{display:flex;gap:6px;flex-wrap:wrap;margin:-2px 0 4px}
.reasons.r5,.reasons.r3{grid-template-columns:repeat(3,1fr)}
.reasons .reason{height:46px;font-size:14px;padding:0 4px}
.reasons .reason.on{background:var(--orange);border-color:var(--orange);color:var(--char)}
.reasons .reason.waste.on{background:var(--red);border-color:var(--red);color:#fff}
.mv .av{margin-right:2px}.mv .x-btn{margin-left:2px}
/* weigh sheet */
.ctr-card{background:var(--char);color:#fff;border-radius:16px;padding:12px 14px;margin-bottom:12px}
.ctr-id{font-family:ui-monospace,Menlo,monospace;font-weight:800;font-size:22px;letter-spacing:-.02em}
.ctr-meta{color:#D8DAD0;font-size:13px;margin-top:2px}.ctr-meta b{color:var(--yellow)}
.wg-in{display:grid;grid-template-columns:1fr 92px;gap:8px}.wg-in .inp{font-size:28px;font-weight:800;height:60px;text-align:center}
.wg-in .sel{height:60px}
.net-box{background:var(--green-t);border:2px solid var(--green);border-radius:18px;text-align:center;padding:12px;margin:6px 0 10px}
.net-box small{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--green-d)}
.net-v{font-size:46px;font-weight:800;letter-spacing:-.03em;line-height:1.1;color:var(--char);font-variant-numeric:tabular-nums}
.net-box.empty{background:var(--linen);border-color:var(--linen)}.net-box.empty small{color:var(--muted)}.net-box.empty .net-v{color:var(--olive)}
.net-box.neg{background:var(--yellow-t);border-color:var(--yellow)}
.ok-box{background:var(--green-t);border:1.5px solid #BFE0C0;border-radius:14px;padding:10px 12px;margin:2px 0 10px;font-size:14px;color:var(--green-d);font-weight:600}
.wg-acts{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:8px}.wg-acts .btn{padding:0 6px;font-size:14px;min-height:54px}
.wg-seg{margin-bottom:12px}.seg-wide.n3{grid-template-columns:1fr 1fr}
.seg-wide.n3.wg-seg{grid-template-columns:1fr 1fr}
.seg-wide.n3:not(.wg-seg){grid-template-columns:repeat(3,1fr)}
.seg-wide.n2{grid-template-columns:1fr 1fr}
.seg-wide.n3 .seg{font-size:13px;padding:0 4px}
/* containers */
.kpis.three{grid-template-columns:repeat(3,1fr)}.kpis.three .kpi{padding:10px}
.ctr-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.ctr-tile{background:var(--white);border:2px solid var(--linen);border-radius:16px;padding:10px 11px;text-align:left;display:flex;flex-direction:column;gap:3px;min-height:132px}
.ctr-tile.st-inuse{border-color:var(--green)}.ctr-tile.st-stale{border-color:var(--yellow);background:var(--yellow-t)}.ctr-tile.st-new{border-style:dashed}
.ct-top{display:flex;justify-content:space-between;align-items:center;gap:4px;flex-wrap:wrap}.ct-top b{font-size:12.5px}
.ctr-st{font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:99px;background:var(--linen);color:var(--muted);white-space:nowrap}
.ctr-st.inuse{background:var(--green-t);color:var(--green-d)}.ctr-st.stale{background:var(--yellow);color:var(--char)}
.ct-item{font-size:14px;font-weight:700;line-height:1.2}
.ct-net{font-size:26px;font-weight:800;line-height:1.1}.ct-net small{font-size:12px;color:var(--muted);font-weight:600}
.ct-last{font-size:11.5px;color:var(--muted);margin-top:auto}
/* leaderboard */
.my-pts{display:flex;align-items:center;gap:14px}.mp-v{font-size:44px;font-weight:800;line-height:1;color:var(--orange-d)}
.lb-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--linen)}.lb-row:last-child{border-bottom:0}
.lb-row.me{background:var(--orange-t);margin:0 -14px;padding:9px 14px}
.rank{width:26px;height:26px;border-radius:50%;background:var(--linen);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none}
.rank.r1{background:var(--yellow)}.rank.r2{background:#D9DCD0}.rank.r3{background:#EBC9A0}
.streak{font-size:11px;font-weight:800;color:var(--orange-d)}
.l-end small{display:block;font-size:11px;color:var(--muted);font-weight:600}
.list-row.rw .btn{margin-left:6px}
.rules{margin:0;padding-left:18px;line-height:1.7}
/* variance */
.var-hero{display:flex;align-items:center;gap:14px;background:var(--green-t);border-color:#BFE0C0}.vh-pct{font-size:44px;font-weight:800;color:var(--green-d);line-height:1}
.tbl .tr{display:grid;grid-template-columns:1fr .8fr .5fr 1.6fr;gap:6px;padding:7px 0;border-bottom:1px solid var(--linen);align-items:center;font-size:14px}.tbl .th{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.acc{display:inline-block;width:50px;height:8px;border-radius:99px;background:var(--linen);overflow:hidden;vertical-align:middle}.acc i{display:block;height:100%;background:var(--green)}
/* today */
.today-hero{display:flex;align-items:center;gap:14px}.th-pct{font-size:44px;font-weight:800;color:var(--orange-d);line-height:1}
.step{display:flex;gap:12px;align-items:flex-start;background:var(--white);border:1.5px solid var(--linen);border-radius:16px;padding:12px;margin-bottom:10px}
.step.done{border-color:#BFE0C0;background:var(--green-t)}
.step-n{width:28px;height:28px;border-radius:50%;background:var(--char);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none;font-size:14px}
.step.done .step-n{background:var(--green)}
.step-b{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.step-b small{color:var(--muted);font-size:13px}
.area-line{display:flex;align-items:center;gap:10px;background:none;border:0;border-top:1px solid var(--linen);min-height:44px;padding:4px 0;text-align:left;margin-top:4px}
.area-line:first-of-type{margin-top:8px}.area-line > span:first-child{min-width:84px;font-weight:600;font-size:14px}.area-line .gauge{flex:1}.ok-t{color:var(--green-d);font-weight:800;font-size:13px}
.hl-ok{color:var(--green-d)}
/* labels + print */
.label-sheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.lbl{background:#fff;border:1.5px dashed #999;border-radius:10px;padding:10px 12px;color:#000;break-inside:avoid;page-break-inside:avoid}
.lbl-top{display:flex;align-items:center;gap:7px;font-weight:800;font-size:11px;letter-spacing:.1em;color:#2B2B2B}.lbl-top img{border-radius:6px}
.lbl-name{font-family:ui-monospace,Menlo,monospace;font-weight:800;font-size:25px;letter-spacing:-.03em;margin-top:4px;color:#000}
.lbl-meta{font-size:12px;color:#444;margin-bottom:6px}
.lbl-codes{display:flex;gap:10px;align-items:center}.lbl-qr{width:92px;height:92px;flex:none;font-size:10px}.lbl-qr svg{width:100%;height:100%;display:block}
.lbl-c{flex:1;min-width:0}.c128-box{height:54px;padding:0}.c128{width:100%;height:100%;display:block}.lbl-txt{font-family:ui-monospace,Menlo,monospace;font-size:11px;text-align:center;margin-top:2px}
.lbl-foot{margin-top:6px;border-top:2px solid var(--orange);padding-top:4px;font-size:11px;font-weight:700;text-align:center;color:#2B2B2B}
@media print{
  @page{size:letter;margin:.4in}
  html,body{background:#fff!important}
  .hdr,.nav,.toast,.no-print,#sheet,.scan{display:none!important}
  .main{padding:0!important;max-width:none!important}
  .label-sheet{display:grid;grid-template-columns:repeat(2,3.5in);gap:.12in;justify-content:center}
  .lbl{width:3.5in;height:2.25in;border:1px dashed #888;border-radius:0;padding:.1in .14in;overflow:hidden}
  .lbl-qr{width:.95in;height:.95in}.c128-box{height:.55in}
  .lbl-name{font-size:24px}
}

/* container presets, lid toggle */
.spec-note{font-size:12px;color:var(--muted,#6b6b6b);margin-top:4px;line-height:1.35}
.ctr-card .spec-note{margin-top:6px}
.lid-row{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.lid-row .lid-l{font-size:13px;font-weight:600;white-space:nowrap}
.lid-row .lid-seg{flex:1;margin:0}
.lid-row .seg{min-height:40px}
label.chk{display:flex;align-items:center;gap:8px;margin-top:8px;font-weight:500}
label.chk input{width:20px;height:20px}
.ctr-card .spec-note{color:#E8E2D4}
