:root{--ink:#193b33;--muted:#6e7b74;--green:#236348;--paper:#f4f5f0;--line:#dce3db;--red:#b34736;--gold:#987124}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:#21372f;font:14px/1.5 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:9px;background:white;padding:10px 15px;color:var(--ink)}button:hover{background:#edf3ec}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--ink);color:white;border-color:var(--ink)}.primary:hover{background:var(--green)}.danger{color:var(--red)}.small{font-size:12px;padding:6px 10px}a{color:var(--green)}.shell{display:grid;grid-template-columns:225px 1fr;min-height:100vh}aside{background:var(--ink);color:#dce9dc;padding:30px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{font:36px Georgia,serif;color:#fff;padding:0 14px}.brand span{color:#cedb97}.tagline{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;margin:3px 14px 38px;color:#a9c1b4}nav{display:grid;gap:6px}nav button{text-align:left;background:none;color:#bcd0c4;border:0;padding:12px 15px}nav button.active{background:#31574a;color:#fff}nav button:hover{background:#294d41}aside footer{margin-top:auto;padding:25px 14px 0;font-size:12px;color:#a9c1b4}main{padding:30px 40px;max-width:1600px;width:100%;margin:auto}header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}h1{font:32px Georgia,serif;margin:3px 0}h2{font-size:18px;margin:0 0 16px}h3{font-size:15px;margin:0 0 10px}p{margin:8px 0 14px}.muted,small{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:1.4px;font-size:10px;color:var(--muted)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}.toolbar label{margin:0;display:flex;gap:8px;align-items:center}.toolbar input,.toolbar select{width:auto}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}.card,.panel{background:white;border:1px solid var(--line);border-radius:14px;padding:22px}.card .value{font-size:28px;letter-spacing:-1px;font-weight:600;margin:9px 0}.card.hero{background:var(--ink);color:#fff}.hero .muted,.hero small{color:#c0d2c7}.grid{display:grid;grid-template-columns:1.65fr 1fr;gap:22px;margin-bottom:22px}.panel{margin-bottom:20px}.grid .panel{margin:0}.notice{padding:13px 17px;background:#fff6dc;border:1px solid #eadcab;border-radius:9px;margin-bottom:18px;color:#775b27;font-size:13px}.notice.info{background:#eaf1e9;border-color:#cfdecd;color:#355544}.row{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid #eef0eb;padding:13px 0}.row:last-child{border:0}.positive{color:var(--green)}.negative{color:var(--red)}.badge{font-size:10px;font-weight:600;letter-spacing:.3px;padding:3px 8px;border-radius:20px;background:#edf1ea;color:#52705a;white-space:nowrap}.badge.warn{background:#fbefd4;color:#8e6c29}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{font-size:11px;text-transform:uppercase;letter-spacing:.6px;font-weight:600;color:var(--muted);text-align:left;padding:12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid #edf0eb}td.numeric,th.numeric{text-align:right;font-variant-numeric:tabular-nums}tr.total td{background:#edf3e9;font-weight:700}td small{display:block;font-size:11px;white-space:normal;max-width:360px}.empty{padding:30px;color:var(--muted);text-align:center}.progress{height:7px;background:#e8ede5;border-radius:8px;overflow:hidden;margin:12px 0}.progress>span{display:block;height:100%;background:var(--green)}.chart{display:flex;align-items:center;width:100%;height:200px}.chart svg{width:100%;height:100%}.chart .line{stroke:#2a7352;fill:none;stroke-width:2.7}.chart .axis{stroke:#cad5cb;stroke-dasharray:4 4}.chart text{fill:#6e7b74;font-size:11px}.login{max-width:430px;margin:9vh auto;padding:35px}.login .brand{color:var(--ink);padding:0;margin-bottom:20px}.login h1{font-size:26px}label{display:block;margin-bottom:14px;font-size:12px;font-weight:600}input,select,textarea{display:block;margin-top:6px;width:100%;border:1px solid #cbd5cb;border-radius:7px;padding:10px;background:white;color:#263e32}input:focus,select:focus,textarea:focus{outline:2px solid #85a78b;outline-offset:1px}input[type=checkbox]{display:inline;width:auto;margin-right:7px}textarea{min-height:75px}dialog{border:1px solid var(--line);border-radius:16px;padding:26px;width:min(650px,94vw);max-height:90vh;color:var(--ink)}dialog::backdrop{background:#112e2477;backdrop-filter:blur(3px)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.wide{grid-column:1/-1}.actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.error{color:var(--red);margin:12px 0}.loading{padding:80px;text-align:center}#toast{display:none;position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#203e32;color:white;padding:12px 24px;border-radius:10px;box-shadow:0 6px 25px #0002;z-index:1000}details{margin:15px 0}summary{cursor:pointer}.footnote{font-size:12px;color:var(--muted);margin-top:18px}.pillgroup{display:flex;gap:10px;flex-wrap:wrap}.monthbox{font-size:12px;color:var(--muted)}.mobiletitle{display:none}
@media(max-width:1000px){main{padding:25px 20px}.shell{grid-template-columns:185px 1fr}.cards{gap:10px}.card{padding:15px}.card .value{font-size:23px}.grid{grid-template-columns:1fr}}
@media(max-width:700px){.shell{display:block}aside{height:auto;position:static;padding:13px 14px}.brand{font-size:26px;padding:0}.tagline,aside footer{display:none}nav{display:flex;overflow-x:auto;gap:2px;margin-top:10px}nav button{white-space:nowrap;padding:8px 12px;font-size:12px}main{padding:20px 14px}header{align-items:flex-start;gap:8px;margin-bottom:20px}h1{font-size:26px}header .primary{font-size:12px;padding:10px}.cards{grid-template-columns:1fr}.card .value{font-size:27px}.card{padding:17px}.formgrid{grid-template-columns:1fr}.wide{grid-column:auto}.panel{padding:17px}.login{margin:5vh 15px}.toolbar input,.toolbar select{max-width:155px}.chart{height:160px}td,th{padding:10px 8px}}
