:root{
  /* shell — mill green */
  --nav:#11241c; --nav-2:#1d382c; --nav-ink:#cfe0d6; --nav-dim:#6f8d7e;
  --brand:#15703f; --brand-2:#1b8a4d;
  /* surfaces */
  --bg:#fcfcfb; --panel:#fff; --panel-2:#f7f7f5; --line:#e6e5e1; --line-2:#f3f2ef;
  --ink:#0b0b0b; --ink-2:#52514e; --ink-3:#8a8880;
  /* data — validated for colour blindness, do not change casually */
  --blue:#2a78d6; --orange:#eb6834; --aqua:#1baf7a;
  --good:#0ca30c; --warn:#fab219; --serious:#ec835a; --crit:#d03b3b;
  --ok:#0ca30c; --danger:#d03b3b;
  --radius:10px; --shadow:0 1px 2px rgba(11,11,11,.04),0 1px 3px rgba(11,11,11,.06);
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
     background:var(--bg);color:var(--ink);font-size:13.5px;line-height:1.45}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
.n,.mono,td.n,th.n{font-family:var(--mono);font-variant-numeric:tabular-nums}
td.n,th.n{text-align:right}

/* ---------------------------------------------------------------- layout */
.shell{display:grid;grid-template-columns:206px 1fr;min-height:100vh}
.side{background:var(--nav);color:var(--nav-ink);padding:14px 0;position:sticky;top:0;height:100vh;overflow:auto}
.logo{font-weight:700;font-size:15px;color:#fff;padding:0 16px 12px;margin-bottom:2px;
      border-bottom:1px solid var(--nav-2);display:flex;align-items:center;gap:8px}
.logo span{background:var(--brand-2);color:#fff;border-radius:5px;padding:1px 6px;font-size:10px;font-weight:700}
.menu-btn{display:none;margin-left:auto;background:none;border:0;color:#fff;font-size:19px;cursor:pointer}
.nav a{display:block;color:var(--nav-ink);padding:6px 16px;font-size:12.5px}
.nav a:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}
.nav a.on{background:var(--brand);color:#fff;font-weight:600}
.nav .grp{font-size:9.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--nav-dim);padding:14px 16px 4px}
.nav .off{color:#3f5b4c;font-size:11.5px;padding:5px 16px;text-decoration:line-through}
.main{padding:16px 22px 60px;min-width:0}
.top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap}
.top h1{font-size:21px;margin:0;font-weight:700}
.top .sub{color:var(--ink-3);font-size:12px;margin-top:2px}
.user{color:var(--ink-2);font-size:12px;display:flex;align-items:center;gap:6px}
.user .b{font-weight:700;color:var(--ink)}
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:static;height:auto;padding-bottom:0}
  .menu-btn{display:block}
  .nav{display:none}.nav.open{display:block;padding-bottom:10px}
  .main{padding:14px}
}

