:root{--navy:#1F3864;--navy2:#2F5597;--green:#375623;--green2:#70AD47;--bg:#F3F5F9;--card:#fff;--line:#D9DEE7;--text:#1d2433;--muted:#667085;--red:#C00000;--input:#FFF8DC;--calc:#F2F2F2}
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}
a{color:var(--navy2)}
.topbar{position:fixed;inset:0 0 auto 0;height:58px;background:var(--navy);color:#fff;display:flex;align-items:center;gap:14px;padding:0 16px;z-index:20}
.brand{display:flex;align-items:center;gap:10px}.brand small{display:block;font-size:11px;opacity:.8}
.logo{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:8px;background:#fff;color:var(--navy);font-size:18px}
.logo.big{width:56px;height:56px;font-size:28px;background:var(--navy);color:#fff}
.who{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px}.who a{color:#fff;opacity:.85}
.menu-btn{display:none;background:none;border:0;color:#fff;font-size:22px;cursor:pointer}
.sidenav{position:fixed;top:58px;bottom:0;left:0;width:228px;background:#fff;border-right:1px solid var(--line);overflow-y:auto;padding:10px 0 30px;z-index:15}
.sidenav a{display:block;padding:8px 18px;color:var(--text);text-decoration:none;border-left:3px solid transparent}
.sidenav a:hover{background:#EEF2F8}.sidenav a.active{background:#E7EDF7;border-left-color:var(--navy2);font-weight:bold;color:var(--navy)}
.navgroup{margin:14px 18px 4px;font-size:11px;font-weight:bold;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
main.with-nav{margin-left:228px;padding:76px 24px 40px;max-width:1500px}
main.bare{padding:0}
.page-title h1{margin:0 0 4px;font-size:22px;color:var(--navy)}.page-title .sub{margin:0 0 16px;color:var(--muted);max-width:900px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:18px}
.card.narrow{max-width:560px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.card-head h2{margin:0;font-size:16px;color:var(--navy)}
.green .card-head h2,.green h2{color:var(--green)}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--text);text-decoration:none;font:inherit;cursor:pointer;white-space:nowrap}
.btn:hover{background:#F0F3F8}.btn-primary{background:var(--navy2);border-color:var(--navy2);color:#fff}.btn-primary:hover{background:var(--navy)}
.btn-danger{background:#fff;border-color:#e3b3b3;color:var(--red)}.btn.wide{width:100%;justify-content:center;margin-top:8px}
.filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px}
.filters label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
.filters label.check{flex-direction:row;align-items:center;gap:6px;font-size:13px;color:var(--text);padding-bottom:8px}
.filters .spacer{flex:1}
input,select{font:inherit;padding:7px 9px;border:1px solid #c5ccd8;border-radius:6px;background:#fff;min-width:0}
input:focus,select:focus{outline:2px solid #9DB7E3;border-color:var(--navy2)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px 18px}
.form-grid.one{grid-template-columns:1fr}
.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:bold;color:#344054}
.form-grid label input,.form-grid label select{background:var(--input);font-weight:normal}
.form-grid label.locked input,.form-grid label.locked select{background:var(--calc);color:#555}
.form-grid label small{font-weight:normal;color:var(--muted)}
.form-grid label.check{flex-direction:row;align-items:center;font-weight:normal}
.form-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.delete-form{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.req{color:var(--red)}
.alert{padding:10px 14px;border-radius:8px;margin-bottom:12px;border:1px solid}
.alert-ok{background:#ECF7EE;border-color:#B7DFC0}.alert-err{background:#FDECEC;border-color:#F2B8B8}
.alert-warn{background:#FFF6E0;border-color:#F3D48A}.alert-info{background:#EAF1FB;border-color:#BCD0EE}
.table-wrap{overflow-x:auto}
table.grid{width:100%;border-collapse:collapse;font-size:13px}
.grid th{background:var(--navy);color:#fff;padding:7px 8px;text-align:left;font-weight:bold;vertical-align:bottom}
.green .grid th,.grid.green th{background:var(--green)}
.grid td{padding:6px 8px;border-bottom:1px solid #E6E9EF;vertical-align:top}
.grid tbody tr:hover td{background:#F7F9FC}
.grid .num{text-align:right;white-space:nowrap}
.grid td.calc{background:#F7F7F7;font-weight:bold}
.grid tfoot td,.grid tr.total td{background:#DCE6F2;font-weight:bold;border-top:2px solid var(--navy2)}
.green .grid tr.total td{background:#E2EFDA;border-top-color:var(--green2)}
.grid tr.sec td{background:var(--green2);color:#fff;font-weight:bold;padding:4px 8px}
.grid tr.big td{background:#E2EFDA;font-weight:bold}
.grid tr.profit td{color:var(--green);font-size:14px}
.grid td.neg,.red{color:var(--red)}
.grid.compact td{padding:4px 8px}
.grid tr.muted td{color:#999}
.grid td.details{font-family:monospace;font-size:11px;color:#555;max-width:520px;word-break:break-all}
.empty{text-align:center;color:var(--muted);padding:24px!important}
.pager{display:flex;gap:10px;align-items:center;font-size:13px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line);border-top:4px solid var(--navy2);border-radius:10px;padding:12px 14px}
.kpi span{display:block;font-size:12px;color:var(--muted);font-weight:bold;text-transform:uppercase;letter-spacing:.03em}
.kpi b{display:block;font-size:22px;color:var(--navy);margin-top:4px}
.kpi.g{border-top-color:var(--green2)}.kpi.g b{color:var(--green)}
.kpi.r{border-top-color:var(--red)}.kpi.r b{color:var(--red)}
.kpi small{color:var(--muted)}
.charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.chart-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;height:330px}
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.role{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:bold;background:#E7EDF7;color:var(--navy)}
.topbar .role{background:rgba(255,255,255,.15);color:#fff}
.role-super_admin{background:#FBE5D6;color:#843C0C}.role-bod{background:#EDE2F6;color:#5B2C83}.role-store{background:#FFF2CC;color:#7F6000}
.role-planning{background:#DDEBF7;color:#1F4E79}.role-accounts{background:#E2EFDA;color:#375623}
.tag{padding:1px 7px;border-radius:10px;font-size:11px;background:#eee}.tag-create{background:#E2EFDA}.tag-update{background:#DDEBF7}.tag-delete{background:#FDECEC}
.quick{display:flex;flex-wrap:wrap;gap:10px}
.todo li{margin:6px 0}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(160deg,#1F3864,#2F5597 55%,#375623)}
.login-card{background:#fff;border-radius:14px;padding:28px;width:100%;max-width:380px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.login-card form{display:flex;flex-direction:column;gap:12px}.login-card label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:bold}
.login-brand{text-align:center;margin-bottom:16px}.login-brand h1{margin:10px 0 2px;color:var(--navy);font-size:22px}.login-brand p{margin:0;color:var(--muted)}
input.rate{width:130px;text-align:right;background:var(--input)}
.only-print{display:none}
@media (max-width:900px){
  .menu-btn{display:block}.who span:first-child,.brand small{display:none}
  .sidenav{transform:translateX(-100%);transition:transform .2s;box-shadow:4px 0 20px rgba(0,0,0,.15)}
  body.nav-open .sidenav{transform:none}
  main.with-nav{margin-left:0;padding:72px 14px 30px}
  .charts,.two-col{grid-template-columns:1fr}
  .who a{font-size:12px}
}
/* ---------------- PRINT (A4) ---------------- */
@page{size:A4 portrait;margin:10mm}
@page land{size:A4 landscape;margin:9mm}
@media print{
  body{background:#fff;font-size:11px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .no-print,.topbar,.sidenav{display:none!important}
  .only-print{display:block}
  main.with-nav{margin:0;padding:0;max-width:none}
  .print-head .ph-bar{background:var(--navy);color:#fff;text-align:center;font-weight:bold;font-size:15px;padding:6px}
  .page-title h1{text-align:center;font-size:15px;margin-top:4px}.page-title .sub{text-align:center;font-size:10px;margin:0 auto 8px}
  .card{border:0;padding:0;margin-bottom:10px;break-inside:avoid}
  .kpis{grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:10px}.kpi{padding:6px}.kpi b{font-size:14px}.kpi span{font-size:9px}
  .grid{font-size:10px}.grid th,.grid td{padding:3px 5px}
  .charts{grid-template-columns:1fr 1fr;gap:8px}.chart-box{height:82mm;padding:4px;break-inside:avoid}
  .page-break{break-before:page}
  .landscape{page:land}
  .landscape .chart-box{height:76mm}
  .chart-box canvas{width:100%!important;height:100%!important}
  .two-col{grid-template-columns:1fr 1fr;gap:10px}
  .table-wrap{overflow:visible}
  .print-foot{margin-top:10px;font-size:9px}.print-foot .signs{display:flex;justify-content:space-between;margin:14px 0 6px}
  a{color:inherit;text-decoration:none}
}
.small{font-size:12px;color:var(--muted)}
table.matrix{font-size:12px}
table.matrix td,table.matrix th{padding:5px 4px}
table.matrix td:first-child,table.matrix th:first-child{white-space:nowrap;min-width:190px}
@media print{table.matrix{font-size:8.5px}table.matrix td,table.matrix th{padding:2px 3px}table.matrix td:first-child{min-width:0}}
table.list td{white-space:nowrap}
textarea{font:inherit;padding:7px 9px;border:1px solid #c5ccd8;border-radius:6px;background:var(--input);resize:vertical}.form-grid label:has(textarea){grid-column:1/-1}

/* ---- v2: tech log, due list, inventory ---- */
.bf{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 12px}
.bf div{background:#F3F6FB;border:1px solid var(--line);border-radius:8px;padding:6px 12px}
.bf span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.bf b{font-size:16px;color:var(--navy)}
table.tl td{padding:2px 3px}table.tl th{text-align:center}table.tl th.c,table.tl td.c,.maind .c{text-align:center}
table.tl input{width:52px;padding:4px 5px;text-align:right;background:var(--input);border-color:#d6dbe4}
table.tl input.t{width:84px;text-align:left}table.tl input.wide{width:180px}
table.tl td.dt{white-space:nowrap;font-weight:bold}table.tl td.dt small{color:var(--muted);font-weight:normal}
table.tl tr.off td{background:#F2F2F2}table.tl tr.off input{background:#eee}
table.tl tfoot td{text-align:center}
.maind td,.maind th{padding:3px 6px;font-size:12px}.maind tr.idle td{color:#8a93a3}.maind .sep{border-left:2px solid #9DB7E3}
.chip{display:inline-block;padding:2px 9px;border-radius:12px;font-size:11px;font-weight:bold;white-space:nowrap}
.chip-overdue{background:#FDECEC;color:var(--red)}.chip-duesoon{background:#FFF2CC;color:#7F6000}.chip-ok{background:#E2EFDA;color:var(--green)}.chip-notset{background:#EEE;color:#555}
.badge{display:inline-block;min-width:18px;padding:0 6px;margin-left:6px;border-radius:9px;font-size:11px;font-weight:bold;color:#fff;text-align:center;line-height:18px}
.red-b{background:var(--red)}.amber-b{background:#E69B00}
.kpi.w{border-top-color:#E69B00}.kpi.w b{color:#9C6500}
.amber{color:#9C6500;font-weight:bold}
fieldset.newpart{grid-column:1/-1;border:1px dashed #c5ccd8;border-radius:8px;padding:10px 14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px 18px}
fieldset.newpart[hidden]{display:none}fieldset.newpart legend{font-size:13px;font-weight:bold;color:var(--navy);padding:0 6px}
fieldset.newpart .form-grid{grid-column:1/-1}
.inline-form{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.inline-form input{flex:1;min-width:120px}
.linkbtn{background:none;border:0;color:var(--red);cursor:pointer;font:inherit;font-size:12px;padding:0}
.cert{margin-top:12px;font-style:italic}.verify{font-size:13px;margin-top:6px}
table.list td.wrapcell{white-space:normal;min-width:140px;max-width:280px}
.nowrap{white-space:nowrap}.small-btn{padding:4px 10px;font-size:12px}
.due td{vertical-align:top}
@media print{.maind td,.maind th{font-size:8px;padding:1px 3px}table.tl input{border:0;background:none;width:34px}.chip{border:1px solid #999}}
