:root{
  --bg:#0b0d12;--surface:#12161d;--surface2:#171c25;--surface3:#1e2632;--border:#283243;--text:#e7edf7;--muted:#8793a5;--accent:#67b7ff;--ok:#7df0a5;--warn:#ffc76b;--danger:#ff8b8b;--planner:#67b7ff;--lesson:#7df0a5;--payment:#ffc76b;--deadline:#ff8b8b;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',sans-serif;background:linear-gradient(180deg,#0a0c11 0%,#0d1016 100%);color:var(--text);min-height:100vh}
a{color:inherit}.hidden{display:none!important}.mono{font-family:'DM Mono',monospace}
header{padding:28px 32px 18px;border-bottom:1px solid var(--border);background:rgba(10,12,17,.88);backdrop-filter:blur(10px);position:sticky;top:0;z-index:30}.head-wrap{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;flex-wrap:wrap}.h-left h1{font-family:'DM Serif Display',serif;font-size:2rem;line-height:1.08}.h-left h1 em{color:var(--accent)}.h-left p{margin-top:8px;color:var(--muted);font-size:12px}.h-right{display:flex;flex-wrap:wrap;gap:8px}.pill{background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:7px 12px;font-size:11px;color:var(--muted);font-family:'DM Mono',monospace}.pill strong{color:var(--text)}.top-alert{margin-top:14px;background:rgba(103,183,255,.08);border:1px solid rgba(103,183,255,.22);border-left:4px solid var(--accent);border-radius:12px;padding:12px 14px;color:#d7eaff}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(460px,100%);background:linear-gradient(180deg,var(--surface),#10151b);border:1px solid var(--border);border-radius:22px;padding:24px;box-shadow:0 14px 40px rgba(0,0,0,.28)}.login-card h1{font-family:'DM Serif Display',serif;font-size:2rem}.login-card p{margin-top:8px;color:var(--muted);font-size:13px}.form{display:flex;flex-direction:column;gap:12px;margin-top:20px}.msg{margin-top:10px;color:#ffb5b5;font-size:13px;min-height:18px}
.input,.select,.textarea{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:12px;padding:10px 11px;width:100%}.textarea{min-height:150px;resize:vertical}.btn{border:1px solid var(--border);background:var(--surface2);color:var(--text);padding:10px 12px;border-radius:12px;cursor:pointer;font-weight:700}.btn:hover{background:var(--surface3)}.btn.accent{background:rgba(103,183,255,.1);border-color:rgba(103,183,255,.26)}.btn.danger{background:rgba(255,139,139,.08);border-color:rgba(255,139,139,.22)}
.portal-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:#0f141b;border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;gap:12px}.sidebar h2{font-size:15px}.nav a{display:block;padding:10px 12px;border-radius:10px;text-decoration:none;color:#cfd9e6;border:1px solid transparent}.nav a:hover,.nav a.active{background:#1d2836;border-color:#39506d;color:#fff}.sidebox{margin-top:auto;border:1px solid var(--border);border-radius:12px;padding:10px;background:#12161d;font-size:12px;color:#9aa8ba}
.main{padding:22px 24px 40px}.hero{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:16px}.hero h1{font-family:'DM Serif Display',serif;font-size:2rem}.hero p{margin-top:6px;color:var(--muted)}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.card{background:linear-gradient(180deg,var(--surface),#11161d);border:1px solid var(--border);border-radius:18px;padding:16px;box-shadow:0 12px 32px rgba(0,0,0,.22)}.stat .k,.card .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.stat .v,.card .v{font-size:1.5rem;font-weight:800;margin-top:8px}.stat .s,.card .s{margin-top:6px;font-size:12px;color:var(--muted)}.card-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.card-title h3{font-size:15px}.card-sub{font-size:12px;color:var(--muted)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}.grid-3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:14px;margin-bottom:18px}.form-grid-2,.form-grid-3,.form-grid-4{display:grid;gap:10px}.form-grid-2{grid-template-columns:repeat(2,1fr)}.form-grid-3{grid-template-columns:repeat(3,1fr)}.form-grid-4{grid-template-columns:repeat(4,1fr)}.fgroup{display:flex;flex-direction:column;gap:6px}.fgroup label{font-size:12px;color:var(--muted)}.help{font-size:12px;color:var(--muted);margin-top:8px}
.list{display:flex;flex-direction:column;gap:10px}.item,.editor-row{border:1px solid var(--border);border-radius:14px;padding:11px 12px;background:rgba(255,255,255,.02)}.item strong{display:block}.item small{color:var(--muted)}.editor-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.tab{padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--surface2);cursor:pointer}.tab.active{background:#1d2836;border-color:#39506d}.panel{display:none}.panel.active{display:block}.chip,.tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;border:1px solid var(--border);font-size:11px;color:var(--muted);gap:6px}.todo{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.02)}.todo.done{opacity:.62}.todo.done .todo-title{text-decoration:line-through}.todo-title{font-size:13px;font-weight:600}.todo-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:14px}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;font-size:13px;vertical-align:top}th{background:var(--surface2);font-size:11px;text-transform:uppercase;color:var(--muted)}tr:last-child td{border-bottom:none}
.home-grid{display:grid;grid-template-columns:1.25fr .95fr;gap:14px}.month-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.dow,.day{border:1px solid var(--border);border-radius:12px;min-height:84px;padding:8px;background:#10151b}.dow{min-height:auto;background:var(--surface2);font-size:12px;color:var(--muted);font-weight:700;text-align:center}.day.other{opacity:.35}.day.today{outline:2px solid rgba(103,183,255,.35)}.day-num{font-weight:800;font-size:12px}.markers{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.mk{width:9px;height:9px;border-radius:50%}.legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}
.subject-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.subject-card{padding:16px;border-radius:16px;border:1px solid var(--border);background:linear-gradient(180deg,var(--surface),#11161d)}.subject-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.subject-name{font-size:15px;font-weight:800}.bar{width:100%;height:8px;border-radius:999px;background:var(--surface3);overflow:hidden;border:1px solid rgba(255,255,255,.03)}.fill{height:100%;border-radius:999px}.small{font-size:11px;color:var(--muted)}
@media (max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3,.home-grid,.form-grid-4{grid-template-columns:1fr}.form-grid-3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){.portal-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:30;flex-direction:row;overflow:auto}.sidebox{display:none}.main{padding:18px}.cards,.form-grid-2,.form-grid-3,.form-grid-4{grid-template-columns:1fr}}
