/* Hassam Paper Industries ERP — theme.css
   Extracted verbatim from the approved prototype (reference/prototype.html).
   DO NOT restyle. Every screen in the live ERP must use these tokens and classes.
   Fonts: Archivo (display), IBM Plex Sans (body), IBM Plex Mono (all numbers).
   Load in <head>:
   <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap">
*/

:root{
  --ground:#F1F0EB; --surface:#FFFFFF; --surface-2:#E9E8E1; --surface-3:#DEDDD4;
  --line:#D6D5CC; --line-soft:#E3E2DA;
  --ink:#191C1A; --ink-2:#40473F; --muted:#6A716A;
  --accent:#1D6A55; --accent-2:#14503F; --accent-soft:#DCEAE3;
  --fuel:#8A5F10; --fuel-soft:#F3E8CE;
  --alert:#A33A24; --alert-soft:#F7E3DC;
  --warn:#8A6A12; --warn-soft:#F5EBD2;
  --on-accent:#FFFFFF;
  --shadow:0 1px 2px rgba(25,28,26,.05),0 10px 26px -18px rgba(25,28,26,.35);
  --display:'Archivo','Helvetica Neue',Arial,sans-serif;
  --body:'IBM Plex Sans','Segoe UI',system-ui,sans-serif;
  --mono:'IBM Plex Mono','SFMono-Regular',Consolas,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#111413; --surface:#1A1F1C; --surface-2:#222825; --surface-3:#2B322E;
    --line:#333B36; --line-soft:#272E2A;
    --ink:#E7EAE6; --ink-2:#C0C7C1; --muted:#8B938C;
    --accent:#5CBFA0; --accent-2:#7FD4B8; --accent-soft:#16332A;
    --fuel:#D6A94F; --fuel-soft:#33290F;
    --alert:#E28E76; --alert-soft:#3B1E16;
    --warn:#D9B45C; --warn-soft:#332A12;
    --on-accent:#0C1512;
    --shadow:0 1px 2px rgba(0,0,0,.5),0 12px 30px -20px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"]{
  --ground:#111413; --surface:#1A1F1C; --surface-2:#222825; --surface-3:#2B322E;
  --line:#333B36; --line-soft:#272E2A;
  --ink:#E7EAE6; --ink-2:#C0C7C1; --muted:#8B938C;
  --accent:#5CBFA0; --accent-2:#7FD4B8; --accent-soft:#16332A;
  --fuel:#D6A94F; --fuel-soft:#33290F;
  --alert:#E28E76; --alert-soft:#3B1E16;
  --warn:#D9B45C; --warn-soft:#332A12;
  --on-accent:#0C1512;
  --shadow:0 1px 2px rgba(0,0,0,.5),0 12px 30px -20px rgba(0,0,0,.9);
}

*{box-sizing:border-box}
body{background:var(--ground);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.5}
h1,h2,h3,h4{font-family:var(--display);margin:0;text-wrap:balance}
p{margin:0}
button{font:inherit;cursor:pointer}
.mono{font-family:var(--mono)}
.tnum,.num{font-variant-numeric:tabular-nums}

