/* base reset (standalone site) */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh}
img{max-width:100%}
[hidden]{display:none!important}
button,input,select{font:inherit}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}

/* Layout: parts-counter register — rack bins + stock ledger on one tab, sales & profit book on the other; actions open as dialogs */
:root{
  --bg:#eff0f6; --panel:#ffffff; --ink:#181a3a; --muted:#5b5f7a; --line:#d6d8e4;
  --steel:#1a1d4a; --amber:#e0782f; --amber-ink:#15173c; --amber-soft:#fcebdc;
  --good:#1e7a4a; --good-soft:#e1f2e8; --bad:#b3261e; --bad-soft:#fbe4e2; --chip:#e6e8f1; --sky:#5fb4ea;
  --f-display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;
  --f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0f1024; --panel:#181a36; --ink:#e8e9f4; --muted:#9a9dbb; --line:#2b2e52;
  --steel:#aebcf2; --amber:#f08a45; --amber-ink:#1a0c00; --amber-soft:#3a2516;
  --good:#5ccf8f; --good-soft:#163024; --bad:#ff8a80; --bad-soft:#3d1f1d; --chip:#24274a; --sky:#8fcdf5; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0f1024; --panel:#181a36; --ink:#e8e9f4; --muted:#9a9dbb; --line:#2b2e52;
  --steel:#aebcf2; --amber:#f08a45; --amber-ink:#1a0c00; --amber-soft:#3a2516;
  --good:#5ccf8f; --good-soft:#163024; --bad:#ff8a80; --bad-soft:#3d1f1d; --chip:#24274a; --sky:#8fcdf5; color-scheme:dark}

body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45}
.wrap{max-width:1180px;margin:0 auto;padding-block:20px 48px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:18px}

header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.brand small,.eyebrow{display:block;font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.brand h1{font-family:var(--f-display);font-weight:700;font-size:clamp(30px,6vw,42px);line-height:1;letter-spacing:.01em;text-transform:uppercase}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand .bt{display:flex;flex-direction:column;gap:2px;min-width:0}
.brand h1{margin:0}
.logo{display:block;border-radius:50%;flex:none}
.brand .logo{width:64px;height:64px}
.gst{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;color:var(--muted)}
.gst b{color:var(--amber);font-weight:600}
.hbtns{display:flex;gap:8px;flex-wrap:wrap}
.btn{font:600 14px var(--f-body);border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 14px;cursor:pointer;min-height:40px}
.btn:hover{border-color:var(--steel)}
.btn.primary{background:var(--amber);border-color:var(--amber);color:var(--amber-ink)}
.btn.primary:hover{filter:brightness(1.05)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.sm{min-height:32px;padding:5px 10px;font-size:13px}
.btn.sell{background:var(--steel);border-color:var(--steel);color:var(--panel)}
.btn:focus-visible,input:focus-visible,select:focus-visible,.rack:focus-visible,.tab:focus-visible,.seg button:focus-visible,tr:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.btn[disabled]{opacity:.5;cursor:not-allowed}

.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line)}
.tab{all:unset;cursor:pointer;padding:10px 14px;font-family:var(--f-display);font-weight:600;font-size:19px;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--amber)}
.view{display:flex;flex-direction:column;gap:16px}

