:root{--bg:#f6f5fb;--card:#fff;--ink:#1d1b2e;--mut:#6b6880;--acc:#4f46e5;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--line:#e6e4f0;--side:#14122b}
@media(prefers-color-scheme:dark){:root{--bg:#0f0e1a;--card:#1a1830;--ink:#ecebf7;--mut:#9a97b3;--line:#2b2848;--side:#0a0914}}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 -apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);display:flex;min-height:100vh}
aside{width:210px;background:var(--side);color:#cfcde8;padding:18px 12px;flex-shrink:0}aside h1{font-size:17px;margin:0 8px 14px;color:#fff}
aside a{display:block;padding:8px 10px;border-radius:8px;color:#cfcde8;text-decoration:none;margin:2px 0}aside a.on,aside a:hover{background:#2a2750;color:#fff}
main{flex:1;padding:22px 28px;max-width:1100px;min-width:0}h2{margin:0 0 14px}
.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px}
.score{float:right;font-size:26px;font-weight:700;color:var(--acc);text-align:center;line-height:1}.score small{display:block;font-size:11px;font-weight:400;color:var(--mut)}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;background:var(--line);color:var(--mut);margin-right:4px}
.ok{background:#dcfce7;color:#166534}.warn{background:#fef3c7;color:#92400e}.bad{background:#fee2e2;color:#991b1b}.acc{background:#e0e7ff;color:#3730a3}
button,.btn{background:var(--acc);color:#fff;border:0;border-radius:8px;padding:7px 14px;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}
button.ghost,.btn.ghost{background:var(--line);color:var(--ink)}button.danger{background:var(--bad)}
input,select,textarea{font:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);max-width:100%}
textarea{width:100%;min-height:260px}.mut{color:var(--mut);font-size:13px}a{color:var(--acc)}
.angle{background:#eef0ff;border-radius:8px;padding:9px 12px;margin:8px 0;color:#1d1b2e}
.banner{background:#fef3c7;color:#92400e;padding:8px 28px;font-size:13px}
table{width:100%;border-collapse:collapse}td,th{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal div{min-height:84px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px;font-size:12px}
.cal .h{min-height:0;background:none;border:0;color:var(--mut)}.cal .t{border-color:var(--acc)}
@media(max-width:760px){body{flex-direction:column}aside{width:auto}main{padding:14px}.cal{font-size:10px}}