.app{min-height:100vh;display:flex;flex-direction:column}
.demo-strip{background:var(--warn-soft);color:var(--warn);font-family:var(--mono);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 16px;text-align:center;border-bottom:1px solid var(--line)}
.topbar{display:flex;align-items:center;gap:14px;padding:9px 16px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;flex-wrap:wrap}
.logo{width:28px;height:28px;border-radius:3px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:.72rem;flex:none}
.co{line-height:1.15}
.co b{font-family:var(--display);font-size:.83rem;display:block}
.co span{font-family:var(--mono);font-size:.62rem;color:var(--muted);letter-spacing:.04em}
.tb-sel{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:3px;padding:4px 9px;font-size:.75rem;color:var(--ink-2)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.tb-bell{border:1px solid var(--alert);color:var(--alert);background:var(--alert-soft);border-radius:3px;padding:4px 10px;font-family:var(--mono);font-size:.68rem;letter-spacing:.05em}
.avatar{width:27px;height:27px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;font-family:var(--mono);font-size:.65rem;color:var(--ink-2)}

.body{display:grid;grid-template-columns:224px minmax(0,1fr);flex:1}
.side{background:var(--surface-2);border-right:1px solid var(--line);padding:8px 0 50px;position:sticky;top:47px;height:calc(100vh - 47px);overflow-y:auto}
.side .grp{font-family:var(--mono);font-size:.58rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);padding:13px 15px 4px;display:flex;gap:6px}
.side .grp i{font-style:normal;opacity:.6}
.side button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;padding:5px 15px;font-size:.785rem;color:var(--ink-2);border-left:2px solid transparent}
.side button:hover{background:var(--surface);color:var(--ink)}
.side button.on{background:var(--surface);color:var(--ink);font-weight:600;border-left-color:var(--accent)}
.side button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.side .dot{width:5px;height:5px;border-radius:50%;background:var(--muted);flex:none}
.side button.on .dot{background:var(--accent)}
.side .cnt{margin-left:auto;font-family:var(--mono);font-size:.6rem;background:var(--alert);color:#fff;border-radius:8px;padding:0 6px;line-height:15px}
:root[data-theme="dark"] .side .cnt,:root:not([data-theme="light"]) .side .cnt{color:#2B0F08}

.main{padding:18px 22px 70px;min-width:0}
.page-h{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:16px;padding-bottom:13px;border-bottom:1px solid var(--line)}
.page-h h2{font-size:1.26rem;letter-spacing:-.02em;font-weight:600}
.page-h .crumb{font-family:var(--mono);font-size:.62rem;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:3px}
.page-h .acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:3px;padding:6px 13px;font-size:.78rem}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
.btn.pri:hover{background:var(--accent-2);border-color:var(--accent-2);color:var(--on-accent)}
.btn.danger{background:var(--alert-soft);border-color:var(--alert);color:var(--alert)}
.btn[disabled]{opacity:.45;cursor:not-allowed;border-style:dashed}
.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.card{background:var(--surface);border:1px solid var(--line);border-radius:4px}
.card-h{display:flex;align-items:center;gap:10px;padding:10px 15px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.card-h h3{font-size:.88rem;font-weight:600}
.card-h .sub{font-family:var(--mono);font-size:.64rem;color:var(--muted);letter-spacing:.05em;margin-left:auto}
.card-b{padding:15px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(226px,1fr))}
.stack{display:flex;flex-direction:column;gap:14px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:10px}
.kpi{background:var(--surface);border:1px solid var(--line-soft);border-radius:4px;padding:11px 13px}
.kpi u{display:block;text-decoration:none;font-family:var(--mono);font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.kpi strong{display:block;font-family:var(--display);font-size:1.38rem;letter-spacing:-.025em;margin-top:2px;font-variant-numeric:tabular-nums;font-weight:600}
.kpi em{font-style:normal;font-family:var(--mono);font-size:.65rem;color:var(--muted)}
.kpi.bad{border-left:3px solid var(--alert)} .kpi.bad em{color:var(--alert)}
.kpi.ok{border-left:3px solid var(--accent)} .kpi.ok em{color:var(--accent)}
.kpi.warn{border-left:3px solid var(--warn)} .kpi.warn em{color:var(--warn)}

.tw{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.78rem;min-width:540px}
th{text-align:left;font-family:var(--mono);font-size:.61rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:500;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}
td{padding:7px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--surface-2)}
th.num,td.num{text-align:right;font-family:var(--mono)}
tfoot td{background:var(--surface-2);font-weight:600;border-top:1px solid var(--line)}

.tag{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:2px;background:var(--surface-3);color:var(--ink-2);white-space:nowrap}
.tag.ok{background:var(--accent-soft);color:var(--accent)}
.tag.bad{background:var(--alert-soft);color:var(--alert)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.fuel{background:var(--fuel-soft);color:var(--fuel)}

.field{display:flex;flex-direction:column;gap:4px}
.field label{font-family:var(--mono);font-size:.61rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.field input,.field select{font-family:var(--mono);font-size:.82rem;padding:6px 9px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--ink);width:100%}
.field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
.field.ro input{background:var(--surface-2);color:var(--muted)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}

.calcrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px dashed var(--line)}
.calcrow:last-child{border-bottom:none}
.calcrow .lbl{font-size:.82rem}
.calcrow .lbl small{display:block;font-family:var(--mono);font-size:.65rem;color:var(--muted);margin-top:1px}
.calcrow .val{font-family:var(--mono);font-size:.9rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.calcrow.hi{background:var(--surface-2);margin:0 -15px;padding:10px 15px;border-bottom:none}
.calcrow.hi .val{font-size:1.02rem;font-weight:600}

.verdict{border-radius:4px;padding:14px 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.verdict.blocked{background:var(--alert-soft);border:1px solid var(--alert)}
.verdict.pass{background:var(--accent-soft);border:1px solid var(--accent)}
.verdict h3{font-size:1rem}
.verdict.blocked h3{color:var(--alert)}
.verdict.pass h3{color:var(--accent)}
.verdict p{font-size:.79rem;color:var(--ink-2);margin-top:3px;max-width:58ch}
.verdict .side-act{margin-left:auto;display:flex;gap:8px}

.exc{display:flex;gap:12px;align-items:flex-start;padding:11px 15px;border-bottom:1px solid var(--line-soft)}
.exc:last-child{border-bottom:none}
.exc .sev{width:3px;align-self:stretch;border-radius:2px;background:var(--muted);flex:none}
.exc.hi .sev{background:var(--alert)} .exc.md .sev{background:var(--warn)} .exc.lo .sev{background:var(--accent)}
.exc .txt{min-width:0;flex:1}
.exc .txt b{font-size:.82rem;font-weight:600;display:block}
.exc .txt span{font-size:.75rem;color:var(--muted)}
.exc .meta{font-family:var(--mono);font-size:.64rem;color:var(--muted);text-align:right;white-space:nowrap}

.bars{display:flex;flex-direction:column;gap:7px}
.barrow{display:grid;grid-template-columns:120px minmax(0,1fr) 78px;gap:10px;align-items:center;font-size:.77rem}
.barrow .track{height:9px;background:var(--surface-3);border-radius:1px;overflow:hidden}
.barrow .fill{height:100%;background:var(--accent)}
.barrow .fill.f{background:var(--fuel)} .barrow .fill.a{background:var(--alert)}
.barrow .v{font-family:var(--mono);font-size:.75rem;text-align:right;font-variant-numeric:tabular-nums}

.deckle{border:1px solid var(--line);border-radius:3px;overflow:hidden;display:flex;height:40px;font-family:var(--mono);font-size:.68rem}
.deckle div{display:grid;place-items:center;border-right:1px solid var(--surface);color:var(--on-accent);background:var(--accent)}
.deckle div:last-child{border-right:none}
.deckle div.trim{background:var(--alert);color:#fff}
:root[data-theme="dark"] .deckle div.trim,:root:not([data-theme="light"]) .deckle div.trim{color:#2B0F08}

.note{font-size:.75rem;color:var(--muted)}
.perm{font-family:var(--mono);font-size:.7rem}
.perm .y{color:var(--accent)} .perm .n{color:var(--muted);opacity:.5}
.replist{display:grid;grid-template-columns:repeat(auto-fill,minmax(214px,1fr));gap:10px}
.rep{border:1px solid var(--line);border-radius:3px;padding:11px 13px;background:var(--surface)}
.rep b{display:block;font-size:.81rem;font-family:var(--display);font-weight:600}
.rep span{display:block;font-size:.72rem;color:var(--muted);margin-top:3px}
.rep i{font-style:normal;font-family:var(--mono);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.fin{max-width:640px}
.fin .calcrow .val{min-width:120px;text-align:right}

svg.chart{display:block;width:100%;height:auto}
.c-grid{stroke:var(--line);stroke-width:1}
.c-lim{stroke:var(--alert);stroke-width:1;stroke-dasharray:4 4}
.c-tgt{stroke:var(--accent);stroke-width:1.2}
.c-line{stroke:var(--ink-2);stroke-width:1.6;fill:none}
.c-pt{fill:var(--accent)} .c-pt.out{fill:var(--alert)}
.c-txt{fill:var(--muted);font-family:var(--mono);font-size:9.5px}
.c-bar{fill:var(--accent)} .c-bar.low{fill:var(--alert)}
.c-std{stroke:var(--fuel);stroke-width:1.4;stroke-dasharray:5 3}

@media (max-width:900px){
  .body{grid-template-columns:1fr}
  .side{position:static;height:auto;display:flex;overflow-x:auto;padding:0;border-right:none;border-bottom:1px solid var(--line)}
  .side .grp{display:none}
  .side button{width:auto;white-space:nowrap;border-left:0;border-bottom:2px solid transparent;padding:9px 12px}
  .side button.on{border-left:0;border-bottom-color:var(--accent)}
  .side .dot,.side .cnt{display:none}
  .main{padding:14px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