/* summary strip */
.stats{display:flex;flex-wrap:wrap;gap:8px 28px;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
.stat{display:flex;flex-direction:column;gap:1px;min-width:0}
.stat b{font-family:var(--f-display);font-size:26px;font-weight:700;line-height:1.05;font-variant-numeric:tabular-nums}
.stat b.pos{color:var(--good)} .stat b.neg{color:var(--bad)} .stat b.warn{color:var(--amber)}

/* today band */
.today{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr);background:#1a1d4a;color:#ffffff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.today>div{display:flex;flex-direction:column;gap:2px;padding:16px 20px;min-width:0}
.today>div+div{border-left:1px solid color-mix(in srgb,var(--panel) 18%,transparent)}
.today .eyebrow{color:#8fcdf5}
.today b{font-family:var(--f-display);font-weight:700;font-size:clamp(26px,4.5vw,36px);line-height:1.05;font-variant-numeric:tabular-nums}
.today .tdate b{text-transform:uppercase;color:#f08a45}
.today span:last-child{font-size:13px;opacity:.8;font-variant-numeric:tabular-nums}
.today b.pos{color:#ffffff} .today b.neg{color:#ff8a80}
@media (max-width:640px){.today{grid-template-columns:1fr 1fr}.today .tdate{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.today .tdate b{font-size:24px}.today>div+div{border-left:0;border-top:1px solid color-mix(in srgb,var(--panel) 18%,transparent)}.today .tfig+.tfig{border-left:1px solid color-mix(in srgb,var(--panel) 18%,transparent)}}

/* rack bins */
.racks{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}
.rack{all:unset;box-sizing:border-box;cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.rack .lbl{font-family:var(--f-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.rack .big{font-family:var(--f-display);font-weight:700;font-size:28px;line-height:1}
.rack .n{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.rack[aria-pressed="true"]{border-color:var(--amber);background:var(--amber-soft)}
.rack[aria-pressed="true"] .big{color:var(--amber)}
@media (max-width:980px){.racks{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:480px){.racks{grid-template-columns:repeat(4,minmax(0,1fr))}.rack{padding:8px 10px}}

.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.search{flex:1 1 240px;min-width:0}
.search input{width:100%;box-sizing:border-box}
input,select{font:15px var(--f-body);color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:9px 11px;min-height:40px}
.count{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.chk{display:flex;gap:6px;align-items:center;font-size:14px;cursor:pointer}
.chk input{min-height:0;width:18px;height:18px}
.notice{font-size:13px;padding:9px 12px;border-radius:6px;background:var(--amber-soft);color:var(--ink);border:1px solid var(--amber)}

/* tables */
.ledger{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow-x:auto}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{font-family:var(--f-mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
th.num,td.num{text-align:right}
td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
#rows tr{cursor:pointer}
#rows tr:hover{background:var(--chip)}
.code{font-family:var(--f-mono);font-weight:600;font-size:13.5px;letter-spacing:.02em}
.pname{font-weight:500}
.pbrand,.sub{font-size:12px;color:var(--muted)}
.rk{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:4px;background:var(--steel);color:var(--panel);font-family:var(--f-display);font-weight:700;font-size:17px}
.rk-sub{font-size:12px;color:var(--muted);margin-left:6px}
.mrg{font-weight:600}
.pos{color:var(--good)} .neg{color:var(--bad)}
.flag{display:inline-block;font-size:11px;font-weight:600;padding:2px 7px;border-radius:999px;background:var(--bad-soft);color:var(--bad);margin-top:3px}
.ex{display:inline-block;font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:1px 6px;border-radius:3px;background:var(--chip);color:var(--muted);margin-left:6px;vertical-align:middle}
.stk{display:inline-block;min-width:44px;text-align:center;font-weight:600;font-size:15px;padding:3px 8px;border-radius:999px;background:var(--good-soft);color:var(--good)}
.stk.low{background:var(--amber-soft);color:var(--amber)}
.stk.out{background:var(--bad-soft);color:var(--bad)}
.acts{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}
.type{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px}
.type.sale{background:var(--steel);color:var(--panel)}
.type.in{background:var(--good-soft);color:var(--good)}
.type.adj{background:var(--chip);color:var(--muted)}
.linkbtn{all:unset;cursor:pointer;font-size:12px;color:var(--muted);text-decoration:underline}
.linkbtn:focus-visible{outline:2px solid var(--amber)}

.empty{padding:40px 20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;gap:10px;align-items:center}
.empty strong{font-family:var(--f-display);font-size:24px;text-transform:uppercase;color:var(--ink)}

/* phone: rows become cards */
@media (max-width:720px){
  .cards thead{display:none}
  .cards table,.cards tbody,.cards tr,.cards td{display:block}
  .cards tbody tr{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 14px;border-bottom:1px solid var(--line)}
  .cards tbody tr:last-child{border-bottom:0}
  .cards td{padding:0;border:0}
  .cards td.c-a{grid-column:1}
  .cards td.c-b{grid-column:2;grid-row:1 / span 2;align-self:start;text-align:right}
  .cards td.c-c{grid-column:1}
  .cards td.num{grid-column:1 / -1;display:flex;justify-content:space-between;text-align:left;font-size:14px}
  .cards td.num::before{content:attr(data-l);color:var(--muted)}
  .cards td.c-act{grid-column:1 / -1;padding-top:6px}
  .cards .acts{justify-content:stretch}
  .cards .acts .btn{flex:1}
}

/* profit book */
.periods{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.periods button{font:600 13px var(--f-body);border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:6px 12px;cursor:pointer;min-height:34px}
.periods button[aria-pressed="true"]{background:var(--steel);border-color:var(--steel);color:var(--panel)}
.periods input{min-height:34px;padding:5px 8px;font-size:13px}
.two{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:860px){.two{grid-template-columns:minmax(0,1fr)}}
.side{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.side h3{margin:0;font-family:var(--f-display);font-weight:700;font-size:20px;text-transform:uppercase}
.toplist{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.toplist li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;font-variant-numeric:tabular-nums}
.toplist .bar{grid-column:1 / -1;height:4px;border-radius:2px;background:var(--chip);overflow:hidden}
.toplist .bar i{display:block;height:100%;background:var(--good)}

/* dialogs */
dialog{border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);padding:0;width:min(520px,calc(100vw - 32px));box-sizing:border-box}
dialog::backdrop{background:rgba(10,15,18,.5)}
.dlg{padding:20px;display:flex;flex-direction:column;gap:14px}
.dlg h2{margin:0;font-family:var(--f-display);font-weight:700;font-size:26px;text-transform:uppercase;line-height:1.05}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid .full{grid-column:1 / -1}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.fld label,.flabel{font-family:var(--f-mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.fld input,.fld select{width:100%;box-sizing:border-box}
.fld .hint{font-size:12px;color:var(--muted)}
.rackpick{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:5px}
@media (max-width:480px){.rackpick{grid-template-columns:repeat(6,minmax(0,1fr))}}
.rackpick label{cursor:pointer}
.rackpick input{position:absolute;opacity:0;pointer-events:none}
.rackpick span{display:grid;place-items:center;height:40px;border:1px solid var(--line);border-radius:6px;font-family:var(--f-display);font-weight:700;font-size:20px;color:var(--ink)}
.rackpick input:checked + span{background:var(--steel);border-color:var(--steel);color:var(--panel)}
.rackpick input:focus-visible + span{outline:2px solid var(--amber);outline-offset:2px}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--chip);padding:4px;border-radius:8px}
.seg button{all:unset;text-align:center;cursor:pointer;padding:8px 6px;border-radius:6px;font-weight:600;font-size:14px;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.quick{display:flex;flex-direction:column;gap:6px}
.quick .hint{font-size:12px;color:var(--muted)}
.qbtns{display:flex;gap:6px}
.pinfo{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.preview{padding:10px 12px;border-radius:6px;background:var(--chip);font-size:14px;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:2px}
.preview b{font-size:17px}
.err{font-size:13px;color:var(--bad);min-height:1em}
.calc{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}
.actions .right{display:flex;gap:8px;margin-left:auto}
.confirm{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;border-radius:6px;background:var(--bad-soft);font-size:14px}
@media (max-width:420px){.grid{grid-template-columns:1fr}}

/* MPIN lock */
.lock{position:fixed;inset:0;z-index:50;background:var(--bg);display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));overflow:auto}
.lockbox{width:min(320px,100%);display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}
.lockbox h2{margin:0;font-family:var(--f-display);font-weight:700;font-size:36px;text-transform:uppercase;line-height:1}
.lockbox h2 span{color:var(--amber)}
.dots{display:flex;gap:14px}
.dots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--steel)}
.dots i.on{background:var(--steel)}
.dots.shake{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}
.pad button{font:600 24px var(--f-display);height:60px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}
.pad button:active{background:var(--chip)}
.pad button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.pad .ghost{background:transparent;border-color:transparent;font-size:15px;font-family:var(--f-body);color:var(--muted)}
.lockmsg{min-height:1.2em;font-size:14px;color:var(--bad)}

.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:6px;font-size:14px;font-weight:500;z-index:60}
@media (prefers-reduced-motion:no-preference){.toast{animation:up .2s ease-out}@keyframes up{from{transform:translate(-50%,8px);opacity:0}}}
@media (prefers-reduced-motion:reduce){.dots.shake{animation:none}}

/* standalone extras */
.settings-list{display:flex;flex-direction:column;gap:10px}
.settings-list a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.sect{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--line)}
.sect h3{margin:0;font-family:var(--f-display);font-size:18px;text-transform:uppercase}
.ok{font-size:13px;color:var(--good);min-height:1em}
.lockmsg.busy{color:var(--muted)}
.codeprev{font-family:var(--f-mono);font-weight:600}
