:root{--bg:#F4F6F5;--nav:#14302A;--nav-t:#C9DAD3;--acc:#1F6F5C;--ink:#1B2420;--mut:#5A6863;--line:#DCE4E0;--card:#fff;--warn:#A3470E;--warn-bg:#FCE8D8;--err:#B42318;--err-bg:#FDE2E0;--ok:#145C49;--ok-bg:#E2F1EA;--info:#1F4F8F;--info-bg:#EEF3FA}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--acc)}a:hover{color:#154F41}
.wrap{display:flex;flex-wrap:wrap;min-height:100vh}
nav.side{flex:1 1 220px;max-width:250px;background:var(--nav);padding:22px 14px;display:flex;flex-direction:column;gap:2px}
nav.side .logo{color:#fff;font-weight:700;font-size:18px;padding:4px 10px 18px}
nav.side a{color:var(--nav-t);text-decoration:none;padding:9px 12px;border-radius:8px}
nav.side a.on{background:var(--acc);color:#fff;font-weight:600}nav.side a:hover{color:#fff}
main{flex:999 1 560px;min-width:0;padding:26px 30px;display:flex;flex-direction:column;gap:20px}
header.top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px}
h1{margin:0;font-size:25px}h2{margin:0 0 10px;font-size:17px}.mut{color:var(--mut);font-size:14px}
.btn{font:inherit;font-size:14px;border:1px solid #C9D4CF;background:#fff;border-radius:8px;padding:9px 14px;min-height:40px;cursor:pointer;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center}
.btn.pri{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px}
.kpi .l{font-size:13px;color:var(--mut)}.kpi .v{font-size:30px;font-weight:700;margin-top:4px}
.v.warn{color:var(--warn)}.v.err{color:var(--err)}.v.info{color:var(--info)}.v.ok{color:var(--ok)}
table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--mut);font-weight:600;padding:7px 6px;border-bottom:1px solid #E3E9E6}td{padding:8px 6px;border-bottom:1px solid #EEF2F0;vertical-align:top}
.scroll{overflow-x:auto}
.tag{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}
.tag.warn{background:var(--warn-bg);color:#8A3A0B}.tag.err{background:var(--err-bg);color:#8E1B12}.tag.ok{background:var(--ok-bg);color:var(--ok)}.tag.info{background:var(--info-bg);color:var(--info)}
.bar{height:8px;background:#E6ECE9;border-radius:4px}.bar>div{height:8px;background:var(--acc);border-radius:4px}
.login{max-width:380px;margin:12vh auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:28px}
.login label{display:block;font-size:14px;margin:12px 0 4px}.login input{width:100%;font:inherit;padding:9px 10px;border:1px solid #C9D4CF;border-radius:8px}
.msg{padding:10px 14px;border-radius:8px;background:var(--err-bg);color:#8E1B12;font-size:14px}
form.inline{display:inline}select{font:inherit;padding:7px;border-radius:8px;border:1px solid #C9D4CF}
.form p{margin:0 0 12px}.form label{display:block;font-size:13px;color:var(--mut);margin-bottom:3px}
.form input:not([type=checkbox]),.form select,.form textarea{width:100%;max-width:520px;font:inherit;padding:8px 10px;border:1px solid #C9D4CF;border-radius:8px;background:#fff}
.form textarea{min-height:70px}.form .helptext{display:block;font-size:12px;color:var(--mut)}.errorlist{color:var(--err);margin:0;padding-left:16px;font-size:13px}
.ok-msg{padding:10px 14px;border-radius:8px;background:var(--ok-bg);color:var(--ok);font-size:14px}
.form p{margin:0 0 12px}.form label{display:block;font-size:13px;color:var(--mut);margin-bottom:3px}
.form input:not([type=checkbox]),.form select,.form textarea{width:100%;max-width:520px;font:inherit;padding:8px 10px;border:1px solid #C9D4CF;border-radius:8px;background:#fff}
.form textarea{min-height:70px}.form .helptext{display:block;font-size:12px;color:var(--mut)}.errorlist{color:var(--err);margin:0;padding-left:16px;font-size:13px}
.ok-msg{padding:10px 14px;border-radius:8px;background:var(--ok-bg);color:var(--ok);font-size:14px}
nav.side .sec{color:#7FA597;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:14px 12px 4px}
nav.side .off{color:#5E7D72;padding:7px 12px;font-size:14px;cursor:default}
nav.side small{font-size:10px;opacity:.75;margin-left:4px}
nav.side a{padding:7px 12px}
