:root{
  --bg:#EEEFE9; --paper:#FFFFFF; --paper2:#F7F8F2;
  --ink:#1D252F; --ink-soft:#4E5661; --line:#D9DBD1;
  --red:#F54E27; --red-deep:#D53A17;
  --yellow:#FFC270; --yellow-soft:#FFEBC9;
  --blue:#2F80FA; --purple:#B62EE5; --green:#29A568;
  --navy:#11151E; --navy2:#1A2130; --navy3:#232C3F; --navy-line:#2C3650;
  --disp:"Bricolage Grotesque",sans-serif;
  --body:"Instrument Sans",sans-serif;
  --mono:"JetBrains Mono",monospace;
  --hard:4px 4px 0 rgba(29,37,47,.92);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--body);background:var(--bg);color:var(--ink);line-height:1.55}
h1,h2,h3{font-family:var(--disp);letter-spacing:-.02em}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit}

.layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.side{background:var(--paper);border-right:2px solid var(--ink);padding:22px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .brand{display:flex;gap:10px;align-items:center;font-family:var(--disp);font-weight:800;font-size:1.1rem;padding:6px 10px 18px;border-bottom:2px solid var(--line);margin-bottom:12px}
.side .brand svg{width:32px;height:auto}
.side .brand em{font-style:normal;font-size:.58rem;background:var(--red);color:#fff;border:1.5px solid var(--ink);border-radius:4px;padding:2px 6px;font-weight:700;letter-spacing:.08em}
.side a{color:var(--ink-soft);font-weight:600;padding:10px 12px;border-radius:8px;display:flex;gap:10px;align-items:center;font-size:.92rem;border:2px solid transparent;transition:.15s}
.side a:hover{background:var(--paper2);color:var(--ink)}
.side a.on{background:var(--ink);color:#fff}
.side a.on:hover{background:var(--ink)}

.content{padding:32px 38px;max-width:1280px}
.content h1{font-size:1.9rem;margin-bottom:8px}
.content .sub{color:var(--ink-soft);margin-bottom:22px}

.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:28px}
.kpi{background:#fff;border:2px solid var(--ink);border-radius:12px;padding:16px;box-shadow:var(--hard);transition:transform .15s}
.kpi:hover{transform:translate(-2px,-2px)}
.kpi b{display:block;font-family:var(--disp);font-size:1.8rem;font-weight:800;margin-top:6px}
.kpi span{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);display:block}
.kpi.ok{background:#DFF3E7}.kpi.info{background:#E8F0FF}.kpi.warn{background:var(--yellow-soft)}
.kpi .trend{font-family:var(--mono);font-size:.68rem;font-weight:700;margin-top:6px}
.kpi .trend.up{color:var(--green)}.kpi .trend.down{color:var(--red-deep)}

.card{background:#fff;border:2px solid var(--ink);border-radius:12px;padding:22px;margin-bottom:18px;box-shadow:var(--hard)}
.card h2{font-size:1.25rem;margin-bottom:14px}

.tbl{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:2px solid var(--ink);border-radius:12px;overflow:hidden}
.tbl th{text-align:left;font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);padding:12px 16px;background:var(--paper2);border-bottom:2px solid var(--ink)}
.tbl td{padding:11px 16px;border-top:1px solid var(--line);vertical-align:top;font-size:.88rem}
.tbl .mono{font-family:var(--mono);font-size:.78rem}
.tbl tr:hover td{background:var(--paper2)}

.badge{font-family:var(--mono);font-size:.62rem;font-weight:700;padding:3px 9px;border-radius:5px;border:1.5px solid var(--ink);display:inline-block}
.badge.ok{background:#DFF3E7;color:#173B2A}
.badge.warn{background:var(--yellow-soft);color:var(--ink)}
.badge.crit{background:#FFD9CF;color:var(--red-deep)}
.badge.info{background:#E8F0FF;color:#1E3A8A}
.badge.purple{background:#F3E5FD;color:#4C1D95}

.btn{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:.88rem;padding:9px 16px;border-radius:7px;border:2px solid var(--ink);cursor:pointer;transition:transform .15s,box-shadow .15s;background:#fff;color:var(--ink)}
.btn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 rgba(29,37,47,.9)}
.btn.red{background:var(--red);color:#fff}
.btn.red:hover{background:var(--red-deep)}
.btn.green{background:var(--green);color:#fff}
.btn.ink{background:var(--ink);color:#fff}
.btn.mini{font-size:.72rem;padding:5px 10px}
.btn.mini.crit{background:#FFD9CF;color:var(--red-deep)}

.rowbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.rowbar label{display:flex;flex-direction:column;gap:5px;font-size:.78rem;font-weight:600}

.form{display:flex;flex-direction:column;gap:12px;max-width:520px}
.form label{display:flex;flex-direction:column;gap:5px;font-weight:600;font-size:.85rem}
.form input,.form select,.form textarea{
  border:2px solid var(--ink);border-radius:8px;padding:10px 12px;font:inherit;background:#fff;color:var(--ink);outline:none}
.form input:focus,.form select:focus{box-shadow:3px 3px 0 var(--yellow)}

.notice{border-radius:8px;padding:12px 16px;margin:12px 0;font-weight:600;border:2px solid var(--ink);font-size:.88rem}
.notice.ok{background:#DFF3E7;color:#173B2A}
.notice.warn{background:var(--yellow-soft);color:var(--ink)}
.notice.crit{background:#FFD9CF;color:var(--red-deep)}

.mono{font-family:var(--mono);font-size:.82rem}
.small{font-size:.82rem}
.mut{color:var(--ink-soft)}

/* login screen */
body.plain{display:grid;place-items:center;min-height:100vh}
.authcard{background:#fff;border:2px solid var(--ink);border-radius:14px;padding:30px;width:380px;box-shadow:var(--hard)}
.authcard h1{font-size:1.4rem;margin-bottom:4px}
.authcard .brand{display:flex;gap:8px;align-items:center;font-family:var(--disp);font-weight:800;font-size:1.1rem;margin-bottom:18px}
.authcard .brand svg{width:36px;height:auto}
.authcard form{display:flex;flex-direction:column;gap:12px}
.authcard label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600}
.authcard input{border:2px solid var(--ink);border-radius:8px;padding:10px 12px;font:inherit}
.authcard input:focus{box-shadow:3px 3px 0 var(--yellow);outline:none}

/* finance page extras */
.chart-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:24px}
.chart-card{background:#fff;border:2px solid var(--ink);border-radius:12px;padding:18px;box-shadow:var(--hard);min-height:260px}
.chart-card h3{font-size:1rem;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.bar-chart{display:flex;align-items:flex-end;gap:10px;height:180px;padding:12px 4px 0;border-bottom:2px solid var(--ink)}
.bar-chart .b{flex:1;background:var(--red);border:1.5px solid var(--ink);border-radius:5px 5px 0 0;position:relative;min-height:2px;transition:transform .15s}
.bar-chart .b:hover{transform:scaleY(1.04)}
.bar-chart .b::after{content:attr(data-v);position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:.62rem;font-weight:700;white-space:nowrap}
.bar-chart .b::before{content:attr(data-l);position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:.58rem;color:var(--ink-soft);white-space:nowrap}
.donut-wrap{display:flex;align-items:center;gap:22px;height:100%}
.donut{position:relative;width:160px;height:160px;flex:none}
.donut svg{transform:rotate(-90deg);width:100%;height:100%}
.donut .ctr{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
.donut .ctr b{font-family:var(--disp);font-size:1.6rem;font-weight:800;display:block}
.donut .ctr small{font-family:var(--mono);font-size:.58rem;color:var(--ink-soft);letter-spacing:.1em}
.legend-list{display:flex;flex-direction:column;gap:8px;font-size:.85rem}
.legend-list .l{display:flex;align-items:center;gap:8px}
.legend-list .sw{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--ink);flex:none}

@media (max-width:1000px){
  .layout{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;padding:12px}
  .side .brand{border-bottom:none;padding-bottom:0;margin-bottom:0;width:100%}
  .kpis{grid-template-columns:1fr 1fr}
  .chart-grid{grid-template-columns:1fr}
  .content{padding:22px}
}