@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{color:#18181b;font-synthesis:none;background:#f7f8fa;font-family:Inter,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.startup-message{text-align:center;background:#f7f8fa;place-content:center;justify-items:center;gap:10px;min-height:100vh;padding:24px;display:grid}.startup-message svg{color:var(--primary)}.startup-message h1{margin:0;font-size:20px}.startup-message p{color:#71717a;margin:0;font-size:12px}.startup-spinner{border:3px solid #dddafe;border-top-color:var(--primary);border-radius:50%;width:27px;height:27px;animation:.8s linear infinite spin}button,input{font:inherit}button{cursor:pointer}.skip-link{z-index:1000;color:#fff;background:#18181b;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:top .15s;position:absolute;top:-48px;left:8px}.skip-link:focus{top:8px}.install-prompt-dialog{border:1px solid var(--border);background:var(--surface);text-align:center;border-radius:11px;width:min(100%,420px);max-height:calc(100vh - 40px);padding:26px 24px;position:relative;overflow-y:auto;box-shadow:0 25px 80px #18181b38}.install-prompt-close{color:var(--text-secondary);background:0 0;border:0;position:absolute;top:14px;right:14px}.install-prompt-icon{width:52px;height:52px;color:var(--primary);background:var(--primary-soft);border-radius:12px;place-items:center;margin:0 auto 14px;display:grid}.install-prompt-dialog h2{margin:0 0 8px;font-size:16px}.install-prompt-dialog p{color:var(--text-secondary);margin:0 0 18px;font-size:13px;line-height:1.5}.install-prompt-actions{justify-content:center;gap:10px;display:flex}.upgrade-banner{isolation:isolate;color:#fff;animation:upgrade-banner-in var(--motion-slow) var(--ease-spring) backwards, upgrade-banner-gradient 7s ease-in-out infinite, upgrade-banner-glow 2.6s ease-in-out infinite;background:linear-gradient(115deg,#2563eb,#4f46e5 48%,#3730a3 100%) 0 0/220% 220%;border:0;border-radius:14px;align-items:center;gap:18px;margin-bottom:18px;padding:20px 56px 20px 20px;display:flex;position:relative;overflow:hidden;box-shadow:0 12px 30px -10px #4f46e58c,inset 0 0 0 1px #ffffff1a}.upgrade-banner-shine{z-index:0;pointer-events:none;background:linear-gradient(100deg,#0000 30%,#ffffff52 45%,#0000 60%);animation:3.4s ease-in-out infinite upgrade-banner-shine;position:absolute;inset:0;transform:translate(-120%)}.upgrade-banner-icon{z-index:1;color:#fff;background:#fff3;border:1px solid #fff6;border-radius:50%;flex:none;place-items:center;width:48px;height:48px;animation:2.6s ease-in-out infinite upgrade-banner-icon-pulse;display:grid;position:relative}.upgrade-banner-copy{z-index:1;flex:1;min-width:0;position:relative}.upgrade-banner-badge{color:#fff;letter-spacing:.04em;text-transform:uppercase;background:#ffffff38;border:1px solid #ffffff61;border-radius:999px;margin-bottom:6px;padding:3px 10px;font-size:11px;font-weight:800;display:inline-block}.upgrade-banner-copy strong{color:#fff;margin-bottom:4px;font-size:15px;font-weight:800;display:block}.upgrade-banner-copy p{color:#ffffffeb;margin:0;font-size:13px;line-height:1.45}.upgrade-banner-cta{z-index:1;color:#7a1533;background:linear-gradient(100deg,#ffd54a,#ffb020);border:0;border-radius:10px;flex:none;align-items:center;gap:8px;padding:13px 22px;font-size:14px;font-weight:800;animation:2.6s ease-in-out infinite upgrade-banner-cta-pulse;display:inline-flex;position:relative}.upgrade-banner-cta:hover{transform:translateY(-2px)scale(1.03);box-shadow:0 8px 20px #0000004d}.upgrade-banner-cta svg{transition:transform var(--motion-fast) var(--ease-out)}.upgrade-banner-cta:hover svg{transform:translate(3px)}.upgrade-banner-close{z-index:2;color:#fff;background:#ffffff2e;border:0;border-radius:50%;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:12px;right:12px}.upgrade-banner-close:hover{background:#ffffff52}@keyframes upgrade-banner-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes upgrade-banner-gradient{0%,to{background-position:0%}50%{background-position:100%}}@keyframes upgrade-banner-glow{0%,to{box-shadow:0 12px 30px -10px #4f46e58c,inset 0 0 0 1px #ffffff1a}50%{box-shadow:0 12px 42px -4px #2563ebcc,inset 0 0 0 1px #ffffff2e}}@keyframes upgrade-banner-shine{0%{transform:translate(-120%)}55%,to{transform:translate(120%)}}@keyframes upgrade-banner-icon-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.14)}}@keyframes upgrade-banner-cta-pulse{0%,to{box-shadow:0 4px 14px #00000040,0 0 #ffd54a8c}50%{box-shadow:0 4px 14px #00000040,0 0 0 9px #ffd54a00}}@media (width<=590px){.upgrade-banner{flex-wrap:wrap;padding:18px 50px 18px 18px}.upgrade-banner-cta{justify-content:center;width:100%}}@media (prefers-reduced-motion:reduce){.upgrade-banner,.upgrade-banner-shine,.upgrade-banner-icon,.upgrade-banner-cta{animation:none!important}}.app-shell{min-height:100vh;display:flex}.sidebar{z-index:20;background:#fff;border-right:1px solid #e4e4e7;flex-direction:column;width:250px;min-height:100vh;display:flex;position:fixed}.logo{border-bottom:1px solid #e4e4e7;align-items:center;gap:10px;height:72px;padding:0 22px;font-size:16px;display:flex}.logo>span{background:var(--primary);color:#fff;border-radius:9px;place-items:center;width:36px;height:36px;display:grid}.logo strong{color:var(--primary)}.mobile-close{display:none}.side-nav{flex:1;padding:19px 12px}.side-nav p{color:#a1a1aa;letter-spacing:.1em;margin:0 12px 10px;font-size:10px;font-weight:700}.side-nav button,.sidebar-bottom>button{color:#71717a;text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:12px;width:100%;margin:2px 0;padding:11px 12px;font-size:14px;display:flex}.side-nav button:hover,.sidebar-bottom>button:hover{color:var(--primary-hover);background:#f4f4f5}.side-nav button.active,.sidebar-bottom>button.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.sidebar-bottom{border-top:1px solid #e4e4e7;padding:12px}.profile{align-items:center;gap:10px;margin-top:9px;padding:10px 6px 2px;display:flex}.profile .avatar{background:var(--primary);color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:12px;font-weight:700;display:grid}.profile>div:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.profile strong{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.profile span{color:#71717a;margin-top:2px;font-size:11px}.workspace{width:calc(100% - 250px);margin-left:250px}.topbar{z-index:10;background:#fff;border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;height:72px;padding:0 30px;display:flex;position:sticky;top:0}.search{color:#a1a1aa;align-items:center;gap:9px;width:360px;display:flex}.search input{color:#18181b;border:0;outline:0;width:100%;font-size:13px}.search kbd{white-space:nowrap;color:#71717a;background:#fafafa;border:1px solid #e4e4e7;border-radius:5px;padding:3px 7px;font-size:10px}.floating-menu-button{display:none}.top-actions{align-items:center;gap:17px;display:flex}.icon-button{color:#71717a;background:0 0;border:0;padding:5px;position:relative}.icon-button i{background:#ef4444;border:2px solid #fff;border-radius:50%;width:7px;height:7px;position:absolute;top:2px;right:3px}.divider{background:#e4e4e7;width:1px;height:22px}.school{color:#71717a;font-size:12px}.menu-button{display:none}.content{max-width:1460px;margin:auto;padding:31px 34px 55px}.page-heading{justify-content:space-between;align-items:end;margin-bottom:28px;display:flex}.page-heading p{color:#71717a;text-transform:capitalize;margin:0 0 6px;font-size:12px}.page-heading h1{letter-spacing:-.02em;margin:0;font-size:26px}.primary-button{background:var(--primary);color:#fff;border:0;border-radius:7px;align-items:center;gap:8px;padding:10px 15px;font-size:13px;font-weight:600;display:flex}.primary-button:hover{background:var(--primary-hover)}.metrics{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px;display:grid}.metric-card{background:#fff;border:1px solid #e4e4e7;border-radius:9px;gap:15px;padding:20px;display:flex}.metric-icon{width:41px;height:41px;color:var(--primary);background:var(--primary-soft);border-radius:8px;flex:none;place-items:center;display:grid}.metric-card>div:last-child{flex-direction:column;display:flex}.metric-card span{color:#71717a;font-size:12px}.metric-card strong{margin:4px 0;font-size:22px}.metric-card small{color:#71717a;font-size:10px}.metric-card small.positive{color:#22c55e}.dashboard-grid{grid-template-columns:minmax(0,1.7fr) minmax(310px,.8fr);gap:18px;margin-bottom:18px;display:grid}.panel{background:#fff;border:1px solid #e4e4e7;border-radius:9px}.panel-title{border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;padding:19px 21px;display:flex}.panel-title h2{margin:0 0 4px;font-size:15px}.panel-title p{color:#71717a;margin:0;font-size:11px}.panel-title>button{color:var(--primary);background:0 0;border:0;font-size:11px;font-weight:600}.class-item{border-bottom:1px solid #f0f0f1;grid-template-columns:48px 10px 1fr 54px 66px 122px;align-items:center;gap:11px;padding:17px 20px;display:grid}.class-item:last-child{border:0}.class-item time{color:#71717a;font-size:12px}.timeline-dot{border:2px solid var(--primary);border-radius:50%;width:8px;height:8px}.class-main{flex-direction:column;gap:4px;display:flex}.class-main strong{font-size:13px}.class-main span,.student-count{color:#71717a;font-size:11px}.student-count{align-items:center;gap:5px;display:flex}.badge{text-align:center;border-radius:20px;padding:5px 8px;font-size:13px;font-weight:600}.badge.present{color:#16883d;background:#e8f8ed}.badge.warning{color:#9b6800;background:#fff4d5}.badge.neutral{color:#71717a;background:#f4f4f5}.outline-button{color:var(--primary);border:1px solid var(--primary-border);background:#fff;border-radius:6px;padding:7px 9px;font-size:10px;font-weight:600}.outline-button:hover{background:var(--primary-soft);border-color:var(--primary)}.alert-list{padding:5px 20px}.alert{border-bottom:1px solid #f0f0f1;gap:11px;padding:15px 0;display:flex}.alert:last-child{border:0}.alert-mark{border-radius:50%;flex:none;place-items:center;width:23px;height:23px;font-size:12px;font-weight:700;display:grid}.alert.warning .alert-mark{color:#9b6800;background:#fff4d5}.alert.danger .alert-mark{color:#ef4444;background:#fee2e2}.alert.info .alert-mark{background:var(--primary-soft);color:var(--primary)}.alert strong{font-size:11px}.alert p{color:#71717a;margin:4px 0 7px;font-size:10px;line-height:1.45}.alert button{color:var(--primary);background:0 0;border:0;padding:0;font-size:10px;font-weight:600}.courses-panel{padding-bottom:18px}.course-grid{grid-template-columns:repeat(3,1fr);gap:13px;padding:17px 20px 0;display:grid}.course-card{border:1px solid #e4e4e7;border-radius:8px;align-items:center;gap:12px;padding:14px;display:flex}.course-code{background:var(--primary-soft);width:42px;height:42px;color:var(--primary);border-radius:7px;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.course-data{flex-direction:column;flex:1;gap:5px;display:flex}.course-data strong{font-size:11px}.course-data span{color:#71717a;align-items:center;gap:5px;font-size:13px;display:flex}.attendance-rate{text-align:right;flex-direction:column;gap:3px;display:flex}.attendance-rate span{color:#71717a;font-size:13px}.attendance-rate strong{color:#22c55e;font-size:12px}.empty-state{text-align:center;background:#fff;border:1px solid #e4e4e7;border-radius:9px;place-content:center;justify-items:center;min-height:430px;display:grid}.empty-state>div{width:54px;height:54px;color:var(--primary);background:var(--primary-soft);border-radius:12px;place-items:center;display:grid}.empty-state h2{margin:17px 0 7px;font-size:18px}.empty-state p{color:#71717a;font-size:12px}.backdrop{display:none}.data-status{border:1px solid var(--primary-border);color:var(--primary-hover);background:#f5f4ff;border-radius:7px;margin:-8px 0 16px;padding:10px 13px;font-size:11px}.data-status.error{color:#b42318;background:#fff1f1;border-color:#fecaca}.day-focus{grid-template-columns:minmax(0,1.6fr) minmax(260px,.7fr);gap:18px;margin-bottom:18px;display:grid}.now-class,.next-class{background:#fff;border:1px solid #e4e4e7;border-radius:9px;padding:22px}.now-class{border-left:4px solid var(--primary)}.now-class.free{border-left-color:#e4e4e7}.focus-label,.next-label{color:var(--primary);letter-spacing:.09em;font-size:13px;font-weight:700}.free .focus-label{color:#71717a}.live-dot{background:#22c55e;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block;box-shadow:0 0 0 4px #dcfce7}.free .live-dot{box-shadow:none;background:#a1a1aa}.focus-content{justify-content:space-between;align-items:end;gap:20px;margin-top:15px;display:flex}.focus-time{color:#71717a;font-size:12px}.focus-content h2{margin:5px 0 8px;font-size:22px}.focus-content p{color:#71717a;align-items:center;gap:5px;margin:0;font-size:11px;display:flex}.free-message{align-items:center;gap:13px;min-height:68px;margin-top:12px;display:flex}.clock-box{color:#71717a;background:#f4f4f5;border-radius:9px;place-items:center;width:46px;height:46px;display:grid}.free-message h2{margin:0 0 4px;font-size:17px}.free-message p{color:#71717a;margin:0;font-size:11px}.next-class{position:relative}.next-class>strong{color:var(--primary);margin-top:14px;font-size:22px;display:block}.next-class h3{margin:5px 0;font-size:14px}.next-class p{color:#71717a;margin:0;font-size:10px}.next-class .room{color:#71717a;background:#f4f4f5;border-radius:5px;padding:5px 7px;font-size:13px;position:absolute;top:20px;right:20px}.dashboard-grid.simplified{grid-template-columns:minmax(0,1.5fr) minmax(290px,.7fr)}.dashboard-grid.summary-only{grid-template-columns:minmax(0,1fr);max-width:920px}.schedule-attendance{color:var(--primary);background:var(--primary-soft);border:0;border-radius:5px;align-items:center;gap:5px;padding:5px 7px;font-size:12px;font-weight:600;display:flex}.dashboard-general{grid-template-columns:minmax(330px,.95fr) minmax(430px,1.25fr);gap:18px;max-width:920px;margin-bottom:18px;display:grid}.real-pending{overflow:hidden}.real-pending .panel-title{padding:15px 18px}.real-pending-list{min-height:92px;padding:7px 15px}.real-pending-item{border-bottom:1px solid var(--border);grid-template-columns:29px 1fr auto;align-items:center;gap:9px;padding:9px 0;display:grid}.real-pending-item:last-child{border-bottom:0}.real-pending-item>span{color:#d97706;background:#fff7df;border-radius:7px;place-items:center;width:29px;height:29px;display:grid}.real-pending-item.students>span{color:var(--primary);background:var(--primary-soft)}.real-pending-item.schedule>span{color:#2563eb;background:#eff6ff}.real-pending-item>div{flex-direction:column;gap:3px;min-width:0;display:flex}.real-pending-item strong{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.real-pending-item small{color:var(--text-secondary);font-size:11px}.real-pending-item button{color:var(--primary);background:var(--primary-soft);border:0;border-radius:5px;padding:5px 6px;font-size:11px;font-weight:650}.pending-clear{justify-content:center;align-items:center;gap:10px;min-height:91px;display:flex}.pending-clear>span{color:#16883d;background:#e8f8ed;border-radius:50%;place-items:center;width:35px;height:35px;display:grid}.pending-clear>div{flex-direction:column;gap:3px;display:flex}.pending-clear strong{color:var(--text-primary);font-size:13px}.pending-clear small{color:var(--text-secondary);font-size:11px}.general-data{overflow:hidden}.general-data .panel-title{padding:15px 18px}.general-stats{grid-template-columns:repeat(4,1fr);padding:17px;display:grid}.general-stats>div{border-right:1px solid var(--border);grid-template-rows:auto auto;grid-template-columns:29px 1fr;column-gap:8px;min-width:0;padding:3px 12px;display:grid}.general-stats>div:last-child{border-right:0}.general-stats span{width:29px;height:29px;color:var(--primary);background:var(--primary-soft);border-radius:7px;grid-row:1/3;place-items:center;display:grid}.general-stats strong{color:var(--text-primary);font-size:15px;line-height:1}.general-stats small{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}@media (width<=560px){.general-stats{grid-template-columns:1fr 1fr;gap:16px 0}.general-stats>div:nth-child(2){border-right:0}}@media (width<=900px){.dashboard-general{grid-template-columns:1fr}}.compact-schedule article{border-bottom:1px solid #f0f0f1;grid-template-columns:47px 3px 1fr auto;align-items:center;gap:13px;min-height:67px;padding:10px 20px;display:grid}.compact-schedule article:last-child{border:0}.compact-schedule article.active{background:#fafaff}.compact-schedule time{font-size:11px;font-weight:600}.compact-schedule time small{color:#a1a1aa;margin-top:3px;font-size:13px;font-weight:400;display:block}.schedule-line{background:#e4e4e7;border-radius:3px;height:34px}.active .schedule-line{background:var(--primary)}.compact-schedule strong{font-size:11px}.compact-schedule p{color:#71717a;margin:4px 0 0;font-size:13px}.no-classes{color:#71717a;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:180px;font-size:11px;display:flex}.no-classes button{background:var(--primary-soft);color:var(--primary);border:0;border-radius:6px;padding:8px 11px;font-size:10px;font-weight:600}@media (width<=1100px){.metrics{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.course-grid{grid-template-columns:1fr 1fr}.alerts-panel{order:2}}@media (width<=760px){.sidebar{transition:transform .2s;transform:translate(-100%);box-shadow:10px 0 30px #18181b20}.sidebar.open{transform:translate(0)}.mobile-close{color:#71717a;background:0 0;border:0;margin-left:auto;display:block}.backdrop{z-index:15;background:#18181b55;border:0;display:block;position:fixed;inset:0}.workspace{width:100%;margin-left:0}.menu-button{color:#18181b;background:0 0;border:0;place-items:center;display:grid}.topbar{gap:10px;padding:0 16px}.search{flex:1;width:auto}.search kbd,.school,.divider{display:none}.content{padding:24px 16px 40px}.class-item{grid-template-columns:42px 8px 1fr auto}.class-item .student-count,.class-item .badge{display:none}.course-grid,.day-focus,.dashboard-grid.simplified{grid-template-columns:1fr}.focus-content{flex-direction:column;align-items:flex-start}}@media (width<=500px){.metrics{grid-template-columns:1fr}.page-heading{align-items:flex-start}.primary-button{padding:10px;font-size:0}.primary-button svg{margin:0}.class-item{grid-template-columns:36px 7px 1fr}.class-item .outline-button{grid-column:3;justify-self:start}.course-grid{padding:13px}}.auth-page{background:#fff;grid-template-columns:minmax(360px,.85fr) minmax(520px,1.15fr);min-height:100vh;display:grid}.auth-intro{color:#fff;background:var(--primary);flex-direction:column;justify-content:space-between;min-height:100vh;padding:42px clamp(38px,5vw,76px);display:flex;position:relative;overflow:hidden}.auth-intro:after{content:"";border:75px solid #ffffff0b;border-radius:50%;width:440px;height:440px;position:absolute;bottom:-170px;right:-220px}.auth-brand{z-index:1;align-items:center;gap:9px;font-size:16px;display:flex}.auth-brand>span{width:39px;height:39px;color:var(--primary);background:#fff;border-radius:9px;place-items:center;display:grid}.auth-kicker{letter-spacing:.14em;color:#c7d2fe;font-size:10px;font-weight:700}.auth-intro h1{letter-spacing:-.04em;margin:17px 0;font-size:clamp(32px,3.5vw,48px);line-height:1.12}.auth-intro p{color:#e0e7ff;max-width:460px;margin:0;font-size:14px;line-height:1.7}.auth-intro small{color:#c7d2fe;z-index:1;font-size:10px}.auth-area{background:#f7f8fa;place-items:center;padding:40px 24px;display:grid}.auth-card{background:#fff;border:1px solid #e4e4e7;border-radius:11px;width:min(100%,430px);padding:32px;box-shadow:0 18px 50px #18181b0b}.auth-card header h2{margin:0 0 7px;font-size:23px}.auth-card header p{color:#71717a;margin:0;font-size:12px}.auth-tabs{background:#f4f4f5;border-radius:7px;grid-template-columns:1fr 1fr;margin:25px 0 21px;padding:3px;display:grid}.auth-tabs button{color:#71717a;background:0 0;border:0;border-radius:5px;padding:8px;font-size:11px}.auth-tabs button.active{color:var(--primary);background:#fff;font-weight:600;box-shadow:0 1px 4px #18181b14}.auth-card form{flex-direction:column;gap:16px;display:flex}.auth-card label{flex-direction:column;gap:7px;font-size:11px;font-weight:600;display:flex}.auth-card input{color:#18181b;background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;width:100%;height:41px;padding:0 12px;font-size:12px}.auth-card input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)16}.name-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.password-field{position:relative}.password-field input{padding-right:42px}.password-field button{color:#71717a;background:0 0;border:0;place-items:center;width:28px;height:28px;display:grid;position:absolute;top:7px;right:8px}.auth-submit{color:#fff;background:var(--primary);border:0;border-radius:7px;justify-content:center;align-items:center;gap:8px;min-height:42px;font-size:12px;font-weight:600;display:flex}.auth-submit:hover{background:var(--primary-hover)}.auth-submit:disabled{opacity:.65;cursor:wait}.auth-message{border-radius:7px;align-items:flex-start;gap:7px;padding:10px;font-size:10px;line-height:1.45;display:flex}.auth-message.error{color:#b42318;background:#fff1f1;border:1px solid #fecaca}.auth-message.success{color:#16883d;background:#edf9f0;border:1px solid #bbf7d0}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.forgot-password{color:var(--primary);background:0 0;border:0;align-self:flex-end;margin-top:-7px;padding:2px 0;font-size:11px;font-weight:600}.forgot-password:hover{color:var(--primary-hover);text-decoration:underline}.auth-back{color:var(--text-secondary);background:0 0;border:0;align-items:center;gap:6px;margin:21px 0 18px;padding:0;font-size:12px;display:inline-flex}.auth-back:hover{color:var(--primary)}.reset-icon{width:43px;height:43px;color:var(--primary);background:var(--primary-soft);border-radius:9px;place-items:center;margin-bottom:15px;display:grid}.reset-form{margin-top:24px}@media (width<=780px){.auth-page{background:#f7f8fa;flex-direction:column;min-height:100dvh;display:flex;overflow-x:hidden}.auth-intro{height:38dvh;min-height:290px;padding:max(24px, env(safe-area-inset-top)) 22px 72px;flex:none;justify-content:flex-start;gap:42px;display:flex}.auth-intro:after{border-width:48px;width:300px;height:300px;bottom:-130px;right:-145px}.auth-brand{font-size:15px}.auth-brand>span{width:38px;height:38px}.auth-intro>div:nth-child(2){z-index:1;position:relative}.auth-kicker{font-size:10px}.auth-intro h1{margin:11px 0 0;font-size:clamp(28px,8vw,36px);line-height:1.08}.auth-intro p,.auth-intro>small{display:none}.auth-area{min-height:calc(62dvh - 1px);padding:0 16px max(32px, env(safe-area-inset-bottom));background:#f7f8fa;flex:1;align-items:start}.auth-card{z-index:2;border-radius:14px;width:min(100%,460px);margin-top:-48px;padding:25px 21px;position:relative;box-shadow:0 20px 55px #18181b20}}@media (width<=390px){.auth-intro{gap:30px;height:35dvh;min-height:270px;padding-inline:18px}.auth-intro h1{font-size:28px}.auth-area{min-height:65dvh;padding-inline:12px}.auth-card{padding:22px 18px}.name-fields{grid-template-columns:1fr}}.setup-page{background:#f7f8fa;min-height:100vh;padding:45px 24px}.setup-shell{width:min(100%,930px);margin:auto}.setup-header{justify-content:space-between;align-items:end;gap:30px;margin-bottom:27px;display:flex}.setup-header>div:first-child>span{color:var(--primary);letter-spacing:.12em;font-size:13px;font-weight:700}.setup-header h1{letter-spacing:-.03em;margin:8px 0 5px;font-size:27px}.setup-header p{color:#71717a;margin:0;font-size:11px}.setup-progress{width:190px}.setup-progress>span{color:#71717a;text-align:right;margin-bottom:7px;font-size:13px;display:block}.setup-progress>div{background:#e4e4e7;border-radius:4px;height:4px;overflow:hidden}.setup-progress i{background:var(--primary);border-radius:4px;height:100%;transition:width .25s;display:block}.setup-body{grid-template-columns:230px minmax(0,1fr);align-items:start;gap:18px;display:grid}.setup-steps{background:#fff;border:1px solid #e4e4e7;border-radius:10px;padding:10px}.setup-step{color:#a1a1aa;border-radius:7px;align-items:center;gap:10px;min-height:65px;padding:11px;display:flex}.setup-step>span{background:#f4f4f5;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;display:grid}.setup-step>div{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.setup-step strong{color:#71717a;font-size:11px}.setup-step small{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.setup-step b{font-size:13px}.setup-step.active{background:#f4f3ff}.setup-step.active>span{color:#fff;background:var(--primary)}.setup-step.active strong{color:var(--primary-hover)}.setup-step.complete>span{color:#16883d;background:#e8f8ed}.setup-card{background:#fff;border:1px solid #e4e4e7;border-radius:10px;min-height:425px;padding:30px}.setup-card form{flex-direction:column;gap:18px;min-height:363px;display:flex}.form-title{gap:13px;margin-bottom:7px;display:flex}.form-title>span{width:42px;height:42px;color:var(--primary);background:var(--primary-soft);border-radius:8px;flex:none;place-items:center;display:grid}.form-title h2{margin:1px 0 5px;font-size:17px}.form-title p{color:#71717a;margin:0;font-size:10px;line-height:1.5}.setup-card label{color:#3f3f46;flex-direction:column;gap:7px;font-size:10px;font-weight:600;display:flex}.setup-card label small{color:#a1a1aa;font-weight:400;display:inline}.setup-card input,.setup-card select{color:#18181b;background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;width:100%;height:40px;padding:0 11px;font:11px Inter,sans-serif}.setup-card input:focus,.setup-card select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)12}.form-grid{grid-template-columns:1fr 150px;gap:13px;display:grid}.form-footer{border-top:1px solid #f0f0f1;justify-content:space-between;align-items:center;margin-top:auto;padding-top:19px;display:flex}.continue-button,.back-button,.add-time{border-radius:7px;align-items:center;gap:7px;padding:9px 13px;font-size:10px;font-weight:600;display:flex}.continue-button{color:#fff;background:var(--primary);border:0}.continue-button:hover{background:var(--primary-hover)}.continue-button:disabled{opacity:.65}.back-button{color:#71717a;background:#fff;border:1px solid #e4e4e7}.setup-error{color:#ef4444;min-height:14px;font-size:10px}.schedule-form-list{flex-direction:column;gap:10px;display:flex}.schedule-form-row{background:#fafafa;border:1px solid #e4e4e7;border-radius:8px;grid-template-columns:1.15fr .8fr .8fr 1fr 28px;align-items:end;gap:8px;padding:11px;display:grid}.schedule-form-row input,.schedule-form-row select{background:#fff;height:36px}.remove-time{color:#ef4444;background:0 0;border:0;place-items:center;width:28px;height:36px;display:grid}.add-time{color:var(--primary);background:var(--primary-soft);border:0;align-self:flex-start}@media (width<=720px){.setup-page{padding:27px 15px}.setup-header{flex-direction:column;align-items:flex-start}.setup-progress{width:100%}.setup-progress>span{text-align:left}.setup-body{grid-template-columns:1fr}.setup-steps{grid-template-columns:repeat(3,1fr);display:grid}.setup-step{min-height:auto}.setup-step>div small,.setup-step b{display:none}.setup-card{padding:21px}.schedule-form-row{grid-template-columns:1fr 1fr}.remove-time{align-self:end}.form-grid{grid-template-columns:1fr}}@media (width<=470px){.setup-steps{padding:5px}.setup-step{justify-content:center;padding:7px}.setup-step>div{display:none}.schedule-form-row{grid-template-columns:1fr}}.module-loading{color:#71717a;place-content:center;justify-items:center;gap:8px;min-height:380px;font-size:11px;display:grid}.courses-toolbar{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.school-filter{flex-wrap:wrap;gap:7px;display:flex}.school-filter button{color:#71717a;background:#fff;border:1px solid #e4e4e7;border-radius:7px;align-items:center;gap:7px;min-height:34px;padding:0 10px;font-size:10px;display:flex}.school-filter button:hover{border-color:var(--primary-border);color:var(--primary-hover)}.school-filter button.active{border-color:var(--primary);color:var(--primary-hover);background:#f4f3ff;font-weight:600}.school-filter button i{border-radius:50%;width:7px;height:7px}.school-filter button span{text-align:center;color:#71717a;background:#f4f4f5;border-radius:10px;min-width:18px;padding:2px 5px;font-size:12px}.course-actions{flex:none;gap:8px;display:flex}.secondary-button{color:#3f3f46;background:#fff;border:1px solid #e4e4e7;border-radius:7px;align-items:center;gap:7px;padding:9px 12px;font-size:10px;font-weight:600;display:flex}.secondary-button:hover{background:#f7f8fa}.courses-section{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.courses-title{border-bottom:1px solid #e4e4e7;padding:18px 20px}.courses-title h2{margin:0 0 4px;font-size:15px}.courses-title p{color:#71717a;margin:0;font-size:10px}.admin-course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:18px;display:grid}.admin-course-card{background:#fff;border:1px solid #e4e4e7;border-radius:8px;padding:17px;transition:all .15s}.admin-course-card:hover{border-color:var(--primary-border);transform:translateY(-1px);box-shadow:0 5px 17px #18181b0b}.admin-course-card>header{justify-content:space-between;align-items:flex-start;display:flex}.course-monogram{border-radius:7px;place-items:center;min-width:42px;height:37px;padding:0 9px;font-size:11px;font-weight:700;display:grid}.active-label{color:#16883d;align-items:center;gap:5px;font-size:12px;display:flex}.active-label i{background:#22c55e;border-radius:50%;width:6px;height:6px}.admin-course-card h3{margin:14px 0 6px;font-size:14px}.school-name{color:#71717a;align-items:center;gap:5px;min-height:17px;margin:0;font-size:13px;display:flex}.course-meta{border-block:1px solid #f0f0f1;gap:15px;margin:15px 0;padding:11px 0;display:flex}.course-meta span{color:#71717a;align-items:center;gap:5px;font-size:12px;display:flex}.card-schedules{flex-wrap:wrap;align-content:flex-start;gap:6px;min-height:67px;display:flex}.card-schedules>strong{color:#a1a1aa;letter-spacing:.08em;width:100%;font-size:12px}.card-schedules>span{color:#71717a;background:#f4f4f5;border-radius:5px;align-items:center;gap:4px;padding:5px 6px;font-size:12px;display:inline-flex}.card-schedules>span b{color:var(--primary-hover)}.card-schedules>span small{border-left:1px solid #d4d4d8;padding-left:4px}.card-schedules p{color:#a1a1aa;margin:4px 0;font-size:13px}.manage-course{width:100%;color:var(--primary);text-align:left;background:0 0;border:0;border-top:1px solid #f0f0f1;margin-top:13px;padding-top:12px;font-size:13px;font-weight:600}.courses-empty{flex-direction:column;justify-content:center;align-items:center;min-height:330px;display:flex}.courses-empty>span{width:49px;height:49px;color:var(--primary);background:var(--primary-soft);border-radius:10px;place-items:center;display:grid}.courses-empty h3{margin:14px 0 5px;font-size:13px}.courses-empty p{color:#71717a;margin:0 0 13px;font-size:10px}.courses-empty button{color:var(--primary);background:var(--primary-soft);border:0;border-radius:6px;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.dialog-backdrop{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#18181b66;place-items:center;height:100svh;padding:20px;display:grid;position:fixed;top:0;left:0;right:0}.create-dialog{background:#fff;border:1px solid #e4e4e7;border-radius:11px;width:min(100%,630px);max-height:calc(100vh - 40px);overflow-y:auto;box-shadow:0 25px 80px #18181b38}.create-dialog>header{z-index:2;background:#fff;border-bottom:1px solid #e4e4e7;align-items:center;gap:12px;padding:19px 21px;display:flex;position:sticky;top:0}.dialog-icon{width:39px;height:39px;color:var(--primary);background:var(--primary-soft);border-radius:8px;flex:none;place-items:center;display:grid}.create-dialog header>div:nth-child(2){flex:1}.create-dialog h2{margin:0 0 4px;font-size:15px}.create-dialog header p{color:#71717a;margin:0;font-size:13px}.create-dialog header>button{color:#71717a;background:0 0;border:0}.create-dialog form{flex-direction:column;gap:15px;padding:21px;display:flex}.create-dialog label{flex-direction:column;gap:6px;font-size:10px;font-weight:600;display:flex}.create-dialog label small{color:#a1a1aa;font-weight:400}.create-dialog input,.create-dialog select{color:#18181b;background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;height:40px;padding:0 11px;font-size:11px}.create-dialog input:focus,.create-dialog select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)12}.create-dialog form>footer{background:#fafafa;border-top:1px solid #e4e4e7;border-radius:0 0 11px 11px;justify-content:flex-end;gap:8px;margin:5px -21px -21px;padding:14px 21px;display:flex}.cancel-button{color:#71717a;background:#fff;border:1px solid #e4e4e7;border-radius:7px;padding:8px 12px;font-size:10px}.dialog-schedule-title{color:var(--primary);border-top:1px solid #e4e4e7;align-items:center;gap:8px;margin-top:2px;padding-top:16px;display:flex}.dialog-schedule-title>div{flex-direction:column;gap:2px;display:flex}.dialog-schedule-title strong{color:#18181b;font-size:10px}.dialog-schedule-title span{color:#71717a;font-size:12px}.dialog-schedule-list{flex-direction:column;gap:8px;display:flex}.dialog-schedule-row{background:#fafafa;border:1px solid #e4e4e7;border-radius:7px;grid-template-columns:1.1fr .8fr .8fr 1fr 27px;align-items:end;gap:7px;padding:10px;display:grid}.dialog-schedule-row input,.dialog-schedule-row select{background:#fff;height:35px}.dialog-schedule-row>button{color:#ef4444;background:0 0;border:0;place-items:center;width:27px;height:35px;display:grid}.add-dialog-time{color:var(--primary);background:var(--primary-soft);border:0;border-radius:6px;align-self:flex-start;align-items:center;gap:6px;padding:7px 9px;font-size:13px;font-weight:600;display:flex}@media (width<=1050px){.admin-course-grid{grid-template-columns:repeat(2,1fr)}}.courses-toolbar .primary-button{font-size:10px}@media (width<=670px){.courses-toolbar{flex-direction:column-reverse}.course-actions{width:100%}.course-actions button{flex:1;justify-content:center}.admin-course-grid,.create-dialog .form-grid{grid-template-columns:1fr}.dialog-schedule-row{grid-template-columns:1fr 1fr}}.card-head-actions{align-items:center;gap:7px;display:flex}.delete-course-button{color:#a1a1aa;background:0 0;border:0;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.delete-course-button:hover{color:#ef4444;background:#fff1f1}.edit-course-button{color:#a1a1aa;background:0 0;border:0;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.edit-course-button:hover{color:var(--primary);background:var(--primary-soft)}.delete-dialog{background:#fff;border-radius:11px;width:min(100%,430px);padding:27px;box-shadow:0 25px 80px #18181b38}.delete-warning{color:#ef4444;background:#fee2e2;border-radius:9px;place-items:center;width:45px;height:45px;display:grid}.delete-dialog h2{margin:17px 0 7px;font-size:17px}.delete-dialog>p{color:#71717a;margin:0;font-size:10px;line-height:1.55}.delete-note{color:#865d00;background:#fffbeb;border:1px solid #fde68a;border-radius:7px;margin:17px 0;padding:11px;font-size:13px;line-height:1.5}.delete-dialog footer{justify-content:flex-end;gap:8px;margin-top:21px;display:flex}.confirm-delete{color:#fff;background:#ef4444;border:0;border-radius:7px;align-items:center;gap:7px;padding:9px 12px;font-size:10px;font-weight:600;display:flex}.confirm-delete:hover{background:#dc2626}.confirm-delete:disabled,.delete-dialog button:disabled{opacity:.6;cursor:wait}.color-field{background:#fafafa;border:1px solid #e4e4e7;border-radius:7px;flex-direction:column;gap:9px;padding:12px;display:flex}.color-field>div:first-child{flex-direction:column;gap:3px;display:flex}.color-field strong{font-size:10px}.color-field span{color:#71717a;font-size:12px}.color-options{flex-wrap:wrap;gap:7px;display:flex}.color-options button{color:#fff;border:2px solid #fff;border-radius:50%;place-items:center;width:29px;height:29px;display:grid;box-shadow:0 0 0 1px #d4d4d8}.color-options button.selected{box-shadow:0 0 0 2px #18181b}.color-options .color-default{color:#71717a;background:#fff;border-radius:15px;width:45px}.color-options .color-default span{font-size:11px;font-weight:600}.promote-course-button{color:#a1a1aa;background:0 0;border:0;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.promote-course-button:hover{color:var(--primary);background:var(--primary-soft)}.promotion-source{border:1px solid var(--border);background:var(--surface-subtle);border-radius:8px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.promotion-source>span{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.promotion-source>strong{font-size:14px}.promotion-source>small{color:var(--text-secondary)}.promotion-options{flex-direction:column;gap:9px;padding-top:4px;display:flex}.promotion-options>strong{font-size:13px}.promotion-options label{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;grid-template-columns:20px 1fr;align-items:start;gap:10px;padding:12px 14px;display:grid}.promotion-options input{width:18px;height:18px;accent-color:var(--primary);margin:2px 0 0;min-height:18px!important;padding:0!important}.promotion-options label>span{flex-direction:column;gap:3px;display:flex}.promotion-options b{font-size:13px}.promotion-options small{color:var(--text-secondary)}.school-course-groups{padding:4px 0 20px}.school-course-group+.school-course-group{border-top:2px solid var(--school-group-color);margin-top:8px;padding-top:8px}.school-course-group>header{justify-content:space-between;align-items:center;margin:0 22px;padding:16px 0 3px;display:flex}.school-course-group>header>div{color:var(--text-primary);align-items:center;gap:8px;display:flex}.school-course-group>header i{background:var(--school-group-color);border-radius:50%;width:8px;height:8px}.school-course-group>header strong{font-size:13px}.school-course-group>header span{color:var(--text-secondary);font-size:10px}.school-course-group .admin-course-grid{padding-top:14px}.course-view-toggle{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex:none;gap:3px;padding:3px;display:inline-flex}.course-view-toggle button{color:var(--text-secondary);background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.course-view-toggle button.active{color:var(--primary);background:var(--primary-soft)}.course-view-toggle button span{min-width:16px;color:var(--text-secondary);background:var(--surface-subtle);border-radius:9px;padding:1px 5px;font-size:12px}.course-view-toggle button.active span{color:var(--primary);background:#fff}@media (width<=670px){.courses-toolbar{gap:10px}.course-view-toggle{width:100%}.course-view-toggle button{flex:1;justify-content:center}}.archived-label{color:var(--text-secondary);align-items:center;gap:5px;font-size:12px;font-weight:600;display:flex}.archive-course-button,.restore-course-button{color:#a1a1aa;background:0 0;border:0;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.archive-course-button:hover{color:#9b6800;background:#fff4d5}.restore-course-button:hover{color:var(--primary);background:var(--primary-soft)}.admin-course-card.archived{background:var(--surface-subtle)}.admin-course-card.archived:hover{box-shadow:none;transform:none}.admin-course-card.archived .manage-course{color:var(--text-secondary)}.archived-banner{border:1px solid var(--border);color:var(--text-secondary);background:var(--surface-subtle);border-radius:9px;align-items:center;gap:10px;margin-bottom:15px;padding:12px 15px;font-size:13px;display:flex}.archived-banner strong{color:var(--text-primary)}.archived-banner span{flex:1;line-height:1.5}.archived-banner button{color:var(--primary);background:var(--primary-soft);border:0;border-radius:6px;flex:none;padding:8px 11px;font-size:13px;font-weight:600}.archive-dialog{border:1px solid var(--border);background:var(--surface);border-radius:11px;width:min(100%,460px);box-shadow:0 25px 80px #18181b38}.archive-dialog>header{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:19px 21px;display:flex}.archive-dialog header>div:nth-child(2){flex:1}.archive-dialog h2{color:var(--text-primary);margin:0 0 4px;font-size:15px}.archive-dialog header p{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.archive-dialog header>button{color:var(--text-secondary);background:0 0;border:0}.archive-note{color:#865d00;background:#fffbeb;border:1px solid #fde68a;border-radius:7px;margin:15px 21px 0;padding:11px;font-size:13px;line-height:1.5}.archive-dialog>footer,.archive-dialog .auth-message{margin:15px 21px 21px}.archive-dialog>footer{justify-content:flex-end;gap:8px;display:flex}.calendar-summary{background:#e4e4e7;border:1px solid #e4e4e7;border-radius:9px;grid-template-columns:170px 190px 150px 1fr;gap:1px;margin-bottom:17px;display:grid;overflow:hidden}.calendar-summary>div{background:#fff;align-items:center;gap:11px;min-height:76px;padding:15px 18px;display:flex}.calendar-summary>div>span:first-child{width:36px;height:36px;color:var(--primary);background:var(--primary-soft);border-radius:8px;place-items:center;display:grid}.calendar-summary>div>div{flex-direction:column;display:flex}.calendar-summary strong{font-size:16px}.calendar-summary small{color:#71717a;margin-top:3px;font-size:12px}.calendar-summary .calendar-legend{flex-wrap:wrap;justify-content:flex-end;gap:10px}.calendar-legend>span{color:#71717a;align-items:center;gap:5px;font-size:12px;display:flex}.calendar-legend i{border-radius:50%;width:7px;height:7px}.weekly-calendar{background:#fff;border:1px solid #e4e4e7;border-radius:9px;grid-template-columns:repeat(6,minmax(145px,1fr));display:grid;overflow-x:auto}.calendar-day{border-right:1px solid #e4e4e7;min-width:145px}.calendar-day:last-child{border:0}.calendar-day>header{background:#fafafa;border-bottom:1px solid #e4e4e7;flex-direction:column;justify-content:center;min-height:68px;padding:12px 14px;display:flex}.calendar-day>header span{color:var(--primary);letter-spacing:.1em;font-size:12px;font-weight:700}.calendar-day>header strong{margin:3px 0;font-size:11px}.calendar-day>header small{color:#a1a1aa;font-size:12px}.day-classes{background-image:linear-gradient(#f4f4f5 1px,#0000 1px);background-size:100% 60px;min-height:390px;padding:9px}.calendar-class{background:#fff;border:1px solid #e4e4e7;border-radius:7px;margin-bottom:8px;padding:11px 9px 10px 12px;position:relative;overflow:hidden;box-shadow:0 2px 5px #18181b08}.calendar-class:before{content:"";background:var(--course-color);width:3px;position:absolute;top:0;bottom:0;left:0}.calendar-class time{color:#18181b;margin-bottom:7px;font-size:10px;font-weight:700;display:block}.calendar-class time span{color:#71717a;font-weight:400}.calendar-class>strong{font-size:13px;line-height:1.4;display:block}.calendar-class p{color:#71717a;margin:5px 0;font-size:12px;line-height:1.3}.calendar-class>small{color:#71717a;background:#f4f4f5;border-radius:4px;padding:3px 5px;font-size:11px;display:inline-block}.day-empty{color:#a1a1aa;text-align:center;padding:22px 4px;font-size:12px}.calendar-empty{text-align:center;background:#fff;border:1px solid #e4e4e7;border-radius:9px;place-content:center;justify-items:center;min-height:390px;display:grid}.calendar-empty>span{width:50px;height:50px;color:var(--primary);background:var(--primary-soft);border-radius:10px;place-items:center;display:grid}.calendar-empty h2{margin:14px 0 5px;font-size:15px}.calendar-empty p{color:#71717a;margin:0;font-size:10px}.calendar-cta{border:1px solid var(--primary-border);background:linear-gradient(100deg, var(--primary-soft-bg), #fff);border-radius:9px;align-items:center;gap:15px;margin-bottom:18px;padding:17px 19px;display:flex}.calendar-cta>span{color:#fff;background:var(--primary);border-radius:9px;flex:none;place-items:center;width:41px;height:41px;display:grid}.calendar-cta>div{flex:1}.calendar-cta h2{margin:0 0 4px;font-size:13px}.calendar-cta p{color:#71717a;margin:0;font-size:13px}.calendar-cta button{flex:none}@media (width<=950px){.calendar-summary{grid-template-columns:repeat(3,1fr)}.calendar-summary .calendar-legend{grid-column:1/-1;justify-content:flex-start;min-height:48px}.weekly-calendar{grid-template-columns:repeat(6,160px)}}@media (width<=590px){.calendar-summary{grid-template-columns:1fr}.calendar-summary .calendar-legend{grid-column:auto}.calendar-cta{flex-wrap:wrap;align-items:flex-start}.calendar-cta>div{min-width:calc(100% - 60px)}.calendar-cta button{margin-left:56px}}@media (width<=680px){.weekly-calendar{flex-direction:column;display:flex;overflow-x:visible}.calendar-day{border-right:0;border-bottom:1px solid var(--border);width:100%;min-width:0}.calendar-day:last-child{border-bottom:0}.calendar-day>header{flex-direction:row;justify-content:space-between;align-items:center;gap:8px;min-height:auto;padding:11px 14px}.calendar-day>header span{flex:none;font-size:11px}.calendar-day>header strong{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.calendar-day>header small{flex:none}.day-classes{background-image:none;min-height:0;padding:10px}.day-classes:has(.day-empty){padding:0}.day-empty{padding:14px}}.calendar-class:before{background:var(--school-color)}.calendar-class>strong{align-items:center;gap:6px;display:flex}.calendar-class>strong:before{content:"";background:var(--course-color);border-radius:50%;flex:none;width:8px;height:8px}.calendar-class p{align-items:center;display:flex}.course-back{color:#71717a;background:0 0;border:0;align-items:center;gap:6px;margin:-5px 0 15px;padding:0;font-size:13px;display:flex}.course-back:hover{color:var(--primary)}.course-detail-head{background:#fff;border:1px solid #e4e4e7;border-radius:9px;align-items:center;gap:14px;margin-bottom:17px;padding:18px 20px;display:flex}.detail-course-code{border-radius:8px;place-items:center;min-width:52px;height:48px;padding:0 10px;font-size:13px;font-weight:700;display:grid}.course-detail-head>div:nth-child(2){flex:1}.course-detail-head>div:nth-child(2)>span{color:#71717a;font-size:12px}.course-detail-head h2{margin:4px 0;font-size:17px}.course-detail-head p{color:#71717a;align-items:center;gap:5px;margin:0;font-size:13px;display:flex}.students-panel{background:#fff;border:1px solid #e4e4e7;border-radius:9px;min-height:390px;overflow:hidden}.students-panel>header{border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;gap:15px;padding:17px 20px;display:flex}.students-panel h3{margin:0 0 4px;font-size:14px}.students-panel header p{color:#71717a;margin:0;font-size:13px}.student-search{color:#a1a1aa;border:1px solid #e4e4e7;border-radius:7px;align-items:center;gap:7px;width:260px;height:34px;padding:0 10px;display:flex}.student-search input{border:0;outline:0;width:100%;font-size:13px}.students-empty{flex-direction:column;justify-content:center;align-items:center;min-height:330px;display:flex}.students-empty>span{width:50px;height:50px;color:var(--primary);background:var(--primary-soft);border-radius:10px;place-items:center;display:grid}.students-empty h3{margin:14px 0 5px}.students-empty p{color:#71717a;margin:0 0 14px;font-size:13px}.students-empty button{color:var(--primary);background:var(--primary-soft);border:0;border-radius:6px;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.students-table-wrap{overflow-x:auto}.students-table{border-collapse:collapse;width:100%}.students-table th{color:#a1a1aa;text-align:left;letter-spacing:.04em;background:#fafafa;padding:10px 16px;font-size:12px;font-weight:600}.students-table td{color:#3f3f46;border-top:1px solid #f0f0f1;padding:12px 16px;font-size:13px}.students-table td:first-child{align-items:center;gap:9px;display:flex}.student-avatar{border-radius:50%;flex:none;place-items:center;width:31px;height:31px;font-size:12px;font-weight:700;display:grid}.students-table td:first-child>div{flex-direction:column;gap:3px;display:flex}.students-table td small,.muted{color:#a1a1aa;font-size:12px}.enrolled-status{color:#16883d;background:#e8f8ed;border-radius:12px;align-items:center;gap:5px;padding:4px 7px;font-size:12px;display:inline-flex}.enrolled-status i{background:#22c55e;border-radius:50%;width:5px;height:5px}.student-actions{justify-content:flex-end;gap:3px;display:flex}.student-actions button{color:#71717a;background:0 0;border:0;border-radius:5px;place-items:center;width:27px;height:27px;display:grid}.student-actions button:hover{color:var(--primary);background:var(--primary-soft)}.student-actions button.remove:hover{color:#ef4444;background:#fff1f1}.no-search-results{color:#71717a;text-align:center;padding:35px;font-size:13px}.student-dialog{background:#fff;border-radius:11px;width:min(100%,480px)}.student-dialog>header{border-bottom:1px solid #e4e4e7;align-items:center;gap:12px;padding:19px 21px;display:flex}.student-dialog header>div:nth-child(2){flex:1}.student-dialog h2{margin:0 0 4px;font-size:15px}.student-dialog header p{color:#71717a;margin:0;font-size:13px}.student-dialog header>button{color:#71717a;background:0 0;border:0}.student-dialog form{flex-direction:column;gap:15px;padding:21px;display:flex}.student-dialog label{flex-direction:column;gap:6px;font-size:10px;font-weight:600;display:flex}.student-dialog label small{color:#a1a1aa;font-weight:400}.student-dialog input{border:1px solid #e4e4e7;border-radius:7px;outline:0;height:40px;padding:0 11px;font-size:11px}.student-dialog input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)12}.student-dialog form>footer{background:#fafafa;border-top:1px solid #e4e4e7;border-radius:0 0 11px 11px;justify-content:flex-end;gap:8px;margin:5px -21px -21px;padding:14px 21px;display:flex}@media (width<=650px){.course-detail-head{flex-wrap:wrap;align-items:flex-start}.course-detail-head .primary-button{margin-left:66px}.students-panel>header{flex-direction:column;align-items:flex-start}.student-search{width:100%}.students-table{min-width:650px}.student-dialog .form-grid{grid-template-columns:1fr}}.student-head-actions{gap:8px;display:flex}.attendance-pair{gap:6px;display:flex}.attendance-pair>span{border-radius:6px;align-items:center;gap:5px;padding:5px 7px;font-size:13px;font-weight:600;display:inline-flex}.attendance-pair b{font-size:11px}.present-count{color:#16883d;background:#e8f8ed}.absent-count{color:#c52d2d;background:#fee2e2}.grade-summary{flex-direction:column;gap:2px;display:flex}.grade-summary strong{font-size:11px}.grade-summary small{color:#a1a1aa;font-size:11px}.student-grades{flex-wrap:wrap;gap:6px;display:flex}.student-grade-chip{border:1px solid var(--border);min-width:48px;min-height:34px;color:var(--text-primary);background:var(--surface-subtle);border-radius:7px;justify-content:center;align-items:baseline;gap:2px;padding:6px 8px;display:inline-flex}.student-grade-chip.approved{color:#16883d;background:#e8f8ed;border-color:#bbf7d0}.student-grade-chip.failed{color:#c52d2d;background:#fee2e2;border-color:#fecaca}.student-grade-chip b{font-size:13px}.student-grade-chip small{color:var(--text-secondary);font-size:10px}.academic-status{appearance:none;text-align:center;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;border:0;border-radius:19px;outline:0;min-width:132px;min-height:38px;padding:7px 38px 7px 14px;font-size:12px;font-weight:600;display:inline-block}.academic-status option{color:#18181b;background:#fff}.academic-status:focus-visible{box-shadow:0 0 0 3px var(--primary-soft)}.academic-status:disabled{opacity:.6;cursor:wait}.academic-status.approved{color:#16883d;background-color:#e8f8ed}.academic-status.failed{color:#c52d2d;background-color:#fee2e2}.academic-status.pending{color:#9b6800;background-color:#fff4d5}.bulk-dialog{background:#fff;border-radius:11px;width:min(100%,560px);max-height:calc(100vh - 40px);overflow-y:auto}.bulk-dialog>header{z-index:2;background:#fff;border-bottom:1px solid #e4e4e7;align-items:center;gap:12px;padding:19px 21px;display:flex;position:sticky;top:0}.bulk-dialog header>div:nth-child(2){flex:1}.bulk-dialog h2{margin:0 0 4px;font-size:15px}.bulk-dialog header p{color:#71717a;margin:0;font-size:13px}.bulk-dialog header>button{color:#71717a;background:0 0;border:0}.bulk-dialog form{flex-direction:column;gap:13px;padding:21px;display:flex}.bulk-instructions{flex-direction:column;gap:4px;display:flex}.bulk-instructions strong{font-size:10px}.bulk-instructions span{color:#71717a;font-size:13px}.bulk-instructions code{color:var(--primary-hover);background:var(--primary-soft);border-radius:3px;padding:2px 4px}.bulk-dialog textarea{resize:vertical;border:1px solid #e4e4e7;border-radius:7px;outline:0;width:100%;min-height:180px;padding:12px;font:11px/1.7 Inter,sans-serif}.bulk-dialog textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)12}.parse-summary{justify-content:space-between;align-items:center;gap:10px;min-height:24px;display:flex}.parse-summary>span{color:#71717a;align-items:center;gap:5px;font-size:13px;display:flex}.parse-summary>span.valid{color:#16883d}.parse-summary>span.invalid{color:#c52d2d}.student-preview{background:#fafafa;border:1px solid #e4e4e7;border-radius:7px;flex-direction:column;gap:5px;padding:11px;display:flex}.student-preview>strong{color:#a1a1aa;letter-spacing:.08em;margin-bottom:3px;font-size:11px}.student-preview>span{color:#3f3f46;align-items:center;gap:8px;font-size:13px;display:flex}.student-preview>span b{width:18px;height:18px;color:var(--primary);background:var(--primary-soft);border-radius:50%;place-items:center;font-size:11px;display:grid}.student-preview small{color:#71717a;margin-top:3px;font-size:12px}.bulk-dialog form>footer{background:#fafafa;border-top:1px solid #e4e4e7;border-radius:0 0 11px 11px;justify-content:flex-end;gap:8px;margin:5px -21px -21px;padding:14px 21px;display:flex}@media (width<=650px){.student-head-actions{width:100%;margin-left:66px}.student-head-actions button{flex:1;justify-content:center}.course-detail-head .student-head-actions .primary-button{margin-left:0}}.attendance-controls{background:#fff;border:1px solid #e4e4e7;border-radius:9px;align-items:end;gap:13px;margin-bottom:15px;padding:15px 17px;display:flex}.attendance-select{flex:1}.attendance-controls label{color:#71717a;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.attendance-controls label+div{color:#a1a1aa;border:1px solid #e4e4e7;border-radius:7px;align-items:center;gap:8px;height:38px;padding:0 10px;display:flex}.attendance-controls select,.attendance-controls input{color:#18181b;background:0 0;border:0;outline:0;width:100%;height:100%;font-size:10px}.saved-session{color:#16883d;background:#e8f8ed;border-radius:7px;align-items:center;gap:6px;min-height:38px;padding:0 11px;font-size:12px;font-weight:600;display:flex}.attendance-message{border-radius:7px;align-items:center;gap:6px;margin-bottom:15px;padding:10px 13px;font-size:13px;display:flex}.attendance-message.success{color:#16883d;background:#edf9f0;border:1px solid #bbf7d0}.attendance-message.error{color:#c52d2d;background:#fff1f1;border:1px solid #fecaca}.attendance-summary{background:#fff;border:1px solid #e4e4e7;border-radius:9px;align-items:center;gap:20px;margin-bottom:15px;padding:14px 17px;display:flex}.attendance-course{align-items:center;gap:10px;min-width:235px;display:flex}.attendance-course>span{border-radius:7px;place-items:center;min-width:42px;height:38px;padding:0 8px;font-size:10px;font-weight:700;display:grid}.attendance-course>div{flex-direction:column;gap:3px;display:flex}.attendance-course strong{font-size:10px}.attendance-course small{color:#71717a;font-size:12px}.attendance-counts{flex:1;justify-content:center;gap:8px;display:flex}.attendance-counts span{border-radius:6px;align-items:center;gap:5px;padding:6px 8px;font-size:12px;display:flex}.attendance-counts b{font-size:10px}.attendance-counts .present{color:#16883d;background:#e8f8ed}.attendance-counts .absent{color:#c52d2d;background:#fee2e2}.attendance-counts .late{color:#9b6800;background:#fff4d5}.attendance-counts .justified{color:#2563eb;background:#dbeafe}.mark-all{border:1px solid var(--primary-border);color:var(--primary);background:var(--primary-soft-bg);border-radius:7px;align-items:center;gap:6px;padding:8px 10px;font-size:12px;font-weight:600;display:flex}.attendance-sheet{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.attendance-sheet>header{border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;padding:16px 19px;display:flex}.attendance-sheet h2{margin:0 0 4px;font-size:14px}.attendance-sheet header p{color:#71717a;text-transform:capitalize;margin:0;font-size:12px}.status-help{color:#a1a1aa;font-size:11px}.attendance-rows article{border-bottom:1px solid #f0f0f1;grid-template-columns:32px minmax(180px,1fr) 310px minmax(140px,.7fr);align-items:center;gap:10px;min-height:57px;padding:8px 18px;display:grid}.student-number{color:#a1a1aa;font-size:12px}.attendance-student strong{font-size:10px}.status-buttons{gap:5px;display:flex}.status-buttons button{color:#71717a;background:#fff;border:1px solid #e4e4e7;border-radius:6px;justify-content:center;align-items:center;gap:5px;min-width:37px;height:31px;font-size:13px;font-weight:700;display:flex}.status-buttons button span{font-size:11px;font-weight:500;display:none}.status-buttons .present.active{color:#16883d;background:#e8f8ed;border-color:#86efac}.status-buttons .absent.active{color:#c52d2d;background:#fee2e2;border-color:#fca5a5}.status-buttons .late.active{color:#9b6800;background:#fff4d5;border-color:#fcd34d}.status-buttons .justified.active{color:#2563eb;background:#dbeafe;border-color:#93c5fd}.attendance-comment{border:1px solid #e4e4e7;border-radius:6px;outline:0;width:100%;height:32px;padding:0 9px;font-size:12px}.attendance-comment:focus{border-color:var(--primary)}.attendance-sheet>footer{background:#fafafa;justify-content:space-between;align-items:center;padding:13px 18px;display:flex}.attendance-sheet>footer>div{color:#71717a;align-items:center;gap:6px;font-size:12px;display:flex}.no-attendance-students,.attendance-empty{text-align:center;color:#71717a;place-content:center;justify-items:center;min-height:330px;display:grid}.attendance-empty{background:#fff;border:1px solid #e4e4e7;border-radius:9px}.attendance-empty h2{color:#18181b;margin:12px 0 5px;font-size:14px}.attendance-empty p,.no-attendance-students p{margin:0;font-size:13px}@media (width<=920px){.attendance-summary{flex-wrap:wrap;align-items:flex-start}.attendance-counts{order:3;justify-content:flex-start;width:100%}.attendance-rows article{grid-template-columns:25px 1fr auto}.attendance-comment{grid-column:2/-1}.status-help{display:none}}@media (width<=620px){.attendance-controls{flex-direction:column;align-items:stretch}.attendance-date{width:100%}.saved-session{align-self:flex-start}.attendance-course{flex:1;min-width:0}.attendance-summary .mark-all{justify-content:center;width:100%}.attendance-counts{grid-template-columns:1fr 1fr;display:grid}.attendance-rows article{grid-template-columns:24px 1fr}.status-buttons,.attendance-comment{grid-column:2}.attendance-sheet>footer{flex-direction:column;align-items:flex-start;gap:12px}.attendance-sheet>footer button{align-self:flex-end}}.attendance-weekday{width:145px}.attendance-date{width:205px}.week-date-control{padding:0!important}.week-date-control button{color:#71717a;background:0 0;border:0;place-items:center;width:34px;height:100%;display:grid}.week-date-control button:hover{color:var(--primary);background:#f4f3ff}.week-date-control span{color:#18181b;white-space:nowrap;flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}@media (width<=620px){.attendance-date,.attendance-weekday{width:100%}}.attendance-rows article{grid-template-columns:32px minmax(180px,1fr) minmax(410px,1.35fr)}.status-buttons{width:100%}.status-buttons button{flex:1;min-width:82px;padding:0 9px;font-size:12px;font-weight:600}@media (width<=920px){.attendance-rows article{grid-template-columns:25px minmax(150px,1fr) minmax(360px,1.4fr)}.attendance-rows{overflow-x:auto}.attendance-rows article{min-width:650px}}@media (width<=620px){.attendance-rows article{grid-template-columns:24px minmax(140px,.8fr) minmax(350px,1.5fr)}.status-buttons{grid-column:auto}}.grades-toolbar{background:#fff;border:1px solid #e4e4e7;border-radius:9px;justify-content:space-between;align-items:end;gap:15px;margin-bottom:16px;padding:15px 17px;display:flex}.grades-toolbar>div{flex:1}.grades-toolbar label{color:#71717a;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.grades-toolbar select{background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;width:min(100%,520px);height:38px;padding:0 10px;font-size:10px}.grades-layout{grid-template-columns:225px minmax(0,1fr);align-items:start;gap:15px;display:grid}.mobile-assessment-picker{display:none}.assessment-list{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.assessment-list>header{color:#71717a;letter-spacing:.07em;border-bottom:1px solid #e4e4e7;justify-content:space-between;padding:14px;font-size:12px;display:flex}.assessment-list>header span{background:#f4f4f5;border-radius:9px;padding:2px 6px}.assessment-list>button{color:#18181b;text-align:left;background:#fff;border:0;border-bottom:1px solid #f0f0f1;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:13px 14px;display:flex}.assessment-list>button:hover{background:#fafafa}.assessment-list>button.active{border-left:3px solid var(--primary);background:var(--primary-soft-bg)}.assessment-list button>span{color:var(--primary);text-transform:uppercase;font-size:11px;font-weight:600}.assessment-list button>strong{font-size:10px}.assessment-list button>small{color:#71717a;align-items:center;gap:4px;font-size:11px;display:flex}.grade-sheet{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.grade-sheet>header{border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;padding:17px 19px;display:flex}.grade-sheet>header>div:first-child>span{color:var(--primary);text-transform:uppercase;font-size:11px;font-weight:700}.grade-sheet h2{margin:4px 0;font-size:15px}.grade-sheet header p{color:#71717a;margin:0;font-size:12px}.assessment-actions{gap:6px;display:flex}.assessment-actions button{color:#71717a;background:#fff;border:1px solid #e4e4e7;border-radius:6px;align-items:center;gap:6px;height:31px;padding:0 9px;font-size:12px;display:flex}.assessment-actions button:hover{color:var(--primary);background:var(--primary-soft-bg)}.assessment-actions button.danger:hover{color:#ef4444;background:#fff1f1}.grade-stats{background:#fafafa;border-bottom:1px solid #e4e4e7;grid-template-columns:repeat(4,1fr);display:grid}.grade-stats span{color:#71717a;border-right:1px solid #e4e4e7;justify-content:center;align-items:baseline;gap:5px;padding:11px;font-size:11px;display:flex}.grade-stats span:last-child{border:0}.grade-stats b{color:#18181b;font-size:11px}.grade-rows{overflow-x:auto}.grade-row{border-bottom:1px solid #f0f0f1;grid-template-columns:35px minmax(190px,1fr) 150px 140px;align-items:center;gap:14px;min-width:590px;min-height:52px;padding:8px 22px 8px 17px;display:grid}.grade-row>span:first-child{color:#a1a1aa;font-size:12px}.grade-row>strong{font-size:13px}.grade-row .academic-status{cursor:default;background-image:none;width:100%;min-width:0;padding:8px 14px}.grade-row-head{color:#a1a1aa;text-transform:uppercase;background:#fafafa;min-height:34px;font-size:11px;font-weight:600}.grade-row-head>span:first-child{font-size:11px}.score-input{border:1px solid #e4e4e7;border-radius:6px;align-items:center;width:125px;height:34px;display:flex}.score-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)10}.score-input input{border:0;outline:0;width:70px;height:100%;padding:0 8px;font-size:10px;font-weight:600}.score-input span{color:#a1a1aa;font-size:12px}.grade-sheet>footer{background:#fafafa;justify-content:space-between;align-items:center;padding:13px 18px;display:flex}.grade-sheet>footer>span{color:#71717a;font-size:12px}.grades-empty{text-align:center;min-height:390px;color:var(--primary);background:#fff;border:1px solid #e4e4e7;border-radius:9px;place-content:center;justify-items:center;display:grid}.grades-empty h2{color:#18181b;margin:13px 0 5px;font-size:15px}.grades-empty p{color:#71717a;margin:0 0 13px;font-size:13px}.grades-empty button{color:var(--primary);background:var(--primary-soft);border:0;border-radius:6px;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.assessment-dialog{background:#fff;border-radius:11px;width:min(100%,510px)}.assessment-dialog>header{border-bottom:1px solid #e4e4e7;align-items:center;gap:12px;padding:19px 21px;display:flex}.assessment-dialog header>div:nth-child(2){flex:1}.assessment-dialog h2{margin:0 0 4px;font-size:15px}.assessment-dialog header p{color:#71717a;margin:0;font-size:13px}.assessment-dialog header>button{color:#71717a;background:0 0;border:0}.assessment-dialog form{flex-direction:column;gap:15px;padding:21px;display:flex}.assessment-dialog label{flex-direction:column;gap:6px;font-size:10px;font-weight:600;display:flex}.assessment-dialog input,.assessment-dialog select{background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;height:40px;padding:0 11px;font-size:10px}.assessment-dialog input:focus,.assessment-dialog select:focus{border-color:var(--primary)}.assessment-dialog form>footer{background:#fafafa;border-top:1px solid #e4e4e7;border-radius:0 0 11px 11px;justify-content:flex-end;gap:8px;margin:5px -21px -21px;padding:14px 21px;display:flex}@media (width<=760px){.grades-layout{grid-template-columns:1fr}.assessment-list{display:flex;overflow-x:auto}.assessment-list>header{flex-direction:column;min-width:100px}.assessment-list>button{border-bottom:0;border-right:1px solid #f0f0f1;min-width:160px}.assessment-list>button.active{border-left:0;border-top:3px solid var(--primary)}.grade-stats{grid-template-columns:1fr 1fr}.grade-stats span:nth-child(2){border-right:0}.grade-stats span:nth-child(-n+2){border-bottom:1px solid #e4e4e7}}@media (width<=520px){.grades-toolbar{flex-direction:column;align-items:stretch}.grades-toolbar button{justify-content:center}.grade-sheet>header{align-items:flex-start;gap:12px}.grade-sheet>footer{flex-direction:column;align-items:flex-start;gap:10px}.grade-sheet>footer button{align-self:flex-end}.assessment-dialog .form-grid{grid-template-columns:1fr}}@media (width<=760px){.mobile-assessment-picker{border:1px solid var(--border);color:var(--text-secondary);background:var(--surface);border-radius:10px;flex-direction:column;grid-column:1/-1;gap:7px;padding:14px;font-weight:600;display:flex}.mobile-assessment-picker select{border:1px solid var(--border);width:100%;min-height:46px;color:var(--text-primary);background:var(--surface);border-radius:8px;padding:0 12px}.assessment-list{display:none}.grade-row .academic-status{cursor:default;background-image:none;width:100%;min-width:0;padding:9px 14px}}@media (width<=520px){.grade-row{grid-template-columns:32px minmax(0,1fr);align-items:center;row-gap:12px;padding:16px 14px}.grade-row>span:first-child{grid-area:1/1;align-self:start;padding-top:2px}.grade-row>strong{text-overflow:ellipsis;white-space:nowrap;grid-area:1/2;min-width:0;overflow:hidden}.grade-row .score-input{grid-area:2/2;width:100%}.grade-row>.academic-status{grid-area:3/2}}.attendance-tabs{background:#fff;border:1px solid #e4e4e7;border-radius:8px;gap:3px;margin-bottom:16px;padding:3px;display:inline-flex}.attendance-tabs button{color:#71717a;background:0 0;border:0;border-radius:6px;align-items:center;gap:7px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.attendance-tabs button.active{color:var(--primary);background:var(--primary-soft)}.report-controls{background:#fff;border:1px solid #e4e4e7;border-radius:9px;gap:12px;margin-bottom:15px;padding:15px 17px;display:flex}.report-controls>div:first-child{flex:1}.report-controls .period-filter{width:155px}.report-controls .month-filter{width:190px}.report-controls label{color:#71717a;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.report-controls select,.report-controls input{background:#fff;border:1px solid #e4e4e7;border-radius:7px;outline:0;width:100%;min-width:0;max-width:100%;height:38px;padding:0 10px;font-size:10px;display:block}.report-summary{background:#e4e4e7;border:1px solid #e4e4e7;border-radius:9px;grid-template-columns:170px 150px 190px 1fr;gap:1px;margin-bottom:15px;display:grid;overflow:hidden}.report-summary>div{min-height:68px;color:var(--primary);background:#fff;align-items:center;gap:10px;padding:13px 16px;display:flex}.report-summary>div>span{flex-direction:column;gap:2px;display:flex}.report-summary strong{color:#18181b;font-size:14px}.report-summary small{color:#71717a;font-size:12px}.report-summary .report-legend{flex-wrap:wrap;justify-content:flex-end;gap:9px}.report-legend>span{color:#71717a;align-items:center;gap:4px;font-size:11px;display:flex}.report-legend i{border-radius:5px;place-items:center;width:19px;height:19px;font-size:11px;font-style:normal;font-weight:700;display:grid}.report-legend i.present{color:#16883d;background:#e8f8ed}.report-legend i.absent{color:#c52d2d;background:#fee2e2}.report-legend i.late{color:#9b6800;background:#fff4d5}.report-legend i.justified{color:#2563eb;background:#dbeafe}.attendance-matrix-wrap{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.attendance-matrix-wrap>header{border-bottom:1px solid #e4e4e7;justify-content:space-between;align-items:center;gap:20px;padding:16px 19px;display:flex}.attendance-matrix-wrap h2{margin:0 0 4px;font-size:14px}.attendance-matrix-wrap header p{color:#71717a;margin:0;font-size:12px}.attendance-matrix-wrap header>span{color:#a1a1aa;font-size:11px}.matrix-scroll{max-width:100%;overflow:auto}.attendance-matrix{border-collapse:separate;border-spacing:0;min-width:100%}.attendance-matrix th,.attendance-matrix td{text-align:center;border-bottom:1px solid #f0f0f1;border-right:1px solid #f0f0f1;min-width:54px;height:47px;padding:7px;font-size:12px}.attendance-matrix th{z-index:2;color:#71717a;background:#fafafa;height:53px;position:sticky;top:0}.attendance-matrix th>span{color:var(--primary);margin-bottom:3px;font-size:11px;display:block}.attendance-matrix th>strong{font-size:10px}.attendance-matrix .student-column{z-index:3;text-align:left;background:#fff;min-width:210px;max-width:210px;padding-left:15px;position:sticky;left:0;box-shadow:3px 0 7px #18181b08}.attendance-matrix thead .student-column{z-index:4;background:#fafafa}.attendance-matrix .student-column strong{font-size:13px}.matrix-status{border-radius:6px;place-items:center;width:26px;height:26px;margin:auto;font-size:12px;font-weight:700;display:grid}.matrix-status.present{color:#16883d;background:#e8f8ed}.matrix-status.absent{color:#c52d2d;background:#fee2e2}.matrix-status.late{color:#9b6800;background:#fff4d5}.matrix-status.justified{color:#2563eb;background:#dbeafe}.matrix-empty{color:#d4d4d8}.attendance-matrix .total-column{background:#fafafa;min-width:45px;font-weight:700}.present-total{color:#16883d}.absent-total{color:#c52d2d}.attendance-matrix .percentage-column{background:#fafafa;min-width:70px}.percentage{border-radius:10px;min-width:44px;padding:5px 6px;font-weight:700;display:inline-block}.percentage.good{color:#16883d;background:#e8f8ed}.percentage.warning{color:#9b6800;background:#fff4d5}.percentage.danger{color:#c52d2d;background:#fee2e2}.percentage.neutral{color:#71717a;background:#f4f4f5}.report-empty{text-align:center;min-height:350px;color:var(--primary);background:#fff;border:1px solid #e4e4e7;border-radius:9px;place-content:center;justify-items:center;display:grid}.report-empty h2{color:#18181b;margin:12px 0 5px;font-size:14px}.report-empty p{color:#71717a;margin:0;font-size:13px}@media (width<=850px){.report-summary{grid-template-columns:repeat(3,1fr)}.report-summary .report-legend{grid-column:1/-1;justify-content:flex-start;min-height:45px}}@media (width<=560px){.attendance-tabs{width:100%}.attendance-tabs button{flex:1;justify-content:center}.report-controls{flex-direction:column;width:100%;min-width:0;overflow:hidden}.report-controls>div,.report-controls .period-filter,.report-controls .month-filter{width:100%;min-width:0;max-width:100%}.report-controls input[type=month]{appearance:none;width:100%;min-width:0;max-width:100%}.report-summary{grid-template-columns:1fr}.report-summary .report-legend{grid-column:auto}.attendance-matrix-wrap>header{flex-direction:column;align-items:flex-start}.attendance-matrix .student-column{min-width:165px;max-width:165px}.matrix-scroll:before{content:"Deslizá para ver todas las fechas →";width:max-content;color:var(--text-secondary);padding:9px 14px;font-size:11px;display:block;position:sticky;left:0}}.month-navigation{background:#fff;border:1px solid #e4e4e7;border-radius:7px;grid-template-columns:40px minmax(0,1fr) 40px;align-items:stretch;width:100%;min-width:0;display:grid;overflow:hidden}.month-label{color:#18181b;text-align:center;text-transform:capitalize;border-inline:1px solid #e4e4e7;justify-content:center;align-items:center;min-width:0;min-height:38px;padding-inline:8px;font-size:12px;font-weight:600;display:flex}.month-navigation button{color:#71717a;background:0 0;border:0;place-items:center;min-width:0;padding:0;display:grid}.month-navigation button:hover{color:var(--primary);background:var(--primary-soft)}@media (width<=560px){.month-navigation{grid-template-columns:46px minmax(0,1fr) 46px}.month-label{min-height:46px;font-size:14px}}.settings-layout{grid-template-columns:205px minmax(0,720px);align-items:start;gap:17px;display:grid}.settings-menu{background:#fff;border:1px solid #e4e4e7;border-radius:9px;padding:10px}.settings-menu>span{color:#a1a1aa;letter-spacing:.09em;margin:6px 9px 8px;font-size:11px;font-weight:700;display:block}.settings-menu button{color:#71717a;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;width:100%;padding:9px;font-size:13px;display:flex}.settings-menu button.active{color:var(--primary);background:var(--primary-soft);font-weight:600}.settings-menu button:disabled{opacity:.45;cursor:default}.settings-menu small{color:#a1a1aa;margin:12px 9px 5px;font-size:11px;line-height:1.5;display:block}.settings-content{flex-direction:column;gap:15px;display:flex}.settings-card{background:#fff;border:1px solid #e4e4e7;border-radius:9px;overflow:hidden}.settings-card>header{border-bottom:1px solid #e4e4e7;padding:17px 20px}.settings-card>header>div{align-items:center;gap:10px;display:flex}.settings-card>header>div>span{width:36px;height:36px;color:var(--primary);background:var(--primary-soft);border-radius:8px;place-items:center;display:grid}.settings-card h2{margin:0 0 4px;font-size:14px}.settings-card header p{color:#71717a;margin:0;font-size:12px}.settings-card form{flex-direction:column;gap:15px;padding:20px;display:flex}.settings-card label{color:#3f3f46;flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.settings-card label>small{color:#a1a1aa;font-size:11px;font-weight:400}.settings-card input{border:1px solid #e4e4e7;border-radius:7px;outline:0;height:40px;padding:0 11px;font-size:10px}.settings-card input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)10}.readonly-field{color:#71717a;background:#fafafa;border:1px solid #e4e4e7;border-radius:7px;align-items:center;gap:8px;height:40px;padding:0 11px;font-weight:400;display:flex}.readonly-field span{flex:1}.readonly-field b{color:#16883d;background:#e8f8ed;border-radius:10px;padding:4px 6px;font-size:11px}.settings-password{position:relative}.settings-password input{width:100%;padding-right:40px}.settings-password button{color:#71717a;background:0 0;border:0;place-items:center;width:28px;height:28px;display:grid;position:absolute;top:6px;right:7px}.settings-card form>footer{background:#fafafa;border-top:1px solid #e4e4e7;justify-content:flex-end;margin:3px -20px -20px;padding:13px 20px;display:flex}.settings-message{border-radius:7px;align-items:center;gap:6px;padding:9px 10px;font-size:12px;display:flex}.settings-message.success{color:#16883d;background:#edf9f0;border:1px solid #bbf7d0}.settings-message.error{color:#c52d2d;background:#fff1f1;border:1px solid #fecaca}.security-note{border:1px solid var(--primary-border);color:var(--primary);background:var(--primary-soft-bg);border-radius:9px;gap:10px;padding:14px 16px;display:flex}.security-note strong{color:var(--primary-hover);font-size:13px}.security-note p{color:#71717a;margin:4px 0 0;font-size:11px;line-height:1.5}@media (width<=720px){.settings-layout{grid-template-columns:1fr}.settings-menu{display:none}.settings-card .form-grid{grid-template-columns:1fr}}.appearance-settings{flex-direction:column;gap:21px;padding:20px;display:flex}.appearance-group{flex-direction:column;gap:10px;display:flex}.appearance-group>div:first-child{flex-direction:column;gap:3px;display:flex}.appearance-group>div:first-child strong{font-size:13px}.appearance-group>div:first-child small{color:#71717a;font-size:11px}.theme-options{grid-template-columns:1fr 1fr;gap:10px;display:grid}.theme-options>button{color:#71717a;text-align:left;background:#fff;border:1px solid #e4e4e7;border-radius:8px;align-items:center;gap:10px;min-height:68px;padding:10px;display:flex}.theme-options>button.active{color:var(--primary);border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.theme-preview{border:1px solid #e4e4e7;border-radius:7px;flex:none;place-items:center;width:42px;height:42px;display:grid}.theme-preview.light{color:#d97706;background:#fff}.theme-preview.dark{color:#c7d2fe;background:#18181b;border-color:#3f3f46}.theme-options button>div{flex-direction:column;flex:1;gap:3px;display:flex}.theme-options button strong{color:inherit;font-size:13px}.theme-options button small{color:#a1a1aa;font-size:11px}.accent-options{flex-wrap:wrap;gap:8px;display:flex}.accent-options button{color:#71717a;background:#fff;border:1px solid #e4e4e7;border-radius:7px;flex-direction:column;align-items:center;gap:6px;width:75px;padding:9px 5px;font-size:11px;display:flex}.accent-options button.active{color:var(--primary);border-color:var(--primary);background:var(--primary-soft-bg);font-weight:600}.accent-options i{color:#fff;border:2px solid #fff;border-radius:50%;place-items:center;width:27px;height:27px;display:grid;box-shadow:0 0 0 1px #d4d4d8}@media (width<=470px){.theme-options{grid-template-columns:1fr}.accent-options button{flex:1;min-width:65px}}.sound-setting{justify-content:space-between;align-items:center;gap:20px;padding:18px 20px;display:flex}.sound-setting>div{flex-direction:column;gap:4px;display:flex}.sound-setting strong{color:var(--text-primary);font-size:13px}.sound-setting small{color:var(--text-secondary);font-size:11px}.sound-switch{color:var(--text-secondary);background:0 0;border:0;align-items:center;gap:7px;padding:0;font-size:12px;display:flex}.sound-switch i{background:var(--border);width:32px;height:18px;transition:background var(--motion-base) var(--ease-out);border-radius:10px;position:relative}.sound-switch i:after{content:"";background:var(--surface);width:12px;height:12px;transition:transform var(--motion-base) var(--ease-spring);border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #18181b30}.sound-switch.active{color:var(--primary)}.sound-switch.active i{background:var(--primary)}.sound-switch.active i:after{transform:translate(14px)}@media (width<=470px){.sound-setting{flex-direction:column;align-items:flex-start}.sound-switch{align-self:flex-end}}:root{--primary:#4f46e5;--primary-hover:#4338ca;--primary-soft:#eeedff;--primary-soft-bg:#f7f6ff;--primary-border:#c7c3f8;--surface:#fff;--surface-subtle:#fafafa;--page-background:#f7f8fa;--text-primary:#18181b;--text-secondary:#71717a;--border:#e4e4e7}html,body,#root{min-height:100%}body{transition:background-color .18s,color .18s}html[data-theme=dark]{--surface:#202024;--surface-subtle:#27272b;--page-background:#151518;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--border:#3f3f46}html[data-theme=dark] body,html[data-theme=dark] .workspace,html[data-theme=dark] .auth-area,html[data-theme=dark] .setup-page{color:var(--text-primary);background:var(--page-background)}html[data-theme=dark] .sidebar,html[data-theme=dark] .topbar,html[data-theme=dark] .panel,html[data-theme=dark] .metric-card,html[data-theme=dark] .now-class,html[data-theme=dark] .next-class,html[data-theme=dark] .courses-section,html[data-theme=dark] .admin-course-card,html[data-theme=dark] .create-dialog,html[data-theme=dark] .create-dialog>header,html[data-theme=dark] .delete-dialog,html[data-theme=dark] .student-dialog,html[data-theme=dark] .bulk-dialog,html[data-theme=dark] .bulk-dialog>header,html[data-theme=dark] .course-detail-head,html[data-theme=dark] .students-panel,html[data-theme=dark] .attendance-controls,html[data-theme=dark] .attendance-summary,html[data-theme=dark] .attendance-sheet,html[data-theme=dark] .report-controls,html[data-theme=dark] .attendance-matrix-wrap,html[data-theme=dark] .calendar-summary>div,html[data-theme=dark] .weekly-calendar,html[data-theme=dark] .calendar-class,html[data-theme=dark] .grades-toolbar,html[data-theme=dark] .assessment-list,html[data-theme=dark] .assessment-list>button,html[data-theme=dark] .grade-sheet,html[data-theme=dark] .assessment-dialog,html[data-theme=dark] .settings-menu,html[data-theme=dark] .settings-card,html[data-theme=dark] .auth-card,html[data-theme=dark] .setup-steps,html[data-theme=dark] .setup-card,html[data-theme=dark] .empty-state,html[data-theme=dark] .calendar-empty,html[data-theme=dark] .report-empty,html[data-theme=dark] .grades-empty,html[data-theme=dark] .attendance-empty{color:var(--text-primary);background:var(--surface);border-color:var(--border)}html[data-theme=dark] .logo,html[data-theme=dark] .topbar,html[data-theme=dark] .panel-title,html[data-theme=dark] .courses-title,html[data-theme=dark] .students-panel>header,html[data-theme=dark] .attendance-sheet>header,html[data-theme=dark] .attendance-matrix-wrap>header,html[data-theme=dark] .grade-sheet>header,html[data-theme=dark] .settings-card>header,html[data-theme=dark] .create-dialog>header,html[data-theme=dark] .student-dialog>header,html[data-theme=dark] .bulk-dialog>header{border-color:var(--border)}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3,html[data-theme=dark] strong,html[data-theme=dark] .school-filter button,html[data-theme=dark] .secondary-button{color:var(--text-primary)}html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea,html[data-theme=dark] .student-search,html[data-theme=dark] .score-input,html[data-theme=dark] .readonly-field,html[data-theme=dark] .school-filter button,html[data-theme=dark] .secondary-button,html[data-theme=dark] .cancel-button,html[data-theme=dark] .theme-options>button,html[data-theme=dark] .accent-options button{color:var(--text-primary);background:var(--surface-subtle);border-color:var(--border)}html[data-theme=dark] .grade-stats,html[data-theme=dark] .grade-row-head,html[data-theme=dark] .attendance-matrix th,html[data-theme=dark] .attendance-matrix .total-column,html[data-theme=dark] .attendance-matrix .percentage-column,html[data-theme=dark] .calendar-day>header,html[data-theme=dark] .dialog-schedule-row,html[data-theme=dark] .student-preview,html[data-theme=dark] .color-field,html[data-theme=dark] .readonly-field{background:var(--surface-subtle)}html[data-theme=dark] .attendance-matrix .student-column{background:var(--surface)}html[data-theme=dark] .attendance-matrix thead .student-column{background:var(--surface-subtle)}html[data-theme=dark] .class-item,html[data-theme=dark] .alert,html[data-theme=dark] .students-table td,html[data-theme=dark] .grade-row,html[data-theme=dark] .attendance-rows article,html[data-theme=dark] .attendance-matrix td{border-color:#323238}html[data-theme=dark] .create-dialog form>footer,html[data-theme=dark] .student-dialog form>footer,html[data-theme=dark] .bulk-dialog form>footer,html[data-theme=dark] .assessment-dialog form>footer,html[data-theme=dark] .settings-card form>footer,html[data-theme=dark] .attendance-sheet>footer,html[data-theme=dark] .grade-sheet>footer{background:var(--surface-subtle);border-color:var(--border)}html[data-theme=dark] .auth-tabs,html[data-theme=dark] .attendance-matrix th,html[data-theme=dark] .students-table th{background:var(--surface-subtle)}html[data-theme=dark] .auth-tabs button.active{color:var(--primary);background:#35353a}html[data-theme=dark] .day-classes{background-color:#1b1b1f;background-image:linear-gradient(#303036 1px,#0000 1px)}html[data-theme=dark] .security-note{background:color-mix(in srgb, var(--primary) 12%, var(--surface))}html[data-theme=dark]{--success-text:#86efac;--success-bg:#143322;--success-border:#28663f;--danger-text:#fca5a5;--danger-bg:#3b1d22;--danger-border:#71333c;--warning-text:#fcd34d;--warning-bg:#3b3015;--warning-border:#6f5a22;--info-text:#93c5fd;--info-bg:#172b4d;--info-border:#294d82}html[data-theme=dark] .attendance-tabs,html[data-theme=dark] .report-summary,html[data-theme=dark] .report-summary>div,html[data-theme=dark] .calendar-cta,html[data-theme=dark] .promotion-source,html[data-theme=dark] .promotion-options label,html[data-theme=dark] .search-results,html[data-theme=dark] .search-results button,html[data-theme=dark] .dialog-backdrop>section,html[data-theme=dark] .assessment-dialog>header,html[data-theme=dark] .student-preview,html[data-theme=dark] .course-view-toggle,html[data-theme=dark] .archived-banner,html[data-theme=dark] .color-field{color:var(--text-primary);background:var(--surface);border-color:var(--border)}html[data-theme=dark] .admin-course-card.archived{background:var(--surface-subtle)}html[data-theme=dark] .course-view-toggle button span,html[data-theme=dark] .course-view-toggle button.active span{background:var(--surface)}html[data-theme=dark] .archive-course-button:hover{color:var(--warning-text);background:var(--warning-bg)}html[data-theme=dark] .archive-note{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}html[data-theme=dark] .attendance-tabs button{color:var(--text-secondary)}html[data-theme=dark] .attendance-tabs button.active,html[data-theme=dark] .search-results button:hover,html[data-theme=dark] .search-results button:focus-visible{color:var(--primary);background:color-mix(in srgb, var(--primary) 18%, var(--surface))}html[data-theme=dark] .report-summary strong,html[data-theme=dark] .grade-stats b,html[data-theme=dark] .attendance-matrix th>strong,html[data-theme=dark] .student-grade-chip b{color:var(--text-primary)}html[data-theme=dark] .report-summary small,html[data-theme=dark] .report-legend>span,html[data-theme=dark] .calendar-cta p,html[data-theme=dark] .grade-stats span,html[data-theme=dark] .matrix-scroll:before{color:var(--text-secondary)}html[data-theme=dark] .present-count,html[data-theme=dark] .attendance-counts .present,html[data-theme=dark] .status-buttons .present.active,html[data-theme=dark] .matrix-status.present,html[data-theme=dark] .report-legend i.present,html[data-theme=dark] .percentage.good,html[data-theme=dark] .student-grade-chip.approved,html[data-theme=dark] .academic-status.approved,html[data-theme=dark] .saved-session{color:var(--success-text);background:var(--success-bg);border-color:var(--success-border)}html[data-theme=dark] .absent-count,html[data-theme=dark] .attendance-counts .absent,html[data-theme=dark] .status-buttons .absent.active,html[data-theme=dark] .matrix-status.absent,html[data-theme=dark] .report-legend i.absent,html[data-theme=dark] .percentage.danger,html[data-theme=dark] .student-grade-chip.failed,html[data-theme=dark] .academic-status.failed{color:var(--danger-text);background:var(--danger-bg);border-color:var(--danger-border)}html[data-theme=dark] .attendance-counts .late,html[data-theme=dark] .status-buttons .late.active,html[data-theme=dark] .matrix-status.late,html[data-theme=dark] .report-legend i.late,html[data-theme=dark] .percentage.warning,html[data-theme=dark] .academic-status.pending{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}html[data-theme=dark] .attendance-counts .justified,html[data-theme=dark] .status-buttons .justified.active,html[data-theme=dark] .matrix-status.justified,html[data-theme=dark] .report-legend i.justified{color:var(--info-text);background:var(--info-bg);border-color:var(--info-border)}html[data-theme=dark] .percentage.neutral,html[data-theme=dark] .card-schedules>span,html[data-theme=dark] .no-classes-label{color:var(--text-secondary);background:var(--surface-subtle);border-color:var(--border)}html[data-theme=dark] option{color:var(--text-primary);background:var(--surface)}html[data-theme=dark] input[type=date],html[data-theme=dark] input[type=month],html[data-theme=dark] input[type=time]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=dark] .primary-button{color:#fff}html[data-theme=dark] .month-navigation,html[data-theme=dark] .report-controls .month-navigation input{background:var(--surface-subtle);border-color:var(--border)}html[data-theme=dark] .month-navigation button{color:var(--text-secondary)}html[data-theme=dark] .month-navigation button:hover{color:var(--primary);background:color-mix(in srgb, var(--primary) 18%, var(--surface))}html[data-theme=dark] .month-label{color:var(--text-primary);border-color:var(--border)}html[data-theme=dark] .mobile-assessment-picker,html[data-theme=dark] .mobile-assessment-picker select{color:var(--text-primary);background:var(--surface);border-color:var(--border)}html[data-theme=dark] .assessment-list>button{background:var(--surface-subtle);border-color:var(--border)}html[data-theme=dark] .assessment-list>button.active{color:var(--text-primary);background:color-mix(in srgb, var(--primary) 16%, var(--surface));border-color:var(--primary)}:root{--motion-fast:.14s;--motion-base:.22s;--motion-slow:.36s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.2, .85, .3, 1.18)}@keyframes page-enter{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-enter{0%{opacity:0;transform:translateY(10px)scale(.975)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes item-enter{0%{opacity:0;transform:translate(-5px)}to{opacity:1;transform:translate(0)}}@keyframes status-pop{0%{transform:scale(.82)}65%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes success-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}html,body,.workspace,.sidebar,.topbar,.panel,.settings-card,.admin-course-card,.attendance-sheet,.grade-sheet,input,select,textarea{transition:background-color var(--motion-base) ease, border-color var(--motion-fast) ease, color var(--motion-fast) ease, box-shadow var(--motion-base) ease}button,a{transition:color var(--motion-fast) ease, background-color var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out), opacity var(--motion-fast) ease}button:active:not(:disabled),a:active{transform:scale(.97)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.page-heading,.content>section,.content>.dashboard-grid,.content>.grades-layout,.content>.settings-layout,.content>.attendance-tabs,.content>.data-status{animation:page-enter var(--motion-slow) var(--ease-out) backwards}.content>:nth-child(3){animation-delay:35ms}.content>:nth-child(4){animation-delay:70ms}.content>:nth-child(5){animation-delay:.105s}.side-nav button:hover,.sidebar-bottom>button:hover{transform:translate(3px)}.side-nav button svg,.sidebar-bottom>button svg{transition:transform var(--motion-base) var(--ease-spring)}.side-nav button:hover svg,.sidebar-bottom>button:hover svg{transform:scale(1.1)}.side-nav button.active svg,.sidebar-bottom>button.active svg{animation:status-pop var(--motion-base) var(--ease-spring)}.primary-button:hover:not(:disabled),.auth-submit:hover:not(:disabled),.continue-button:hover:not(:disabled),.confirm-delete:hover:not(:disabled){box-shadow:0 6px 15px color-mix(in srgb, var(--primary) 22%, transparent);transform:translateY(-1px)}.secondary-button:hover:not(:disabled),.outline-button:hover:not(:disabled),.cancel-button:hover:not(:disabled){transform:translateY(-1px)}.metric-card,.course-card,.admin-course-card,.calendar-class,.now-class,.next-class,.settings-card{transition:transform var(--motion-base) var(--ease-out), box-shadow var(--motion-base) ease, border-color var(--motion-base) ease, background-color var(--motion-base) ease}.metric-card:hover,.course-card:hover,.settings-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #18181b0c}.admin-course-card:hover{transform:translateY(-3px);box-shadow:0 10px 25px #18181b10}.calendar-class:hover{z-index:1;transform:translateY(-2px)scale(1.01);box-shadow:0 7px 18px #18181b12}.now-class:hover,.next-class:hover{transform:translateY(-2px);box-shadow:0 8px 23px #18181b0d}.dialog-backdrop,.backdrop{animation:backdrop-enter var(--motion-base) ease both}.create-dialog,.delete-dialog,.student-dialog,.bulk-dialog,.assessment-dialog{animation:modal-enter var(--motion-slow) var(--ease-out) backwards}.admin-course-grid>article,.course-grid>article,.class-list>article,.compact-schedule>article,.alert-list>article{animation:page-enter var(--motion-slow) var(--ease-out) backwards}.admin-course-grid>article:nth-child(2),.course-grid>article:nth-child(2),.compact-schedule>article:nth-child(2),.alert-list>article:nth-child(2){animation-delay:45ms}.admin-course-grid>article:nth-child(3),.course-grid>article:nth-child(3),.compact-schedule>article:nth-child(3),.alert-list>article:nth-child(3){animation-delay:90ms}.admin-course-grid>article:nth-child(n+4){animation-delay:.125s}.students-table tbody tr,.attendance-matrix tbody tr,.grade-row:not(.grade-row-head),.attendance-rows article{transition:background-color var(--motion-fast) ease, transform var(--motion-fast) var(--ease-out)}.students-table tbody tr:hover,.attendance-matrix tbody tr:hover,.grade-row:not(.grade-row-head):hover,.attendance-rows article:hover{background:color-mix(in srgb, var(--primary) 4%, transparent)}.attendance-rows article:hover{transform:translate(2px)}.status-buttons button.active,.academic-status,.matrix-status,.badge,.enrolled-status{animation:status-pop var(--motion-base) var(--ease-spring)}.status-buttons button:hover{transform:translateY(-1px)scale(1.02)}.color-options button:hover,.accent-options button:hover i{transform:scale(1.12)}.color-options button,.accent-options button i{transition:transform var(--motion-fast) var(--ease-spring), box-shadow var(--motion-fast) ease}.attendance-message,.settings-message,.auth-message,.data-status{animation:success-in var(--motion-base) var(--ease-out) backwards}.attendance-matrix td{transition:background-color var(--motion-fast) ease}.attendance-matrix td:hover:not(.student-column){background:color-mix(in srgb, var(--primary) 7%, transparent)}.assessment-list>button.active{transition:border-color var(--motion-base) ease, background-color var(--motion-base) ease}.score-input input{transition:color var(--motion-fast) ease}.score-input:focus-within{transition:transform var(--motion-fast) var(--ease-out);transform:scale(1.015)}.week-date-control button:hover svg,.course-back:hover svg{transform:translate(2px)}.week-date-control button:first-child:hover svg{transform:translate(-2px)}.week-date-control svg,.course-back svg{transition:transform var(--motion-fast) var(--ease-out)}.theme-options>button.active,.accent-options button.active{animation:status-pop var(--motion-base) var(--ease-spring)}.live-dot{animation:2s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{box-shadow:0 0 0 3px #dcfce7}50%{box-shadow:0 0 0 7px #dcfce700}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.global-search{z-index:31;width:360px;position:relative}.global-search .search{z-index:2;width:100%;transition:border-color var(--motion-fast) var(--ease-out);border-bottom:1px solid #ececf0;padding-bottom:5px;position:relative}.global-search .search:after{content:"";background:var(--primary);height:1px;transition:right var(--motion-base) var(--ease-out), left var(--motion-base) var(--ease-out);position:absolute;bottom:-1px;left:50%;right:50%}.global-search .search.focused{color:var(--primary)}.global-search .search.focused:after{left:0;right:0}.global-search .search input{min-width:0}.search-clear{width:25px;height:25px;color:var(--text-secondary);background:0 0;border:0;border-radius:5px;flex:none;place-items:center;padding:0;display:grid}.search-clear:hover{color:var(--text-primary);background:var(--surface-subtle)}.search-results{z-index:3;border:1px solid var(--border);background:var(--surface);width:min(430px,100vw - 32px);animation:modal-enter var(--motion-base) var(--ease-out);border-radius:10px;padding:6px;position:absolute;top:calc(100% + 12px);left:-12px;overflow:hidden;box-shadow:0 16px 45px #18181b24}.search-results button{width:100%;color:var(--text-primary);text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;padding:9px 10px;display:flex}.search-results button:hover,.search-results button:focus-visible{background:var(--primary-soft);outline:0}.search-results button>span{width:30px;height:30px;color:var(--primary);background:var(--primary-soft);border-radius:7px;flex:none;place-items:center;display:grid}.search-results button div{flex-direction:column;gap:2px;min-width:0;display:flex}.search-results strong,.search-results small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search-results small{color:var(--text-secondary);font-size:13px}.search-message{color:var(--text-secondary);text-align:center;margin:0;padding:18px 12px;font-size:10px}.search-dismiss{z-index:1;background:0 0;border:0;position:fixed;inset:0}@media (width<=760px){.global-search{flex:1;width:auto}.global-search .search{width:100%}.search-results{left:0}}.topbar-search-group{align-items:center;gap:16px;min-width:0;display:flex}.topbar-context{align-items:center;gap:6px;margin-left:auto;display:flex}.theme-toggle{width:38px;height:38px;color:var(--text-secondary);background:0 0;border:0;border-radius:0;flex:none;place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.theme-toggle:hover{color:var(--primary);background:0 0;transform:rotate(8deg)scale(1.1)}.theme-toggle:active{transform:scale(.92)}.theme-toggle-icons{width:21px;height:21px;display:block;position:relative}.theme-toggle-icons svg{transition:opacity .35s var(--ease-out), transform .45s var(--ease-spring);position:absolute;inset:0}.half-sun-icon{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px;margin:-1px 0 0 -1px}.theme-toggle-icons .lucide-moon{width:21px;height:21px}.theme-toggle.light .half-sun-icon{opacity:1;transform:translateY(0)scale(1)}.theme-toggle.light .lucide-moon{opacity:0;transform:rotate(90deg)scale(.35)}.theme-toggle.dark .half-sun-icon{opacity:0;transform:translateY(7px)scale(.4)}.theme-toggle.dark .lucide-moon{opacity:1;transform:rotate(0)scale(1)}.topbar-next-class{width:190px;min-width:0;height:38px;color:var(--primary);box-shadow:none;background:0 0;border:0;align-items:center;gap:9px;padding:0;display:flex}.topbar-next-class>div{flex-direction:column;gap:1px;min-width:0;display:flex}.topbar-next-class small{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.topbar-next-class strong{max-width:155px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.topbar-context.current .topbar-next-class svg{animation:1.8s ease-in-out infinite live-pulse}.topbar-context>button{border:1px solid var(--primary-border);height:29px;color:var(--primary);background:var(--primary-soft);white-space:nowrap;box-shadow:none;border-radius:6px;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:650;display:flex}.topbar-context>button:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff;transform:translateY(-1px)}.topbar-context>button:active{transform:translateY(0)scale(.98)}.topbar-context.empty .topbar-next-class{color:var(--text-secondary)}.no-classes-label{border:1px solid var(--border);color:var(--text-secondary);background:var(--surface-subtle);white-space:nowrap;border-radius:6px;align-items:center;gap:5px;padding:4px 7px;font-size:12px;font-weight:550;display:flex}@media (width<=980px){.topbar-next-class{display:none}.topbar-context{gap:0}.no-classes-label{display:none}}@media (width<=600px){.topbar-context>button{justify-content:center;width:42px;min-width:42px;height:42px;padding:0}.topbar-context>button span{display:none}.topbar-context>button svg{width:21px;height:21px}.topbar-calendar-button{border-radius:10px!important}.topbar-search-group .theme-toggle{display:none}.topbar-search-group{flex:0 52%;width:52%;margin-right:auto}.topbar-search-group .global-search{flex:1;width:100%;min-width:0}}@media (width<=760px){.topbar-search-group{flex:1;gap:8px}}.paywall-dialog{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--border);background:var(--surface);border-radius:11px;width:min(100%,680px);max-height:calc(100vh - 40px);overflow-y:auto;box-shadow:0 25px 80px #18181b38}.paywall-dialog>header{z-index:2;border-bottom:1px solid var(--border);background:var(--surface);align-items:flex-start;gap:12px;padding:19px 21px;display:flex;position:sticky;top:0}.paywall-dialog>header h2{margin:0 0 4px;font-size:15px}.paywall-dialog>header p{color:var(--text-secondary);margin:0;font-size:13px}.paywall-dialog>header>button{color:var(--text-secondary);background:0 0;border:0;margin-left:auto}.paywall-plans{grid-template-columns:1fr 1fr;gap:16px;padding:21px;display:grid}.paywall-plan{border:1px solid var(--border);background:var(--surface-subtle);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:24px 20px 20px;display:flex;position:relative}.paywall-plan.highlight{border-color:var(--primary);background:var(--primary-soft-bg);box-shadow:0 0 0 1px var(--primary)}.paywall-badge{color:#fff;background:var(--primary);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;font-size:10px;font-weight:600;display:inline-flex;position:absolute;top:-11px;left:50%;transform:translate(-50%)}.paywall-plan h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;margin:6px 0 0;font-size:13px}.paywall-price{color:var(--text-primary);margin:0;font-size:26px;font-weight:700}.paywall-price span{color:var(--text-secondary);margin-left:4px;font-size:12px;font-weight:500}.paywall-equivalent{color:var(--text-secondary);margin:-4px 0 0;font-size:11px}.paywall-savings{width:fit-content;color:var(--success-text,#15803d);background:var(--success-bg,#dcfce7);border-radius:6px;align-items:center;gap:5px;margin:4px 0 0;padding:4px 8px;font-size:11px;font-weight:600;display:inline-flex}.paywall-features{border-top:1px solid var(--border);text-align:left;flex-direction:column;gap:7px;width:100%;margin:10px 0 0;padding:14px 0 0;list-style:none;display:flex}.paywall-plan.highlight .paywall-features{border-top-color:var(--primary-border)}.paywall-features li{color:var(--text-secondary);align-items:flex-start;gap:7px;font-size:12px;line-height:1.4;display:flex}.paywall-features li svg{color:var(--primary);flex:none;margin-top:2px}.paywall-plan button{width:100%;margin-top:12px}.paywall-footnote{color:var(--text-secondary);text-align:center;margin:0;padding:0 21px 19px;font-size:11px}.paywall-footnote a{color:var(--primary)}.membership-page{flex-direction:column;gap:16px;max-width:640px;display:flex}.membership-card{border:1px solid var(--border);background:var(--surface);border-radius:11px;align-items:flex-start;gap:14px;padding:20px;display:flex}.membership-icon{width:39px;height:39px;color:var(--primary);background:var(--primary-soft);border-radius:8px;flex:none;place-items:center;display:grid}.membership-card h2{margin:0 0 4px;font-size:15px}.membership-card p{color:var(--text-secondary);margin:0;font-size:13px}.membership-actions{gap:10px;display:flex}.membership-actions .cancel-button{color:var(--danger-text,#b91c1c)}.locked-schools-banner{border:1px solid var(--warning-border,#f5c453);color:var(--warning-text,#92400e);background:var(--warning-bg,#fef3c7);border-radius:9px;align-items:center;gap:10px;margin-bottom:14px;padding:12px 16px;font-size:12px;display:flex}.locked-schools-banner button{margin-left:auto}.school-filter button.locked{opacity:.55;cursor:not-allowed}@media (width<=670px){.paywall-plans{grid-template-columns:1fr}}@media (width>=761px){.content :where(button,input,select,textarea),.content :where(label,option){font-size:13px!important}.content :where(small){line-height:1.4;font-size:11px!important}.content{max-width:1640px;padding:38px 46px 64px}.page-heading{margin-bottom:30px}.page-heading p{font-size:14px}.page-heading h1{font-size:30px}.primary-button,.secondary-button,.cancel-button,.confirm-delete{min-height:40px;padding-inline:15px;font-size:13px}.dashboard-general,.dashboard-grid.summary-only{max-width:none}.dashboard-general{grid-template-columns:minmax(420px,.9fr) minmax(560px,1.1fr);gap:22px}.panel-title{padding:21px 23px}.panel-title h2{font-size:18px}.panel-title p,.panel-title>button{font-size:13px}.real-pending .panel-title,.general-data .panel-title{padding:20px 22px}.real-pending-list{padding:9px 20px}.real-pending-item{grid-template-columns:38px 1fr auto;gap:12px;padding:13px 0}.real-pending-item>span{width:38px;height:38px}.real-pending-item strong{font-size:13px}.real-pending-item small,.real-pending-item button{font-size:11px}.real-pending-item button{min-height:30px;padding:6px 10px}.pending-clear{min-height:135px}.pending-clear strong{font-size:14px}.pending-clear small{font-size:12px}.general-stats{grid-template-columns:1fr 1fr;gap:0;min-height:150px;padding:12px 20px}.general-stats>div{grid-template-columns:42px 1fr;align-content:center;min-height:66px;padding:10px 18px}.general-stats>div:nth-child(2){border-right:0}.general-stats>div:nth-child(-n+2){border-bottom:1px solid var(--border)}.general-stats span{width:40px;height:40px}.general-stats strong{font-size:21px}.general-stats small{font-size:11px}.compact-schedule article{grid-template-columns:60px 4px 1fr auto;gap:16px;min-height:82px;padding:13px 23px}.compact-schedule time,.compact-schedule strong{font-size:14px}.compact-schedule time small,.compact-schedule p{font-size:12px}.schedule-attendance{min-height:32px;padding:6px 9px;font-size:11px}.no-classes{min-height:230px;font-size:14px}.no-classes button{min-height:36px;font-size:12px}.courses-toolbar{margin-bottom:20px}.school-filter button,.course-actions button{min-height:40px;font-size:12px}.courses-title{padding:22px 24px}.courses-title h2{font-size:19px}.courses-title p{font-size:13px}.admin-course-grid{gap:18px;padding:22px}.school-course-group>header{margin-inline:24px;padding-top:20px}.school-course-group>header strong{font-size:16px}.school-course-group>header span{font-size:12px}.admin-course-card{min-height:315px;padding:21px}.course-monogram{min-width:52px;height:44px;font-size:14px}.active-label{font-size:11px}.admin-course-card h3{font-size:18px}.school-name,.manage-course,.card-schedules p{font-size:12px}.course-meta span,.card-schedules>strong,.card-schedules>span{font-size:11px}.card-schedules>span{padding:7px 8px}.manage-course{padding-top:15px}.attendance-tabs button{min-height:42px;font-size:12px}.attendance-controls{gap:16px;padding:19px 21px}.attendance-controls label{font-size:12px}.attendance-controls label+div{height:45px}.attendance-controls select,.attendance-controls input{font-size:13px}.saved-session{min-height:45px;padding-inline:14px;font-size:12px}.attendance-message{padding:12px 15px;font-size:12px}.attendance-summary{padding:17px 21px}.attendance-course strong{font-size:14px}.attendance-course small,.attendance-counts span,.mark-all{font-size:11px}.attendance-sheet>header{padding:20px 23px}.attendance-sheet h2{font-size:18px}.attendance-sheet header p,.status-help{font-size:11px}.attendance-rows article{min-height:70px;padding:11px 22px}.student-number{font-size:11px}.attendance-student strong{font-size:14px}.status-buttons button{min-width:94px;height:39px;font-size:12px}.status-buttons button span{font-size:11px;display:inline}.attendance-empty p,.no-attendance-students p,.week-date-control span{font-size:12px}.report-controls{padding:19px 21px}.report-controls label{font-size:12px}.report-controls select,.report-controls input{height:44px;font-size:13px}.report-summary{grid-template-columns:210px 190px 230px 1fr}.report-summary>div{min-height:84px;padding:16px 20px}.report-summary strong{font-size:18px}.report-summary small,.report-legend>span,.report-legend i{font-size:11px}.attendance-matrix-wrap>header{padding:20px 23px}.attendance-matrix-wrap h2{font-size:18px}.attendance-matrix-wrap header p,.attendance-matrix-wrap header>span{font-size:11px}.attendance-matrix th,.attendance-matrix td{min-width:64px;height:57px;font-size:12px}.attendance-matrix th>span,.attendance-matrix th>strong,.attendance-matrix .student-column strong{font-size:12px}.matrix-status{width:32px;height:32px;font-size:11px}.calendar-summary{grid-template-columns:210px 230px 190px 1fr}.calendar-summary>div{min-height:92px;padding:18px 22px}.calendar-summary strong{font-size:21px}.calendar-summary small,.calendar-legend span{font-size:11px}.calendar-summary .calendar-legend{flex-direction:column;justify-content:center;align-items:flex-start;gap:9px;min-width:0}.calendar-legend>strong{font-size:12px}.calendar-legend>div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.calendar-legend>div>span{border:1px solid var(--border);color:var(--text-secondary);background:var(--surface-subtle);white-space:nowrap;border-radius:7px;align-items:center;gap:7px;padding:7px 10px;display:inline-flex;width:auto!important;height:auto!important}.calendar-legend>div i{border-radius:50%;flex:none;width:8px;height:8px}.calendar-day{min-width:175px}.calendar-day>header{min-height:82px;padding:15px 17px}.calendar-day>header span,.calendar-day>header small{font-size:11px}.calendar-day>header strong{font-size:14px}.day-classes{min-height:480px;padding:12px}.calendar-class{padding:14px 12px 13px 15px}.calendar-class time{font-size:13px}.calendar-class>strong{font-size:12px}.calendar-class p,.calendar-class>small,.day-empty{font-size:11px}.grades-toolbar{padding:19px 21px}.grades-toolbar label{font-size:12px}.grades-toolbar select{height:44px;font-size:13px}.grades-layout{grid-template-columns:290px minmax(0,1fr);gap:20px}.assessment-list>header,.assessment-list button>span,.assessment-list button>small{font-size:11px}.assessment-list button>strong{font-size:14px}.grade-sheet h2{font-size:19px}.grade-sheet header p,.grade-sheet>header>div:first-child>span{font-size:11px}.assessment-actions button{height:38px;font-size:11px}.grade-stats span{font-size:11px}.grade-stats b{font-size:15px}.grade-row{grid-template-columns:42px minmax(220px,1fr) 170px 150px;min-height:66px}.grade-row>span:first-child,.grade-row-head,.grade-row-head>span:first-child{font-size:11px}.grade-row>strong{font-size:13px}.score-input{height:40px}.score-input input{font-size:13px}.score-input span,.grade-sheet>footer>span,.grades-empty p,.grades-empty button,.course-back,.course-detail-head p,.course-detail-head>div:nth-child(2)>span{font-size:12px}.course-detail-head h2{font-size:21px}.students-panel h3{font-size:18px}.students-panel header p,.student-search input{font-size:12px}.student-search{width:330px;height:42px}.students-table th{padding:13px 19px;font-size:11px}.students-table td{padding:15px 19px;font-size:13px}.students-table td strong{font-size:14px}.students-table td small,.muted,.enrolled-status{font-size:11px}.student-avatar{width:38px;height:38px;font-size:11px}.attendance-pair{gap:8px}.attendance-pair>span{justify-content:center;gap:7px;min-width:48px;min-height:34px;padding:7px 10px;font-size:13px}.attendance-pair b{font-size:12px}.grade-summary{gap:4px}.grade-summary strong{font-size:16px}.grade-summary small{font-size:11px}.students-table .muted{font-size:13px}.academic-status{border-radius:18px;min-width:105px;padding:8px 12px;font-size:12px}.student-actions{gap:7px}.student-actions button{width:36px;height:36px}.student-actions button svg{width:17px;height:17px}.settings-layout{grid-template-columns:240px minmax(0,900px);gap:22px}.settings-menu button{font-size:12px}.settings-menu>span,.settings-menu small{font-size:10px}.settings-card h2{font-size:18px}.settings-card header p,.settings-card label,.settings-card label>small{font-size:12px}.settings-card input,.appearance-group>div:first-child strong{font-size:13px}.appearance-group>div:first-child small,.accent-options button,.sound-setting small,.readonly-field b,.settings-message,.security-note p{font-size:11px}.security-note strong,.sound-setting strong,.sound-switch{font-size:12px}.dialog-backdrop>section{max-height:calc(100vh - 40px)}.dialog-backdrop .assessment-dialog{width:min(100% - 32px,650px)}.dialog-backdrop .student-dialog{width:min(100% - 32px,590px)}.dialog-backdrop .bulk-dialog{width:min(100% - 32px,680px)}.dialog-backdrop .delete-dialog{width:min(100% - 32px,520px)}.dialog-backdrop section>header{padding:23px 25px}.dialog-backdrop section>header h2,.dialog-backdrop section h2{font-size:20px}.dialog-backdrop section>header p,.dialog-backdrop section>p{font-size:12px;line-height:1.5}.dialog-backdrop section form{gap:18px;padding:25px}.dialog-backdrop section form label{gap:8px;font-size:13px!important}.dialog-backdrop section :where(input,select){min-height:46px;padding-inline:13px;font-size:14px!important}.dialog-backdrop section select option{font-size:14px}.dialog-backdrop section textarea{min-height:220px;padding:14px;line-height:1.65;font-size:14px!important}.dialog-backdrop section form>footer{padding:17px 25px}.dialog-backdrop section form>footer button,.dialog-backdrop .delete-dialog footer button{min-height:42px;padding-inline:16px;font-size:13px!important}.bulk-instructions strong,.student-preview>span,.parse-summary>span{font-size:12px}.bulk-instructions span,.student-preview>strong,.student-preview small{font-size:11px}.global-search .search input{font-size:14px}.no-classes-label{gap:7px;min-height:36px;padding:0 12px;font-size:12px}.no-classes-label svg{width:16px;height:16px}.topbar-context>button{height:36px;padding-inline:12px;font-size:11px}.topbar-next-class small{font-size:10px}.topbar-next-class strong{font-size:12px}.search-results strong{font-size:13px}.search-results small{font-size:11px}}@media (width<=760px){.content{padding-top:28px}.page-heading p{font-size:12px}.page-heading h1{font-size:25px}.dashboard-general{grid-template-columns:1fr}.general-data .general-stats{grid-template-columns:1fr 1fr}}:where(.app-shell,.setup-page,.auth-page) button{font-size:13px!important}:where(.app-shell,.setup-page,.auth-page) input,:where(.app-shell,.setup-page,.auth-page) select,:where(.app-shell,.setup-page,.auth-page) textarea{font-size:16px!important}:where(.app-shell,.setup-page,.auth-page) label{font-size:13px!important}:where(.app-shell,.setup-page,.auth-page) small{line-height:1.4;font-size:12px!important}:where(.app-shell,.setup-page,.auth-page) table th{font-size:12px!important}:where(.app-shell,.setup-page,.auth-page) table td{font-size:13px!important}.side-nav p{font-size:11px}.profile strong{font-size:13px}.profile span{font-size:12px}.global-search .search input{font-size:16px!important}.search-results strong{font-size:13px}.search-results small,.search-message{font-size:12px!important}.topbar-next-class small{font-size:11px!important}.topbar-next-class strong{font-size:13px}.topbar-context>button,.no-classes-label{min-height:38px;padding-inline:12px;font-size:12px!important}.badge,.focus-label,.next-label,.real-pending-item strong,.real-pending-item small,.general-stats small,.schedule-attendance{font-size:12px!important}.real-pending-item button{min-height:34px;padding:7px 11px;font-size:12px!important}.pending-clear strong{font-size:14px}.pending-clear small,.school-filter button,.school-filter button span,.active-label,.school-name,.course-meta span,.card-schedules>strong,.card-schedules>span,.card-schedules p,.manage-course{font-size:12px!important}.school-filter button,.course-actions button,.manage-course{min-height:40px}.attendance-tabs button,.saved-session,.attendance-message,.attendance-counts span,.mark-all,.status-help,.student-number,.attendance-student strong,.status-buttons button,.status-buttons button span,.attendance-sheet header p,.attendance-sheet>footer>div{font-size:12px!important}.saved-session,.mark-all{min-height:40px}.status-buttons button{min-width:96px;min-height:40px}.status-buttons button span{display:inline}.report-controls label,.report-summary small,.report-legend>span,.report-legend i,.attendance-matrix-wrap header p,.attendance-matrix-wrap header>span,.attendance-matrix th>span,.attendance-matrix th>strong,.attendance-matrix .student-column strong,.matrix-status{font-size:12px!important}.matrix-status{width:34px;height:34px}.calendar-summary small,.calendar-legend span,.calendar-day>header span,.calendar-day>header small,.calendar-class time,.calendar-class>strong,.calendar-class p,.calendar-class>small,.day-empty,.calendar-cta p{font-size:12px!important}.calendar-day>header strong{font-size:14px}.calendar-class{min-height:112px}.grades-toolbar label,.assessment-list>header,.assessment-list button>span,.assessment-list button>small,.grade-sheet>header>div:first-child>span,.grade-sheet header p,.assessment-actions button,.grade-stats span,.grade-row>span:first-child,.grade-row-head,.grade-row-head>span:first-child,.score-input span,.grade-sheet>footer>span{font-size:12px!important}.assessment-list button>strong,.grade-row>strong{font-size:14px}.assessment-actions button{min-height:40px}.course-back,.course-detail-head>div:nth-child(2)>span,.course-detail-head p,.students-panel header p,.student-search input,.students-table td small,.muted,.enrolled-status,.attendance-pair>span,.attendance-pair b,.grade-summary small,.academic-status,.no-search-results{font-size:12px!important}.students-table td strong{font-size:14px}.attendance-pair>span{justify-content:center;min-width:50px;min-height:34px}.academic-status{min-width:132px;min-height:38px;padding:8px 38px 8px 14px}.settings-menu button,.settings-menu>span,.settings-menu small,.settings-card header p,.settings-card label,.settings-card label>small,.appearance-group>div:first-child small,.accent-options button,.sound-setting small,.readonly-field b,.settings-message,.security-note p,.security-note strong,.sound-setting strong,.sound-switch,.setup-header>div:first-child>span,.setup-header p,.setup-progress>span,.setup-step strong,.setup-step small,.setup-step b,.form-title p,.setup-error{font-size:12px!important}.setup-card input,.setup-card select{min-height:44px;font-size:16px!important}.continue-button,.back-button,.add-time{min-height:40px;font-size:13px!important}.auth-kicker,.auth-intro small,.auth-card header p,.auth-tabs button,.auth-message{font-size:12px!important}.auth-card input{min-height:44px;font-size:16px!important}.auth-submit{min-height:44px;font-size:13px!important}@media (width<=760px){.content :where(button,label){font-size:13px!important}.content :where(input,select,textarea){font-size:16px!important}.content :where(small){font-size:12px!important}.content{padding-inline:18px}.status-buttons{grid-template-columns:1fr 1fr;width:100%;display:grid}.status-buttons button{width:100%;min-width:0}.calendar-day{min-width:190px}.dialog-backdrop{padding:12px}.dialog-backdrop section :where(input,select,textarea){font-size:16px!important}.dialog-backdrop section form>footer button{min-height:42px}html,body,#root,.app-shell,.workspace{width:100%;max-width:100%;overflow-x:hidden}.workspace{min-width:0}.floating-menu-button{z-index:14;right:18px;bottom:max(22px, env(safe-area-inset-bottom));border:1px solid var(--primary-border);color:#fff;background:var(--primary);width:52px;height:52px;box-shadow:0 10px 28px color-mix(in srgb, var(--primary) 32%, transparent);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--motion-base) ease, visibility 0s linear var(--motion-base), transform var(--motion-slow) var(--ease-spring), background-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;border-radius:50%;place-items:center;padding:0;display:grid;position:fixed;transform:translateY(18px)scale(.78)}.floating-menu-button.visible{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s;transform:translateY(0)scale(1)}.floating-menu-button:hover{background:var(--primary-hover);box-shadow:0 12px 32px color-mix(in srgb, var(--primary) 40%, transparent)}.topbar{height:64px;padding:0 14px}.menu-button{border-radius:8px;flex:none;width:40px;height:40px}.topbar-search-group,.global-search{min-width:0}.global-search .search{gap:7px}.global-search .search input{text-overflow:ellipsis;min-width:0;font-size:16px!important}.theme-toggle{width:40px;height:40px}.topbar-context>button{border-radius:8px;width:40px;height:40px}.content{width:100%;max-width:100%;margin:0;padding:22px 14px 38px}.page-heading{width:100%;margin-bottom:20px}.page-heading h1{font-size:26px}.panel,.courses-section,.attendance-sheet,.attendance-matrix-wrap,.grade-sheet,.students-panel,.settings-card{width:100%;min-width:0}.panel-title,.courses-title,.attendance-sheet>header,.attendance-matrix-wrap>header,.grade-sheet>header,.students-panel>header{padding:16px}.panel-title{align-items:flex-start;gap:12px}.dashboard-general,.dashboard-grid,.dashboard-grid.simplified,.dashboard-grid.summary-only,.day-focus{grid-template-columns:minmax(0,1fr);width:100%}.general-stats{padding:10px}.general-stats>div{border:0;min-width:0;padding:16px 12px}.general-stats>div:nth-child(odd){border-right:1px solid var(--border)}.general-stats>div:nth-child(-n+2){border-bottom:1px solid var(--border)}.real-pending-list{padding-inline:14px}.real-pending-item{grid-template-columns:38px minmax(0,1fr)}.real-pending-item button{grid-column:2;justify-self:start}.compact-schedule article{grid-template-columns:52px 4px minmax(0,1fr);gap:10px;padding:13px 14px}.compact-schedule article>:last-child:not(div){grid-column:3;justify-self:start}.courses-toolbar{gap:12px;width:100%}.course-actions{grid-template-columns:1fr 1fr;display:grid}.course-actions button,.courses-toolbar .primary-button{width:100%;min-width:0;padding:10px;font-size:12px!important}.school-filter{scrollbar-width:thin;flex-wrap:nowrap;width:100%;padding-bottom:3px;overflow-x:auto}.school-filter button{flex:none}.school-course-group>header{align-items:flex-start;gap:8px;margin-inline:16px}.admin-course-grid{padding:14px}.admin-course-card{min-width:0}.attendance-tabs{grid-template-columns:1fr 1fr;display:grid}.attendance-controls,.report-controls,.grades-toolbar{padding:14px}.attendance-controls label+div,.report-controls select,.report-controls input,.grades-toolbar select{min-height:44px}.saved-session{justify-content:center;width:100%}.attendance-summary{align-items:stretch;padding:14px}.attendance-course{width:100%}.attendance-counts{grid-template-columns:1fr 1fr;width:100%}.attendance-counts span{justify-content:center;min-height:38px}.attendance-rows{overflow:visible}.attendance-rows article{grid-template-columns:30px minmax(0,1fr);gap:10px;width:100%;min-width:0;min-height:0;padding:15px 14px;display:grid}.attendance-student{min-width:0}.status-buttons{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:8px}.status-buttons button{min-width:0;min-height:44px}.attendance-comment{grid-column:1/-1}.attendance-sheet>footer button{justify-content:center;width:100%}.report-summary{grid-template-columns:1fr 1fr}.report-summary .report-legend{grid-column:1/-1}.matrix-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.attendance-matrix .student-column{min-width:150px;max-width:150px}.calendar-summary{grid-template-columns:1fr 1fr}.calendar-summary .calendar-legend{grid-column:1/-1}.calendar-summary>div{min-width:0;padding:14px}.calendar-cta{padding:15px}.calendar-cta button{justify-content:center;width:100%;margin-left:0}.weekly-calendar{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;grid-template-columns:repeat(6,minmax(190px,78vw));width:100%}.calendar-day{scroll-snap-align:start;min-width:0}.grades-layout{grid-template-columns:minmax(0,1fr);width:100%}.assessment-list{width:100%}.grade-sheet>header{flex-direction:column;align-items:stretch}.assessment-actions{width:100%}.assessment-actions button{flex:1;justify-content:center}.grade-rows{overflow:visible}.grade-row{grid-template-columns:32px minmax(0,1fr);align-items:center;gap:12px;width:100%;min-width:0;padding:16px 14px}.grade-row>span:first-child{grid-area:1/1;align-self:start}.grade-row>strong{text-overflow:ellipsis;white-space:nowrap;grid-area:1/2;min-width:0;overflow:hidden}.grade-row .score-input{grid-area:2/2}.grade-row>.academic-status{grid-area:3/2}.grade-row-head{display:none}.score-input{width:100%}.score-input input{flex:1;min-width:0}.grade-sheet>footer button{justify-content:center;width:100%}.course-detail-head{padding:15px}.course-detail-head>div:nth-child(2){min-width:calc(100% - 70px)}.student-head-actions{grid-template-columns:1fr 1fr;width:100%;margin-left:0;display:grid}.course-detail-head .primary-button{margin-left:0;font-size:13px!important}.students-table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.students-table{min-width:720px}.students-table th,.students-table td{padding:13px 14px}.settings-layout{grid-template-columns:minmax(0,1fr);width:100%}.settings-content{min-width:0}.settings-card form,.appearance-settings{padding:16px}.readonly-field{min-width:0}.readonly-field span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dialog-backdrop{place-items:end center;padding:0}.dialog-backdrop>section{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:16px 16px 0 0;max-height:92svh;overflow-y:auto;width:100%!important;max-width:none!important}.dialog-backdrop{overscroll-behavior:contain}.dialog-backdrop section>header{padding:18px 16px}.dialog-backdrop section form{padding:16px}.dialog-backdrop section form>footer{padding:13px 16px max(13px, env(safe-area-inset-bottom));margin:5px -16px -16px;position:sticky;bottom:0}.dialog-schedule-row{grid-template-columns:1fr 1fr;padding:10px}}@media (width<=420px){.topbar{gap:6px;padding-left:10px;padding-right:18px}.global-search .search input::placeholder{color:#0000}.topbar-search-group{flex:0 0 48vw;gap:4px;width:48vw;max-width:190px}.topbar-context{flex:none;margin-left:0}.content{padding-inline:12px}.calendar-summary,.report-summary{grid-template-columns:1fr}.calendar-summary .calendar-legend,.report-summary .report-legend{grid-column:auto}.general-stats{grid-template-columns:1fr 1fr}.general-stats>div{border:0}.general-stats>div:nth-child(odd){border-right:1px solid var(--border)}.general-stats>div:nth-child(-n+2){border-bottom:1px solid var(--border)}.course-actions,.student-head-actions{grid-template-columns:1fr}.grade-stats{grid-template-columns:1fr 1fr}.grade-row{grid-template-columns:28px minmax(0,1fr)}.status-buttons{grid-template-columns:1fr 1fr}.dialog-schedule-row{grid-template-columns:1fr}}.attendance-matrix-wrap h2{font-size:0!important}.attendance-matrix-wrap h2:after{content:"Reporte de asistencias";font-size:18px}@media (width<=780px){html[data-theme=dark] .auth-page{background:#f7f8fa}html[data-theme=dark] .auth-area{color:#18181b;background:#f7f8fa}html[data-theme=dark] .auth-card{color:#18181b;background:#fff;border-color:#e4e4e7}html[data-theme=dark] .auth-card input{color:#18181b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fff;border-color:#e4e4e7}html[data-theme=dark] .auth-tabs{background:#f4f4f5}html[data-theme=dark] .auth-tabs button{color:#71717a}html[data-theme=dark] .auth-tabs button.active{color:var(--primary);background:#fff}}.legal-page{background:var(--page-background);min-height:100vh}.legal-header{justify-content:space-between;align-items:center;gap:12px;max-width:720px;margin:0 auto;padding:22px 20px;display:flex}.legal-brand{color:var(--text-primary);align-items:center;gap:8px;font-size:15px;text-decoration:none;display:flex}.legal-brand strong{color:var(--primary)}.legal-back{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;text-decoration:none;display:flex}.legal-back:hover{color:var(--primary)}.legal-article{max-width:720px;color:var(--text-primary);margin:0 auto;padding:8px 20px 64px;line-height:1.65}.legal-article h1{margin:0 0 6px;font-size:26px}.legal-updated{color:var(--text-secondary);margin:0 0 28px;font-size:12px}.legal-article h2{margin:28px 0 10px;font-size:16px}.legal-article p,.legal-article li{color:var(--text-secondary);font-size:14px}.legal-article ul{margin:8px 0;padding-left:20px}.legal-article li{margin:4px 0}.legal-article a{color:var(--primary)}.legal-links{justify-content:center;gap:14px;margin-top:18px;display:flex}.legal-links a{color:var(--text-secondary);font-size:11px;text-decoration:none}.legal-links a:hover{color:var(--primary);text-decoration:underline}.auth-consent{color:var(--text-secondary);margin:-6px 0 0;font-size:11px;line-height:1.5}.auth-consent a{color:var(--primary)}
