:root{--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-lg:1rem;--radius-control:8px;--radius-panel:12px;--control-height:44px;--muted:#536176;--line:#dce3ed;--canvas:#f5f7fb}body{background:var(--canvas);font-size:var(--text-base);line-height:1.6}button,input,select,textarea{font-family:inherit}input,textarea{caret-color:var(--blue-600)}input::placeholder,textarea::placeholder{color:#66758b;opacity:1}::selection{color:#123b99;background:#dbe7ff}a{text-underline-offset:3px}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--blue-600);outline-offset:3px}button:disabled{cursor:not-allowed}input,select,textarea{min-width:0;max-width:100%}h1,h2,h3{text-wrap:balance}.appShell{grid-template-columns:232px minmax(0,1fr);min-height:100dvh;display:grid}.appSidebar{scrollbar-width:thin;flex-direction:column;height:100dvh;padding:28px 16px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.appDesktopBrand{padding:0 12px}.appSideNav{flex-direction:column;gap:5px;margin-top:36px;display:flex;overflow:visible}.appSideNav a{border-radius:var(--radius-control);min-height:46px;font-size:var(--text-base);white-space:normal;align-items:center;gap:12px;padding:11px 12px;font-weight:500;line-height:1.45;display:flex}.appSideNav a svg{color:#6a7b91;flex-shrink:0}.appSideNav a:hover{color:var(--blue-700);background:#f0f4fc}.appSideNav a.active{color:var(--blue-700);background:var(--blue-100);font-weight:650}.appSideNav a.active svg{color:currentColor}.appSidebarFooter{margin-top:auto;padding-top:32px}.appRoleLabel{border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-xs);padding:16px 12px 4px;display:block}.appSidebar .logout{width:100%;min-height:44px;font-size:var(--text-sm);text-align:left;align-items:center;gap:12px;margin:0;padding:10px 12px;display:flex}.appLogoutError{color:#a32920;font-size:var(--text-xs);margin:8px 12px}.appMain{width:min(1440px,100%);min-width:0;margin-inline:auto;padding:36px 36px 64px;overflow:visible}.appMain:focus{outline:none}.appMain h1{letter-spacing:-.025em;overflow-wrap:anywhere;max-width:100%;margin:0 0 8px;font-size:28px;line-height:1.3}.appMain :is(.classSectionHeader,.classDetailHeader,.unitDetailHeader){margin-bottom:28px}.appMain :is(.classSectionHeader,.classDetailHeader,.unitDetailHeader)>a{margin-bottom:20px}.appMain :is(.classSectionHeader,.classDetailHeader,.unitDetailHeader) p{max-width:75ch;font-size:var(--text-base);line-height:1.65}.appMobileBar{display:none}.appSkipLink{z-index:1000;color:var(--blue-700);background:#fff;border-radius:8px;padding:12px 18px;position:fixed;top:-100px;left:16px;box-shadow:0 8px 24px #14243b26}.appSkipLink:focus{top:12px}.appMain :is(.moduleHeader,.dashboardHeader,.studentClassHeader,.studentWeekHeader,.profilePageHeader,.personalIdeHeader,.groupPageHeader){gap:20px;margin-bottom:28px}.appMain :is(.moduleHeader,.dashboardHeader,.studentClassHeader,.studentWeekHeader,.profilePageHeader,.personalIdeHeader) :is(h1,h2){letter-spacing:-.025em;overflow-wrap:anywhere;max-width:100%;margin:0;font-size:28px;line-height:1.3}.appMain :is(.moduleHeader,.dashboardHeader,.studentClassHeader,.profilePageHeader,.personalIdeHeader) p{max-width:75ch;color:var(--muted);font-size:var(--text-base);margin:8px 0 0;line-height:1.65}.appMain :is(.formPanel,.overviewPanel,.dashboardClassSection,.learningInsightCard,.adminPanel,.sectionPanel)>:is(h2,header h2){letter-spacing:-.02em;margin:0 0 16px;font-size:20px;line-height:1.4}.appMain :is(.contentMessage,.formError,.formSuccess){border-radius:var(--radius-control);font-size:var(--text-base);overflow-wrap:anywhere;margin-block:16px;padding:14px 16px;line-height:1.6}.appMain :is(.primaryButton,.secondaryButton,.dangerButton,.groupSecondary,.inlineAction,.slideOpenButton,.addClassResourceButton,.removeClassResourceButton){min-height:var(--control-height);border-radius:var(--radius-control);font-size:var(--text-sm);white-space:normal;padding:10px 16px;font-weight:600;line-height:1.4}.appMain a:is(.primaryButton,.secondaryButton){justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.appMain :is(.rowActions,.unitActions,.classCardActions,.keyActions,.studentRowActions,.phaseHeaderActions){flex-wrap:wrap;align-items:center;gap:8px;display:flex}.appMain :is(.rowActions,.unitActions,.classCardActions,.keyActions,.studentRowActions)>:is(a,button){min-height:40px;font-size:var(--text-sm);border-radius:7px;justify-content:center;align-items:center;padding:8px 12px;line-height:1.4;display:inline-flex}.appMain :is(.formPanel,.settingsPanel,.adminPanel,.compactForm,.profileForm,.practiceCreateForm,.practiceAiGenerate){border-radius:var(--radius-panel);box-shadow:none;padding:24px}.appMain :is(.formFields,.formGrid,.profileFormGrid,.adminSettingsGrid,.compactForm,.practiceCreateGrid){gap:20px}.appMain :is(.formFields,.formGrid,.profileFormGrid,.adminSettingsGrid,.compactForm,.practiceCreateGrid)>*,.appMain label{min-width:0}.appMain :is(.formPanel,.settingsPanel,.adminPanel,.compactForm,.profileForm,.formFields,.formGrid,.filterBar,.liveViewToolbar,.geminiKeyForm,.practiceCreateForm,.practiceAiGenerate,.profileFormGrid) :is(input:not([type=checkbox]):not([type=radio]),select,textarea){width:100%;min-height:var(--control-height);border-radius:var(--radius-control);font-size:var(--text-base);padding:10px 12px;line-height:1.5}.appMain :is(.formPanel,.settingsPanel,.adminPanel,.compactForm,.profileForm,.formFields,.formGrid) label{font-size:var(--text-sm);font-weight:600;line-height:1.5}.appMain input:is([type=checkbox],[type=radio]){width:18px;height:18px;min-height:18px;accent-color:var(--blue-600);flex-shrink:0}.compactForm{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.compactForm>h2,.compactForm>.formFooter{grid-column:1/-1}.compactForm>h2{letter-spacing:-.02em;margin:0;font-size:20px}.compactForm label{gap:8px;display:grid}.formFooter{flex-wrap:wrap;gap:10px;padding-top:4px;display:flex}.compactForm button{justify-self:start}.filterBar{flex-wrap:wrap;gap:12px}.filterBar select{flex:180px;min-width:0}.filterBar input{flex:2 240px;min-width:0}.appMain :is(.adminSettings,.adminAccountForm,.telegramForm,.resourceFields,.unitFormGrid,.classForm,.personalProjectForm){gap:20px}.appMain :is(.adminSettings,.adminAccountForm,.telegramForm,.geminiKeyForm,.personalProjectForm,.aiExerciseGenerator){padding:24px}.appMain form label{font-size:var(--text-sm);align-content:start}.appMain form :is(input:not([type=checkbox]):not([type=radio]),select,textarea){min-height:44px;font-size:var(--text-base);font-weight:400}.appMain .adminSettings :is(input:not([type=checkbox]),select){height:44px;padding:10px 12px}.appMain :is(.adminSection,.profileCard,.personalProjects,.practiceLibrary){border-radius:var(--radius-panel);box-shadow:none}.appMain :is(.adminSection,.profileCard,.personalProjects,.practiceLibrary)>header{flex-wrap:wrap;gap:16px;padding:20px 24px}.appMain :is(.adminSection,.profileCard,.personalProjects,.practiceLibrary)>header h2{font-size:20px;line-height:1.4}.appMain .geminiKeyCards>article{flex-wrap:wrap;gap:20px;padding:20px 24px}.appMain .geminiKeyCards>article>div:first-child{overflow-wrap:anywhere;flex:260px;min-width:0}.appMain .practiceCreateWorkspace{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:28px}.appMain .personalProjectForm,.appMain .aiExerciseGenerator{border-radius:var(--radius-panel);background:#fff}.appMain .aiExerciseGenerator p{color:var(--muted)}.appMain .aiExerciseGenerator textarea{min-width:0;font-size:var(--text-base)}.appMain .projectRowActions{flex-wrap:wrap;gap:8px}.appMain :is(.dataTable,.unitTable,.studentTable,.adminTable){scrollbar-color:#a7b6cc var(--canvas);border-radius:var(--radius-panel);max-width:100%;overflow-x:auto}.appMain .tableRow{grid-template-columns:95px minmax(220px,2fr) minmax(140px,1fr) 100px 150px;min-width:780px;display:grid}.appMain .unitRow{grid-template-columns:48px minmax(220px,1fr) 100px 90px 100px 286px;min-width:940px;display:grid}.appMain .studentRow{grid-template-columns:130px minmax(180px,1.4fr) minmax(100px,.7fr) 130px 120px;min-width:780px;display:grid}.appMain .adminTable>div{grid-template-columns:minmax(240px,1.5fr) 100px 100px 210px;min-width:700px;display:grid}.appMain :is(.tableHead,.unitTableHead,.studentTableHead,.adminTableHead){color:var(--muted);text-transform:none;letter-spacing:0;font-size:var(--text-xs);background:#f8fafc;font-weight:600;display:grid}.appMain :is(.tableRow,.unitRow,.studentRow){font-size:var(--text-sm);font-variant-numeric:tabular-nums;align-items:center;gap:16px;padding:16px 20px}.appMain :is(.tableRow,.unitRow,.studentRow)>*{overflow-wrap:anywhere;min-width:0}.appMain :is(.listCard,.classCard){border-radius:var(--radius-panel);box-shadow:none;flex-wrap:wrap;gap:20px;padding:24px}.appMain :is(.listCard,.classCard)>div:first-child{flex:260px;min-width:0}.appMain :is(.listCard,.classCard) h2{overflow-wrap:anywhere;font-size:18px;line-height:1.4}.appMain .classSubnav{scrollbar-width:thin;gap:4px;margin-bottom:24px}.appMain .classSubnav a{min-height:44px;font-size:var(--text-sm);align-items:center;padding:10px 14px;display:inline-flex}.appMain .classResourceList>div:not(.phaseEmpty){grid-template-columns:28px minmax(0,1fr);gap:12px;padding:20px}.appMain .classResourceList .classResourceControls{flex-wrap:wrap;grid-column:2;justify-content:flex-start;gap:10px;display:flex}.appMain .classResourceList form{flex-wrap:wrap}.appMain .classPhase>header{flex-wrap:wrap;align-items:flex-start;gap:20px}.appMain .openControls{flex-wrap:wrap;justify-content:flex-start}.appMain .openControls label{min-width:0}.classPhaseIdentity,.phaseHeader>div{overflow-wrap:anywhere;min-width:0}.classWeekNav{scrollbar-width:thin;max-height:calc(100dvh - 100px);overflow-y:auto}.classWeekNav button{white-space:normal;overflow-wrap:anywhere}.appMain :is(.summaryGrid,.studentSummaryGrid){gap:16px;margin-block:24px}.appMain :is(.summaryGrid,.studentSummaryGrid)>article{border-radius:var(--radius-panel);min-height:132px;box-shadow:none;padding:20px}.appMain :is(.summaryGrid,.studentSummaryGrid) article strong{letter-spacing:-.025em;font-variant-numeric:tabular-nums;font-size:32px;line-height:1.25}.appMain :is(.summaryGrid,.studentSummaryGrid) article>span{font-size:var(--text-sm);font-weight:500}.appMain :is(.summaryGrid,.studentSummaryGrid) article small{font-size:var(--text-xs)}.appMain .clickableBugCard:hover{box-shadow:none;background:#f8faff;transform:none}.appMain .personalIdeBanner{border-radius:var(--radius-panel);box-shadow:none;background:#204ebc;padding:24px}.appMain .personalIdeBanner p{color:#e0e9ff;font-size:var(--text-sm);max-width:70ch}.appMain .personalIdeBanner h2{margin:0 0 6px;font-size:22px}.appMain .personalIdeBanner a{min-height:44px;font-size:var(--text-sm);justify-content:center;align-items:center;padding:10px 16px;display:inline-flex}.appMain :is(.studentClassCard,.studentPhaseCard,.learningInsightCard,.overviewPanel,.liveScreenGrid>article){border-radius:var(--radius-panel);box-shadow:none}.appMain .profileLayout{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.appMain .profileHeader{background:0 0;padding:0}.appMain .adminOverview{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.appMain .adminOverview strong{font-size:32px}.appMain :is(.geminiKeyCard,.telegramCard){flex-wrap:wrap;gap:16px;min-width:0}.appMain :is(.geminiKeyCard,.telegramCard)>div{overflow-wrap:anywhere;min-width:0}.appMain .personalIdeTabs{border:1px solid var(--line);background:#fff;border-radius:10px;gap:8px;padding:6px}.appMain :is(.personalIdeTabs,.profileTabs) button{min-height:44px;font-size:var(--text-sm);padding:10px 16px}.appMain :is(.personalIdeTabs,.profileTabs) button.active{color:var(--blue-700);background:var(--blue-100);box-shadow:none}.appMain .personalIdeTabs>button.active>span{color:var(--blue-700);background:#d5e1ff}.appMain .personalIdeTabs b{font-size:var(--text-sm)}.appMain .studentSummaryGrid article>span{text-transform:none;letter-spacing:0}.appMain .profileCard>header{align-items:flex-start;min-height:112px}.appMain .profileCard>header p{margin-bottom:0}.appMain .learningInsightCard :is(h3,ul){font-size:var(--text-sm)}.appMain .unitHead{font-size:var(--text-xs);letter-spacing:0;text-transform:none;display:grid}.appMain .classWeekNav header strong{letter-spacing:0;font-family:inherit;font-weight:600}.templateResourcePicker{border:1px solid var(--line);background:#f8fafc;border-radius:10px;margin-top:16px;overflow:hidden}.appMain .resourcePicker{margin:0}.appMain :is(.exerciseModal,.bugDetailModal,.resourcePicker) h2{font-size:20px;line-height:1.4}.appMain .exerciseMarkdown{font-size:var(--text-base);overflow-wrap:anywhere;line-height:1.75}.appMain .exerciseMarkdown pre{max-width:100%;overflow-x:auto}.appMain .groupAssignmentFilters{grid-template-columns:minmax(0,2fr) minmax(180px,1fr)}.appMain :is(.groupTable th,.groupTable td){padding:16px}.authCard{border:0;border-radius:16px;padding:32px;box-shadow:0 16px 48px #253e6414}.authTitle{letter-spacing:-.03em;margin:0 0 12px;font-size:32px;line-height:1.25}.authForm input,.authForm .primaryButton{min-height:48px;font-size:var(--text-base)}.codeIde .ideTopbar{grid-template-columns:auto minmax(160px,1fr) auto;gap:20px}.codeIde .ideTopbar nav{flex-wrap:wrap;gap:8px;display:flex}.codeIde .ideTopbar button{min-height:36px;font-size:var(--text-xs)}.codeIde .ideTopbar nav .aiGradeButton{background:#3659b9;border-color:#5477d7}.codeIde .pythonFileLabel{color:#e8c66a;font:600 12px Cascadia Code,Consolas,monospace}.codeIde .ideBody{grid-template-columns:170px minmax(0,1fr) minmax(280px,34%)}.codeIde.editorExpanded .ideBody{grid-template-columns:minmax(0,1fr)}.codeIde{grid-template-rows:minmax(64px,auto) auto minmax(0,1fr)}@media (max-width:1200px){.appMain{padding:28px 24px 56px}.appMain :is(.profileLayout,.studentOverviewLayout){grid-template-columns:minmax(0,1fr)}.appMain .adminSettingsGrid,.appMain .adminSettings{grid-template-columns:repeat(2,minmax(0,1fr))}.appMain .geminiKeyForm{grid-template-columns:minmax(0,1fr)}.appMain .permissionGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.appMain .importLayout{grid-template-columns:minmax(0,1fr)}.appMain .classWorkspace{grid-template-columns:190px minmax(0,1fr)}.codeIde .ideBody{grid-template-columns:140px minmax(0,1fr) minmax(260px,34%)}}@media (max-width:1000px){.appShell{grid-template-columns:minmax(0,1fr);display:block}.appMobileBar{z-index:35;border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:16px;min-height:68px;padding:12px 24px;display:flex;position:sticky;top:0}.appMenuToggle{border:1px solid var(--line);min-height:44px;color:var(--ink);font-size:var(--text-sm);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:inline-flex}.appSidebar{border-right:0;border-bottom:1px solid var(--line);width:100%;height:auto;max-height:70dvh;padding:16px 24px;display:none;position:relative}.appShell[data-nav-open=true] .appSidebar{display:flex}.appDesktopBrand,.appRoleLabel{display:none}.appSideNav{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.appSidebarFooter{border-top:1px solid var(--line);margin:8px 0 0;padding:8px 0 0}.appMain{min-height:calc(100dvh - 68px)}.appMain .studentSummaryGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.appMain .liveViewToolbar{grid-template-columns:minmax(0,1fr)}.codeIde .ideTopbar{grid-template-columns:auto minmax(0,1fr)}.codeIde .ideTopbar nav{grid-column:1/-1}}@media (max-width:760px){.appMain{padding:24px 16px 40px}.appMain h1{font-size:24px}.appMobileBar{padding-inline:16px}.appSidebar{padding:12px 16px}.appSideNav{grid-template-columns:minmax(0,1fr)}.appMain :is(.moduleHeader,.dashboardHeader,.studentClassHeader,.studentWeekHeader,.profilePageHeader,.personalIdeHeader){flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px}.appMain :is(.moduleHeader,.dashboardHeader,.studentClassHeader,.studentWeekHeader,.profilePageHeader,.personalIdeHeader) :is(h1,h2){font-size:24px}.appMain :is(.formFields,.formGrid,.profileFormGrid,.adminSettingsGrid,.compactForm,.practiceCreateGrid,.adminOverview,.groupAssignmentFilters,.permissionGrid),.appMain :is(.adminSettings,.adminAccountForm,.telegramForm,.practiceCreateWorkspace){grid-template-columns:minmax(0,1fr)}.appMain :is(.adminSettings,.adminAccountForm,.telegramForm,.geminiKeyForm,.personalProjectForm,.aiExerciseGenerator){padding:20px}.appMain .classResourceList .classResourceControls{grid-column:1/-1}.appMain :is(.wideField,.fullWidth,.compactForm>h2,.compactForm>.formFooter){grid-column:1}.appMain :is(.formPanel,.settingsPanel,.adminPanel,.compactForm,.profileForm,.practiceCreateForm,.practiceAiGenerate,.listCard,.classCard){padding:20px}.appMain .classWorkspace{grid-template-columns:minmax(0,1fr)}.classWeekNav{max-height:240px;position:static}.appMain .personalIdeBanner{flex-direction:column;align-items:stretch;gap:20px}.appMain .personalIdeBanner>div{align-items:flex-start}.appMain .personalIdeBanner a{width:100%}.appMain :is(.rowActions,.unitActions,.classCardActions,.keyActions,.studentRowActions)>:is(a,button){min-height:44px}.appMain :is(.tableRow,.unitRow,.studentRow)>*{grid-column:auto}.appMain :is(.summaryGrid,.studentSummaryGrid){grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.appMain :is(.summaryGrid,.studentSummaryGrid)>article{padding:16px}.appMain :is(.formPanel,.profileForm,.compactForm,.filterBar,.studyGroups,.geminiKeyForm,.profileFormGrid) :is(input:not([type=checkbox]):not([type=radio]),select,textarea),.appMain :is(.adminSettings,.adminAccountForm,.resourceFields,.unitFormGrid,.personalProjectForm,.aiExerciseGenerator) :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:16px}.codeIde .ideBody{grid-template-columns:120px minmax(320px,1fr) minmax(280px,75vw);overflow-x:auto}.codeIde .ideTopbar button{min-height:40px}.authCard{padding:28px 24px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.livePulse,.liveViewCounter i,.upcomingLiveBadge,.liveUpcomingBadge{animation:none}.clickableBugCard{transition:none}}
