:root{--text:#14532d;--text-h:#052e16;--text-muted:#3d6b4f;--bg:#ecfdf5;--surface:#f7fef9;--surface-elevated:#dcfce7;--border:#bbf7d0;--border-strong:#86efac;--code-bg:#e8fdf0;--accent:#16a34a;--accent-hover:#15803d;--accent-bg:#22c55e2e;--accent-border:#22c55e73;--success:#166534;--danger:#b91c1c;--shadow:0 4px 14px #15803d1f;--editor-bg:#0d2818;--editor-text:#ecfdf5;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;font:17px/1.55 var(--sans);letter-spacing:.01em;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#bbf7d0;--text-h:#ecfdf5;--text-muted:#86efac;--bg:#052e16;--surface:#0a3d22;--surface-elevated:#14532d;--border:#166534;--border-strong:#22c55e;--code-bg:#0f2f1c;--accent:#4ade80;--accent-hover:#86efac;--accent-bg:#4ade8026;--accent-border:#4ade8066;--success:#86efac;--danger:#fca5a5;--shadow:0 4px 14px #00000059;--editor-bg:#020617;--editor-text:#ecfdf5}.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}body{background:var(--bg);min-height:100vh;margin:0}#root{min-height:100vh}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:600}h1{margin:0}p{color:var(--text);margin:0}code{font-family:var(--mono);border-radius:var(--radius-sm);background:var(--code-bg);border:1px solid var(--border);padding:2px 6px;font-size:.92em}.forgotPassword h2{margin:0 0 12px}.forgotTabs{gap:8px;margin-bottom:14px;display:flex}.forgotTabs button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);cursor:pointer;color:var(--text-muted);flex:1;padding:8px 10px;font-weight:600}.forgotTabs button.active{background:var(--accent-bg);border-color:var(--border-strong);color:var(--text-h)}.forgotForm{flex-direction:column;gap:12px;display:flex}.forgotForm label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:14px;font-weight:600;display:flex}.forgotHint,.forgotSuccess,.forgotDev{color:var(--text-muted);margin:0;font-size:13px;line-height:1.45}.forgotSuccess{color:var(--success)}.forgotBack{margin-top:12px}.authOverlay{z-index:10000;min-height:100dvh;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));box-sizing:border-box;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#052e1673;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.authModal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;max-width:400px;max-height:min(90vh,100dvh - 32px);box-shadow:var(--shadow);align-self:center;margin:auto;padding:24px;position:relative;overflow:auto}.closeButton{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px;font-size:20px;transition:background .2s;position:absolute;top:12px;right:12px}.closeButton:hover{background:var(--accent-bg);color:var(--text-h)}.authModal h2{text-align:center;color:var(--text-h);margin:0 0 20px}.authForm{flex-direction:column;gap:16px;display:flex}.authForm label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.authCheckboxRow{cursor:pointer;color:var(--text);flex-direction:row;align-items:flex-start;gap:10px;font-size:13px;line-height:1.45;display:flex}.authCheckboxRow input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;margin-top:3px}.authCheckboxText{flex:1}.authTermsLink{color:var(--accent-hover);text-decoration:underline}.authTermsLink:hover{color:var(--accent)}.errorMessage{color:var(--danger);text-align:center;margin:0;font-size:14px}.authForgotLink{align-self:flex-start;margin-top:4px}.authSwitch{text-align:center;color:var(--text-muted);margin:16px 0 0;font-size:14px}.linkButton{color:var(--accent-hover);cursor:pointer;font-size:inherit;background:0 0;border:none;text-decoration:underline}.adminHint{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-elevated);margin-top:20px;padding:12px}.adminHint summary{cursor:pointer;color:var(--text-muted);font-size:14px}.adminHint p{color:var(--text-muted);margin:8px 0 0;font-size:13px}.adminHint code{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);padding:2px 6px}.protectedRoute{justify-content:center;align-items:center;min-height:60vh;padding:40px 20px;display:flex}.authPrompt{text-align:center;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;max-width:420px;box-shadow:var(--shadow);padding:26px 30px}.authPrompt h2{margin-top:0}.authPrompt p{color:var(--text-muted)}.loading{min-height:40vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.userButton{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);color:var(--text-h);cursor:pointer;padding:8px 14px;transition:background .2s,border-color .2s}.userButton:hover{background:var(--accent-bg);border-color:var(--border-strong)}.userMenu{align-items:center;gap:12px;display:flex}.userInfo{color:var(--text-muted);align-items:center;gap:8px;font-size:12px;display:flex}.userAvatar{font-size:26px;line-height:1}.userProfileLink{align-items:center;text-decoration:none;display:inline-flex}.userName{color:var(--text-h);font-weight:600}.userRole{font-size:11px}.userActions{gap:8px;display:flex}.themeToggle{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);cursor:pointer;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;transition:background .15s,border-color .15s;display:inline-flex}.themeToggle:hover{background:var(--accent-bg);border-color:var(--border-strong)}.notificationBellWrap{position:relative}.notificationBell{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);cursor:pointer;width:38px;height:38px;font-size:18px;position:relative}.notificationBadge{background:var(--danger);color:#fff;border-radius:9px;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-4px}.notificationPanel{z-index:100;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);width:min(320px,90vw);max-height:360px;box-shadow:var(--shadow);padding:12px;position:absolute;top:calc(100% + 8px);right:0;overflow:auto}.notificationPanelHeader{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.notificationList{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.notificationItem{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);gap:8px;padding:10px;display:flex}.notificationItem.warning{background:#f59e0b1f;border-color:#f59e0b}.notificationItem.success{border-color:var(--border-strong);background:var(--accent-bg)}.notificationItemBody p{color:var(--text-muted);margin:4px 0;font-size:13px}.notificationDismiss{cursor:pointer;color:var(--text-muted);background:0 0;border:none;font-size:18px}.landing{flex-direction:column;gap:28px;padding:32px 0 48px;display:flex}.landingHeader{text-align:center;flex-direction:column;align-items:center;gap:12px;max-width:720px;margin:0 auto;display:flex}.landingHeader h1{margin:0;font-size:42px}.landingHeader p{color:var(--text-muted);margin:0;font-size:17px;line-height:1.55}.landingInnovations{border-radius:var(--radius-md);border:1px solid var(--accent-border);background:linear-gradient(135deg, var(--accent-bg) 0%, var(--surface) 55%);box-shadow:var(--shadow);padding:20px 22px}.innovationsBadge{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-hover);background:var(--surface);border:1px solid var(--accent-border);margin-bottom:10px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-block}.landingInnovations h2{margin:0 0 8px;font-size:24px}.innovationsLead{color:var(--text-muted);max-width:720px;margin:0 0 16px;line-height:1.55}.langShowcase{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.langShowcaseItem{margin:0}.langShowcaseCard{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);height:100%;color:inherit;box-sizing:border-box;flex-direction:column;gap:6px;padding:14px;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex}.langShowcaseCard:hover{border-color:var(--accent);box-shadow:var(--shadow)}.langShowcaseName{color:var(--text-h);font-size:17px;font-weight:700}.langShowcaseDesc{color:var(--text-muted);flex:1;font-size:13px;line-height:1.45}.langShowcaseAction{color:var(--accent-hover);font-size:13px;font-weight:600}.landingTasks{flex-direction:column;gap:20px;display:flex}.landingTasksHeader h2{margin:0 0 6px;font-size:24px}.landingTasksHeader p{color:var(--text-muted);margin:0}.landingTasksHint{color:var(--text-muted);font-style:italic}.landingLangBlock{flex-direction:column;gap:10px;display:flex}.landingLangBlockHead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.landingLangBlockHead h3{margin:0;font-size:18px}.landingLangLink{color:var(--accent-hover);font-size:14px;font-weight:600;text-decoration:none}.landingLangLink:hover{text-decoration:underline}.landingTaskGrid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;display:grid}.landingTaskCard{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:inherit;flex-direction:column;gap:6px;padding:12px 14px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.landingTaskCard:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}.landingTaskLang{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-hover);font-size:11px;font-weight:700}.landingTaskTitle{color:var(--text-h);font-size:15px;font-weight:700}.landingTaskMeta{color:var(--text-muted);font-size:12px}.landingCards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;display:grid}.card{background:var(--surface);border-radius:var(--radius-md);border:1px solid var(--border);box-shadow:var(--shadow);padding:16px 18px}.card h2{margin:0 0 8px;font-size:18px}.card p{color:var(--text-muted)}.landingFooter{border-top:1px solid var(--border);text-align:center;color:var(--text-muted);padding-top:14px}@media (width<=900px){.landingHeader h1{font-size:32px}}.taskCard{text-align:left;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text-h);cursor:pointer;flex-direction:column;gap:8px;padding:12px;transition:border-color .15s,box-shadow .15s;display:flex}.taskCard:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.taskCard.active{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 1px var(--accent-border)}.taskTitleRow{justify-content:space-between;align-items:center;gap:8px;display:flex}.taskTitle{text-align:left;font-size:15px;font-weight:700}.taskSolvedBadge{border-radius:var(--radius-sm);color:#fff;background:var(--success);flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:800;display:inline-flex}.taskCard.solved:not(.active){border-color:#86efac}.taskExcerpt{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.taskCardFooter{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.taskLangBadge{border-radius:var(--radius-sm);background:var(--accent-bg);color:var(--accent-hover);border:1px solid var(--accent-border);padding:2px 8px;font-size:11px;font-weight:700}.taskCategory{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.taskDifficulty{border-radius:var(--radius-sm);border:1px solid var(--border);padding:2px 8px;font-size:11px;font-weight:700}.taskDifficulty.easy{color:#166534;background:#dcfce7}.taskDifficulty.medium{color:#854d0e;background:#fef9c3}.taskDifficulty.hard{color:#991b1b;background:#fee2e2}[data-theme=dark] .taskDifficulty.easy{color:#86efac;background:#22c55e33}[data-theme=dark] .taskDifficulty.medium{color:#fde047;background:#eab30833}[data-theme=dark] .taskDifficulty.hard{color:#fca5a5;background:#ef444433}.codeEditor{border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);background:var(--editor-bg);overflow:hidden}.codeEditor .token.comment,.codeEditor .token.prolog,.codeEditor .token.doctype,.codeEditor .token.cdata{color:#86efac}.codeEditor .token.punctuation{color:#bbf7d0}.codeEditor .token.property,.codeEditor .token.tag,.codeEditor .token.boolean,.codeEditor .token.number,.codeEditor .token.constant,.codeEditor .token.symbol{color:#6ee7b7}.codeEditor .token.selector,.codeEditor .token.attr-name,.codeEditor .token.string,.codeEditor .token.char,.codeEditor .token.builtin{color:#a7f3d0}.codeEditor .token.operator,.codeEditor .token.entity,.codeEditor .token.url,.codeEditor .token.variable{color:#fde68a}.codeEditor .token.atrule,.codeEditor .token.attr-value,.codeEditor .token.function,.codeEditor .token.class-name{color:#bef264}.codeEditor .token.keyword{color:#4ade80}.codeEditorTextarea,.codeEditor pre{min-height:260px;font-size:14px;line-height:1.5;color:var(--editor-text)!important}.codeEditorTextarea{caret-color:var(--editor-text);outline:none;background:0 0!important}.aiAssistant{border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-elevated);width:100%;box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:16px;display:flex}.assistantHeader{flex-direction:column;gap:6px;display:flex}.aiSettings{flex-direction:column;gap:10px;padding:10px 0;display:flex}.aiStatus{margin:0;font-size:13px;font-weight:600;line-height:1.45}.aiStatus.ok{color:var(--success)}.aiStatus.warn{color:var(--accent-hover)}.aiKeyRow{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.aiKeyLabel{min-width:200px;color:var(--text-muted);flex-direction:column;flex:1;gap:6px;font-size:12px;display:flex}.aiKeyLabel input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-h);padding:8px 10px;font-size:13px}.aiKeyNotice{color:var(--accent-hover);margin:0;font-size:12px}.aiToolbar{justify-content:flex-end;display:flex}.chatWindow{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);flex-direction:column;gap:10px;height:200px;padding:12px;display:flex;overflow:auto}.chatMessage{border-radius:var(--radius-sm);max-width:90%;padding:10px 12px;font-size:14px;line-height:1.45}.chatMessage.user{background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--text-h);align-self:flex-end}.chatMessage.assistant{background:var(--surface-elevated);border:1px solid var(--border);color:var(--text);align-self:flex-start}.chatInputRow{gap:10px;display:flex}.chatInputRow input{flex:1}.chatRow{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);padding:10px 12px}.chatRow.user{background:var(--accent-bg);border-color:var(--accent-border)}.chatRow.assistant{background:var(--surface-elevated)}.chatRow.error{border-color:color-mix(in srgb, var(--danger,#c62828) 55%, var(--border));background:color-mix(in srgb, var(--danger,#c62828) 8%, var(--surface-elevated))}.chatRow.error .chatText{color:var(--danger,#c62828)}.chatRowHeader{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.chatLabel{color:var(--accent-hover);text-transform:uppercase;font-size:12px;font-weight:700}.chatMeta{align-items:center;gap:8px;display:flex}.chatSource{border-radius:var(--radius-sm);background:var(--accent-bg);color:var(--accent-hover);border:1px solid var(--border-strong);padding:2px 6px;font-size:11px}.chatSource.local{background:var(--surface);color:var(--text-muted);border-color:var(--border)}.linkLike{color:var(--accent-hover);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.chatText{color:var(--text);white-space:pre-wrap;font-size:14px;line-height:1.5}.aiFooter{flex-direction:column;gap:10px;display:flex}.aiFooter textarea{min-height:72px;font-family:var(--sans)}.chatWindow .hint{color:var(--text-muted);font-size:14px;font-style:italic}.taskTheory{border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--accent-bg);overflow:hidden}.taskTheoryToggle{width:100%;color:var(--text-h);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:10px 14px;font-size:15px;font-weight:700;display:flex}.taskTheoryBody{color:var(--text);padding:0 14px 14px;font-size:14px;line-height:1.55}.taskTheoryBody p{margin:0 0 8px}.taskHints{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:14px}.taskHintsHeader{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.taskHintsHeader h3{margin:0;font-size:16px}.taskHintsMeta{color:var(--text-muted);font-size:12px;font-weight:600}.taskHintsList{flex-direction:column;gap:10px;margin:0 0 12px;padding-left:20px;display:flex}.taskHintItem{border-radius:var(--radius-sm);background:var(--surface-elevated);border:1px solid var(--border);padding:10px}.taskHintLevel{text-transform:uppercase;color:var(--accent-hover);margin-bottom:4px;font-size:11px;font-weight:700;display:block}.taskHintText{font-size:14px;line-height:1.45}.taskHintsEmpty{color:var(--text-muted);margin:0 0 12px;font-size:13px;font-style:italic}.taskHintsError{color:var(--danger);margin:8px 0 0;font-size:13px}.student{flex-direction:column;gap:18px;display:flex}.studentHeader{flex-direction:column;gap:6px;display:flex}.studentHeader h1{margin:0;font-size:28px}.studentHeader p{color:var(--text-muted)}.studentGrid{grid-template-columns:300px 1fr;gap:16px;display:grid}.studentSidebar{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);max-height:calc(100vh - 110px);box-shadow:var(--shadow);align-self:flex-start;padding:14px;position:sticky;top:88px;overflow:auto}.sidebarHeader{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:12px;display:flex}.sidebarHeader .hint{color:var(--text-muted);font-size:12px}.taskSearch{flex-direction:column;gap:4px;width:100%;display:flex}.taskSearch input{width:100%;font-size:14px}.draftNotice{color:var(--success);margin:6px 0 0;font-size:13px;font-style:normal}.filters{flex-direction:column;gap:8px;width:100%;display:flex}.filters label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.filters select{font-size:14px}.languageTabs{flex-wrap:wrap;gap:6px;width:100%;display:flex}.languageTab{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);min-width:fit-content;color:var(--text-muted);cursor:pointer;flex:auto;padding:7px 10px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,color .15s}.languageTab:hover{border-color:var(--border-strong);color:var(--text-h)}.languageTab.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent-hover)}.languageSection{flex-direction:column;gap:8px;display:flex}.languageSectionTitle{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-hover);background:var(--accent-bg);border-radius:var(--radius-sm);border:1px solid var(--accent-border);margin:4px 0 0;padding:6px 8px;font-size:12px;font-weight:700}.languageSectionTasks{flex-direction:column;gap:8px;display:flex}.taskList{flex-direction:column;gap:12px;display:flex}.studentMain{flex-direction:column;gap:14px;display:flex}.taskMeta{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:14px 16px}.taskMetaTop{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.taskMeta h2{margin:0;font-size:22px}.languageBadge{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--accent-hover);background:var(--accent-bg);border:1px solid var(--accent-border);white-space:nowrap;align-items:center;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.taskDescription{color:var(--text);margin:10px 0 0;line-height:1.55}.taskButtons{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.editorArea{grid-template-columns:1fr;gap:14px;display:grid}.editorSecurityNote{color:var(--accent-hover);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--accent-bg);margin:0;padding:10px 12px;font-size:13px;line-height:1.45}.studentError{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);padding:18px}.studentError .hint{color:var(--text-muted);margin:12px 0 16px}.studentError a.primaryButton{text-align:center;text-decoration:none;display:inline-block}.resultPanel{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:14px}.resultPanel h3{margin-top:0;font-size:16px}.resultBlock{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);padding:12px}.resultBlock.success{background:#f0fdf4;border-color:#86efac}.resultBlock.failure{background:#fef2f2;border-color:#fecaca}.resultMessage{white-space:pre-wrap;margin:0 0 10px;font-weight:600;line-height:1.45}.resultBlock.success .resultMessage{color:var(--success)}.resultBlock.failure .resultMessage{color:var(--danger)}.logs{border-top:1px solid var(--border);max-height:160px;margin-top:10px;padding-top:10px;overflow:auto}.logHeader{color:var(--text-muted);margin-bottom:6px;font-size:12px}.logLine{color:var(--text-h);background:var(--code-bg);border-radius:var(--radius-sm);border:1px solid var(--border);margin:0;padding:6px 8px;font-size:13px}.trace{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);margin-top:10px;padding:8px}.hint{color:var(--text-muted);font-style:italic}.achievementToast{border-radius:var(--radius-sm);background:var(--accent-bg);border:1px solid var(--border-strong);margin-top:8px;padding:12px 14px}.achievementToast ul{margin:6px 0 0;padding-left:18px}.achievementToast li{margin:4px 0}.studentMobileBar{display:none}@media (width<=960px){.studentMobileBar{display:block}.studentGrid{grid-template-columns:1fr}.studentSidebar{max-height:none;display:none;position:relative;top:auto}.studentSidebar.mobileOpen{max-height:50vh;margin-bottom:12px;display:block;overflow:auto}.studentMain .editorArea{order:2}.taskMetaTop,.taskButtons{flex-wrap:wrap}.languageTabs{flex-wrap:nowrap;padding-bottom:4px;overflow-x:auto}.languageTab{flex-shrink:0}}.progress{flex-direction:column;gap:20px;display:flex}.progressLoading{color:var(--text-muted);padding:24px}.progressError{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);padding:24px}.progressError h1{margin-top:0}.progressError .hint{color:var(--text-muted);margin:12px 0 16px;line-height:1.5}.progressHeader{flex-direction:column;gap:8px;display:flex}.progressHeader h1{margin:0;font-size:28px}.progressHeader p{color:var(--text-muted)}.statsGrid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.statCard{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);text-align:center;box-shadow:var(--shadow);padding:18px}.statCard h3{color:var(--text-muted);margin:0 0 8px;font-size:16px}.statValue{color:var(--accent-hover);margin:0;font-size:42px;font-weight:700}.statTotal{color:var(--text-muted);margin:4px 0 0;font-size:14px}.categoryProgress,.taskAttempts{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:18px}.categoryProgress h2,.taskAttempts h2{margin:0 0 14px}.categoryList{flex-direction:column;gap:12px;display:flex}.categoryItem{align-items:center;gap:12px;display:flex}.categoryName{min-width:100px;color:var(--text-h);font-weight:500}.categoryBar{background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);flex:1;height:8px;overflow:hidden}.categoryFill{background:linear-gradient(90deg,#86efac,#4ade80);height:100%;transition:width .3s}.categoryNumbers{color:var(--text-muted);font-size:14px}.attemptsList{flex-direction:column;gap:8px;display:flex}.attemptItem{border-radius:var(--radius-sm);background:var(--surface-elevated);border:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px;display:flex}.attemptTask{flex:1;font-weight:500}.attemptCount{color:var(--text-muted);font-size:14px}.attemptStatus{border-radius:var(--radius-sm);padding:4px 8px;font-size:14px}.attemptStatus.solved{background:var(--accent-bg);color:var(--success);border:1px solid var(--border-strong)}.attemptStatus.unsolved{background:var(--surface);color:var(--text-muted);border:1px solid var(--border)}.progressInlineError{color:#b91c1c;margin:0}.progressPanel{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:18px}.progressPanel h2{margin:0 0 10px}.streakCard .statValue{color:#16a34a}.exportActions{flex-wrap:wrap;gap:10px;display:flex}.achievementsGrid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.achievementCard{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);flex-direction:column;gap:6px;padding:14px;display:flex}.achievementCard.earned{border-color:var(--border-strong);background:var(--accent-bg)}.achievementCard.locked{opacity:.72}.achievementIcon{font-size:28px}.achievementCard h3{margin:0;font-size:15px}.achievementCard p{color:var(--text-muted);flex:1;margin:0;font-size:13px}.achievementBadge{color:var(--success);font-size:12px;font-weight:600}.achievementBadge.muted{color:var(--text-muted)}.leaderboardHeader{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.leaderboardHeader h2{margin:0}.anonymousToggle{color:var(--text-muted);align-items:center;gap:8px;font-size:14px;display:flex}.leaderboardMe{color:var(--text-h);margin:0 0 12px;font-size:14px}.leaderboardTable{border-collapse:collapse;width:100%;font-size:14px}.leaderboardTable th,.leaderboardTable td{text-align:left;border-bottom:1px solid var(--border);padding:10px 8px}.leaderboardTable tr.isMe{background:var(--accent-bg);font-weight:600}@media (width<=768px){.statsGrid{grid-template-columns:repeat(2,1fr);gap:10px}.statCard{padding:12px}.statValue{font-size:32px}.achievementsGrid{grid-template-columns:1fr 1fr}.attemptItem{flex-direction:column;align-items:flex-start;gap:6px}.categoryItem{flex-wrap:wrap}.categoryName{width:100%;min-width:auto}.leaderboardPanel{overflow-x:auto}.leaderboardTable{min-width:480px;font-size:13px}.exportActions{flex-direction:column}.exportActions .secondaryButton{width:100%}}.sandbox{flex-direction:column;gap:16px;max-width:960px;display:flex}.sandboxHeader h1{margin:0 0 6px;font-size:28px}.sandboxHeader p{color:var(--text-muted);margin:0}.sandboxToolbar{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.sandboxToolbar label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.sandboxResult{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:16px}.sandboxResult h2{margin:0 0 12px;font-size:18px}.sandbox .resultBlock{border-radius:var(--radius-sm);padding:12px}.sandbox .resultBlock.success{background:var(--accent-bg);border:1px solid var(--border-strong)}.sandbox .resultBlock.failure{background:#ef444414;border:1px solid #ef444440}.sandbox .logs{flex-direction:column;gap:4px;margin-top:10px;display:flex}.sandbox .logLine{background:var(--surface-elevated);border-radius:var(--radius-sm);margin:0;padding:8px;font-size:13px;overflow-x:auto}.profileAdminNote{border-radius:var(--radius-sm);background:var(--accent-bg);border:1px solid var(--border-strong);margin-bottom:14px;padding:12px 14px;font-size:14px}.profilePage{flex-direction:column;gap:18px;max-width:520px;margin:0 auto;display:flex}.profileHeader{align-items:center;gap:16px;display:flex}.profileAvatarPreview{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);justify-content:center;align-items:center;width:72px;height:72px;font-size:48px;display:inline-flex}.profileHeader h1{margin:0}.profileHeader p{color:var(--text-muted);margin:4px 0 0}.profileForm{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:18px;display:flex}.profileForm label{color:var(--text-muted);flex-direction:column;gap:6px;font-weight:600;display:flex}.avatarFieldset{border:1px solid var(--border);border-radius:var(--radius-sm);margin:0;padding:12px}.avatarFieldset legend{color:var(--text-muted);padding:0 6px;font-weight:600}.avatarGrid{flex-wrap:wrap;gap:8px;display:flex}.avatarOption{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-elevated);cursor:pointer;width:44px;height:44px;font-size:22px}.avatarOption.active{border-color:var(--accent);background:var(--accent-bg)}.profileMessage{color:var(--success);margin:0}.resetPassword{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);max-width:420px;box-shadow:var(--shadow);margin:0 auto;padding:24px}.resetPassword h1{margin-top:0}.resetForm{flex-direction:column;gap:12px;margin-bottom:12px;display:flex}.resetForm label{color:var(--text-muted);flex-direction:column;gap:4px;font-weight:600;display:flex}.resetSuccess{color:var(--success);margin:12px 0}.resetHomeLink{text-align:center;margin-top:12px;text-decoration:none;display:inline-block}.quizPage{flex-direction:column;gap:16px;display:flex}.quizHeader h1{margin:0 0 6px}.quizHeader p{color:var(--text-muted);margin:0}.quizGrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.quizCard{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:16px;display:flex}.quizCard h2{margin:0;font-size:18px}.quizMeta,.quizScore{color:var(--text-muted);margin:0;font-size:13px}.quizScore.passed{color:var(--success)}.quizBack{color:var(--accent-hover);font-size:14px}.quizForm{flex-direction:column;gap:16px;display:flex}.quizQuestion{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);margin:0;padding:14px}.quizQuestion legend{padding:0 4px;font-weight:600}.quizMultiHint{color:var(--text-muted);font-size:13px;font-weight:400}.quizOptions{flex-direction:column;gap:8px;margin-top:10px;display:flex}.quizOptions label{border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer;align-items:flex-start;gap:8px;padding:10px;display:flex}.quizOptions label.selected{border-color:var(--border-strong);background:var(--accent-bg)}.quizResult{border-radius:var(--radius-md);border:1px solid var(--border);padding:18px}.quizResult.passed{background:var(--accent-bg)}.quizResult.failed{background:#ef444414}.quizResultDetails{margin:12px 0;padding-left:18px}.quizResultDetails .ok{color:var(--success)}.quizResultDetails .bad{color:var(--danger)}@media (width<=640px){.quizGrid{grid-template-columns:1fr}}.admin{flex-direction:column;gap:18px;display:flex}.adminRecovery{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:16px;padding:16px}.adminRecovery h2{margin:0 0 8px;font-size:18px}.adminTabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.adminTabs button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text-muted);padding:8px 14px;font-weight:600}.adminTabs button.active{background:var(--accent-bg);border-color:var(--border-strong);color:var(--text-h)}.adminOverview{margin-bottom:16px}.adminStatGrid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.adminStat{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);text-align:center;padding:14px}.adminStat strong{color:var(--accent-hover);font-size:28px;display:block}.adminTable{border-collapse:collapse;width:100%;font-size:14px}.adminTable th,.adminTable td{border-bottom:1px solid var(--border);text-align:left;padding:10px 8px}.adminTable tr{cursor:pointer}.adminTable tr.active{background:var(--accent-bg)}.adminSplit{grid-template-columns:1fr minmax(260px,340px);gap:16px;display:grid}.adminStudentPanel{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);padding:16px}.adminStudentPanel h3{margin-top:0}.adminAchievementList{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.adminAchievementList li{justify-content:space-between;align-items:center;gap:8px;font-size:14px;display:flex}.adminList{margin:16px 0 0;padding:0;list-style:none}.adminList li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0;display:flex}.adminCheckbox{flex-direction:row;align-items:center;gap:8px}.adminHeader{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}@media (width<=900px){.adminSplit,.adminGrid{grid-template-columns:1fr}}.recoveryCodeValue{margin:10px 0;font-size:20px}.adminHeader{flex-direction:column;gap:6px;display:flex}.adminHeader h1{margin:0;font-size:28px}.adminHeader p{color:var(--text-muted)}.adminGrid{grid-template-columns:320px 1fr;gap:16px;display:grid}.adminSidebar{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);max-height:calc(100vh - 110px);box-shadow:var(--shadow);align-self:flex-start;padding:14px;position:sticky;top:88px;overflow:auto}.adminToolbar{flex-wrap:wrap;gap:8px;display:flex}.adminMain{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:16px;display:flex}.editorHeader{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.adminMessage{color:var(--accent-hover);margin:0;font-size:14px;font-weight:600}.adminForm{gap:14px;display:grid}.adminRow{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.adminForm label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.adminForm input,.adminForm textarea,.adminForm select{min-height:40px}.adminForm .codeArea{min-height:190px;font-family:var(--mono);font-size:14px}.adminForm fieldset{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-elevated);padding:14px}.adminForm legend{color:var(--text-h);padding:0 8px;font-weight:600}.formActions{flex-wrap:wrap;gap:10px;display:flex}@media (width<=900px){.adminGrid{grid-template-columns:1fr}.adminSidebar{max-height:none;position:relative;top:auto}}.terms{max-width:720px;margin:0 auto;padding:8px 0 32px}.termsHeader h1{margin:0 0 12px;font-size:28px}.termsLead{color:#ffffffc7;margin:0 0 24px;line-height:1.5}.termsBody{background:#00000047;border:1px solid #ffffff1f;border-radius:16px;flex-direction:column;gap:16px;padding:20px 22px;display:flex}.termsBody h2{margin:8px 0 0;font-size:17px}.termsBody p{color:#ffffffd9;margin:0;line-height:1.55}.termsBack{margin:24px 0 0}.termsBack a.primaryButton{text-decoration:none;display:inline-block}.notFound{flex-direction:column;align-items:center;gap:18px;padding:48px 16px;display:flex}.notFound h1{margin:0;font-size:38px}.notFound p{color:#fffc;text-align:center;max-width:520px}.app{background:linear-gradient(180deg, var(--surface-elevated) 0%, var(--bg) 140px);min-height:100vh;color:var(--text);flex-direction:column;display:flex}.appHeader{border-bottom:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:14px 22px;display:flex}.appBrand{color:var(--text-h);align-items:center;gap:10px;font-size:19px;font-weight:700;display:flex}.appLogo{border-radius:var(--radius-md);background:var(--accent-bg);border:1px solid var(--accent-border);width:40px;height:40px;color:var(--accent);justify-content:center;align-items:center;font-weight:800;display:inline-flex}.appNav{flex-wrap:wrap;gap:8px;display:flex}.appUser{color:var(--text-muted);align-items:center;gap:10px;font-size:14px;display:flex}.navLink{border-radius:var(--radius-sm);color:var(--text-muted);padding:8px 12px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.navLink:hover{background:var(--surface-elevated);color:var(--text-h)}.navLink.active{background:var(--accent-bg);color:var(--accent-hover);border:1px solid var(--accent-border)}.appMain{flex-direction:column;flex:1;gap:16px;width:min(1200px,100%);margin:0 auto;padding:22px;display:flex}@media (width<=768px){.appHeader{padding:10px 12px}.appBrand{font-size:16px}.appLogo{width:34px;height:34px}.appNav{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;order:3;width:100%;padding-bottom:4px;overflow-x:auto}.navLink{flex-shrink:0;padding:6px 10px;font-size:14px}.appUser{margin-left:auto}.appMain{padding:12px}.appFooter{padding:10px;font-size:12px}}.appFooter{color:var(--text-muted);text-align:center;border-top:1px solid var(--border);background:var(--surface);padding:12px 22px;font-size:13px}.primaryButton,.secondaryButton{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:9px 14px;font-size:15px;font-weight:600;transition:background .15s,border-color .15s,transform .1s}.primaryButton{background:var(--accent);color:#fff;border-color:var(--accent-hover)}.primaryButton:hover:not(:disabled){background:var(--accent-hover)}.secondaryButton{background:var(--surface);color:var(--text-h);border-color:var(--border)}.secondaryButton:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-elevated)}.primaryButton:disabled,.secondaryButton:disabled{opacity:.55;cursor:not-allowed}a.primaryButton,a.secondaryButton{text-align:center;box-sizing:border-box;text-decoration:none;display:inline-block}input,textarea,select{font-family:var(--sans);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-h);resize:vertical;padding:9px 11px}textarea.codeArea{font-family:var(--mono);font-size:14px}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}
