:root{--navy:#0d2140;--navy-2:#142d52;--blue:#2563eb;--blue-soft:#eaf1ff;--ink:#172033;--muted:#6b7588;--line:#e5e9f1;--canvas:#f5f7fb;--surface:#fff;--green:#12825f;--amber:#b66a08;--red:#c23d4b;--shadow:0 18px 50px #12264617;--radius:16px}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit}h1,h2,h3,p{margin-top:0}.brand{letter-spacing:-.4px;align-items:center;gap:11px;font-size:20px;font-weight:760;display:inline-flex}.brand-mark{color:#fff;background:linear-gradient(145deg,#2f74ff,#174fc6);border-radius:10px 10px 10px 3px;place-items:center;width:35px;height:35px;font-size:17px;display:grid;box-shadow:0 7px 20px #2665e74d}.brand-light .brand-mark{color:var(--navy);box-shadow:none;background:#fff}.eyebrow{color:var(--blue);letter-spacing:.12em;text-transform:uppercase;margin-bottom:9px;font-size:11px;font-weight:800;display:block}.eyebrow.light{color:#a9c5ff}.muted{color:var(--muted)}.button{cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-size:13px;font-weight:700;transition:all .18s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:disabled{cursor:wait;opacity:.65;transform:none}.button.primary{color:#fff;background:var(--blue);box-shadow:0 8px 20px #2563eb33}.button.primary:hover{background:#1d56d3}.button.secondary{color:#38445b;border-color:var(--line);background:#fff}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:10px;place-items:center;width:38px;height:38px;padding:0;display:inline-grid}.icon-button:hover{background:#f0f3f8}.icon-button.bordered{border:1px solid var(--line)}.spinner{border:2px solid #ffffff6b;border-top-color:#fff;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{background:#fff;grid-template-columns:minmax(420px,47%) 1fr;min-height:100vh;display:grid}.login-story{color:#fff;background:radial-gradient(circle at 78% 22%,#3170f28c,#0000 31%),linear-gradient(145deg,#0b1d39 5%,#112d58 55%,#0b1e3b);flex-direction:column;justify-content:space-between;min-height:100vh;padding:44px clamp(36px,5vw,76px);display:flex;position:relative;overflow:hidden}.login-story:before{content:"";background:radial-gradient(circle,#3576f74d,#0000 66%);border-radius:50%;width:70%;height:70%;position:absolute;bottom:-20%;right:-10%}.story-copy{z-index:2;max-width:570px;margin:auto 0;padding:80px 0;position:relative}.story-copy h1{letter-spacing:-.055em;max-width:530px;margin-bottom:22px;font-size:clamp(42px,4.8vw,68px);line-height:.99}.story-copy>p{color:#c6d5ed;max-width:500px;margin-bottom:38px;font-size:17px;line-height:1.65}.story-points{flex-wrap:wrap;gap:25px;display:flex}.story-points span{color:#d9e5f8;flex-direction:column;gap:6px;max-width:110px;font-size:12px;line-height:1.4;display:flex}.story-points i{color:#78a6ff;letter-spacing:.1em;font-size:10px;font-style:normal;font-weight:800}.story-orbit{border:1px solid #8fb4f626;border-radius:50%;position:absolute}.orbit-one{width:620px;height:620px;top:-130px;right:-240px}.orbit-two{width:280px;height:280px;top:60px;right:-80px}.login-panel{place-items:center;padding:45px;display:grid}.login-box{width:min(100%,420px)}.login-box h2{letter-spacing:-.035em;margin-bottom:10px;font-size:31px}.login-box>p{margin-bottom:30px;font-size:14px;line-height:1.6}.mobile-brand{align-items:center;gap:10px;margin-bottom:50px;font-weight:750;display:none}.login-form{gap:18px;display:grid}.login-form label,.form-grid label{gap:8px;display:grid}.login-form label>span,.form-grid label>span{color:#404b5e;text-transform:capitalize;font-size:12px;font-weight:700}.login-form input,.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-height:45px;color:var(--ink);background:#fff;border:1px solid #dce2ec;border-radius:9px;outline:none;padding:10px 12px;transition:border .15s,box-shadow .15s}.login-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#7da5f6;box-shadow:0 0 0 3px #3774ed1c}.login-submit{min-height:49px;margin-top:7px}.form-alert{color:#9d2637;background:#fff4f5;border:1px solid #f0cbd1;border-radius:9px;padding:11px 13px;font-size:12px}.security-note{border-top:1px solid var(--line);align-items:center;gap:8px;margin-top:30px;padding-top:22px;display:flex;color:#8892a3!important;font-size:11px!important}.security-note span{color:var(--green);font-size:9px}.admin-app{min-height:100vh;display:flex}.sidebar{z-index:30;color:#dce6f5;background:var(--navy);flex-direction:column;width:256px;padding:0 14px 16px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar-head{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;height:76px;padding:0 9px;display:flex}.sidebar .brand-mark{width:32px;height:32px}.school-chip{background:#ffffff09;border:1px solid #ffffff12;border-radius:11px;align-items:center;gap:10px;margin:17px 0 12px;padding:11px 9px;display:flex}.school-logo{color:#bcd0f4;background:#578beb33;border-radius:9px;flex:none;place-items:center;width:34px;height:34px;font-size:13px;font-weight:800;display:grid}.school-chip div:last-child{min-width:0}.school-chip strong,.school-chip span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.school-chip strong{color:#fff;font-size:12px}.school-chip span{color:#899bb7;margin-top:3px;font-size:10px}.main-nav{scrollbar-width:thin;scrollbar-color:#2a4265 transparent;flex:1;overflow-y:auto}.main-nav>a,.nav-group a{color:#9cabc1;border-radius:8px;align-items:center;gap:10px;min-height:39px;margin:2px 0;padding:0 12px;font-size:12px;font-weight:620;transition:all .15s;display:flex}.main-nav>a:hover,.nav-group a:hover{color:#fff;background:#ffffff0e}.main-nav a.active{color:#fff;background:linear-gradient(90deg,#2f6ce561,#2f6ce51a);box-shadow:inset 3px 0 #5d91f5}.nav-group{margin-top:14px}.nav-caption{color:#60728f;letter-spacing:.09em;text-transform:uppercase;align-items:center;gap:8px;height:30px;padding:0 12px;font-size:10px;font-weight:800;display:flex}.nav-caption svg{width:14px}.nav-group a{min-height:34px;padding-left:34px;font-size:11.5px}.sidebar-foot{border-top:1px solid #ffffff12;padding:14px 10px 3px}.sidebar-foot span,.sidebar-foot small{display:block}.sidebar-foot span{color:#8da0bc;font-size:10px;font-weight:700}.sidebar-foot small{color:#596d8b;margin-top:4px;font-size:9px}.app-main{width:calc(100% - 256px);min-width:0;margin-left:256px}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff0;justify-content:space-between;align-items:center;height:76px;padding:0 clamp(20px,3vw,40px);display:flex;position:sticky;top:0}.topbar-title{align-items:center;gap:8px;display:flex}.topbar-title span,.topbar-title strong{display:block}.topbar-title span{color:#98a0af;letter-spacing:.07em;text-transform:uppercase;margin-bottom:2px;font-size:9px;font-weight:750}.topbar-title strong{letter-spacing:-.02em;font-size:17px}.menu-button{display:none}.topbar-actions{align-items:center;gap:12px;display:flex}.profile-menu{position:relative}.profile-trigger{cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:9px;padding:5px 4px 5px 6px;display:flex}.profile-trigger:hover{background:#f3f5f9}.profile-trigger>svg{color:#9ba4b2;transform:rotate(90deg)}.avatar{color:#2557ae;background:#dfeaff;border-radius:10px;place-items:center;width:34px;height:34px;font-size:11px;font-weight:800;display:grid}.profile-copy{text-align:left;min-width:92px}.profile-copy strong,.profile-copy small{display:block}.profile-copy strong{text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:11px;overflow:hidden}.profile-copy small{color:#8c96a6;margin-top:2px;font-size:9px}.profile-popover{border:1px solid var(--line);width:230px;box-shadow:var(--shadow);background:#fff;border-radius:12px;padding:8px;position:absolute;top:52px;right:0}.profile-popover>div{border-bottom:1px solid var(--line);padding:10px 10px 12px}.profile-popover strong,.profile-popover span{display:block}.profile-popover strong{font-size:12px}.profile-popover span{color:var(--muted);margin-top:4px;font-size:10px}.profile-popover button{width:100%;color:var(--red);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;padding:10px;font-size:11px;font-weight:700;display:flex}.profile-popover button:hover{background:#fff1f3}.content{max-width:1680px;min-height:calc(100vh - 76px);margin:0 auto;padding:30px clamp(20px,3vw,42px) 50px}.mobile-only{display:none}.dashboard-stack,.resource-stack{gap:22px;display:grid}.welcome-row,.resource-heading{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.welcome-row h1,.resource-heading h1{letter-spacing:-.045em;margin-bottom:7px;font-size:clamp(27px,3vw,36px);line-height:1.1}.welcome-row p,.resource-heading p{color:var(--muted);margin:0;font-size:13px}.date-chip{color:#586579;border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:9px;padding:11px 14px;font-size:11px;font-weight:650;display:flex}.date-chip svg{color:var(--blue)}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;display:grid}.metric-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;align-items:flex-start;gap:14px;min-height:130px;padding:20px;transition:all .18s;display:flex;box-shadow:0 5px 18px #172b4d09}.metric-card:hover{border-color:#cfd8e8;transform:translateY(-2px);box-shadow:0 12px 32px #172b4d13}.metric-card>svg{color:#bdc4d0;margin:auto 0 auto auto}.metric-icon{border-radius:11px;flex:none;place-items:center;width:40px;height:40px;display:grid}.metric-icon.blue{color:#2d66d6;background:#e6efff}.metric-icon.green{color:#178165;background:#e1f5ee}.metric-icon.amber{color:#ba730f;background:#fff1d9}.metric-icon.violet{color:#7549bd;background:#f0e7ff}.metric-copy{flex-direction:column;display:flex}.metric-copy small{color:#7b8596;text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px;font-size:10px;font-weight:700}.metric-copy strong{letter-spacing:-.04em;margin-bottom:7px;font-size:26px}.metric-copy>span{color:#949dab;font-size:10px}.overview-grid{grid-template-columns:1.25fr .75fr;gap:15px;display:grid}.overview-grid.lower{grid-template-columns:1fr 1fr}.panel,.data-panel{border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 5px 18px #172b4d09}.panel{min-height:280px;padding:22px}.panel-head{justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px;display:flex}.panel-head h2{letter-spacing:-.025em;margin:0;font-size:17px}.panel-head .eyebrow{margin-bottom:5px;font-size:9px}.panel-head>a{color:var(--blue);align-items:center;gap:3px;font-size:10px;font-weight:750;display:flex}.finance-body{justify-content:center;align-items:center;gap:clamp(25px,5vw,65px);min-height:175px;display:flex}.donut{background:conic-gradient(var(--blue) var(--progress), #e9eef6 0);border-radius:50%;flex:none;place-items:center;width:145px;height:145px;display:grid}.donut:before{content:"";background:#fff;border-radius:50%;width:108px;height:108px;position:absolute}.donut>div{z-index:1;text-align:center}.donut strong,.donut span{display:block}.donut strong{letter-spacing:-.05em;font-size:24px}.donut span{color:var(--muted);margin-top:2px;font-size:9px}.finance-values{gap:16px;min-width:190px;display:grid}.finance-values div{border-bottom:1px solid var(--line);padding-bottom:12px}.finance-values div:last-child{border:0}.finance-values span,.finance-values strong{display:block}.finance-values span{color:var(--muted);margin-bottom:4px;font-size:9px}.finance-values strong{font-size:15px}.quick-grid{grid-template-columns:repeat(2,1fr);gap:9px;display:grid}.quick-grid a{color:#465369;border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;min-height:58px;padding:10px;font-size:10px;font-weight:700;transition:all .15s;display:flex}.quick-grid a:hover{color:var(--blue);background:#f8faff;border-color:#cbd8f1}.quick-grid a>span{width:30px;height:30px;color:var(--blue);background:var(--blue-soft);border-radius:8px;place-items:center;display:grid}.activity-list{display:grid}.activity-list>a,.activity-list>div:not(.empty-line){border-bottom:1px solid #edf0f5;align-items:center;gap:11px;min-height:58px;padding:8px 0;display:flex}.activity-list>:last-child{border-bottom:0!important}.activity-avatar{color:#305eac;background:#e8f0ff;border-radius:10px;flex:none;place-items:center;width:34px;height:34px;font-size:9px;font-weight:800;display:grid}.money-avatar{color:#15745b;background:#e5f6f0}.activity-list>a>span:nth-child(2),.activity-list>div>span:nth-child(2){flex:1;min-width:0}.activity-list strong,.activity-list small{display:block}.activity-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.activity-list small{color:#8b95a5;margin-top:4px;font-size:9px}.activity-list svg{color:#aab2bf}.finance-list b{color:#35435a;font-size:11px}.empty-line{color:#929bab;align-content:center;place-items:center;gap:8px;min-height:160px;font-size:11px;display:grid}.empty-line span{font-size:22px}.resource-heading{align-items:center}.heading-actions{flex-wrap:wrap;justify-content:flex-end;gap:9px;display:flex}.data-panel{overflow:hidden}.table-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:69px;padding:12px 16px;display:flex}.search-box{border:1px solid var(--line);background:#f9fafc;border-radius:9px;align-items:center;gap:8px;width:min(420px,100%);min-height:41px;padding:0 11px;display:flex}.search-box svg{color:#8b95a5}.search-box input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:11px}.search-box kbd{color:#9ba3b1;background:#fff;border:1px solid #dfe4eb;border-radius:4px;padding:3px 5px;font-size:8px}.table-wrap{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;white-space:nowrap;width:100%}.data-table th{color:#7d8797;border-bottom:1px solid var(--line);letter-spacing:.055em;text-align:left;text-transform:uppercase;background:#fafbfc;height:42px;padding:0 15px;font-size:9px;font-weight:800}.data-table td{color:#445065;text-overflow:ellipsis;border-bottom:1px solid #edf0f4;max-width:270px;height:55px;padding:8px 15px;font-size:10.5px;overflow:hidden}.data-table tbody tr:hover{background:#fafcff}.data-table tbody tr:last-child td{border-bottom:0}.actions-column{width:1%;text-align:right!important}.row-actions{justify-content:flex-end;align-items:center;gap:3px;width:max-content;min-width:100%;display:flex;overflow:visible!important}.row-actions button{color:#768197;cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;min-width:31px;height:31px;padding:0 8px;display:grid}.row-actions button:hover{color:var(--blue);background:var(--blue-soft)}.row-actions button.danger:hover{color:var(--red);background:#fff0f2}.row-actions .action-text{color:var(--blue);font-size:9px;font-weight:700;display:block}.status-pill{border-radius:20px;align-items:center;gap:5px;padding:5px 8px;font-size:9px;font-weight:700;display:inline-flex}.status-pill i{border-radius:50%;width:5px;height:5px}.status-pill.positive{color:#157459;background:#e7f7f1}.status-pill.positive i{background:#24a37d}.status-pill.neutral{color:#6f7887;background:#f0f2f5}.status-pill.neutral i{background:#9ba3af}.cell-empty{color:#b0b7c2}.file-cell{color:var(--blue);font-size:9px;font-weight:700}.table-empty{min-height:280px;color:var(--muted);text-align:center;align-content:center;place-items:center;display:grid}.table-empty>span{color:#7297dd;background:#edf3ff;border-radius:14px;place-items:center;width:48px;height:48px;margin-bottom:13px;display:grid}.table-empty strong{color:#425069;margin-bottom:6px;font-size:13px}.table-empty p{margin:0;font-size:10px}.pagination{border-top:1px solid var(--line);min-height:58px;color:var(--muted);justify-content:space-between;align-items:center;padding:10px 16px;font-size:10px;display:flex}.pagination div{gap:6px;display:flex}.pagination button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:7px;padding:6px 10px;font-size:9px;font-weight:700}.pagination button:disabled{opacity:.4;cursor:default}.table-skeleton td span{background:linear-gradient(90deg,#eef1f5,#f7f8fa,#eef1f5) 0 0/200% 100%;border-radius:6px;width:80%;height:10px;animation:1.3s infinite shimmer;display:block}@keyframes shimmer{to{background-position:-200% 0}}.modal-layer{z-index:80;justify-content:flex-end;display:flex;position:fixed;inset:0}.modal-scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:default;background:#0a172b73;border:0;width:100%;height:100%;position:absolute;inset:0}.drawer,.dialog{background:#fff;flex-direction:column;width:min(620px,95vw);height:100%;animation:.2s ease-out slide-in;display:flex;position:relative;box-shadow:-20px 0 60px #05142a2e}@keyframes slide-in{0%{opacity:.5;transform:translate(30px)}}.drawer>header,.dialog>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:82px;padding:18px 23px;display:flex}.drawer header h2,.dialog header h2{margin:0;font-size:19px}.drawer header .eyebrow,.dialog header .eyebrow{margin-bottom:4px;font-size:8px}.drawer form,.dialog form{flex-direction:column;flex:1;min-height:0;display:flex}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;padding:23px;display:grid;overflow-y:auto}.form-grid.single{grid-template-columns:1fr;overflow:visible}.form-grid label.field-wide,.form-grid .toggle-field{grid-column:1/-1}.form-grid label>span b{color:var(--red);margin-left:3px}.form-grid textarea{resize:vertical;line-height:1.5}.form-grid label>small{color:#8b95a5;font-size:9px;line-height:1.4}.toggle-field{border:1px solid var(--line);border-radius:9px;align-items:center;padding:12px;gap:10px!important;display:flex!important}.toggle-field input{opacity:0;width:1px;height:1px;position:absolute}.toggle-field>span{background:#d3d8e1;border-radius:20px;flex:none;width:35px;height:20px;transition:all .2s;position:relative}.toggle-field>span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:all .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0003}.toggle-field input:checked+span{background:var(--blue)}.toggle-field input:checked+span:after{transform:translate(15px)}.toggle-field strong,.toggle-field small{display:block}.toggle-field strong{font-size:11px}.toggle-field small{color:var(--muted);margin-top:3px;font-size:9px}.drawer footer,.dialog footer{border-top:1px solid var(--line);background:#fafbfc;justify-content:flex-end;align-items:center;gap:9px;min-height:72px;padding:14px 23px;display:flex}.dialog{border-radius:16px;width:min(460px,100vw - 30px);height:auto;max-height:calc(100vh - 40px);margin:auto;animation:.18s ease-out dialog-in}.modal-layer:has(.dialog){justify-content:center}.dialog form{flex:none}.dialog .form-grid{padding-bottom:28px}.dialog footer{border-radius:0 0 16px 16px}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)scale(.98)}}.toast{z-index:100;color:#334158;border:1px solid var(--line);max-width:420px;min-height:48px;box-shadow:var(--shadow);background:#fff;border-radius:11px;align-items:center;gap:9px;padding:10px 10px 10px 13px;font-size:11px;font-weight:650;display:flex;position:fixed;top:92px;right:25px}.toast>span{color:#fff;border-radius:50%;place-items:center;width:23px;height:23px;display:grid}.toast.success>span{background:var(--green)}.toast.error>span{background:var(--red)}.toast button{cursor:pointer;background:0 0;border:0;place-items:center;width:27px;height:27px;margin-left:auto;display:grid}.app-loading,.center-page{place-items:center;min-height:100vh;display:grid}.app-loading{align-content:center;gap:25px}.loading-line{background:#e2e7ef;border-radius:5px;width:190px;height:3px;overflow:hidden}.loading-line span{background:var(--blue);border-radius:5px;width:45%;height:100%;animation:1s ease-in-out infinite alternate loading;display:block}@keyframes loading{to{transform:translate(125%)}}.empty-card{border:1px solid var(--line);border-radius:var(--radius);max-width:450px;box-shadow:var(--shadow);text-align:center;background:#fff;padding:35px}.empty-card strong{font-size:18px}.empty-card p{color:var(--muted);margin:10px 0 20px;font-size:12px;line-height:1.6}.inline-error{color:var(--red);background:#fff4f5;border:1px solid #f2ccd2;border-radius:10px;padding:14px;font-size:11px}.route-loader{justify-content:center;align-items:center;gap:5px;min-height:100vh;display:flex}.route-loader span{background:var(--blue);border-radius:50%;width:7px;height:7px;animation:.8s infinite alternate bounce}.route-loader span:nth-child(2){animation-delay:.15s}.route-loader span:nth-child(3){animation-delay:.3s}@keyframes bounce{to{opacity:.4;transform:translateY(-8px)}}.skeleton-title{background:#e9edf3;border-radius:10px;width:280px;height:60px}.skeleton .metric-card,.skeleton .panel{background:linear-gradient(100deg,#edf0f5,#f8f9fa,#edf0f5) 0 0/200%;animation:1.3s infinite shimmer}.academic-workspace{gap:20px;display:grid}.workspace-hero{justify-content:space-between;align-items:center;gap:24px;padding:4px 0 2px;display:flex}.workspace-hero h1{letter-spacing:-.055em;margin-bottom:7px;font-size:clamp(30px,4vw,42px)}.workspace-hero p{max-width:700px;color:var(--muted);margin:0;font-size:13px;line-height:1.55}.workspace-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 5px 18px #172b4d09}.workspace-card-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:20px 22px;display:flex}.workspace-card-head h2{margin:0;font-size:17px}.workspace-card-head .eyebrow{margin-bottom:4px;font-size:8px}.workspace-card-head>span{min-width:28px;height:28px;color:var(--blue);background:var(--blue-soft);border-radius:8px;place-items:center;padding:0 7px;font-size:10px;font-weight:800;display:grid}.workspace-loading{min-height:320px;color:var(--muted);justify-content:center;align-items:center;gap:10px;font-size:12px;display:flex}.spinner.dark{border-color:#d8deea;border-top-color:var(--blue)}.inline-success{color:#126b52;background:#eefaf5;border:1px solid #bfe5d7;border-radius:10px;padding:12px 14px;font-size:11px;font-weight:650}.compact-toggle{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:11px;align-items:center;gap:9px;padding:10px 12px;display:flex}.compact-toggle input{opacity:0;position:absolute}.compact-toggle>span{background:#cdd4df;border-radius:20px;width:34px;height:20px;transition:all .2s;position:relative}.compact-toggle>span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:all .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0003}.compact-toggle input:checked+span{background:var(--blue)}.compact-toggle input:checked+span:after{transform:translate(14px)}.compact-toggle strong,.compact-toggle small{display:block}.compact-toggle strong{font-size:10px}.compact-toggle small{color:var(--muted);margin-top:2px;font-size:8px}.mode-tabs{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.mode-tabs button{color:#69758a;border:0;border-right:1px solid var(--line);text-align:left;cursor:pointer;background:#fafbfc;grid-template-rows:1fr 1fr;grid-template-columns:auto 1fr;align-items:center;column-gap:11px;min-height:78px;padding:15px 22px;font-size:12px;font-weight:750;display:grid}.mode-tabs button svg{grid-row:1/3}.mode-tabs button span{color:#98a1af;font-size:9px;font-weight:500}.mode-tabs button.active{color:var(--blue);box-shadow:inset 0 -3px var(--blue);background:#fff}.mode-tabs button:disabled{opacity:.48;cursor:not-allowed}.setup-fields{flex-wrap:wrap;align-items:flex-end;gap:12px;padding:18px 20px;display:flex}.setup-fields label{flex:1;gap:6px;min-width:145px;display:grid}.setup-fields label.wide-select{flex:2}.setup-fields label>span,.generation-form label>span{color:#687488;text-transform:uppercase;letter-spacing:.04em;font-size:9px;font-weight:750}.setup-fields input,.setup-fields select,.generation-form input,.generation-form select,.exam-controls input,.exam-controls select{border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;width:100%;min-height:41px;padding:8px 10px;font-size:11px}.setup-fields .button{min-width:130px}.workspace-empty{text-align:center;align-content:center;place-items:center;min-height:330px;padding:35px;display:grid}.workspace-empty.inset{min-height:420px}.workspace-empty>span{width:52px;height:52px;color:var(--blue);background:var(--blue-soft);border-radius:15px;place-items:center;margin-bottom:13px;display:grid}.workspace-empty h2{margin-bottom:7px;font-size:16px}.workspace-empty p{max-width:410px;color:var(--muted);margin:0;font-size:11px;line-height:1.6}.roster-card{overflow:hidden}.roster-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.roster-head>div{align-items:center;gap:11px;display:flex}.roster-head h2{margin:0 0 4px;font-size:16px}.roster-head p{color:var(--muted);margin:0;font-size:9px}.status-dot{border-radius:50%;width:10px;height:10px}.status-dot.new{background:#e39b2c;box-shadow:0 0 0 5px #fff3df}.status-dot.done{background:#25a17a;box-shadow:0 0 0 5px #e7f7f1}.state-badge{color:#126d54;background:#e7f7f1;border-radius:20px;padding:6px 9px;font-size:9px;font-weight:750}.state-badge.inactive{color:#777;background:#eee}.roster-toolbar{border-bottom:1px solid var(--line);background:#fafbfc;align-items:center;gap:12px;padding:12px 15px;display:flex}.attendance-counts{flex:1;justify-content:center;gap:15px;display:flex}.attendance-counts span{color:var(--muted);text-align:center;text-transform:uppercase;font-size:8px}.attendance-counts b{color:var(--ink);margin-bottom:2px;font-size:13px;display:block}.attendance-counts .absent b{color:var(--red)}.attendance-counts .late b{color:var(--amber)}.roster-list{max-height:58vh;overflow-y:auto}.roster-header,.roster-row{grid-template-columns:minmax(220px,1.2fr) minmax(300px,1fr) minmax(180px,.8fr);align-items:center;gap:15px;display:grid}.roster-header{z-index:2;color:#8b95a4;border-bottom:1px solid var(--line);text-transform:uppercase;background:#fff;min-height:35px;padding:0 17px;font-size:8px;font-weight:800;position:sticky;top:0}.roster-row{border-bottom:1px solid #edf0f4;min-height:58px;padding:7px 17px}.roster-row:hover{background:#fafcff}.learner-cell{align-items:center;gap:10px;display:flex}.learner-cell>b{color:#7d8ca4;background:#f0f3f7;border-radius:8px;place-items:center;width:27px;height:27px;font-size:8px;display:grid}.learner-cell strong,.learner-cell small{display:block}.learner-cell strong{font-size:10px}.learner-cell small{color:var(--muted);margin-top:3px;font-size:8px}.status-selector{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.status-selector button{color:#7c8799;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:7px;min-height:34px;padding:4px;font-size:9px;font-weight:800}.status-selector button span{display:none}.status-selector button.selected.present{color:#117155;background:#e8f8f2;border-color:#9fd8c5}.status-selector button.selected.absent{color:#aa3041;background:#fff0f2;border-color:#e8b6be}.status-selector button.selected.late{color:#9b5d08;background:#fff6e7;border-color:#efd19d}.status-selector button.selected.excused{color:#5d52a3;background:#f3f0ff;border-color:#cfc9ed}.reason-input{border:1px solid var(--line);border-radius:7px;outline:none;width:100%;min-height:35px;padding:7px 9px;font-size:9px}.reason-input:disabled{color:#aaa;background:#f7f8fa}.sticky-save{border-top:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;min-height:68px;padding:11px 17px;display:flex;box-shadow:0 -10px 25px #1428460a}.sticky-save strong,.sticky-save span{display:block}.sticky-save strong{font-size:11px}.sticky-save span{color:var(--muted);margin-top:3px;font-size:9px}.exam-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:15px;display:grid}.exam-list-panel{overflow:hidden}.exam-series-list{max-height:72vh;display:grid;overflow-y:auto}.exam-series-list>button{border:0;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:78px;padding:14px 17px;display:flex}.exam-series-list>button:hover,.exam-series-list>button.active{background:#f7faff}.exam-series-list>button.active{box-shadow:inset 3px 0 var(--blue)}.exam-series-list strong,.exam-series-list span{display:block}.exam-series-list strong{margin-bottom:5px;font-size:11px}.exam-series-list span{color:var(--muted);font-size:8px}.series-meta{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.series-meta svg{color:#aab3c1}.exam-detail-panel{min-height:620px;padding:22px}.exam-title{justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px;display:flex}.exam-title h2{letter-spacing:-.04em;margin-bottom:5px;font-size:23px}.exam-title p{color:var(--muted);margin:0;font-size:10px}.release-state{border-radius:20px;padding:7px 10px;font-size:9px;font-weight:750}.release-state.live{color:#137258;background:#e4f6ef}.release-state.draft{color:#7f6551;background:#f4eee9}.exam-progress{border:1px solid var(--line);background:#fafbfc;border-radius:12px;grid-template-columns:auto repeat(3,1fr);align-items:center;gap:20px;margin-bottom:18px;padding:15px;display:grid}.progress-ring{background:conic-gradient(var(--blue) var(--progress), #e5e9ef 0);border-radius:50%;place-items:center;width:63px;height:63px;display:grid}.progress-ring:before{content:"";background:#fff;border-radius:50%;width:49px;height:49px;position:absolute}.progress-ring strong{z-index:1;font-size:11px}.exam-progress>div:not(.progress-ring) strong,.exam-progress>div:not(.progress-ring) span{display:block}.exam-progress>div:not(.progress-ring) strong{font-size:18px}.exam-progress>div:not(.progress-ring) span{color:var(--muted);margin-top:3px;font-size:8px}.exam-controls{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px;display:grid}.control-block{border:1px solid var(--line);border-radius:11px;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:13px;display:grid}.control-block>span{color:var(--muted);text-transform:uppercase;font-size:8px}.control-block>strong{font-size:10px}.control-block>select{grid-column:1/3}.control-block>div{grid-column:1/3;gap:6px;display:flex}.control-block>div input{flex:1}.control-block .button{flex:1;min-height:36px;font-size:9px}.button.danger-outline{color:var(--red);background:#fff;border-color:#edc0c7}.papers-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.papers-head h3{margin:0 0 4px;font-size:14px}.papers-head span{color:var(--muted);font-size:8px}.paper-list{gap:6px;display:grid}.paper-list>button{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;border-radius:9px;grid-template-columns:auto 1fr minmax(120px,170px) auto;align-items:center;gap:11px;min-height:59px;padding:9px 11px;display:grid}.paper-list>button:hover{background:#fafcff;border-color:#cbd7eb}.paper-icon{width:34px;height:34px;color:var(--blue);background:var(--blue-soft);border-radius:9px;place-items:center;font-size:8px;font-weight:850;display:grid}.paper-list strong,.paper-list span{display:block}.paper-list strong{margin-bottom:3px;font-size:10px}.paper-list span{color:var(--muted);font-size:8px}.paper-progress>span{background:#e9edf3;border-radius:10px;height:5px;overflow:hidden}.paper-progress i{background:var(--blue);border-radius:10px;height:100%;display:block}.paper-progress small{color:var(--muted);margin-top:5px;font-size:8px;display:block}.exam-create-dialog{width:min(690px,100vw - 30px)}.class-picker{border:1px solid var(--line);border-radius:10px;grid-column:1/3;padding:13px}.class-picker legend{padding:0 5px;font-size:10px;font-weight:750}.class-picker>div{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.class-picker label{border:1px solid var(--line);border-radius:7px;align-items:center;gap:6px;min-height:34px;padding:6px 8px;font-size:9px;display:flex}.class-picker input{width:auto;min-height:0}.class-picker>button{color:var(--blue);cursor:pointer;background:0 0;border:0;margin-top:9px;font-size:9px;font-weight:750}.marksheet-drawer{width:min(720px,96vw)}.marksheet-tip{color:#5b6d88;background:#f1f6ff;border-bottom:1px solid #dbe5f5;padding:10px 20px;font-size:9px}.marksheet-list{flex:1;min-height:0;overflow-y:auto}.marksheet-header,.marksheet-list label{grid-template-columns:1fr 130px 60px;align-items:center;gap:12px;display:grid}.marksheet-header{z-index:2;color:#8590a1;border-bottom:1px solid var(--line);text-transform:uppercase;background:#fff;min-height:36px;padding:0 20px 0 58px;font-size:8px;font-weight:800;position:sticky;top:0}.marksheet-list label{border-bottom:1px solid #edf0f4;min-height:57px;padding:7px 20px 7px 58px;position:relative}.marksheet-list label>b{color:#79889e;background:#f0f3f7;border-radius:8px;place-items:center;width:27px;height:27px;font-size:8px;display:grid;position:absolute;left:19px}.marksheet-list strong,.marksheet-list small{display:block}.marksheet-list strong{font-size:10px}.marksheet-list small{color:var(--muted);margin-top:3px;font-size:8px}.marksheet-list input{border:1px solid var(--line);border-radius:7px;outline:none;width:100%;min-height:37px;padding:7px 9px}.marksheet-list input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #e8f0ff}.marksheet-list em{color:var(--muted);text-align:center;font-size:9px;font-style:normal}.hero-actions{flex-wrap:wrap;gap:7px;display:flex}.workspace-tabs{border-bottom:1px solid var(--line);gap:5px;display:flex}.workspace-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 15px;font-size:10px;font-weight:750}.workspace-tabs button.active{color:var(--blue);border-color:var(--blue)}.timetable-view{overflow:hidden}.timetable-picker{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:18px 20px;display:flex}.timetable-picker h2{margin:0;font-size:17px}.timetable-picker select{border:1px solid var(--line);background:#fff;border-radius:9px;width:min(520px,60%);min-height:42px;padding:8px 10px}.selected-schedule-head{justify-content:space-between;align-items:center;padding:15px 20px;display:flex}.selected-schedule-head h3{margin:0 0 4px;font-size:14px}.selected-schedule-head span{color:var(--muted);font-size:8px}.schedule-grid-wrap{overflow-x:auto}.schedule-grid{border-collapse:collapse;table-layout:fixed;width:100%;min-width:900px}.schedule-grid th,.schedule-grid td{border:1px solid var(--line);padding:8px}.schedule-grid thead th{color:#7b879a;text-transform:uppercase;background:#f8fafc;font-size:8px}.schedule-grid thead th:first-child{width:105px}.schedule-grid tbody th{text-align:left;background:#fafbfc}.schedule-grid tbody th strong,.schedule-grid tbody th span{display:block}.schedule-grid tbody th strong{font-size:9px}.schedule-grid tbody th span{color:var(--muted);margin-top:3px;font-size:7px}.lesson-block{border-left:3px solid var(--blue);background:#f0f5ff;border-radius:6px;min-height:52px;padding:7px}.lesson-block strong,.lesson-block span,.lesson-block small{display:block}.lesson-block strong{color:#244f9c;margin-bottom:4px;font-size:9px}.lesson-block span{color:#63728a;font-size:7.5px}.lesson-block small{color:#8290a4;margin-top:3px;font-size:7px}.free-slot{color:#c1c7d0;text-align:center;font-size:8px;display:block}.generation-card{overflow:hidden}.generation-intro{border-bottom:1px solid var(--line);background:linear-gradient(120deg,#f8faff,#fff);align-items:center;gap:15px;padding:23px;display:flex}.generation-icon{width:48px;height:48px;color:var(--blue);background:var(--blue-soft);border-radius:14px;flex:none;place-items:center;display:grid}.generation-intro h2{margin-bottom:5px;font-size:19px}.generation-intro p{max-width:680px;color:var(--muted);margin:0;font-size:10px;line-height:1.55}.generation-form{grid-template-columns:repeat(3,1fr);gap:15px;padding:23px;display:grid}.generation-form>label{gap:7px;display:grid}.generation-switches{grid-column:1/3;gap:8px;display:flex}.generate-button{align-self:end;min-height:47px}.analysis-layout{grid-template-columns:1.2fr .8fr;align-items:start;gap:15px;display:grid}.run-list,.snapshot-list{gap:9px;padding:15px;display:grid}.run-list article{border:1px solid var(--line);border-radius:10px;padding:14px}.run-head{justify-content:space-between;align-items:flex-start;display:flex}.run-head strong,.run-head span{display:block}.run-head strong{font-size:10px}.run-head div span{color:var(--muted);margin-top:3px;font-size:8px}.run-status{background:#edf0f4;border-radius:20px;padding:5px 7px;font-size:8px;font-weight:750}.run-status.completed{color:var(--green);background:#e5f6ef}.run-status.failed{color:var(--red);background:#fff0f2}.run-status.completed_with_warnings{color:var(--amber);background:#fff5e5}.run-metrics{gap:15px;margin-top:11px;display:flex}.run-metrics span{color:var(--muted);font-size:8px}.run-metrics b{color:var(--ink);font-size:11px}.run-list ul{color:#9a4e28;margin:10px 0 0;padding-left:17px;font-size:8px;line-height:1.5}.ai-note{color:#485a74;background:#f2f6fd;border-radius:7px;margin:10px 0 0;padding:9px;font-size:8.5px;line-height:1.5}.snapshot-list>div{border:1px solid var(--line);border-radius:9px;align-items:center;gap:10px;min-height:59px;padding:9px;display:flex}.snapshot-icon{width:33px;height:33px;color:var(--blue);background:var(--blue-soft);border-radius:9px;flex:none;place-items:center;display:grid}.snapshot-list>div>div{flex:1;min-width:0}.snapshot-list strong,.snapshot-list small{display:block}.snapshot-list strong{margin-bottom:4px;font-size:9px}.snapshot-list small{color:var(--muted);font-size:7.5px}.snapshot-list .button{min-height:32px;padding:0 9px;font-size:8px}.mini-empty{color:var(--muted);text-align:center;padding:30px;font-size:10px}@media (max-width:1180px){.metric-grid{grid-template-columns:repeat(2,1fr)}.overview-grid{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(3,1fr)}.exam-layout,.analysis-layout{grid-template-columns:1fr}.exam-series-list{max-height:330px}.generation-form{grid-template-columns:repeat(2,1fr)}.generate-button{grid-column:1/3}.roster-toolbar{flex-wrap:wrap}.attendance-counts{order:3;width:100%}}@media (max-width:900px){.login-page{grid-template-columns:1fr}.login-story{display:none}.login-panel{min-height:100vh;padding:30px}.mobile-brand{display:flex}.sidebar{transition:transform .22s;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:20px 0 60px #06142833}.sidebar-scrim{z-index:29;background:#06122373;border:0;position:fixed;inset:0}.app-main{width:100%;margin-left:0}.menu-button,.mobile-only{display:inline-grid}.topbar{padding:0 18px}.content{padding:24px 18px 45px}}@media (max-width:660px){.profile-copy,.profile-trigger>svg,.topbar-actions>.icon-button{display:none}.topbar-actions{gap:2px}.welcome-row,.resource-heading{flex-direction:column;align-items:flex-start}.date-chip{justify-content:center;width:100%}.heading-actions{justify-content:stretch;width:100%}.heading-actions .button{flex:1}.metric-grid{grid-template-columns:1fr}.metric-card{min-height:110px}.overview-grid.lower{grid-template-columns:1fr}.finance-body{flex-direction:column;align-items:stretch}.donut{margin:auto}.quick-grid{grid-template-columns:repeat(2,1fr)}.table-toolbar{align-items:stretch}.search-box{width:100%}.search-box kbd{display:none}.data-table th,.data-table td{padding-left:11px;padding-right:11px}.drawer{width:100vw}.form-grid{grid-template-columns:1fr;padding:18px}.form-grid label.field-wide,.form-grid .toggle-field{grid-column:auto}.drawer footer{padding:12px 18px}.toast{top:84px;left:12px;right:12px}.workspace-hero{flex-direction:column;align-items:stretch}.hero-actions{width:100%}.hero-actions .button{flex:1}.mode-tabs{grid-template-columns:1fr}.setup-fields{flex-direction:column;align-items:stretch}.setup-fields label,.setup-fields .button{width:100%}.roster-header{display:none}.roster-row{grid-template-columns:1fr;gap:8px;padding:12px 14px}.status-selector button span{margin-left:4px;font-size:7px;display:inline}.roster-list{max-height:none}.roster-toolbar{flex-direction:column;align-items:stretch}.attendance-counts{justify-content:space-around}.exam-detail-panel{padding:15px}.exam-title,.papers-head{flex-direction:column;align-items:flex-start}.exam-progress{grid-template-columns:repeat(3,1fr)}.progress-ring{grid-column:1/4;margin:auto}.exam-controls{grid-template-columns:1fr}.paper-list>button{grid-template-columns:auto 1fr auto}.paper-progress{display:none}.class-picker{grid-column:auto}.class-picker>div{grid-template-columns:repeat(2,1fr)}.marksheet-header,.marksheet-list label{grid-template-columns:1fr 95px 36px}.timetable-picker{flex-direction:column;align-items:stretch}.timetable-picker select{width:100%}.generation-form{grid-template-columns:1fr}.generation-switches,.generate-button{grid-column:auto}.generation-switches{flex-direction:column}}
