@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:var(--font-body);color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{background:var(--bg);margin:0;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}svg{flex-shrink:0;width:21px;height:21px}h1,h2,h3,p{margin:0}h1{letter-spacing:-1px;font-size:32px;font-weight:650;line-height:1.2}h2{letter-spacing:-.35px;font-size:18px;font-weight:650}h3{font-size:17px}small,.small{font-size:12px}.muted{color:var(--muted)}.eyebrow{letter-spacing:1.6px;color:var(--muted);margin-bottom:12px;font-size:10px;font-weight:700}.sidebar{background:var(--color-surface);border-right:1px solid var(--line);z-index:10;flex-direction:column;width:235px;padding:34px 20px;display:flex;position:fixed;inset:0 auto 0 0}.brand{letter-spacing:-.7px;align-items:center;gap:10px;font-size:22px;font-weight:700;display:flex}.brand small{letter-spacing:1.9px;color:var(--muted);margin-top:2px;font-size:8px;display:block}.nav-label{color:var(--color-text-secondary);letter-spacing:1.5px;margin:48px 14px 14px;font-size:10px;font-weight:600}#nav{gap:6px;display:grid}#nav a{border-radius:var(--radius-control);color:var(--color-text-secondary);align-items:center;gap:12px;padding:12px 14px;font-weight:500;display:flex}#nav a.active{background:var(--color-surface);color:var(--color-text)}#nav a:hover{background:var(--color-hover-wash)}.topbar{background:var(--color-surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;height:77px;padding:0 40px;display:flex}.top-actions{align-items:center;gap:12px;display:flex}#teacher-email{color:var(--muted);font-size:12px}#content{outline:none;max-width:1450px;min-height:80vh;margin:auto;padding:36px 40px 64px}.page-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.primary,.secondary,.quiet,.google-button{border-radius:var(--radius-pill);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 16px;font-size:13px;font-weight:600;line-height:1.3;display:inline-flex}.secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.secondary:hover{background:var(--color-canvas)}.quiet{color:var(--color-action);background:0 0;padding:8px 10px}.icon-button{color:var(--color-text-secondary);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;min-width:40px;min-height:42px;padding:8px;display:inline-flex}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:24px 0 30px;display:grid}.stats article{background:var(--color-surface);border:1px solid var(--line);border-radius:var(--radius-panel);padding:21px 23px}.stats span{color:var(--muted);font-size:11px}.stats strong{letter-spacing:-1px;margin:9px 0 3px;font-size:31px;font-weight:550;display:block}.stats small{color:var(--color-text-secondary);font-size:10px}.two-col{grid-template-columns:1.35fr 1fr;gap:24px;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:22px;overflow:hidden}.padded{padding:24px}.padded>h2{margin-bottom:14px}.section-heading{justify-content:space-between;align-items:center;gap:14px;padding:20px 23px;display:flex}.section-heading a{color:var(--color-action);align-items:center;gap:7px;font-size:11px;display:flex}.section-heading a svg{width:15px}.padded>.section-heading{padding:0 0 20px}.section-copy{color:var(--muted);padding:0 23px 14px;font-size:12px}.list-row{border-top:1px solid var(--color-border-subtle);align-items:center;gap:15px;min-height:78px;padding:17px 23px;display:flex}.list-row:hover:is(a){background:var(--color-canvas)}.row-main{overflow-wrap:anywhere;flex:1;min-width:0}.row-main strong{font-size:13px;font-weight:550;display:block}.row-main small{color:var(--color-text-secondary);margin-top:4px;font-size:11px;display:block}.row-icon{background:var(--color-sunken);color:var(--color-text-secondary);border-radius:var(--radius-control);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.list-row>svg{width:15px;color:var(--color-text-tertiary)}.avatar{background:var(--color-action-50);width:36px;height:36px;color:var(--color-action-800);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.row-actions{gap:6px;display:flex}.pill{white-space:nowrap;border-radius:var(--radius-pill);align-items:center;gap:6px;padding:4px 9px;font-size:10px;font-weight:600;display:inline-flex}.success{background:var(--color-success-surface);color:var(--color-success)}.warning{background:var(--color-warning-surface);color:var(--color-warning)}.danger{background:var(--color-danger-surface);color:var(--color-danger-ink)}.neutral{background:var(--color-sunken);color:var(--color-text-secondary)}.live{background:var(--color-action-50);color:var(--color-action-800)}.live:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.back{color:var(--muted);align-items:center;gap:5px;margin-bottom:20px;font-size:12px;display:inline-flex}.back svg{width:16px}.group-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.group-card{background:var(--color-surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;transition:transform .15s,border-color .15s;display:block;position:relative}.group-card:hover{border-color:var(--color-border-strong);transform:translateY(-2px)}.group-symbol{border-radius:var(--radius-control);background:var(--color-selection);width:46px;height:46px;color:var(--color-action);justify-content:center;align-items:center;margin-bottom:28px;display:flex}.group-card h2{font-size:19px}.group-card p{color:var(--muted);margin-top:7px;font-size:12px}.card-footer{border-top:1px solid var(--line);color:var(--color-action);justify-content:space-between;align-items:center;margin-top:28px;padding-top:15px;font-size:11px;display:flex}.card-footer svg{width:16px}.page-footer{justify-content:space-between;gap:12px;margin:25px 0;display:flex}.pending{border-color:color-mix(in srgb, var(--color-warning) 30%, var(--color-surface));background:var(--color-surface)}.field{flex-direction:column;gap:7px;min-width:0;margin:0 0 18px;font-size:12px;font-weight:600;display:flex}input,select,textarea{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:var(--radius-control);width:100%;color:var(--ink);outline:none;min-height:44px;padding:12px}input[type=color]{width:100%;height:46px;padding:5px}input[type=file]{background:var(--color-canvas);border-style:dashed;padding:20px;font-size:13px}input[type=range]{accent-color:var(--accent);padding:0}.filters{align-items:center;gap:18px;margin-bottom:8px;display:flex}.filters .field{flex:1;max-width:420px}.title-line{align-items:center;gap:12px;display:flex}.attendance .section-heading{flex-wrap:wrap}.table-scroll{overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{background:var(--color-canvas);color:var(--color-text-secondary);white-space:nowrap;padding:14px 23px;font-size:12px;font-weight:500}td{border-top:1px solid var(--color-border-subtle);white-space:nowrap;padding:16px 23px;font-size:12px}td:first-child{white-space:normal;min-width:150px}.student-cell{align-items:center;gap:12px;display:flex}.student-cell strong{font-weight:500}.empty{text-align:center;padding:54px 24px}.empty p{max-width:370px;color:var(--muted);margin:9px auto 22px;font-size:13px}.loading{color:var(--color-text-secondary);text-align:center;padding:60px}.segmented{background:var(--color-sunken);border-radius:var(--radius-pill);gap:3px;margin-bottom:26px;padding:4px;display:inline-flex}.segmented a{color:var(--color-text-secondary);border-radius:var(--radius-pill);padding:9px 22px;font-size:12px;font-weight:500}.segmented .selected{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2)}.student-heading{align-items:center;gap:14px;margin-bottom:25px;display:flex}.conversation{max-width:900px}.conversation-pair{margin-bottom:28px}.question{background:var(--color-selection);border:1px solid var(--color-action-100);border-radius:var(--radius-panel);margin-left:45px;padding:22px}.question p,.answer p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.answer{background:var(--color-surface);border:1px solid var(--line);border-radius:var(--radius-panel);margin:10px 45px 0 0;padding:22px}.sources{color:var(--color-text-secondary);border-top:1px solid var(--line);gap:8px;margin-top:20px;padding-top:14px;font-size:11px;display:flex}.sources svg{width:15px}.settings-grid{grid-template-columns:1fr 1fr;gap:22px;display:grid}.settings-grid .muted{margin-bottom:24px;font-size:13px}.question-stats{grid-template-columns:repeat(3,1fr);gap:20px;margin-top:24px;display:grid}.question-stats span,.question-stats strong{font-size:11px}.question-stats strong{float:right;color:var(--muted)}progress{appearance:none;border-radius:var(--radius-pill);background:var(--color-sunken);border:0;width:100%;height:6px;margin-top:10px;display:block}progress::-webkit-progress-bar{background:var(--color-sunken);border-radius:var(--radius-pill)}progress::-webkit-progress-value{background:var(--color-action);border-radius:var(--radius-pill)}progress::-moz-progress-bar{background:var(--color-action)}.form-error{color:var(--danger);margin:10px 0;font-size:12px}.notice{background:var(--color-warning-surface);border:1px solid color-mix(in srgb, var(--color-warning) 30%, var(--color-surface));color:var(--color-warning);border-radius:var(--radius-control);padding:12px}.skip{z-index:100;position:absolute;top:-100px;left:20px}.skip:focus{background:var(--color-surface);padding:15px;top:10px}.dialog-copy{color:var(--muted);margin-bottom:22px;font-size:13px}.form-footer{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.crop-page{-webkit-user-select:none;user-select:none;max-width:650px;margin:0 auto 20px;line-height:0;position:relative;overflow:hidden}.crop-page>img{width:100%;display:block}.crop-band{border:2px solid var(--color-action);background:color-mix(in srgb, var(--color-action) 6%, transparent);box-shadow:0 0 0 2000px color-mix(in srgb, var(--color-text) 29%, transparent);pointer-events:none;position:absolute;left:0;right:0}.crop-handle{pointer-events:auto;touch-action:none;cursor:ns-resize;background:0 0;border:0;width:100%;height:30px;position:absolute;left:0;right:0}.crop-handle:after{content:"";background:var(--color-action);border:2px solid var(--color-surface);border-radius:var(--radius-pill);width:70px;height:8px;position:absolute;top:11px;left:calc(50% - 35px)}.crop-handle.top{top:-15px}.crop-handle.bottom{bottom:-15px}.zoom-controls{align-items:center;gap:12px;margin:14px 0;display:flex}.image-viewport{touch-action:none;background:var(--color-surface);cursor:grab;overscroll-behavior:contain;height:65dvh;display:block;overflow:auto}.image-viewport img{-webkit-user-select:none;user-select:none;width:100%;display:block}.image-error{background:var(--color-warning-surface);color:var(--color-warning);border:0;width:100%;min-height:130px;padding:30px 16px}.login-layout{grid-template-columns:1fr 1fr;min-height:100dvh;display:grid}.login-card{max-width:450px;margin:auto;padding:35px}.login-card h2{margin:14px 0;font-size:29px;line-height:1.2}.login-card p{color:var(--muted);margin:14px 0 26px;font-size:14px}.google-button{background:var(--color-surface);border-color:var(--color-border-strong);width:100%;margin:5px 0 10px;padding:15px}.google-button b{margin-right:7px;font-size:20px}.login-card .small{margin-top:22px;font-size:11px;line-height:1.7}@media (width>=1600px){#content{padding-top:50px}}@media (width<=1100px){.sidebar{width:205px;padding:30px 14px}.workspace{margin-left:205px}#content{padding:28px 24px 60px}.topbar{padding:0 24px}.group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.stats{gap:10px}.stats article{padding:16px}.settings-grid{grid-template-columns:1fr}.page-heading{align-items:flex-start}.page-heading .actions{justify-content:flex-end}}@media (width<=760px){.sidebar{width:100%;height:auto;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border:0;border-top:1px solid var(--line);background:var(--color-surface);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);inset:auto 0 0}.sidebar>.brand,.sidebar>.nav-label{display:none}#nav{grid-template-columns:repeat(5,1fr);gap:2px;display:grid}#nav a{border-radius:var(--radius-control);flex-direction:column;gap:4px;padding:7px 2px;font-size:9px}#nav a svg{width:21px;height:21px}.workspace{margin:0}.topbar{height:62px;padding:0 20px}.mobile-brand{letter-spacing:-.4px;font-size:19px;font-weight:700;display:block}.desktop-label,#teacher-email{display:none}.top-actions{gap:3px}#content{padding:24px 18px 115px}.page-heading{margin-bottom:24px;display:block}h1{font-size:27px}.page-heading .actions{justify-content:flex-start;gap:8px;margin-top:18px}.page-heading .eyebrow{margin-bottom:8px;font-size:9px}.subtitle{font-size:12px}.stats{grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.stats article{padding:17px 18px}.stats strong{font-size:28px}.stats small{font-size:9px}.two-col{gap:0}.section-heading{padding:17px 18px}.section-heading h2{font-size:16px}.list-row{gap:11px;padding:16px 18px}.row-main strong{font-size:12px}.row-main small{font-size:10px}.row-actions{flex-wrap:wrap;justify-content:flex-end}.row-actions .primary,.row-actions .secondary{padding:8px 11px;font-size:11px}.group-grid{grid-template-columns:1fr;gap:14px}.group-card{padding:21px}.group-symbol{margin-bottom:18px}.card-footer{margin-top:20px}.filters{flex-direction:column;align-items:stretch;gap:12px;margin:0 0 20px}.filters .field{max-width:none;margin:0}.field{font-size:12px}input,select,textarea{font-size:16px}.attendance .section-heading{display:block}.attendance .section-heading>.actions{margin-top:15px}.attendance .actions button{padding:8px 10px;font-size:11px}.table-scroll th,.table-scroll td{padding:13px 12px}.student-cell{gap:8px}.student-cell .avatar{display:none}td:first-child{min-width:118px;max-width:170px}td{font-size:11px}.table-scroll{padding-bottom:4px}.pill{padding:4px 7px;font-size:9px}.table-scroll .pill{white-space:nowrap}.question-stats{grid-template-columns:1fr 1fr}.segmented{display:flex}.segmented a{text-align:center;flex:1;padding:10px}.conversation .question{margin-left:15px;padding:18px}.conversation .answer{margin-right:15px;padding:18px}.material{flex-wrap:wrap}.material .row-main{min-width:150px}.padded{padding:20px}.section-copy{padding-left:18px}.student-heading h2{font-size:20px}.student-heading p{font-size:12px}.login-layout{grid-template-columns:1fr}.login-card{padding:35px 25px}.login-card h2{font-size:25px}.image-viewport{height:60dvh}}@media print{body{color:#000;background:#fff}#shell,.skip{display:none!important}@page{size:A4;margin:15mm}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media (width<=760px){.attendance table{table-layout:fixed}.attendance th,.attendance td{white-space:normal;overflow-wrap:anywhere;padding:12px 8px}.attendance th{letter-spacing:.35px;font-size:9px}.attendance th:first-child,.attendance td:first-child{width:32%;min-width:0}.attendance th:nth-child(2){width:19%}.attendance th:nth-child(3){width:24%}.attendance th:nth-child(4){width:25%}.attendance td .pill{padding:4px 5px;font-size:9px}.attendance td small{font-size:10px}.attendance th{overflow-wrap:normal}}.all-courses{color:var(--muted);align-items:center;gap:6px;margin-bottom:15px;font-size:12px;display:inline-flex}.all-courses svg{width:15px}#course-switcher .field{margin:0;font-size:10px}#course-switcher select{background:var(--color-surface);padding:10px 8px;font-size:12px}#course-switcher+.nav-label{margin-top:27px}.course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.course-card{border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--color-surface);overflow:hidden}.course-main{height:100%;padding:24px;display:block}.course-top{justify-content:space-between;align-items:flex-start;gap:15px;display:flex}.course-top .group-symbol{margin-bottom:24px}.course-card h2{overflow-wrap:anywhere;font-size:22px;line-height:1.25}.course-level{color:var(--color-text-secondary);margin:8px 0 18px;font-size:12px}.course-description{color:var(--color-text-secondary);overflow-wrap:anywhere;-webkit-line-clamp:3;-webkit-box-orient:vertical;min-height:58px;font-size:12px;display:-webkit-box;overflow:hidden}.course-counts{color:var(--color-text-secondary);gap:28px;margin-top:18px;font-size:11px;display:flex}.course-counts strong{color:var(--color-text);margin-right:4px;font-size:17px}.course-open #course-switcher{display:block}@media (width<=1100px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){#course-switcher{background:var(--color-surface);border-bottom:1px solid var(--line);align-items:center;gap:14px;height:69px;padding:10px 18px;display:none;position:fixed;top:62px;left:0;right:0;margin:0!important}.course-open #course-switcher{display:flex}#course-switcher .all-courses{white-space:nowrap;margin:0;font-size:11px}#course-switcher .field{flex:1}#course-switcher .field>span{display:none}#course-switcher select{height:42px;min-height:42px;padding:7px 10px;font-size:16px}.course-open .topbar{z-index:11;background:var(--color-surface);position:sticky;top:0}.course-open #content{padding-top:93px}.course-grid{grid-template-columns:1fr;gap:17px}.course-main{padding:22px}.course-description{min-height:0}.course-card .card-footer{margin-top:20px}#nav:has(a:only-child){grid-template-columns:1fr}#nav:has(a:only-child) a{flex-direction:row;gap:8px;padding:10px;font-size:12px}}:root{--color-canvas:#f4f4f1;--color-surface:#fff;--color-sunken:#ecece8;--color-text:#16181d;--color-text-secondary:#565a63;--color-text-tertiary:#8a8e96;--color-text-control:#2b2e35;--color-border:#e3e3de;--color-border-subtle:#ecece8;--color-border-strong:#c9c9c2;--color-border-control:#8a8e96;--color-action-50:#eef2ff;--color-action-100:#dfe6ff;--color-action-200:#bccbff;--color-action:#2f5bd9;--color-action-hover:#2449b8;--color-action-800:#1a327d;--color-selection:var(--color-action-50);--color-selection-ink:var(--color-action-800);--color-hover-wash:#16181d08;--color-success:#1b7a47;--color-success-ink:#1b7a47;--color-success-surface:#e3f4ea;--color-warning:#8a4b0c;--color-warning-surface:#fdf0dc;--color-danger:#b3261e;--color-danger-ink:#a50e0e;--color-danger-surface:#fce8e6;--color-danger-border:#e9b9b5;--course-1:#2f5bd9;--course-2:#0f8a7e;--course-3:#c2410c;--course-4:#7c3aed;--course-5:#be185d;--course-6:#4d7c0f;--course-hue:var(--course-1);--bg:var(--color-canvas);--panel:var(--color-surface);--ink:var(--color-text);--muted:var(--color-text-secondary);--line:var(--color-border);--accent:var(--color-action);--accent-soft:var(--color-selection);--danger:var(--color-danger);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--radius-sm:8px;--radius-control:10px;--radius-panel:16px;--radius-card:22px;--radius-dialog:22px;--radius-pill:999px;--radius:var(--radius-panel);--shadow-1:0 1px 0 #16181d0a, 0 1px 2px #16181d0d;--shadow-2:0 1px 0 #16181d08, 0 6px 16px -6px #16181d1f;--shadow-3:0 2px 0 #16181d08, 0 20px 40px -16px #16181d33;--focus-halo:0 0 0 4px var(--color-action-100);--target-min:44px;--font-body:"Geist Variable", "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Geist Mono Variable", "Geist Mono", ui-monospace, SFMono-Regular, monospace;font-family:var(--font-body);-webkit-font-smoothing:antialiased}body{background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5}h1,h2,h3{letter-spacing:0;font-family:inherit}h1{font-size:30px;font-weight:500;line-height:1.25}h2{font-size:18px;font-weight:600}h3{font-size:16px;font-weight:600}.page-heading h1{letter-spacing:-.03em;overflow-wrap:anywhere;font-size:28px;font-weight:600;line-height:1.15}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}.sidebar{background:var(--color-canvas);border-color:var(--line);width:232px;padding:24px 16px}.brand{letter-spacing:-.5px;gap:10px;font-size:23px;font-weight:500}.brand small{display:none}.brand img{width:34px;height:34px}.nav-label{letter-spacing:.6px;color:var(--color-text-secondary);margin:32px 14px 12px;font-size:11px}#nav{gap:2px}#nav a{min-height:40px;color:var(--color-text-secondary);border-radius:var(--radius-control);border:1px solid #0000;gap:12px;padding:0 12px;font-size:14px;font-weight:500}#nav a:hover{background:var(--color-hover-wash);color:var(--color-text)}#nav a.active,#nav a.active:hover{background:var(--color-surface);border-color:var(--color-border);box-shadow:var(--shadow-1);color:var(--color-text)}#nav a.active svg{color:var(--course-hue)}.workspace{margin-left:232px}.topbar{background:var(--color-canvas);border-color:var(--line);height:72px;padding:0 32px}.desktop-label{color:var(--color-text-secondary);font-size:14px}.top-actions{gap:14px}#teacher-email{color:var(--color-text-secondary)}#content{max-width:1440px;padding:32px 36px 60px}.page-heading{align-items:flex-end;gap:20px;margin-bottom:28px}.page-heading .eyebrow{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--color-text-secondary);overflow-wrap:anywhere;margin-bottom:6px;font-size:12px;font-weight:400}.subtitle{color:var(--color-text-secondary);margin-top:8px;font-size:14px}.primary,.secondary,.quiet,.google-button{border-radius:var(--radius-pill);min-height:44px;box-shadow:none;padding:10px 18px;font-size:14px;font-weight:500}.primary{background:var(--color-action);color:#fff;box-shadow:inset 0 1px #ffffff29,0 1px 2px #1a327d40}.primary:hover{background:var(--color-action-hover)}.secondary,.google-button{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text);box-shadow:var(--shadow-1)}.secondary:hover,.google-button:hover{background:var(--color-canvas)}.quiet{color:var(--color-action)}.quiet:hover{background:var(--color-action-50)}.icon-button{color:var(--color-text-secondary);border-radius:50%;min-width:44px;min-height:44px}.icon-button:hover{background:var(--color-hover-wash)}#course-switcher{margin-top:30px}.all-courses{color:var(--color-text-control);margin-bottom:16px;font-size:13px}#course-switcher .field{color:var(--color-text-secondary);font-size:12px}#course-switcher select{background:var(--color-surface);border-color:var(--color-border-control);padding:11px 10px;font-size:14px}#course-switcher .ui-select-field>label{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ui-select-switcher{border-color:var(--color-border);border-radius:var(--radius-panel);min-height:52px;box-shadow:var(--shadow-1);gap:10px;padding:8px 10px 8px 8px}.ui-select-switcher .ui-select-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.ui-select-switcher .ui-select-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-select-switcher .ui-select-text>span:first-child{color:var(--color-text);font-size:13px;font-weight:600}.ui-select-switcher .ui-select-detail{color:var(--color-text-secondary);font-size:11px}.course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.course-card{border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface);box-shadow:var(--shadow-1);transition:border-color .15s,box-shadow .15s}.course-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-2)}.course-main{flex-direction:column;height:100%;padding:0;display:flex;position:relative}.course-top{align-items:center;gap:12px;min-height:72px;padding:22px 22px 14px}.course-top .group-symbol{display:none}.course-top .pill{border:0;font-size:12px}.course-card h2{letter-spacing:-.015em;color:var(--color-text);padding:0 22px 6px;font-size:20px;font-weight:600;line-height:1.3}.course-level{color:var(--color-text-secondary);border-bottom:1px solid var(--color-border-subtle);margin:0;padding:0 22px 16px;font-size:13px}.course-description{color:var(--color-text-secondary);-webkit-line-clamp:3;min-height:78px;margin:0;padding:18px 22px 0;font-size:14px;line-height:1.5}.course-description:empty{display:none}.course-counts{color:var(--color-text-secondary);gap:24px;margin:auto 0 0;padding:24px 22px 22px;font-size:13px}.course-counts strong{color:var(--color-text);font-variant-numeric:tabular-nums;margin-right:4px;font-size:16px;font-weight:600}.course-card .card-footer{border-top:1px solid var(--color-border-subtle);color:var(--color-action);margin:0;padding:16px 22px;font-size:13px}.course-card .card-footer svg{width:18px;height:18px}.stats{border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface);box-shadow:var(--shadow-1);gap:0;margin:0 0 28px;overflow:hidden}.stats article{border:0;border-right:1px solid var(--color-border);box-shadow:none;background:var(--color-surface);border-radius:0;padding:20px}.stats article:last-child{border-right:0}.stats article:first-child{background:var(--color-surface);color:var(--color-text)}.stats span,.stats small,.stats article:first-child span,.stats article:first-child small{color:var(--color-text-secondary);font-size:12px}.stats span{font-weight:500}.stats strong,.stats article:first-child strong{color:var(--color-text);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:36px;font-weight:600;line-height:1.1}.panel,.group-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-1)}.section-heading{border-color:var(--color-border-subtle);padding:20px 22px}.section-heading a{color:var(--color-action);font-size:13px}.list-row{border-color:var(--color-border-subtle);padding:18px 22px}.list-row:hover{background:var(--color-canvas)}.row-main strong{color:var(--color-text);font-size:14px;font-weight:500}.row-main small{color:var(--color-text-secondary);font-size:12px}.row-icon{background:var(--color-sunken);color:var(--color-text-secondary);border-radius:50%}.avatar{background:var(--color-selection);color:var(--color-selection-ink);font-weight:500}.group-card{padding:22px}.group-card>p{margin-bottom:24px}.group-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-2)}.group-symbol,.tone-1 .group-symbol,.tone-2 .group-symbol{background:color-mix(in srgb, var(--course-hue) 12%, var(--color-surface));color:var(--course-hue);border-radius:var(--radius-control)}.card-footer{border-color:var(--color-border-subtle);color:var(--color-action)}.empty{color:var(--color-text-secondary)}.empty h3{color:var(--color-text)}.empty p{color:var(--color-text-secondary);font-size:14px}.empty svg{color:var(--color-text-secondary)}input,select,textarea{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);min-height:44px;padding:11px 14px}input:focus,select:focus,textarea:focus{border-color:var(--color-action);box-shadow:var(--focus-halo)}.field{color:var(--color-text-control);font-size:13px;font-weight:500}.field small{color:var(--color-text-secondary);font-weight:400}.filters{gap:18px}.segmented{background:var(--color-sunken);border-radius:var(--radius-pill);padding:4px}.segmented a{color:var(--color-text-secondary);border-radius:var(--radius-pill);font-size:14px}.segmented a.active,.segmented .selected{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2)}th{color:var(--color-text-secondary)}.table-scroll th{background:var(--color-canvas);color:var(--color-text-secondary);text-transform:none;letter-spacing:0;border-color:var(--color-border);padding:15px 18px;font-size:12px;font-weight:500}.table-scroll td{color:var(--color-text);border-color:var(--color-border-subtle);font-variant-numeric:tabular-nums;padding:16px 18px;font-size:13px}.pill{border-radius:var(--radius-pill);padding:4px 9px;font-size:11px;font-weight:500}.pill.success{background:var(--color-success-surface);color:var(--color-success)}.pill.warning{background:var(--color-warning-surface);color:var(--color-warning)}.pill.neutral{background:var(--color-sunken);color:var(--color-text-secondary)}.conversation .question{background:var(--color-selection);border-color:var(--color-action-100);color:var(--color-selection-ink);border-radius:var(--radius-panel)}.conversation .answer{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-panel)}.material{border-color:var(--color-border-subtle)}.settings-grid h2{color:var(--color-text)}.error-note{background:var(--color-danger-surface);color:var(--color-danger-ink)}.page-footer{margin-top:24px}.login-card h2{font-weight:500}.login-card p{color:var(--color-text-secondary)}@media (width<=1150px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#content{padding:28px 24px 60px}.topbar{padding:0 24px}.stats article{padding:18px}}@media (width<=760px){.sidebar{width:100%;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-border);-webkit-backdrop-filter:none;backdrop-filter:none}.workspace{margin:0}.topbar{background:var(--color-surface);height:62px;padding:0 18px}.mobile-brand{letter-spacing:-.3px;font-size:21px;font-weight:500}.top-actions{gap:2px}#nav{grid-template-columns:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}#nav a{border-radius:var(--radius-control);gap:4px;min-height:52px;margin:0;padding:6px 2px;font-size:11px}#nav a.active,#nav a.active:hover{background:var(--color-canvas);box-shadow:none}#content{padding:26px 18px 112px}.page-heading{margin-bottom:24px;display:block}.page-heading h1{font-size:26px}.page-heading .actions{margin-top:18px}.page-heading .eyebrow{font-size:12px}.subtitle{font-size:14px}.course-grid{grid-template-columns:1fr;gap:20px}.course-top{min-height:60px;padding:18px 20px 10px}.course-card h2{padding:0 20px 8px;font-size:22px}.course-level{padding:0 20px 18px}.course-description{min-height:0;padding:20px 20px 0}.course-counts{margin:auto 0 0;padding:20px}.course-card .card-footer{padding:15px 20px}.course-open #course-switcher{border-color:var(--color-border);padding:10px 18px}.course-open #content{padding-top:86px}#course-switcher select{font-size:16px}.stats small{font-size:11px}.section-heading,.list-row{padding:18px}.row-main strong{font-size:14px}.row-main small{font-size:12px}.primary,.secondary,.quiet{font-size:14px}.table-scroll th,.table-scroll td{padding:13px 8px;font-size:12px}.table-scroll th{font-size:11px}.attendance td .pill{padding:4px;font-size:10px}.attendance .actions button{min-height:44px;font-size:13px}.field{font-size:13px}input,select,textarea{font-size:16px}.segmented a{padding:10px;font-size:13px}.login-card{padding:30px 24px}}@media (prefers-reduced-motion:reduce){.course-card{transition:none}}#shell:not(.course-open) #course-switcher,#shell:not(.course-open) #content>.page-heading .eyebrow{display:none}.login-layout{background:var(--color-canvas);grid-template-columns:1fr;place-items:center;min-height:100dvh;padding:24px;display:grid}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);width:100%;max-width:450px;box-shadow:var(--shadow-1);margin:0;padding:36px}.login-card>img{margin-bottom:24px;display:block}.login-card .eyebrow{letter-spacing:.5px;color:var(--color-text-secondary)}.login-card .small{font-size:13px}.stats article{grid-template-rows:minmax(3em,auto) auto 1fr;align-content:start;display:grid}.stats article>span{line-height:1.5;display:block}.stats article>strong{font-variant-numeric:tabular-nums;margin:8px 0 6px;line-height:1.1}.stats article>small{line-height:1.5;display:block}@supports (grid-template-rows:subgrid){.stats article{grid-template-rows:subgrid;grid-row:span 3}}@media (width<=820px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats article{border-right:0;border-top:1px solid var(--color-border)}.stats article:nth-child(odd){border-right:1px solid var(--color-border)}.stats article:nth-child(-n+2){border-top:0}}@media (width<=340px){.stats{grid-template-columns:1fr}.stats article,.stats article:nth-child(odd){border-right:0}.stats article:nth-child(2){border-top:1px solid var(--color-border)}}.panel>.lectures-overview{border:0;border-top:1px solid var(--color-border-subtle);border-radius:0}.panel>.roster-search{margin:0 22px 16px}.roster-search input[type=search]:focus{box-shadow:none}@media (width>=761px){.page-heading>.actions{flex-wrap:nowrap;flex-shrink:0}}@media (width<=760px){.panel>.roster-search{margin:0 18px 14px}}.course-delete-actions p{margin-bottom:8px}#course-switcher{position:relative}@media (width<=760px){#course-switcher{height:74px;padding:8px 18px;position:fixed}.course-open #content{padding-top:91px}}.brand .brand-wordmark{object-fit:contain;object-position:left center;width:190px;max-width:100%;height:41px}.mobile-brand img{object-fit:contain;object-position:left center;width:146px;height:32px;display:block}.onboarding-layout{width:100%;min-width:0;max-width:620px;margin:0 auto;padding:32px 24px}.onboarding-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);min-width:0;box-shadow:var(--shadow-1);padding:32px 24px}.onboarding-brand,.onboarding-brand img{width:190px;max-width:100%;height:auto;display:block}.onboarding-brand{margin-bottom:24px}.onboarding-progress{gap:8px;margin-bottom:24px;display:flex}.onboarding-progress-segment{border-radius:var(--radius-pill);background:var(--color-border);flex:1;min-width:0;height:6px;transition:background-color .15s}.onboarding-progress-segment.active{background:var(--color-action)}.onboarding-progress-segment.completed{background:var(--color-action-200)}.onboarding-card h1{letter-spacing:-.03em;margin-bottom:8px;font-size:28px;font-weight:600;line-height:1.15}.onboarding-card h1:focus{outline:none}.onboarding-card h1+p{color:var(--color-text-secondary);margin-bottom:24px}.onboarding-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:24px;display:flex}.onboarding-actions>*{overflow-wrap:anywhere;min-width:0;max-width:100%}.onboarding-card :is(input,select,textarea),.profile-panel :is(input,select,textarea){width:100%;min-width:0;max-width:100%}.profile-summary{color:var(--color-text-secondary);overflow-wrap:anywhere;margin-bottom:24px}.settings-grid .profile-panel{grid-column:1/-1;min-width:0}@media (width<=600px){.onboarding-layout{padding:20px}.onboarding-card{padding:24px}}@media (prefers-reduced-motion:reduce){.onboarding-progress-segment{transition:none}}.ui-button{white-space:nowrap;min-height:var(--target-min,44px);border-radius:var(--radius-pill,999px);font:500 14px/1 var(--font-body);letter-spacing:-.005em;cursor:pointer;box-shadow:none;border:1px solid #0000;flex:none;justify-content:center;align-items:center;gap:8px;padding:0 18px;text-decoration:none;transition:background .15s,box-shadow .15s,transform 50ms;display:inline-flex}.ui-button:active:not(:disabled){transform:translateY(1px)}.ui-button.primary{background:var(--color-action);color:#fff;box-shadow:inset 0 1px #ffffff29,0 1px 2px #1a327d40}.ui-button.primary:hover{background:var(--color-action-hover)}.ui-button.secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text);box-shadow:var(--shadow-1)}.ui-button.secondary:hover{background:var(--color-canvas)}.ui-button.quiet{color:var(--color-action);background:0 0}.ui-button.quiet:hover{background:var(--color-action-50)}.ui-button.danger{background:var(--color-danger);color:#fff}.ui-button.danger:hover{background:var(--color-danger-ink)}.ui-button:disabled{cursor:not-allowed;opacity:.5}.ui-button:focus:not(:focus-visible),.ui-select-trigger:focus:not(:focus-visible){outline:none}.ui-button:focus-visible,.ui-select-trigger:focus-visible,.ui-field input:focus-visible,.ui-field textarea:focus-visible,.ui-share-url:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}.ui-field{min-width:0;font:500 13px/1.5 var(--font-body);color:var(--color-text);flex-direction:column;gap:6px;display:flex}.ui-field label{display:block}.ui-field input,.ui-field textarea,.ui-share-url{width:100%;min-height:var(--target-min,44px);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);font:400 14px/1.5 var(--font-body);box-shadow:var(--shadow-1);padding:11px 14px;transition:border-color .15s,box-shadow .15s}.ui-field input:hover,.ui-field textarea:hover{border-color:var(--color-border-control)}.ui-field input:focus,.ui-field textarea:focus{border-color:var(--color-action);box-shadow:var(--focus-halo)}.ui-field input[type=checkbox],.ui-field input[type=radio]{width:20px;min-height:20px;box-shadow:none;accent-color:var(--color-action)}.ui-field-hint{color:var(--color-text-secondary);font-size:12px;font-weight:400}.ui-field input[aria-invalid=true],.ui-field textarea[aria-invalid=true]{border-color:var(--color-danger);box-shadow:0 0 0 4px var(--color-danger-surface)}.ui-select-trigger{width:100%;min-width:0;min-height:var(--target-min,44px);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);font:400 14px/1.5 var(--font-body);text-align:left;cursor:pointer;box-shadow:var(--shadow-1);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.ui-select-trigger>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-select-trigger svg{color:var(--color-text-tertiary);flex-shrink:0}.ui-select-trigger:hover:not(:disabled),.ui-select-trigger[data-state=open]{background:var(--color-surface);border-color:var(--color-border-control)}.ui-select-trigger[data-placeholder]{color:var(--color-text-secondary)}.ui-select-trigger:disabled{background:var(--color-canvas);color:var(--color-text-secondary);cursor:not-allowed;opacity:.65;box-shadow:none}.ui-select-menu{z-index:1100;min-width:var(--radix-select-trigger-width);max-width:calc(100vw - 24px);max-height:min(360px,var(--radix-select-content-available-height));background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-3);font:400 14px/1.5 var(--font-body);overflow:hidden}.ui-select-viewport{padding:6px}.ui-select-option{min-height:var(--target-min,44px);border-radius:var(--radius-control);cursor:pointer;-webkit-user-select:none;user-select:none;overflow-wrap:anywhere;outline:none;align-items:center;padding:10px 36px 10px 12px;display:flex;position:relative}.ui-select-option[data-highlighted]{background:var(--color-canvas);color:var(--color-text);outline:none}.ui-select-option[data-state=checked]{color:var(--color-selection-ink);font-weight:500}.ui-select-option[data-state=checked][data-highlighted]{background:var(--color-selection)}.ui-select-option[data-disabled]{color:var(--color-text-secondary);opacity:.5;cursor:not-allowed}.ui-select-check{color:var(--color-action);align-items:center;display:flex;position:absolute;right:10px}.ui-select-scroll{background:var(--color-surface);min-height:28px;color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.ui-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#16181d59;position:fixed;inset:0}.ui-modal{z-index:1001;overscroll-behavior:contain;border:1px solid var(--color-border);border-radius:var(--radius-dialog);background:var(--color-surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 48px);color:var(--color-text);font:400 14px/1.5 var(--font-body);box-shadow:var(--shadow-3);padding:28px;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.ui-modal-wide{width:min(820px,100vw - 32px)}.ui-modal:focus{outline:none}.ui-modal-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;display:flex}.ui-modal-heading h2{letter-spacing:-.02em;margin:7px 0 0;font-size:22px;font-weight:600;line-height:1.25}.ui-icon-button{flex-shrink:0;width:44px;min-width:44px;padding:10px}.ui-modal-body{gap:18px;display:grid}.ui-modal-body .dialog-copy{color:var(--color-text-secondary);margin:0}.ui-modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.ui-empty{text-align:center;color:var(--color-text-secondary);padding:48px 24px}.ui-empty>svg{color:var(--color-text-tertiary)}.ui-empty h3{color:var(--color-text);letter-spacing:-.015em;margin:14px 0 8px;font-size:18px;font-weight:600}.ui-empty p{text-wrap:pretty;max-width:440px;margin:0 auto 18px;font-size:14px}.ui-empty-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.ui-status{border-radius:var(--radius-pill);min-height:26px;font:500 12px/1.4 var(--font-body);white-space:nowrap;align-items:center;gap:7px;padding:0 10px;display:inline-flex}.ui-status:before{content:"";background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.ui-status.neutral{background:var(--color-sunken);color:var(--color-text-secondary)}.ui-status.success{background:var(--color-success-surface);color:var(--color-success)}.ui-status.warning{background:var(--color-warning-surface);color:var(--color-warning)}.ui-status.danger{background:var(--color-danger-surface);color:var(--color-danger-ink)}.ui-status.live{background:var(--color-action-50);color:var(--color-action-800)}.ui-status.live:before{box-shadow:0 0 0 3px var(--color-action-100);animation:1.6s ease-in-out infinite ui-pulse}@keyframes ui-pulse{50%{box-shadow:0 0 0 5px #0000}}.ui-error-note{border-radius:var(--radius-control);background:var(--color-danger-surface);color:var(--color-danger-ink);overflow-wrap:anywhere;align-items:flex-start;gap:9px;padding:12px 14px;font-size:13px;display:flex}.ui-error-note svg{flex-shrink:0;margin-top:1px}.ui-avatar{width:38px;height:38px;font:500 13px var(--font-body);background:var(--color-action-50);color:var(--color-action-800);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ui-share-control{gap:6px;min-width:0;display:grid}.ui-share-actions{flex-wrap:wrap;gap:8px;display:flex}.ui-share-feedback{color:var(--color-text-secondary);font-size:12px}.ui-share-feedback:empty{display:none}.ui-share-url{font-family:var(--font-mono);font-size:12px}.ui-spinner{animation:1s linear infinite ui-spin}@keyframes ui-spin{to{transform:rotate(360deg)}}@media (width<=600px){.ui-modal{max-height:calc(100dvh - 32px);padding:20px}.ui-select-trigger,.ui-field input,.ui-field textarea{font-size:16px}.ui-modal-actions .ui-button{flex-grow:1}}@media (prefers-reduced-motion:reduce){.ui-spinner,.ui-status.live:before{animation:none}.ui-button{transition:none}}.course-badge{border-radius:var(--radius-control);background:var(--course-hue);color:#fff;width:34px;height:34px;font:600 13px/1 var(--font-body);flex:none;place-items:center;display:grid}.course-grid{align-items:stretch;display:grid}.course-card{flex-direction:column;height:100%;display:flex}.course-main{flex:1}.group-grid{align-items:stretch}.group-card{flex-direction:column;display:flex}.group-card .card-footer{margin-top:auto}.roster-search{min-height:var(--target-min,44px);border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);background:var(--color-surface);box-shadow:var(--shadow-1);align-items:center;gap:8px;margin:0 0 14px;padding:0 14px;display:flex}.roster-search:focus-within{border-color:var(--color-action);box-shadow:var(--focus-halo)}.roster-search svg{color:var(--color-text-tertiary);flex-shrink:0}.roster-search input[type=search]{font:400 14px/1.4 var(--font-body);color:var(--color-text);background:0 0;border:none;outline:none;flex:1;min-width:0}.roster-stats{flex-wrap:wrap;gap:12px;margin-top:6px;display:flex}.roster-stat{align-items:center;gap:4px;font-size:12px;display:flex}.stat-label{color:var(--color-text-secondary)}.stat-value{color:var(--color-text);font-variant-numeric:tabular-nums;font-weight:600}@media (width<=375px){.roster-stats{flex-direction:column;gap:4px}}.lectures-overview{-webkit-overflow-scrolling:touch;border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface);overflow-x:auto}.lectures-overview table{border-collapse:collapse;white-space:nowrap;min-width:100%}.lectures-overview th,.lectures-overview td{text-align:left;border-bottom:1px solid var(--color-border-subtle);padding:12px 14px;font-size:13px}.lectures-overview tr:last-child td{border-bottom:0}.lectures-overview th{color:var(--color-text-secondary);background:var(--color-canvas);z-index:1;font-weight:500;position:sticky;top:0}.lectures-overview td:first-child,.lectures-overview th:first-child{background:var(--color-surface);z-index:2;white-space:normal;word-break:break-word;min-width:140px;max-width:200px;position:sticky;left:0}.lectures-overview th:first-child{background:var(--color-canvas);z-index:3}.lectures-overview th a{color:var(--color-action);font-weight:600;text-decoration:none}.lectures-overview th a:hover{text-decoration:underline}.lectures-overview .ov-pill{border-radius:var(--radius-pill);padding:2px 9px;font-size:11px;font-weight:500;display:inline-block}.lectures-overview .ov-pill.present{background:var(--color-success-surface);color:var(--color-success-ink)}.lectures-overview .ov-pill.partial{background:var(--color-warning-surface);color:var(--color-warning)}.lectures-overview .ov-pill.absent{background:var(--color-danger-surface);color:var(--color-danger)}.lectures-overview .ov-pill.unknown{background:var(--color-sunken);color:var(--color-text-secondary)}.view-toggle{background:var(--color-sunken);border-radius:var(--radius-pill);border:0;gap:2px;padding:4px;display:inline-flex}.view-toggle button{min-height:36px;font:500 13px/1 var(--font-body);border-radius:var(--radius-pill);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;padding:0 14px}.view-toggle button:hover{color:var(--color-text)}.view-toggle button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2)}.view-toggle button:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}.settings-back{color:var(--color-action);align-items:center;gap:6px;margin-bottom:12px;font-size:13px;text-decoration:none;display:inline-flex}.settings-back:hover{text-decoration:underline}.ui-switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);min-width:0;display:flex}.ui-switch-text{gap:2px;min-width:0;display:grid}.ui-switch-label{font:500 14px/1.35 var(--font-body);color:var(--color-text)}.ui-switch-detail{font:400 12px/1.4 var(--font-body);color:var(--color-text-secondary)}.ui-switch{min-height:var(--target-min,44px);border-radius:var(--radius-pill);color:var(--color-text-secondary);font:500 13px/1 var(--font-body);cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:8px;padding:0 4px;display:inline-flex}.ui-switch-track{border-radius:var(--radius-pill);background:var(--color-border-strong);width:40px;height:24px;transition:background .15s;display:block;position:relative}.ui-switch-thumb{background:var(--color-surface);width:18px;height:18px;box-shadow:var(--shadow-1);border-radius:50%;transition:transform .15s;position:absolute;top:3px;left:3px}.ui-switch[aria-checked=true]{color:var(--color-text)}.ui-switch[aria-checked=true] .ui-switch-track{background:var(--color-action)}.ui-switch[aria-checked=true] .ui-switch-thumb{transform:translate(16px)}.ui-switch-state{text-align:left;min-width:22px}.ui-switch:disabled{cursor:not-allowed;opacity:.5}.ui-switch:focus-visible{outline:2px solid var(--color-action);outline-offset:2px}.ui-switch:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion:reduce){.ui-switch-track,.ui-switch-thumb{transition:none}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}a.ui-button{text-decoration:none}.top-actions .icon-button{justify-content:center;align-items:center;display:inline-flex}.top-actions svg{width:22px;height:22px}#nav a{align-items:center;display:flex}#nav a svg{flex-shrink:0;width:18px;height:18px}.mobile-brand{display:none}.section-heading a,.back,.all-courses{align-items:center;gap:6px;display:inline-flex}.row-icon svg,.group-symbol svg{width:24px;height:24px}.list-row>svg{flex-shrink:0}.row-main{min-width:0}button,a,input,textarea{touch-action:manipulation}.course-delete-actions{border-top:1px solid var(--color-border);margin-top:24px;padding-top:16px}.form-error:empty{display:none}.conversation p{white-space:pre-wrap;overflow-wrap:anywhere}#course-switcher .field{margin:0}#course-switcher .all-courses{margin-bottom:12px}.onboarding-card h1{margin:20px 0 12px}@media (width<=760px){.mobile-brand{display:block}.top-actions>button{padding:8px;font-size:13px}#nav a{flex-direction:column}#nav a span{text-overflow:ellipsis;text-align:center;max-width:100%;line-height:1.15;overflow:hidden}#nav:has(a:nth-child(8)){gap:0}#nav:has(a:nth-child(8)) a{letter-spacing:-.02em;padding-inline:0;font-size:10px}#nav a svg{width:22px;height:22px}#course-switcher .all-courses{display:none}#course-switcher>.field,#course-switcher>[data-select-field]{width:100%}}@media print{.sidebar,.topbar,.page-heading,.filters{display:none!important}.workspace{margin:0!important}#content{padding:0!important}.panel{break-inside:avoid}.table-scroll{overflow:visible}body{background:#fff}}@media (width<=760px){#course-switcher .ui-select-field{gap:0}#course-switcher .ui-select-field>label{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}html[data-shell=app] .shell-home,html:not([data-shell=app]) .shell-app{display:none}.shell-app{opacity:0;justify-content:center;align-items:center;min-height:100vh;animation:.3s .4s both shell-fade-in;display:flex}@keyframes shell-fade-in{to{opacity:1}}
