:root{--ink:#15211b;--muted:#67726b;--faint:#8b958e;--line:#e4e8e4;--line2:#eef1ee;--bg:#f5f7f4;--card:#fff;--green:#558d2c;--green-d:#3f6a20;--green-l:#eef4e4;--green-bar:#6ba83a;--clay:#b0492f;--amber:#9a6a16;--amber-l:#f7efdc}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.mono{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.shell{display:flex;min-height:100vh}.sidebar{width:226px;flex:none;background:#fff;border-right:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow:auto}.sbrand,.sidebar{display:flex;flex-direction:column}.sbrand{padding:18px;border-bottom:1px solid var(--line2);align-items:flex-start;gap:6px}.sbrand b{font-size:18px;font-weight:700;color:var(--green-d);letter-spacing:-.02em}.sbrand .role{display:block;font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.16em}.snav{display:flex;flex-direction:column;gap:2px;padding:14px 12px;flex:1 1}.nitem{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:500}.nitem:hover{background:var(--bg);color:var(--ink)}.nitem.on{background:var(--green-l);color:var(--green-d);font-weight:600;box-shadow:inset 3px 0 0 var(--green)}.sfoot{padding:14px;border-top:1px solid var(--line2)}.snm{font-size:13px;font-weight:600}.srl{font-size:11px;color:var(--faint);margin-bottom:8px}.content{flex:1 1;min-width:0;padding:6px 28px 48px;max-width:1500px}.periodbar{display:flex;align-items:center;gap:10px;padding:10px 0 4px}.periodbar .plab{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.periodbar select{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:#fff;color:var(--ink)}.periodbar select:focus{outline:2px solid var(--green);border-color:var(--green)}.phead{margin:22px 0 6px}.phead h1{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0}.psub{font-size:12.5px;color:var(--muted)}.kpis{display:grid;grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:16px 0}.kpi{background:var(--card);padding:14px 15px}.kpi .lab{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.kpi .val{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:19px;font-weight:600;margin-top:5px}.val.green{color:var(--green)}.val.clay{color:var(--clay)}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.card>div>table,.card>table{min-width:100%}.card{overflow-x:auto}.card h2{margin:0 0 12px;font-size:13px;font-weight:600}.tbl-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.tbl-wrap td,.tbl-wrap th{white-space:nowrap}.tbl-wrap tbody td:first-child,.tbl-wrap thead th:first-child{position:-webkit-sticky;position:sticky;left:0;background:var(--card);z-index:2}.tbl-wrap thead th:first-child{background:#fbfcfb;z-index:3}.tbl-wrap tbody tr:hover td:first-child{background:#fafbfa}.tbl-wrap tbody tr.totrow td:first-child{background:var(--card)}.tbl-wrap::-webkit-scrollbar{height:10px}.tbl-wrap::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px}.tbl-wrap::-webkit-scrollbar-thumb:hover{background:var(--faint)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{background:#fbfcfb;text-align:left;font-weight:600;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}td.r,thead th.r{text-align:right}td.r{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tbody td{padding:9px 14px;border-bottom:1px solid var(--line2)}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbfa}.totrow td{font-weight:600;border-top:2px solid var(--line)}.mid{font-family:IBM Plex Mono,ui-monospace,monospace;color:var(--muted);font-size:12.5px}.exp{color:var(--clay)}.zero{color:var(--faint)}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:13px;font-weight:500;border-radius:8px;padding:8px 13px;cursor:pointer}.btn:hover{color:var(--green)}.btn-primary,.btn:hover{border-color:var(--green)}.btn-primary{background:var(--green);color:#fff}.btn-primary:hover{background:var(--green-d);color:#fff}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field label{font-size:12px;color:var(--muted);font-weight:500}.field input,.field select{font:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:#fff;color:var(--ink)}.field input:focus,.field select:focus{outline:2px solid var(--green);border-color:var(--green)}.hint{font-size:12px;color:var(--faint)}.error{color:var(--clay);font-size:13px}.notice{background:var(--amber-l);color:var(--amber);font-size:12px;padding:8px 12px;border-radius:8px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.logincard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px;max-width:400px;width:100%}.logincard b{font-size:20px;font-weight:700;color:var(--green-d);letter-spacing:-.02em}.logincard h1{font-size:15px;font-weight:500;color:var(--muted);margin:6px 0 20px}.signin{width:100%;margin-top:8px;background:var(--green);color:#fff;border:0;border-radius:9px;padding:12px;font-weight:600;cursor:pointer;font-size:14px}.signin:hover{background:var(--green-d)}.signin:disabled{opacity:.6;cursor:default}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--green);outline-offset:2px}@media (max-width:820px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static}.snav{flex-direction:row;overflow-x:auto}.content{padding:6px 16px 40px}}