/* ---------------------------------------------------------------- cards */
.grid{display:grid;gap:12px}
.g5{grid-template-columns:repeat(5,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.g-2-1{grid-template-columns:2fr 1fr}.g-3-2{grid-template-columns:1.05fr 1.15fr .95fr}
@media(max-width:1250px){.g5{grid-template-columns:repeat(3,1fr)}.g-3-2{grid-template-columns:1fr 1fr}}
@media(max-width:1000px){.g5,.g4,.g3,.g2,.g-2-1,.g-3-2{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
      box-shadow:var(--shadow);padding:13px 15px;margin-bottom:12px}
.card h3{margin:0 0 9px;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;
         color:var(--ink-2);font-weight:700;display:flex;justify-content:space-between;align-items:center}
.card h3 a{font-size:11.5px;text-transform:none;letter-spacing:0;font-weight:500}
.card .hint{font-size:11.5px;color:var(--ink-3);margin:-4px 0 11px}

/* kpi tiles */
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px}
.kpi .l{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.kpi .v{font-size:23px;font-weight:700;margin:3px 0 1px;font-family:var(--mono);font-variant-numeric:tabular-nums}
.kpi .u{font-size:13px;color:var(--ink-3);font-weight:400}
.kpi .d{font-size:11px;color:var(--ink-2)}

/* rows */
.row{display:flex;justify-content:space-between;align-items:baseline;padding:4.5px 0;
     border-bottom:1px solid var(--line-2);font-size:12.5px}
.row:last-child{border:0}
.row .n{font-weight:600}
.row.tot{border-top:1.5px solid var(--ink);margin-top:4px;padding-top:6px;font-weight:700;border-bottom:0}

/* status */
.ok,.up{color:var(--good)}.warn{color:var(--warn)}.bad,.dn{color:var(--crit)}.muted{color:var(--ink-3)}
.pill{display:inline-block;padding:1.5px 8px;border-radius:999px;font-size:10.5px;font-weight:700;
      background:#eef2f6;color:#3b4a5f}
.pill.ok{background:#dcf2dc;color:#0a6b0a}
.pill.bad{background:#fbe0e0;color:#8f1f1f}
.pill.warn{background:#fef3d8;color:#7a5400}
.status{display:inline-block;padding:1.5px 8px;border-radius:999px;font-size:10.5px;font-weight:700}
.status.D{background:#fef3d8;color:#7a5400}
.status.A{background:#dcf2dc;color:#0a6b0a}
.status.X{background:#eef2f6;color:#6b7688;text-decoration:line-through}

/* alerts list */
.alert{display:flex;gap:9px;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--line-2)}
.alert:last-child{border:0}
.alert .dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex:none;background:var(--ink-3)}
.alert .dot.crit{background:var(--crit)}.alert .dot.warn{background:var(--warn)}
.alert .dot.serious{background:var(--serious)}.alert .dot.good{background:var(--good)}
.alert .dot.info{background:var(--blue)}
.alert b{display:block;font-size:12.5px}
.alert span{color:var(--ink-2);font-size:11.5px}
.alert a{font-size:11.5px}

/* ageing / progress bar */
.bar{height:8px;border-radius:4px;background:#eeedea;overflow:hidden;display:flex;gap:2px}
.bar i{display:block;height:100%;border-radius:4px;background:var(--brand-2)}
.bar i.good{background:var(--good)}.bar i.warn{background:var(--warn)}
.bar i.serious{background:var(--serious)}.bar i.crit{background:var(--crit)}
.barlab{display:flex;justify-content:space-between;font-size:10.5px;color:var(--ink-3);margin-top:3px}

/* dark band (net weight, working capital) */
.band{background:#0f2a1e;color:#fff;border-radius:var(--radius);padding:13px 16px;
      display:flex;justify-content:space-between;align-items:center;gap:14px}
.band small{display:block;font-size:10px;color:#9dc0ae;letter-spacing:.06em;text-transform:uppercase}
.band b{font-size:25px;font-family:var(--mono);font-variant-numeric:tabular-nums}

/* floor cards */
.floor{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:9px;background:var(--panel-2)}
.floor .hd{display:flex;justify-content:space-between;align-items:baseline}
.floor .hd b{font-size:14.5px}
.floor .meta{color:var(--ink-3);font-size:11px}
.mini{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.mini div{font-size:10.5px;color:var(--ink-3)}
.mini b{display:block;font-size:15px;color:var(--ink);font-family:var(--mono);font-weight:700}

/* ---------------------------------------------------------------- tables */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);
   padding:5px 7px;border-bottom:1.5px solid var(--line);font-weight:700;white-space:nowrap}
td{padding:6px 7px;border-bottom:1px solid var(--line-2)}
td.n{font-family:var(--mono);font-variant-numeric:tabular-nums}
tbody tr:hover{background:#fbfbfa}
tfoot td{border-top:1.5px solid var(--ink);border-bottom:0;font-weight:700;padding-top:7px}
tr.flag{background:#fffaf0}
td.empty,.empty{color:var(--ink-3);text-align:center;padding:22px 0;font-style:italic}

/* ---------------------------------------------------------------- forms */
label{display:block;font-size:11px;color:var(--ink-2);margin-bottom:4px;font-weight:600}
input,select,textarea{width:100%;padding:9px 11px;border:1px solid #d9d7d1;border-radius:8px;
  font-size:15px;font-family:var(--mono);font-variant-numeric:tabular-nums;background:#fff;color:var(--ink)}
input[type=text],input[type=email],textarea,select,input.txt{font-family:inherit;font-size:14px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:-1px}
input[disabled],input.lock{background:var(--panel-2);color:#9a9892;border-style:dashed}
input[type=checkbox]{width:19px;height:19px}
textarea{min-height:64px;line-height:1.5}
.f{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 14px}
.f.two{grid-template-columns:repeat(2,1fr)}.f.four{grid-template-columns:repeat(4,1fr)}
.f.one{grid-template-columns:1fr}
@media(max-width:820px){.f,.f.two,.f.four{grid-template-columns:1fr}}
.f .big input{font-size:19px;font-weight:700;padding:11px}
.err{color:var(--crit);font-size:11.5px;margin-top:3px}
.help{color:var(--ink-3);font-size:11px;margin-top:3px}

/* buttons */
.btn{display:inline-block;padding:10px 19px;border-radius:9px;border:0;font-size:13.5px;font-weight:700;
     cursor:pointer;background:var(--brand);color:#fff;text-align:center}
.btn:hover{background:var(--brand-2);text-decoration:none;color:#fff}
.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.btn.ghost:hover{background:var(--panel-2);color:var(--ink)}
.btn.danger{background:var(--crit)}
.btn.sm{padding:6px 13px;font-size:12px;border-radius:7px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:4px}
.chip{border:1px solid var(--line);background:#fff;border-radius:7px;padding:5px 11px;font-size:12px;color:var(--ink-2)}
a.chip:hover{background:var(--panel-2);text-decoration:none}

/* tabs */
.tabs{display:flex;gap:6px;margin-bottom:13px;flex-wrap:wrap;align-items:center}
.tabs a{padding:6px 13px;border-radius:7px;background:#fff;font-size:12.5px;color:var(--ink-2);
        border:1px solid var(--line)}
.tabs a:hover{background:var(--panel-2);text-decoration:none}
.tabs a.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}

/* messages & notes */
.msgs{margin-bottom:12px}
.msg{padding:9px 13px;border-radius:8px;font-size:12.5px;margin-bottom:7px;border:1px solid}
.msg.success{background:#dcf2dc;border-color:#a8dfa8;color:#0a6b0a}
.msg.error{background:#fbe0e0;border-color:#f0b9b9;color:#8f1f1f}
.msg.warning{background:#fef3d8;border-color:#f3dda0;color:#6b4e00}
.msg.info{background:#e7f0fb;border-color:#bcd8f5;color:#134b8f}
.note{background:#fff8e6;border:1px solid #f3dda0;border-radius:8px;padding:9px 12px;
      font-size:11.5px;color:#6b4e00;margin:9px 0}
.hidebox{background:var(--panel-2);border:1px dashed #d9d7d1;border-radius:8px;padding:8px 11px;
         font-size:11px;color:#9a9892;text-align:center;margin-top:9px}

/* print */
@media print{
  .side,.noprint,.top .user,.tabs,.actions{display:none!important}
  .shell{grid-template-columns:1fr}.main{padding:0}
  .card{box-shadow:none;border:0;padding:0}
  body{background:#fff;font-size:12px}
}
