:root{--c-background: #f6f5fb;--c-surface: #ffffff;--c-surface-alt: #efedf8;--c-primary: #8e9bde;--c-primary-soft: #dee3f7;--c-accent: #f4b9c2;--c-text-primary: #2b2b3a;--c-text-secondary: #6b6b82;--c-text-muted: #9a9ab0;--c-success: #9fd8b4;--c-success-soft: #e1f4e8;--c-success-text: #2e7d52;--c-danger: #f2a7a6;--c-danger-soft: #fbe3e2;--c-danger-text: #b23a48;--c-border: #e7e4f1;--fs-title: 26px;--fs-subtitle: 18px;--fs-body: 14px;--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--shadow: 0 6px 20px rgba(80, 80, 140, .08)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:var(--fs-body);color:var(--c-text-primary);background:var(--c-background)}h1{font-size:var(--fs-title);font-weight:700;margin:0}h2{font-size:var(--fs-subtitle);font-weight:600;margin:0}.muted{color:var(--c-text-secondary)}.dim{color:var(--c-text-muted)}a{color:var(--c-primary);text-decoration:none}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px}.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;background:var(--c-primary);color:#fff;border:none;border-radius:var(--r-md);padding:11px 18px;font-size:var(--fs-body);font-weight:600;cursor:pointer;transition:filter .15s}.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--c-surface-alt);color:var(--c-text-primary)}.btn.ghost{background:transparent;color:var(--c-text-primary);border:1px solid var(--c-border)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{color:var(--c-text-secondary);font-size:var(--fs-body)}.input{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);padding:11px 14px;font-size:var(--fs-body);color:var(--c-text-primary);outline:none;width:100%}.input:focus{border-color:var(--c-primary)}.shell{display:grid;grid-template-columns:240px 1fr;height:100%}.sidebar{background:var(--c-surface);border-right:1px solid var(--c-border);padding:22px 14px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 18px}.brand .logo{width:40px;height:40px;border-radius:var(--r-md);background:var(--c-primary-soft);display:grid;place-items:center;color:var(--c-primary);font-weight:800}.nav-item{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:var(--r-md);color:var(--c-text-secondary);cursor:pointer;font-weight:500}.nav-item:hover{background:var(--c-surface-alt)}.nav-item.active{background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}.content{padding:26px 30px;overflow:auto}.page-head{margin-bottom:20px}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.stat .v{font-size:var(--fs-title);font-weight:700}.stat .l{color:var(--c-text-secondary)}.school-row{display:flex;align-items:center;gap:12px;border-radius:var(--r-lg);padding:14px;border:1px solid var(--c-border);margin-bottom:10px}.school-row.ok{background:var(--c-success-soft);border-color:#2e7d5240}.school-row.no{background:var(--c-danger-soft);border-color:#b23a4840}.dot{width:10px;height:10px;border-radius:50%}.dot.ok{background:var(--c-success-text)}.dot.no{background:var(--c-danger-text)}.row{display:flex;align-items:center;gap:12px}.spacer{flex:1}.toast{padding:12px;border-radius:var(--r-sm);background:var(--c-danger-soft);color:var(--c-danger-text)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--c-border)}.swatch{width:26px;height:26px;border-radius:8px;border:1px solid var(--c-border)}.landing{max-width:1000px;margin:0 auto;padding:60px 24px}.hero{text-align:center;padding:60px 0}.hero .big{font-size:44px;font-weight:800;margin-bottom:12px}.pill{display:inline-block;padding:6px 14px;border-radius:999px;background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}
