:root{color-scheme:light;--bg:#f2f5f8;--panel:#fff;--ink:#182739;--soft:#536477;--line:#d8e1e9;--accent:#085f55;--accent-ink:#fff;--sidebar:#10253a;--danger:#a52836}
:root[data-theme=dark]{color-scheme:dark;--bg:#101922;--panel:#172431;--ink:#edf4fb;--soft:#b6c6d5;--line:#36495b;--accent:#87daca;--accent-ink:#10253a;--sidebar:#0c151e;--danger:#ffb3bb}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 system-ui,sans-serif}
.shell{display:flex;min-height:100vh}
aside{position:sticky;top:0;height:100vh;width:235px;flex-shrink:0;background:var(--sidebar);color:#e9f1f9;padding:25px 18px;display:flex;flex-direction:column;gap:30px}
.brand{display:flex;gap:10px;align-items:center;letter-spacing:.05em}
.brand small{display:block;letter-spacing:0;color:#b5c7d7}
.mark{display:grid;place-items:center;border-radius:10px;background:#9be0cf;color:#11283b;font-weight:900;width:38px;height:38px}
nav{display:grid;gap:6px}
nav button{text-align:left;background:transparent;color:inherit}
nav button[aria-current=page],nav button:hover{background:#29455c}
aside #logout{margin-top:auto}
.workspace{flex:1;min-width:0}
header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px clamp(14px,4vw,44px);background:var(--panel);border-bottom:1px solid var(--line)}
main{max-width:1500px;margin:auto;padding:28px clamp(14px,4vw,44px)}
h1,h2,p{margin-top:0} h1{line-height:1.15;margin-bottom:10px}
.muted,small{color:var(--soft)}
.card,dialog{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px}
.auth{max-width:445px;margin:5vh auto}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:18px 0}
.metric strong{display:block;font-size:1.55rem}
button,input,select{font:inherit;border-radius:8px;padding:8px 11px}
button{cursor:pointer;border:1px solid transparent;background:var(--accent);color:var(--accent-ink);font-weight:650}
button.secondary{background:var(--panel);border-color:var(--line);color:var(--ink)}
button:disabled{opacity:.55;cursor:wait}
input,select{max-width:100%;border:1px solid var(--line);background:var(--panel);color:var(--ink)}
label{display:grid;gap:3px;font-weight:600}
.stack{display:grid;gap:12px}
.bar{display:flex;align-items:end;flex-wrap:wrap;gap:10px;margin:12px 0}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
table{width:100%;border-collapse:collapse;text-align:left}
th,td{padding:10px 12px;border-bottom:1px solid var(--line)}
th{background:var(--bg)}
.drop{padding:18px;border:2px dashed var(--line);border-radius:10px}
.drop.active{border-color:var(--accent)}
dialog{max-width:min(900px,94vw);max-height:90vh;color:var(--ink)}
dialog::backdrop{background:#08162599}
dialog form[method=dialog]{margin-top:12px}
#notice:not(:empty){position:fixed;bottom:16px;right:16px;max-width:min(520px,90vw);border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--panel);box-shadow:0 5px 25px #0003}
.error{color:var(--danger)}
@media(max-width:780px){.shell{display:block}aside{position:static;width:auto;height:auto;gap:12px}nav{display:flex;flex-wrap:wrap}aside #logout{align-self:start}header{flex-wrap:wrap}}
