/* Campus vitality theme */
:root{--blue:#1769e0;--cyan:#13a98b;--ink:#17324d;--line:rgba(35,77,115,.14);--line2:rgba(35,77,115,.24);--shadow:0 20px 55px rgba(38,86,126,.12)}
body{background:radial-gradient(circle at 88% 0%,rgba(244,183,64,.22),transparent 23%),linear-gradient(135deg,#f7fbff 0%,#effaf7 52%,#fff9eb 100%);color:var(--ink)}
button,a,input,select,textarea{transition:border-color .18s ease,box-shadow .18s ease,background .18s ease,transform .18s ease}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(23,105,224,.28);outline-offset:3px}
.login-screen{background:linear-gradient(135deg,#eaf4ff 0%,#f0fbf8 55%,#fff5db 100%)}
.login-showcase{background:linear-gradient(145deg,rgba(255,255,255,.7),rgba(240,249,255,.7));border-right-color:rgba(35,77,115,.14);padding-left:clamp(34px,7vw,110px)}
.login-card{background:rgba(255,255,255,.84);border-color:rgba(35,77,115,.15);box-shadow:0 25px 70px rgba(49,94,127,.16);backdrop-filter:blur(18px)}
.login-card h2,.hero-row h1,.panel h3{color:var(--ink)}.showcase-copy h1{font-weight:800;letter-spacing:-.06em;color:#193c62}.showcase-copy h1 em{color:var(--blue)}.showcase-desc{color:#557089}.kicker,.section-overline{color:var(--blue)}
.showcase-proof{display:flex;align-items:center;gap:11px;margin-top:28px}.showcase-proof b,.showcase-proof small{display:block}.showcase-proof b{font-size:13px;color:#234b6e}.showcase-proof small{font-size:11px;color:#7891a6;margin-top:4px}.proof-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:#dff7ee;color:#0a9a79;font-weight:800}.login-spark{position:absolute;color:#f4b740;font-size:24px;opacity:.85}.spark-one{right:15%;top:19%}.spark-two{left:10%;bottom:18%;color:var(--cyan)}
.brand-glyph{background:linear-gradient(145deg,var(--blue),var(--cyan));box-shadow:0 10px 25px rgba(23,105,224,.2)}.brand-lockup span{color:#7190a5}.eyebrow{font:600 10px "DM Mono",monospace;letter-spacing:.14em;color:#7b94a9}.login-subtitle{color:#7890a3}.input-shell{background:#f7fbfe;border-color:var(--line2)}.input-shell input{color:var(--ink)}.login-submit,.primary-btn{background:linear-gradient(135deg,var(--blue),var(--cyan));box-shadow:0 12px 26px rgba(23,105,224,.18)}.login-submit:hover,.primary-btn:hover{transform:translateY(-2px)}
.sidebar{background:linear-gradient(180deg,#fff,#f1f8ff);border-right-color:var(--line);box-shadow:4px 0 22px rgba(53,92,126,.06)}.workspace-switch,.connection-card,.lesson-card,.roster-summary{background:#f5f9fc;border-color:var(--line)}.workspace-dot{background:var(--cyan)}
.nav-item{color:#55728d}.nav-item:hover{background:#eaf4ff;color:#1254b7}.nav-item.active{background:linear-gradient(90deg,#e1efff,#f3f9ff);color:#1254b7;box-shadow:inset 3px 0 var(--blue)}.nav-item.active .nav-icon{color:var(--blue)}
.topbar{background:rgba(255,255,255,.82);border-bottom-color:var(--line)}.breadcrumb b,.user-text b{color:#23415f}.date-chip,.icon-btn,.user-menu{background:rgba(255,255,255,.68);border-color:var(--line)}.avatar{background:linear-gradient(135deg,var(--blue),var(--cyan))}.content{max-width:1680px}.hero-row{margin-bottom:30px}.hero-row h1{font-weight:800}.page-subtitle{color:#6b8298}.metric-card,.panel,.mini-stat{background:rgba(255,255,255,.88);border-color:var(--line);box-shadow:var(--shadow)}.metric-card strong{color:var(--ink)}.metric-top,.data-table td,.activity-row b{color:#47627d}.metric-card.accent{border-color:rgba(23,105,224,.3)}.metric-card.blue-card{border-color:rgba(19,169,139,.25)}.metric-icon{background:#eaf4ff;color:var(--blue)}
.panel-heading h3,.roster-head h3{color:var(--ink)}.activity-row{border-top-color:var(--line)}.activity-avatar{background:#eaf4ff;color:var(--blue)}.data-table th,.schedule-table thead th,.schedule-table tbody th{background:#f2f7fb;color:#63809b}.data-table td b{color:#23415f}.data-table td{border-bottom-color:var(--line)}.course-cell{background:linear-gradient(145deg,#eaf4ff,#f1fbf8);border-color:#cfe4f5}.course-cell b{color:#234a6b}.lesson-card.selected,.lesson-card:hover{border-color:rgba(23,105,224,.38);background:#eaf4ff}.lesson-card{color:var(--ink)}.lesson-card small{color:#6e879c}.roster-summary{color:#6d8499}.roster-summary b{color:#23415f}.dark-input,.dark-select{background:#f8fbfe;border-color:var(--line2);color:var(--ink)}.dark-input:focus,.dark-select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,105,224,.1)}.ghost-btn{background:#f5f9fc;color:#47627d}.danger-btn{background:#fff3f2}.modal{background:#fff;border-color:var(--line)}.modal-backdrop{background:rgba(34,64,90,.34)}.modal-head,.modal-foot{border-color:var(--line)}.modal-head h3{color:var(--ink)}
.status-chip.green{background:#e6f8f0;color:#087e61}.status-chip.red{background:#fff0f0;color:#cf4e58}.status-chip.orange{background:#fff5de;color:#bd7700}.status-chip.blue{background:#eaf3ff;color:#1769e0}.status-chip.violet{background:#f2edff;color:#6d50c4}.status-chip.cyan{background:#e6faf7;color:#087f71}.mini-action{background:#f5f9fc;border-color:var(--line);color:#5d7890}.mini-action.ok{color:#0b9b76}.mini-action.warn{color:#c07a00}.mini-action.bad{color:#d7545e}.mini-action.med{color:#1769e0}.mini-action.leave{color:#7354c7}
.modal-head button,.table-pagination button{background:#f4f8fc;color:#4f6d87;border-color:var(--line)}.login-footnote{border-top-color:var(--line);color:#7890a3}.panel-legal{color:#6e879c}.connection-card b{color:var(--ink)}
@media(max-width:760px){.login-panel{padding:20px}.login-card{padding:27px 22px}.showcase-proof{display:none}.topbar{height:64px}.hero-row{margin-bottom:24px}.metric-grid{gap:10px}.metric-card{min-height:122px;padding:15px}.metric-card strong{font-size:30px}.content{padding-top:26px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Fusion dashboard: command-center hierarchy and classroom quick actions */
.overview-commandbar{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:24px 26px;margin-bottom:16px;border:1px solid rgba(23,105,224,.14);border-radius:22px;background:linear-gradient(110deg,rgba(255,255,255,.94),rgba(235,247,255,.92) 58%,rgba(235,250,244,.92));box-shadow:0 18px 40px rgba(47,107,150,.08)}
.overview-commandbar h2{margin:4px 0 6px;color:#17324d;font-size:clamp(22px,2.4vw,31px);letter-spacing:-.045em}.overview-commandbar p{margin:0;color:#6b8298;font-size:12px}.command-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.command-actions .primary-btn{min-height:42px}.overview-grid{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr)}
.insight-panel,.class-health-panel{min-height:230px}.pulse-layout{display:flex;align-items:center;gap:34px;min-height:145px}.rate-ring{--ring:#1769e0;width:148px;height:148px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ring) var(--rate),#e7eef5 0);position:relative;flex:none}.rate-ring::after{content:"";position:absolute;inset:12px;border-radius:50%;background:#fff}.rate-ring>div{position:relative;z-index:1;text-align:center}.rate-ring strong,.rate-ring small{display:block}.rate-ring strong{font-size:30px;color:#17324d;letter-spacing:-.06em}.rate-ring small{font-size:10px;color:#7890a3;margin-top:3px}.pulse-legend{display:flex;flex-direction:column;gap:14px;flex:1}.pulse-legend div{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:9px;font-size:11px;color:#6b8298}.pulse-legend b{color:#17324d;font-size:18px}.dot{width:8px;height:8px;border-radius:50%}.dot.present{background:#13a98b}.dot.warning{background:#f4b740}.dot.danger{background:#ef6d68}
.class-health-list{display:flex;flex-direction:column;gap:13px}.class-health-row{display:grid;grid-template-columns:110px minmax(80px,1fr) 76px;align-items:center;gap:12px}.class-health-name b,.class-health-name small{display:block}.class-health-name b{font-size:12px;color:#23415f}.class-health-name small{font-size:9px;color:#7890a3;margin-top:3px}.health-track{height:8px;border-radius:99px;background:#eaf0f5;overflow:hidden}.health-track i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#1769e0,#13a98b)}.class-health-issue{text-align:right;color:#13a98b;font-size:10px}.class-health-issue.has-issue{color:#d46b20}
.panel-caption{display:block;margin-top:4px;color:#8aa0b2;font-size:10px;font-weight:500}
.refresh-meta{color:#6b8298;font-size:10px;white-space:nowrap}
.dashboard-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.72)}
.dashboard-filters label{display:grid;gap:5px;color:#5d7890;font-size:10px;font-weight:700}.dashboard-filters .dark-input,.dashboard-filters .dark-select{min-width:150px;height:36px}.dashboard-refresh{display:flex;align-items:center;gap:10px;margin-left:auto;color:#7890a3;font-size:10px}.dashboard-refresh .ghost-btn{min-height:36px}.metric-explainer,.dashboard-footnote{margin:12px 0 0;color:#7890a3;font-size:10px;line-height:1.65}.trend-chart{display:flex;align-items:flex-end;gap:12px;height:156px;padding:14px 4px 0}.trend-day{display:flex;flex:1;min-width:0;height:100%;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px}.trend-day>b{font-size:10px;color:#2f80ed}.trend-day>small{font-size:9px;color:#8aa0b2}.trend-track{display:flex;position:relative;width:100%;height:106px;align-items:flex-end;justify-content:center;border-radius:8px 8px 3px 3px;background:linear-gradient(to top,rgba(23,105,224,.08),transparent)}.trend-track i{display:block;width:min(24px,60%);min-height:3px;border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,#13a98b,#2f80ed)}.trend-track span{position:absolute;top:47%;color:#9ab0bf;font-size:8px;white-space:nowrap}.trend-details{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;color:#6b8298;font-size:10px}.trend-details summary{cursor:pointer;color:#2f80ed;font-weight:700}.trend-details p{margin:8px 0 0;line-height:1.6}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.mint-card{border-color:rgba(19,169,139,.24)}.roster-toolbar{display:flex;align-items:center;gap:10px;margin:13px 0;padding:10px;border:1px solid var(--line);border-radius:13px;background:#f7fbfd}.roster-search{display:flex;align-items:center;gap:8px;min-width:240px;flex:1;height:38px;padding:0 11px;border:1px solid var(--line2);border-radius:10px;background:#fff;color:#7b94a9}.roster-search input{width:100%;border:0;outline:0;background:transparent;color:#17324d;font-size:11px}.roster-toolbar .dark-select{min-width:145px;height:38px}.filter-count{color:#6b8298;font-size:10px;white-space:nowrap}.summary-note{margin-left:auto;color:#7890a3!important}
@media(max-width:900px){.overview-commandbar{align-items:flex-start;flex-direction:column}.command-actions{justify-content:flex-start}.overview-grid{grid-template-columns:1fr}.pulse-layout{justify-content:flex-start}.roster-toolbar{flex-wrap:wrap}.roster-search{min-width:100%}}
@media(max-width:600px){.pulse-layout{gap:18px}.rate-ring{width:118px;height:118px}.rate-ring strong{font-size:24px}.class-health-row{grid-template-columns:92px minmax(60px,1fr) 64px}.summary-note{display:none}}
@media(max-width:600px){.dashboard-filters{align-items:stretch;flex-direction:column}.dashboard-filters label{width:100%}.dashboard-filters .dark-input,.dashboard-filters .dark-select{width:100%}.dashboard-refresh{justify-content:space-between;margin-left:0}.trend-chart{gap:6px}.trend-day>b{font-size:9px}.dashboard-table{margin-right:-8px}}
.schedule-help{margin:6px 0 0;color:#7890a3;font-size:10px;line-height:1.5}.course-filter-row{align-items:center;flex-wrap:wrap}.course-filter-row .dark-select{min-width:130px}.course-results-table th,.course-results-table td{min-width:110px}.course-results-table td:first-child{min-width:100px}
.attendance-course-table-wrap{max-height:calc(100vh - 290px);overflow:auto}.attendance-course-table{white-space:nowrap}.attendance-course-row{cursor:pointer;transition:background .18s ease,border-color .18s ease}.attendance-course-row:hover,.attendance-course-row.selected{background:#eef7ff}.attendance-course-row:focus-visible{outline:3px solid rgba(23,105,224,.25);outline-offset:-3px}.attendance-course-row td{vertical-align:middle}.attendance-course-row td:first-child{width:130px}.attendance-course-row td:nth-child(2){min-width:170px}
.course-date-filter{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.course-date-filter label{display:grid;gap:5px;color:#5d7890;font-size:10px;font-weight:700}.course-date-filter .dark-input{height:36px;min-width:160px}
@media(max-width:760px){.course-date-filter{align-items:stretch;flex-direction:column;width:100%}.course-date-filter .dark-input{width:100%}}
.leave-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:680px}.leave-summary-grid .metric-card{min-height:132px}
@media(max-width:600px){.leave-summary-grid{grid-template-columns:1fr;max-width:none}}
.teacher-schedule-grid{table-layout:auto}.teacher-schedule-grid th:first-child{width:150px;min-width:150px}.teacher-schedule-grid td{padding:12px;background:rgba(247,251,254,.6)}.teacher-course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.teacher-course-cell{min-height:86px;background:linear-gradient(145deg,#eaf4ff,#f1fbf8);border-color:#c9e0f1;color:#17324d}.teacher-course-cell b{color:#17324d}.teacher-course-cell span{color:#2f6c9a}.teacher-course-cell small{color:#6f879d}.teacher-course-cell .status-chip{align-self:flex-start;margin-top:7px}.retry-wrap{text-align:center;margin-top:12px}
@media(max-width:700px){.teacher-course-grid{grid-template-columns:1fr}.teacher-schedule-grid th:first-child{width:105px;min-width:105px}}
/* Server login simplification: keep the first screen focused on sign-in. */
.login-screen{display:block;min-height:100vh;background:linear-gradient(135deg,#eaf4ff 0%,#f4fbff 58%,#effbf6 100%);}
.login-screen .login-panel{min-height:100vh;padding:24px;}
.login-screen .login-card{width:min(410px,100%);padding:34px 34px 28px;border-radius:24px;background:rgba(255,255,255,.94);box-shadow:0 24px 70px rgba(42,92,133,.16);}
.login-screen .simple-brand{display:flex;align-items:center;gap:12px;margin-bottom:30px;}
.login-screen .simple-brand strong,.login-screen .simple-brand span{display:block;}
.login-screen .simple-brand strong{font-size:20px;color:#17324d;letter-spacing:.02em;}
.login-screen .simple-brand span{font-size:12px;color:#7890a3;margin-top:4px;}
.login-screen .login-card h2{font-size:30px;margin:0 0 8px;color:#17324d;}
.login-screen .login-subtitle{margin-bottom:26px;color:#7890a3;}
.login-screen .login-options{justify-content:flex-start;margin:13px 0 21px;}
.login-screen .login-footnote{justify-content:center;padding-top:18px;margin-top:20px;font-size:12px;}
.login-screen .panel-legal{position:static;margin-top:18px;text-align:center;color:#7890a3;font-size:11px;}
@media(max-width:760px){.login-screen .login-panel{padding:18px;}.login-screen .login-card{padding:28px 22px 24px;}.login-screen .simple-brand{margin-bottom:26px;}}
.account-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:210px}.account-password{border:0;background:transparent;color:#2f80ed;font-size:12px;padding:7px 8px;cursor:pointer}.account-password:hover{color:#145db8;text-decoration:underline}.account-actions .mini-action{white-space:nowrap}
