:root{--text:#14161a9e;--text-h:#14161a;--bg:#f5f5f7;--surface:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#ff5a3c;--accent-bg:#ff5a3c1a;--accent-border:#ff5a3c80;--accent-text:#14161a;--success:#2fb170;--success-bg:#2fb1701f;--error:#e5484d;--error-bg:#e5484d1f;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--code-keyword:#c93a1e;--code-string:#1c7a4b;--code-number:#7a3fd1;--code-type:#1f63c7;--code-meta:#9a5a00;--code-comment:#14161a9e;--sans:"Manrope", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Manrope", system-ui, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text-h);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}}:root[data-theme=dark]{--text:#8a8f98;--text-h:#f5f5f7;--bg:#14161a;--surface:#1b1d22;--border:#2e303a;--code-bg:#1f2028;--accent:#ff5a3c;--accent-bg:#ff5a3c26;--accent-border:#ff5a3c80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;--code-keyword:#ff5a3c;--code-string:#4cc98a;--code-number:#c08cff;--code-type:#6ea8ff;--code-meta:#f0b35a;--code-comment:#8a8f98;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}#root{box-sizing:border-box;flex-direction:column;width:960px;max-width:100%;min-height:100svh;margin:0 auto;padding:24px;display:flex}.narrow{width:420px;max-width:100%;margin:40px auto 0}.breadcrumb{color:var(--text);align-items:center;gap:8px;font-size:.8em;font-weight:600;display:flex}.breadcrumb a{color:var(--text);text-decoration:none}.breadcrumb a:hover{color:var(--accent)}.breadcrumb .current{color:var(--accent);font-weight:700}.avatar{background:var(--accent-bg);width:28px;height:28px;color:var(--accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.75em;font-weight:700;display:flex}.avatar-lg{width:36px;height:36px;font-size:.8em}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;width:fit-content;padding:4px 12px;font-size:.8em;font-weight:600;display:inline-flex}.badge-accent{background:var(--accent-bg);color:var(--accent)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-error{background:var(--error-bg);color:var(--error)}.badge-neutral{border:1px solid var(--border);color:var(--text);background:0 0}body{margin:0}h1{font-family:var(--heading);color:var(--text-h);letter-spacing:-.5px;text-align:center;margin:0 0 24px;font-size:32px;font-weight:800}p{margin:0}button{font:inherit;cursor:pointer}button.secondary,a.secondary{border:1px solid var(--border);color:var(--text-h);background:0 0;border-radius:10px;padding:10px 19px;font-weight:600}button.secondary:hover:not(:disabled),a.secondary:hover{border-color:var(--accent);color:var(--accent)}button.secondary:disabled{opacity:.5;cursor:not-allowed}.page-status{text-align:center;color:var(--text)}.error{color:var(--error)}.success{color:var(--success)}#root:has(.auth-screen){width:100%;max-width:none;padding:0}#root:has(.app-layout){width:100%;max-width:none;padding:0}.auth-screen{grid-template-columns:1fr 1fr;min-height:100svh;display:grid}.auth-screen-single{grid-template-columns:1fr}.auth-promo{background:linear-gradient(160deg,#14161a 0%,#23252f 100%);align-items:center;padding:48px;display:flex}.auth-promo-inner{flex-direction:column;gap:24px;max-width:460px;margin:0 auto;display:flex}.auth-promo-logo{align-items:center;gap:12px;display:flex}.auth-promo-mark{width:auto;height:30px}.auth-promo-logo span{font-family:var(--heading);color:#fff;font-size:20px;font-weight:800}.auth-promo h1{text-align:left;color:#fff;margin:0;font-size:42px;line-height:112%}.auth-promo h1 span{color:var(--accent);display:block}.auth-promo-lead{color:#c8ccd4}.auth-features{flex-direction:column;gap:18px;margin:0;padding:0;list-style:none;display:flex}.auth-features li{flex-direction:column;gap:3px;padding-left:22px;display:flex;position:relative}.auth-features li:before{content:"";background:var(--accent);border-radius:2px;width:8px;height:8px;position:absolute;top:9px;left:0}.auth-features strong{color:#fff;font-weight:500}.auth-features span{color:#98a0ac;font-size:15px;line-height:140%}.auth-note{color:#98a0ac;border-top:1px solid #ffffff1a;padding-top:20px;font-size:15px;line-height:140%}.auth-side{justify-content:center;align-items:center;padding:40px 24px;display:flex}.auth-side-column{flex-direction:column;gap:32px}.auth-standalone-logo{align-items:center;gap:12px;display:flex}.auth-standalone-mark{width:auto;height:30px}.auth-standalone-logo span{font-family:var(--heading);color:var(--text-h);font-size:20px;font-weight:800}.auth-card{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:16px;width:100%;max-width:460px;padding:40px;display:flex}.auth-screen-single .auth-card{gap:20px}.auth-card h2{font-family:var(--heading);letter-spacing:-.3px;text-align:center;color:var(--text-h);margin:0;font-size:26px;font-weight:500}.auth-subtitle{color:var(--text);text-align:center;font-size:15px;line-height:140%}.auth-tabs{border-bottom:1px solid var(--border);display:flex}.auth-tabs button{color:var(--text);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:12px}.auth-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.auth-form{flex-direction:column;gap:14px;display:flex}.access-message{text-align:center;flex-direction:column;align-items:center;gap:16px;display:flex}.access-message-icon{width:48px;height:48px}.access-message h2{margin:0}.access-message-note{color:var(--text);font-size:.85em;font-weight:600}.auth-form label{color:var(--text);flex-direction:column;gap:6px;font-size:15px;display:flex}.auth-form input{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;padding:13px 14px}.auth-form input:focus{border-color:var(--accent-border);outline:none}.auth-submit{background:var(--accent);color:var(--accent-text);text-align:center;border:none;border-radius:8px;padding:12px;font-weight:700;text-decoration:none;display:block}.auth-submit:disabled{opacity:.6;cursor:default}.auth-link{color:var(--accent);font:inherit;text-align:center;background:0 0;border:none;padding:0;font-size:15px}.auth-link-right{text-align:right;margin-top:-6px}.auth-divider{color:var(--text);align-items:center;gap:12px;font-size:14px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-telegram{border:1px solid var(--border);color:var(--text-h);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px;font-weight:500;display:flex}.auth-telegram:hover{border-color:var(--accent-border);color:var(--accent)}.auth-telegram-wait{align-items:stretch}.auth-qr{background:#fff;border-radius:10px;align-self:center;padding:12px}@media (width<=900px){.auth-screen{grid-template-columns:1fr}.auth-promo{display:none}}.change-password-page form{flex-direction:column;align-items:stretch;gap:14px;display:flex}.change-password-page label{text-align:left;color:var(--text);flex-direction:column;gap:6px;display:flex}.change-password-page input{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;padding:10px}.change-password-page button[type=submit]{background:var(--accent);color:var(--accent-text);border:none;border-radius:8px;padding:10px;font-weight:700}.change-password-page{text-align:center;flex-direction:column;gap:12px;display:flex}.app-layout{flex-direction:column;min-height:100svh;display:flex}.app-content{box-sizing:border-box;width:960px;max-width:100%;margin:0 auto;padding:24px}.home-header{box-sizing:border-box;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:64px;padding:0 40px;display:flex}@media (width<=700px){.home-header{padding:0 16px}}.home-brand-group{align-items:center;gap:16px;display:flex}.home-brand{color:inherit;align-items:center;gap:10px;text-decoration:none;display:flex}.home-logo{width:auto;height:24px}.home-wordmark{color:var(--text-h);font-size:.95em;font-weight:800}.home-divider{background:var(--border);width:1px;height:24px}.home-user{flex-direction:column;line-height:1.3;display:flex}.home-user strong{color:var(--text-h);font-size:.85em}.home-role{color:var(--text);font-size:.75em;font-weight:600}.home-actions{align-items:center;gap:28px;display:flex}.home-actions a{color:var(--text-h);border-bottom:2px solid #0000;margin-bottom:-20px;padding-bottom:20px;font-size:.9em;font-weight:700;text-decoration:none}.home-actions a.active{color:var(--accent);border-bottom-color:var(--accent)}.link-button{color:var(--accent);background:0 0;border:none;align-self:center}.profile-menu{position:relative}.profile-toggle{color:var(--text-h);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:.9em;font-weight:700;display:flex}.profile-toggle.open{background:var(--accent-bg);color:var(--accent)}.profile-toggle svg{transition:transform .15s}.profile-toggle.open svg{transform:rotate(180deg)}.profile-panel{z-index:10;box-sizing:border-box;border:1px solid var(--border);background:var(--surface);width:320px;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:20px;padding:24px;display:flex;position:absolute;top:calc(100% + 10px);right:0}.profile-panel-header{align-items:center;gap:12px;display:flex}.profile-avatar{background:var(--accent-bg);width:40px;height:40px;color:var(--accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.9em;font-weight:700;display:flex}.profile-panel-divider{background:var(--border);height:1px}.profile-fields{flex-direction:column;gap:14px;margin:0;display:flex}.profile-fields dt{color:var(--text);margin:0 0 2px;font-size:.8em;font-weight:600}.profile-fields dd{color:var(--text-h);margin:0;font-size:.95em;font-weight:600}.profile-current-topic{font-family:var(--mono);color:var(--accent)}.profile-fields .teacher-comment{color:var(--text);border:none;margin:6px 0 0;padding:0;font-size:.9em;font-weight:500;line-height:1.4}.profile-panel-actions{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.theme-switch{flex-direction:column;gap:8px;display:flex}.theme-switch-label{color:var(--text);font-size:.72em;font-weight:700}.theme-switch-options{background:var(--code-bg);border-radius:12px;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;display:grid}.theme-switch-options button{color:var(--text);background:0 0;border:none;border-radius:9px;padding:7px 4px;font-size:.72em;font-weight:700}.theme-switch-options button:hover{color:var(--text-h)}.theme-switch-options button.active{background:var(--surface);color:var(--accent);box-shadow:0 0 0 1px var(--border)}.profile-panel-actions a{color:var(--accent);font-size:.9em;font-weight:600;text-decoration:none}.profile-logout{color:var(--error);background:0 0;border:none;padding:0;font-size:.9em;font-weight:600}.course-subtitle{color:var(--text);margin-bottom:20px}.topic-code{width:50px;font-family:var(--mono);color:var(--accent);letter-spacing:.01em;flex-shrink:0;font-weight:700}.exam-link{border-top:1px solid var(--border);color:var(--accent);margin-top:6px;padding-top:12px;font-size:.9em;font-weight:600;text-decoration:none;display:block}.student-course-head{grid-template-columns:240px 1fr;align-items:start;gap:24px;margin-bottom:24px;display:grid}@media (width<=700px){.student-course-head{grid-template-columns:1fr}}.student-course-head .course-cover{border:1px solid var(--border);border-radius:16px}.student-course-info{flex-direction:column;gap:12px;min-width:0;display:flex}.student-course-info h1{text-align:left;overflow-wrap:anywhere;margin:0;line-height:1.15}@media (width<=700px){.student-course-info h1{font-size:26px}}.course-progress{max-width:420px;color:var(--text);flex-direction:column;gap:8px;font-size:.8em;font-weight:700;display:flex}.progress-bar{background:var(--code-bg);height:8px;box-shadow:inset 0 0 0 1px var(--border);border-radius:999px;overflow:hidden}.progress-bar span{background:var(--accent);border-radius:999px;height:100%;transition:width .3s;display:block}.now-card{border:1px solid var(--accent-border);background:var(--accent-bg);border-radius:18px;flex-direction:column;gap:10px;margin-bottom:36px;padding:20px 24px;display:flex}.now-card-empty{background:0 0;border-style:dashed}.now-card-empty p{color:var(--text)}.now-label{color:var(--accent);font:700 .75em var(--mono);text-transform:uppercase;letter-spacing:.06em}.now-title{flex-wrap:wrap;align-items:baseline;gap:4px 14px;display:flex}.now-title .topic-code{width:auto;font-size:1.1em}.now-title h2{color:var(--text-h);overflow-wrap:anywhere;margin:0;font-size:26px;font-weight:800}.now-actions{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.now-actions a{text-decoration:none}.now-actions .icon{width:18px;height:18px}.now-link{border:1px solid var(--border);background:var(--surface);color:var(--text-h);border-radius:10px;align-items:center;gap:8px;padding:9px 16px;font-weight:700;display:inline-flex}.now-link:hover{border-color:var(--accent)}.now-link .badge{padding:2px 10px;font-size:.7em}.level-progress{color:var(--text);font-size:.78em;font-weight:600}.level-section-head .badge-success{align-self:center;padding:2px 10px;font-size:.72em}.student-tile-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.student-tile-locked{background:var(--code-bg)}.student-tile-locked>*{opacity:.55}.student-tile-lock{width:18px;height:18px;color:var(--text);margin-left:auto}.student-tile-title-link{color:inherit;flex:1;text-decoration:none}.student-tile-title-link:hover .topic-tile-title{color:var(--accent)}.student-tile-note{color:var(--text);margin-top:auto;font-size:.78em;font-weight:600}.student-tile-status{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:10px;display:flex}.student-tile-status .badge,.topic-tile-head .badge-accent{padding:2px 10px;font-size:.68em}.deadline{color:var(--text);font-size:.75em;font-weight:600}.deadline-overdue{color:var(--error)}.exam-tile{color:inherit;text-decoration:none}.exam-tile:hover{border-color:var(--accent-border)}.exam-tile .topic-tile-head .icon{width:22px;height:22px;color:var(--text)}.exam-tile-ready{border-color:var(--accent-border)}.exam-tile-ready .topic-tile-head .icon{color:var(--accent)}.exam-tile-passed .topic-tile-head .icon{color:var(--success)}.student-empty{margin-top:40px}.admin-page h1{text-align:left}.admin-form{flex-direction:column;gap:8px;display:flex}.admin-form label{color:var(--text);flex-direction:column;gap:6px;font-size:.72em;font-weight:600;display:flex}.admin-form.inline{flex-direction:row;align-items:center;margin-top:10px}.admin-form input,.admin-form select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;padding:8px 10px}.admin-form.inline input,.admin-form.inline select{flex:1}.admin-form button{background:var(--accent);color:var(--accent-text);white-space:nowrap;border:none;border-radius:8px;padding:8px 14px;font-weight:600}.task-toggle{margin-left:auto;font-size:.85em}.link-button.danger{color:var(--error)}.icon{flex-shrink:0;width:20px;height:20px}.icon-button{width:34px;height:34px;color:var(--text);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover:not(:disabled){background:var(--accent-bg);color:var(--accent)}.icon-button:disabled{opacity:.35;cursor:default}.primary-button,.danger-button{background:var(--accent);color:var(--accent-text);white-space:nowrap;border:none;border-radius:10px;align-items:center;gap:8px;padding:10px 18px;font-weight:700;display:inline-flex}.danger-button{background:var(--error)}.primary-button:disabled{opacity:.6;cursor:default}.primary-button .icon{width:18px;height:18px}.page-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.page-head h1{margin:0}.back-link{color:var(--text);align-items:center;gap:8px;margin-bottom:16px;font-size:.85em;font-weight:600;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--accent)}.back-link .icon{width:16px;height:16px}.modal{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);width:min(520px,100vw - 32px);max-height:calc(100svh - 32px);color:var(--text-h);box-shadow:var(--shadow);border-radius:20px;padding:24px}.modal-wide{width:min(640px,100vw - 32px)}.modal::backdrop{background:#14161a8c}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.modal-head h2{margin:0;font-size:22px;font-weight:800}.modal-text{margin-bottom:20px}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.modal-actions button{font-size:.9em}.modal-form{flex-direction:column;gap:18px;display:flex}.modal-form>label,.field-label{color:var(--text);flex-direction:column;gap:6px;font-size:.75em;font-weight:700;display:flex}.field-label{margin-bottom:6px}.modal-form input:not([type=file],[type=checkbox]),.modal-form textarea{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:500 16px/1.45 var(--sans);border-radius:10px;padding:10px 12px}.modal-form textarea{resize:vertical}.modal-form input:focus,.modal-form textarea:focus,.tag-input:focus-within{border-color:var(--accent-border);outline:none}.field-hint{color:var(--text);margin-top:6px;font-size:.72em}.secondary-label{border:1px solid var(--border);color:var(--text-h);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:8px 14px;font-size:.8em;font-weight:700;display:inline-flex}.secondary-label:hover{border-color:var(--accent);color:var(--accent)}.secondary-label input[type=file]{display:none}.cover-field-body{grid-template-columns:220px 1fr;align-items:start;gap:16px;display:grid}@media (width<=600px){.cover-field-body{grid-template-columns:1fr}}.cover-field .course-cover{border:1px solid var(--border);border-radius:12px}.cover-field-actions{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.cover-field-actions .link-button{align-self:flex-start;padding:0;font-size:.8em}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--accent-bg);color:var(--accent);border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:.72em;font-weight:700;display:inline-flex}.tag button{color:inherit;background:0 0;border:none;padding:0;display:inline-flex}.tag .icon{width:12px;height:12px}.tag-input{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;padding:6px 8px;display:flex}.modal-form .tag-input input{background:0 0;border:none;flex:1;min-width:120px;padding:4px}.tag-input input::-webkit-calendar-picker-indicator{display:none!important}.course-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;display:grid}.course-tile{border:1px solid var(--border);background:var(--surface);color:inherit;border-radius:16px;flex-direction:column;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}.course-tile:hover{border-color:var(--accent-border);transform:translateY(-2px)}.course-cover{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.course-cover-fallback{background:#14161a}.course-cover-fallback rect{fill:var(--accent)}.course-cover-fallback text{fill:#f5f5f7;font:800 112px var(--heading)}.course-tile-body{flex-direction:column;flex:1;gap:10px;padding:16px 18px 18px;display:flex}.course-tile h2{color:var(--text-h);margin:0;font-size:18px;font-weight:800}.course-tile-description{-webkit-line-clamp:2;color:var(--text);-webkit-box-orient:vertical;font-size:.8em;display:-webkit-box;overflow:hidden}.course-tile-stats{color:var(--text);margin-top:auto;font-size:.78em;font-weight:600}.task-page{flex-direction:column;gap:20px;max-width:1020px;display:flex}.task-layout{flex-direction:row;align-items:flex-start;gap:32px;display:flex}.task-main{box-sizing:border-box;flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.task-main h1{text-align:left;margin:0}.task-main h3{margin:0}.task-sidebar{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;flex-shrink:0;gap:16px;width:300px;padding:20px;display:flex}.task-sidebar-field{flex-direction:column;gap:4px;display:flex}.task-sidebar-field>span:first-child{color:var(--text);font-size:.8em;font-weight:600}.task-sidebar-mono{font-family:var(--mono);color:var(--text-h);font-weight:600}.task-attempts{color:var(--text-h);align-items:center;gap:10px;font-size:.9em;display:flex}.task-attempts-dots{align-items:center;gap:5px;display:flex}.task-attempt-dot{border:1.5px solid var(--error);box-sizing:border-box;border-radius:999px;width:8px;height:8px;display:inline-block}.task-attempt-dot.used{background:var(--error)}@media (width<=800px){.task-layout{flex-direction:column}.task-sidebar{width:100%}}.task-deadline{color:var(--text);font-size:.9em}.task-text{white-space:pre-wrap;line-height:1.5}.task-content-locked{opacity:.5}.task-status-row{align-items:center;gap:8px;display:flex}.task-status-logo{width:auto;height:20px}.task-status{border-radius:999px;width:fit-content;padding:4px 12px;font-size:.9em;display:inline-block}.task-status-pending,.task-status-under_review{background:var(--accent-bg);color:var(--accent)}.task-status-accepted{background:var(--success-bg);color:var(--success)}.task-status-needs_rework{background:var(--error-bg);color:var(--error)}.warning{color:#d68910;background:#d689101f;border-radius:8px;padding:10px 14px}.teacher-comment{border:1px solid var(--border);border-radius:8px;padding:10px 14px}.teacher-comment-callout{border:none;border-left:3px solid var(--error);background:var(--error-bg);border-radius:10px;flex-direction:column;gap:6px;padding:14px 16px;display:flex}.teacher-comment-callout span{color:var(--error);font-size:.8em;font-weight:600}.teacher-comment-callout p{color:var(--text-h);margin:0}.task-submit-form{flex-direction:column;gap:10px;display:flex}.task-submit-form label{flex-direction:column;gap:6px;display:flex}.task-submit-form input{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;padding:10px}.task-submit-form button{background:var(--accent);color:var(--accent-text);border:none;border-radius:8px;align-self:flex-start;padding:10px 20px;font-weight:700}.tabs{scrollbar-width:none;border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex;overflow-x:auto}.tab{color:var(--text);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:10px 14px;font-size:.85em;font-weight:700;display:inline-flex}.tab:hover{color:var(--text-h)}.tab.active{border-bottom-color:var(--accent);color:var(--accent)}.tab-count{box-sizing:border-box;background:var(--code-bg);min-width:22px;color:var(--text);text-align:center;border-radius:999px;padding:1px 7px;font-size:.8em}.tab.active .tab-count{background:var(--accent-bg);color:var(--accent)}.tab-toolbar{color:var(--text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;font-size:.85em;display:flex}.tab-toolbar .secondary{font-size:.95em}.tab-search{border:1px solid var(--border);background:var(--bg);min-width:0;color:var(--text-h);font:500 15px/1.45 var(--sans);border-radius:10px;flex:0 280px;padding:9px 12px}.tab-search:focus{border-color:var(--accent-border);outline:none}@media (width<=700px){.tab-search{flex-basis:100%}}.list-card{border:1px solid var(--border);background:var(--surface);border-radius:16px;overflow:hidden}.list-row{border-bottom:1px solid var(--border);align-items:center;gap:8px 16px;padding:14px 20px;display:grid}.list-row:last-child{border-bottom:none}.request-row{grid-template-columns:auto minmax(0,1fr) auto auto}.block-row{grid-template-columns:130px minmax(0,1fr) auto auto}.block-row .badge{justify-self:start}.person-row{grid-template-columns:auto minmax(0,1fr) auto}.person-groups{margin-top:8px}@media (width<=700px){.request-row,.block-row,.person-row{grid-template-columns:auto minmax(0,1fr)}.list-row-date,.list-row-actions{grid-column:1/-1}}.list-row-main{flex-direction:column;min-width:0;display:flex}.list-row-main strong{overflow-wrap:anywhere}.list-row-main>span,.person-groups>span:not(.tag){color:var(--text);font-size:.8em}.list-row-mono{font-family:var(--mono);overflow-wrap:anywhere;font-size:.8em}strong.list-row-mono{font-size:.85em}.list-row-date{color:var(--text);white-space:nowrap;font-size:.75em;font-weight:600}.list-row-actions{justify-content:flex-end;gap:8px;display:flex}.list-row-actions .secondary{padding:7px 14px;font-size:.75em}.empty-state{border:1.5px dashed var(--border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:6px;padding:40px 20px;display:flex}.empty-state p{color:var(--text);font-size:.85em}.modal-note{background:var(--error-bg);color:var(--text-h);border-radius:12px;padding:12px 14px;font-size:.85em}.contacts-card,.profile-card{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);border-radius:16px;max-width:640px;padding:20px 22px}.profile-page{flex-direction:column;gap:16px;display:flex}.profile-card{flex-direction:column;gap:14px;display:flex}.profile-card h2{margin:0;font-size:1.05em}.profile-card a{text-decoration:none}.profile-card-link{align-self:flex-start}.profile-current{color:var(--text);margin:0;font-size:.9em}.profile-notice{background:var(--success-bg);color:var(--text-h);border-radius:12px;margin:0;padding:12px 14px;font-size:.85em}.profile-telegram-wait{flex-direction:column;align-items:center;gap:10px;display:flex}.message-preview p{border:1px solid var(--error-bg);background:var(--error-bg);color:var(--text-h);border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:.85em;display:flex}.message-preview .icon{width:18px;height:18px;color:var(--error);margin-top:1px}.contacts-card .modal-actions{align-items:center}.exam-page{flex-direction:column;gap:14px;max-width:640px;display:flex}.exam-result{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:14px;padding:14px 18px;display:flex}.exam-result-logo{flex-shrink:0;width:auto;height:40px}.exam-result-passed{border-color:var(--success)}.exam-result-failed{border-color:var(--error)}.exam-slots{flex-direction:column;gap:8px;display:flex}.exam-slot-card{box-sizing:border-box;border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;padding:16px;display:flex}.exam-slot-card:has(button:disabled){opacity:.5}.exam-slot-card>div{flex-direction:column;gap:4px;display:flex}.exam-slot-date{font-family:var(--mono);color:var(--text-h);font-weight:600}.exam-booked-date{font-size:1.3em}.exam-slot-vacancies{color:var(--text);font-size:.85em}.exam-page-title{flex-direction:column;gap:4px;display:flex}.exam-page-title h1{text-align:left;margin:0}.exam-state{flex-direction:column;gap:16px;display:flex}.exam-state h3{margin:0}.exam-state-centered{text-align:center;align-items:center;gap:16px;max-width:480px;margin:40px auto}.exam-booked-card{box-sizing:border-box;border:1px solid var(--border);border-radius:16px;flex-direction:column;align-items:flex-start;gap:12px;padding:20px;display:flex}.exam-retry{flex-direction:column;gap:8px;display:flex}.exam-retry-countdown{font-family:var(--mono);color:var(--text-h);font-size:1.5em;font-weight:700}.group-tile-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.group-tile{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);min-height:176px;color:inherit;border-radius:16px;flex-direction:column;gap:12px;padding:16px 18px;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.group-tile:hover{border-color:var(--accent-border);transform:translateY(-2px)}.group-tile h2{color:var(--text-h);overflow-wrap:anywhere;margin:0;font-size:20px;font-weight:800}.group-tile .badge{margin-top:auto}.group-tile-course{color:var(--text);align-items:center;gap:10px;font-size:.78em;font-weight:700;display:flex}.course-cover-compact{aspect-ratio:1;box-sizing:border-box;border:1px solid var(--border);border-radius:10px;flex-shrink:0;width:36px;height:36px}.table-scroll{overflow-x:auto}.table-scroll .student-table{min-width:560px}.course-cover-compact.course-cover-fallback text{font-size:58px}.group-facts{color:var(--text);flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:.8em;font-weight:600;display:flex}.group-facts>span{align-items:center;gap:6px;display:inline-flex}.group-facts .icon{width:16px;height:16px;color:var(--accent)}.group-facts .topic-code{width:auto;font-size:.95em}a.group-facts,.group-facts a.badge{text-decoration:none}.queue-tile{border-color:var(--accent-border);background:var(--accent-bg);flex-direction:row;align-items:center;gap:16px}.queue-tile-count{min-width:56px;color:var(--accent);font:800 44px/1 var(--heading);text-align:center}.queue-tile-text{flex-direction:column;gap:4px;display:flex}.queue-tile-text strong{color:var(--text-h);font-size:18px;font-weight:800}.queue-tile-text span{color:var(--text);font-size:.8em;font-weight:600}.group-page-head{grid-template-columns:auto 1fr auto;align-items:start;gap:20px;margin-bottom:28px;display:grid}@media (width<=700px){.group-page-head{grid-template-columns:auto 1fr}}.group-page-head>.course-cover-compact{border-radius:16px;width:72px;height:72px}.group-page-info{flex-direction:column;gap:8px;min-width:0;display:flex}.group-page-course{color:var(--accent);align-self:flex-start;font-size:.85em;font-weight:700;text-decoration:none}.group-page-course:hover{text-decoration:underline}.group-page-advance{max-width:220px;color:var(--text);text-align:right;flex-direction:column;align-items:flex-end;gap:6px;font-size:.78em;font-weight:600;display:flex}@media (width<=700px){.group-page-advance{text-align:left;grid-column:1/-1;align-items:flex-start;max-width:none}}.group-page-advance .primary-button{font-size:1.15em}.student-table-action .icon-button{vertical-align:middle;margin-left:6px}.modal-form select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:500 16px/1.45 var(--sans);border-radius:10px;padding:10px 12px}.student-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;margin:16px 0;overflow:hidden}.student-table th{text-align:left;border-bottom:1px solid var(--border);color:var(--text);padding:12px 16px;font-size:.72em;font-weight:600}.student-table td{border-bottom:1px solid var(--border);padding:12px 16px}.student-table tr:last-child td{border-bottom:none}.quiz-scores th:not(:first-child),.quiz-scores td:not(:first-child){text-align:center;font-family:var(--mono);white-space:nowrap}.quiz-scores td:not(:first-child){color:var(--text-h);font-weight:700}.quiz-scores td.quiz-scores-empty{color:var(--text);font-weight:400}.quiz-scores td.quiz-scores-missed{color:var(--error)}.student-table-code{font-family:var(--mono);color:var(--accent);letter-spacing:.01em;font-size:.83em;font-weight:700}.student-table-action{text-align:right}.queue-row{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:12px;padding:16px 20px;display:flex}.queue-student{flex-shrink:0;align-items:center;gap:10px;display:flex}.queue-student span{color:var(--text-h);font-size:.83em;font-weight:600}.queue-meta{color:var(--text);font-size:.78em;font-weight:500}.queue-time{font-family:var(--mono);color:var(--text);flex-shrink:0;font-size:.72em;font-weight:600}.queue-link{color:var(--accent);flex-shrink:0;font-size:.78em;font-weight:600}.queue-spacer{flex:1;min-width:0}.queue-comment{box-sizing:border-box;background:var(--bg);border:1px solid var(--border);width:220px;max-width:100%;font-family:var(--sans);color:var(--text-h);border-radius:10px;flex-shrink:0;padding:8px 12px;font-size:.72em;font-weight:500}.queue-error{flex-basis:100%;margin-top:2px}.pill-button{cursor:pointer;border-radius:10px;flex-shrink:0;padding:8px 16px;font-size:.72em;font-weight:600}.pill-button:disabled{opacity:.5;cursor:not-allowed}.pill-success{background:var(--success-bg);color:var(--success);border:1px solid var(--success)}.pill-error{background:var(--error-bg);color:var(--error);border:1px solid var(--error)}.pill-accent{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent)}.exam-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:8px;margin-bottom:12px;padding:14px 18px;display:flex}.exam-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.exam-slots-layout{flex-direction:row;align-items:flex-start;gap:20px;display:flex}@media (width<=800px){.exam-slots-layout{flex-direction:column}}.slot-list,.roster-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.slot-list{flex-shrink:0;gap:10px;width:260px}@media (width<=800px){.slot-list{width:100%}}.slot-list-item{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);text-align:left;border-radius:12px;flex-direction:column;align-items:flex-start;gap:6px;width:100%;padding:16px;display:flex}.slot-list-item.active{border:2px solid var(--accent);padding:15px}.roster-panel{box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:16px;flex:1;min-width:0;padding:24px}.roster-panel h3{margin:0 0 16px}.roster-panel .roster-list{margin:0}.roster-list li{align-items:center;gap:8px;display:flex}.roster-list input{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:8px;flex:1;padding:6px 8px}.roster-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:14px 0}.roster-row:last-child{border-bottom:none}.roster-row-action{flex-shrink:0;justify-content:flex-end;width:160px;display:flex}.lesson-page{flex-direction:column;gap:14px;max-width:760px;margin:0 auto;display:flex}.lesson-page h1{text-align:left;margin-bottom:4px}.quiz-page{flex-direction:column;gap:16px;max-width:760px;display:flex}.quiz-question{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:10px;padding:16px 20px;display:flex}.quiz-question-text{color:var(--text-h);margin:0;font-weight:600}.quiz-options{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.quiz-option{border-radius:8px;padding:6px 10px}.quiz-option label{cursor:pointer;align-items:center;gap:10px;display:flex}.quiz-option-correct{background:var(--success-bg);color:var(--success)}.quiz-option-wrong{background:var(--error-bg);color:var(--error)}.quiz-score{color:var(--text-h);font-weight:600}.quiz-submit{align-self:flex-start}.quiz-explanation{border-top:1px solid var(--border);color:var(--text);white-space:pre-line;margin:0;padding-top:10px}.markdown{line-height:1.6}.markdown h1,.markdown h2,.markdown h3{font-family:var(--heading);color:var(--text-h);text-align:left;margin:1.2em 0 .4em}.markdown h1{font-size:1.5em}.markdown h2{font-size:1.25em}.markdown h3{font-size:1.1em}.markdown p,.markdown ul,.markdown ol{margin:0 0 .8em}.markdown ul,.markdown ol{padding-left:1.4em}.markdown li{margin-bottom:4px}.markdown a{color:var(--accent)}.markdown img{border:1px solid var(--border);border-radius:8px;max-width:100%}.markdown blockquote{border-left:3px solid var(--accent-border);color:var(--text);margin:0 0 .8em;padding:4px 14px}.markdown table{border-collapse:collapse;width:100%;margin-bottom:.8em}.markdown th,.markdown td{border:1px solid var(--border);text-align:left;padding:6px 10px}.markdown code{font-family:var(--mono);background:var(--code-bg);border-radius:4px;padding:1px 5px;font-size:.9em}.markdown pre{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;padding:14px 16px;overflow-x:auto}.markdown pre code{color:var(--text-h);background:0 0;padding:0}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-name{color:var(--code-keyword)}.hljs-string,.hljs-attr,.hljs-attribute,.hljs-regexp,.hljs-addition{color:var(--code-string)}.hljs-comment,.hljs-quote{color:var(--code-comment);font-style:italic}.hljs-number,.hljs-symbol,.hljs-built_in,.hljs-bullet{color:var(--code-number)}.hljs-type,.hljs-title.class_,.hljs-selector-class,.hljs-selector-id{color:var(--code-type)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-template-tag,.hljs-template-variable{color:var(--code-meta)}.hljs-deletion{color:var(--error)}.hljs-title,.hljs-title.function_,.hljs-section{color:var(--text-h);font-weight:600}.lesson-form{width:100%;margin-top:8px}.lesson-editor{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=900px){.lesson-editor{grid-template-columns:1fr}}.lesson-editor textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);min-height:320px;color:var(--text-h);font:.9em/1.6 var(--mono);resize:vertical;border-radius:12px;padding:16px}.lesson-preview{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);border-radius:12px;max-height:420px;padding:20px 24px;overflow-y:auto}.quiz-editor-question{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.quiz-editor-question input[type=text],.quiz-editor-question textarea{border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;flex:1;padding:8px 10px}.quiz-editor-correct{color:var(--text);white-space:nowrap;align-items:center;gap:6px;font-size:.85em;display:flex}.quiz-editor-row{align-items:center;gap:8px;display:flex}.add-link{align-self:flex-start;align-items:center;gap:6px;padding:0;font-size:.85em;font-weight:700;display:inline-flex}.add-link .icon{width:14px;height:14px}.modal-actions-left{margin-right:auto;font-size:.85em}.course-page-head{grid-template-columns:280px 1fr;align-items:start;gap:24px;margin-bottom:32px;display:grid}@media (width<=700px){.course-page-head{grid-template-columns:1fr}}.course-page-head .course-cover{border:1px solid var(--border);border-radius:16px}.course-page-info{flex-direction:column;gap:12px;min-width:0;display:flex}.course-page-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.course-page-title h1{text-align:left;overflow-wrap:anywhere;margin:0}.course-page-tools,.level-section-tools,.topic-tile-tools{flex-shrink:0;align-items:center;gap:2px;display:inline-flex}.icon-button-danger:hover:not(:disabled){background:var(--error-bg);color:var(--error)}.course-page-description{color:var(--text);white-space:pre-line}.course-page-stats{color:var(--text-h);align-items:center;gap:8px;font-size:.85em;font-weight:700;display:inline-flex}.course-page-stats .icon{color:var(--accent)}.course-section{margin-bottom:36px}.course-section>h2{margin:0 0 16px;font-size:22px;font-weight:800}.course-section-empty{text-align:left}.group-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.group-card{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);min-height:64px;color:inherit;border-radius:14px;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;display:flex}a.group-card:hover{border-color:var(--accent-border)}.group-card>.icon{background:var(--accent-bg);width:28px;height:28px;color:var(--accent);border-radius:10px;padding:7px}.group-card>span{flex-direction:column;min-width:0;display:flex}.group-card strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-card strong+span{color:var(--text);font-size:.8em;font-weight:600}.group-card-add{background:0 0;border-style:dashed;flex-wrap:wrap;gap:6px}.group-card-add input,.inline-add input,.add-tile-form input,.enroll-form select{border:1px solid var(--border);background:var(--bg);min-width:0;color:var(--text-h);font:500 15px/1.4 var(--sans);border-radius:10px;flex:1;padding:9px 12px}.group-card-add input:focus,.inline-add input:focus,.add-tile-form input:focus{border-color:var(--accent-border);outline:none}.group-card-add .error,.inline-add .error{flex-basis:100%;font-size:.8em}.level-section{margin-bottom:28px}.level-section-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:12px;display:flex}.level-number{color:var(--accent);font:700 .8em var(--mono);text-transform:uppercase;letter-spacing:.04em}.level-section-head h3{margin:0;font-size:18px;font-weight:800}.level-section-tools{align-self:center;margin-left:auto}.topic-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.topic-tile{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-direction:column;min-height:150px;padding:12px 12px 8px 16px;display:flex;position:relative}.topic-tile:has(.topic-menu-list){z-index:2}.topic-tile-hidden{background:var(--code-bg)}.topic-tile-hidden>:not(.topic-tile-head){opacity:.55}.topic-tile-dragging{border-color:var(--accent);box-shadow:var(--shadow)}.topic-tile-head{align-items:center;gap:8px;min-height:34px;display:flex}.topic-tile-head .topic-code{width:auto}.topic-tile-head .badge{padding:2px 10px;font-size:.68em}.topic-tile-tools{margin-left:auto}.drag-handle{cursor:grab;touch-action:none}.topic-tile-dragging .drag-handle{cursor:grabbing}.topic-tile-title{color:var(--text-h);overflow-wrap:anywhere;flex:1;margin:4px 0 12px;font-size:16px;font-weight:700}.topic-tile-error{margin-bottom:8px;font-size:.75em}.topic-tile-actions{border-top:1px solid var(--border);align-items:center;gap:2px;margin-left:-6px;padding-top:8px;display:flex}.topic-tile-actions .icon{width:22px;height:22px}.topic-tile-preview{color:var(--text-h);margin-left:auto}.content-icon{opacity:.45}.content-present{opacity:1;color:var(--accent)}span.content-icon:hover{color:var(--text);background:0 0}span.content-present:hover{color:var(--accent)}.topic-menu{position:relative}.topic-menu-list{z-index:10;border:1px solid var(--border);background:var(--surface);min-width:210px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.topic-menu-list button{color:var(--text-h);text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;font-size:.8em;font-weight:600;display:flex}.topic-menu-list button:hover{background:var(--accent-bg);color:var(--accent)}.topic-menu-list button.danger{color:var(--error)}.topic-menu-list button.danger:hover{background:var(--error-bg)}.topic-menu-list .icon{width:18px;height:18px}.add-tile{box-sizing:border-box;border:1.5px dashed var(--border);min-height:150px;color:var(--text);background:0 0;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:.8em;font-weight:700;display:flex}button.add-tile:hover{border-color:var(--accent-border);color:var(--accent)}.add-tile .icon{width:26px;height:26px;color:var(--accent)}.add-tile-form{border-color:var(--accent-border);align-items:stretch}.add-tile-form input{flex:none}.add-tile-form .error{font-size:.9em}.add-tile-actions{justify-content:flex-end;gap:8px;display:flex}.add-tile-actions .primary-button{padding:8px 14px}.inline-add{flex-wrap:wrap;gap:10px;max-width:560px;display:flex}.inline-add .primary-button{font-size:.85em}.enroll-form{flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0 24px;display:flex}.enroll-form .secondary{font-size:.85em}button.back-link{background:0 0;border:none;padding:0}.lesson-editor-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:16px;display:flex}.lesson-editor-head h1{text-align:left;margin:0;font-size:28px}.lesson-editor-head .topic-code{width:auto}.lesson-editor-level{color:var(--text);font-size:.8em;font-weight:600}.lesson-editor-page .lesson-editor textarea{min-height:60vh}.lesson-editor-page .lesson-preview{max-height:60vh}.lesson-editor-bar{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.lesson-editor-bar .link-button{font-size:.8em}.lesson-editor-status{color:var(--text);margin-left:auto;font-size:.78em;font-weight:600}.preview-banner{border:1px dashed var(--accent-border);background:var(--accent-bg);color:var(--text-h);border-radius:12px;align-items:center;gap:10px;margin-bottom:20px;padding:10px 14px;font-size:.8em;font-weight:600;display:flex}.preview-banner .icon{color:var(--accent)}.topic-preview .page-status{text-align:left}.preview-section{border-top:1px solid var(--border);margin-top:32px;padding-top:20px}.preview-section h2{margin:0 0 12px;font-size:20px;font-weight:800}
