@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-ext-wght-normal.460bdf14.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-wght-normal.491cbc05.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-ext-wght-normal.23aae568.woff2) format("woff2-variations");unicode-range:u+1f??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-wght-normal.4449bf7a.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-vietnamese-wght-normal.113a630f.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-ext-wght-normal.3835a68e.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-wght-normal.6c596dfc.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-400-normal.17d05b18.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-ext-400-normal.7daf4077.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-cyrillic-400-normal.17524150.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-400-normal.29859c59.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-greek-400-normal.77d339c7.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-greek-400-normal.4a5b0cb1.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-vietnamese-400-normal.553f85d1.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-vietnamese-400-normal.fd17702b.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-latin-ext-400-normal.4d63b447.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-ext-400-normal.ef62d646.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/jetbrains-mono-latin-400-normal.db9d659a.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-400-normal.b0c7be19.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-500-normal.d9de1144.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-ext-500-normal.02ec8c39.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-cyrillic-500-normal.ae6258df.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-cyrillic-500-normal.00657183.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-greek-500-normal.89c6cba8.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-greek-500-normal.96a101cf.woff) format("woff");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-vietnamese-500-normal.3bbdce79.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-vietnamese-500-normal.5b6505bb.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-latin-ext-500-normal.b7bedb53.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-ext-500-normal.d0559b71.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/jetbrains-mono-latin-500-normal.af2e87f5.woff2) format("woff2"),url(/_next/static/media/jetbrains-mono-latin-500-normal.24c9023a.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--font-sans:"Inter Variable","Inter",system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code",ui-monospace,monospace;--font-display:"Inter Variable","Inter",system-ui,sans-serif;--ds-primary:#134d8b;--ds-primary-hover:#0e3a69;--ds-primary-soft:#f2f6f9;--ds-primary-rgb:19,77,139;--ds-primary-hover-rgb:14,58,105;--ds-secondary:#c72127;--ds-secondary-soft:#f8e8e9;--ds-secondary-rgb:199,33,39;--ds-accent:#d97706;--ds-danger:#ef4444;--ds-danger-soft:#fee2e2;--ds-success:#22c55e;--ds-success-soft:#dcfce7;--ds-info:#0076c0;--ds-info-soft:#f2f6f9;--ds-warn:#f59e0b;--ds-warn-soft:#fef3c7;--ds-text-main:#2e2e2e;--ds-text-on-light:#2e2e2e;--ds-text:#2e2e2e;--ds-text-secondary:#5a5a5a;--ds-text-muted:#818181;--ds-border:#eaeaea;--ds-border-soft:#eeefef;--ds-bg:#f2f6f9;--ds-card:#fff;--ds-sidebar:#134d8b;--ds-sidebar-hover:#0e3a69;--ds-sidebar-active:rgba(var(--ds-primary-rgb),0.18);--ds-sidebar-text:#d7e8f1;--ds-sidebar-muted:rgba(215,232,241,.54);--r:12px;--r-card:16px;--r-modal:24px;--r-pill:9999px;--sidebar:256px;--progress-sidebar:256px;--send-btn-bg:linear-gradient(135deg,var(--ds-primary),var(--ds-primary-hover));--send-btn-text:#fff;--send-btn-disabled-bg:rgba(15,23,42,.1);--send-btn-disabled-text:rgba(15,23,42,.35);--header-text:#f9fafb;--header-text-muted:rgba(249,250,251,.7);--border-radius-lg:var(--r-card);--border-radius-md:var(--r);--ink:var(--ds-text-main);--ink-60:var(--ds-text-secondary);--ink-30:var(--ds-text-muted);--ink-10:var(--ds-border);--color-text-primary:var(--ds-text-main);--color-text-secondary:var(--ds-text-secondary);--color-text-tertiary:var(--ds-text-muted);--color-text-info:var(--ds-info);--color-text-warning:var(--ds-warn);--color-text-success:var(--ds-success);--color-text-danger:var(--ds-danger);--color-background-primary:var(--ds-card);--color-background-secondary:var(--ds-bg);--color-background-info:var(--ds-info-soft);--color-background-warning:var(--ds-warn-soft);--color-background-success:var(--ds-success-soft);--color-background-danger:var(--ds-danger-soft);--color-border-tertiary:var(--ds-border);--color-border-secondary:rgba(15,23,42,.14);--color-border-info:rgba(var(--ds-secondary-rgb),0.32);--color-border-warning:rgba(245,158,11,.3);--accent:var(--ds-primary);--accent-strong:var(--ds-primary-hover);--success:var(--ds-success);--error:var(--ds-danger);--teal:var(--ds-primary);--teal-l:rgba(var(--ds-primary-rgb),0.12);--warn:var(--ds-danger);--warn-l:var(--ds-danger-soft);--gold:var(--ds-accent);--gold-l:var(--ds-warn-soft);--auth-logo-text:var(--header-text);--auth-logo-muted:var(--header-text-muted);--auth-kicker-text:rgba(249,250,251,.65);--auth-card-bg:var(--ds-card);--auth-card-border:var(--ds-border);--auth-field-bg:var(--ds-bg);--auth-field-text:var(--ds-text-main);--auth-field-placeholder:var(--ds-text-muted)}*,:after,:before{box-sizing:border-box;margin:0;padding:0;min-width:0}html{color-scheme:light;width:100%;max-width:100%;overflow-x:clip;scrollbar-gutter:stable}html[data-theme=dark]{color-scheme:dark;--ds-primary:#6ca6da;--ds-primary-hover:#98c3ea;--ds-primary-rgb:108,166,218;--ds-primary-hover-rgb:152,195,234;--ds-secondary:#f15a5f;--ds-secondary-rgb:241,90,95;--ds-accent:#f3b45b;--ds-info:#6ca6da;--ds-text-main:#f4f8fc;--ds-text:#f4f8fc;--ds-text-secondary:#d3e0eb;--ds-text-muted:#9fb3c7;--ds-border:#31506a;--ds-border-soft:#243f58;--ds-bg:#0a2238;--ds-card:#12304a;--ds-sidebar:#071b2f;--ds-sidebar-hover:#102b43;--ds-sidebar-active:rgba(var(--ds-primary-rgb),0.18);--ds-sidebar-text:#f4f8fc;--ds-sidebar-muted:rgba(244,248,252,.62);--ds-primary-soft:rgba(var(--ds-primary-rgb),0.18);--ds-secondary-soft:rgba(var(--ds-secondary-rgb),0.16);--ds-success-soft:rgba(34,197,94,.15);--ds-danger-soft:rgba(239,68,68,.15);--ds-info-soft:rgba(var(--ds-primary-rgb),0.15);--ds-warn-soft:rgba(245,158,11,.15);--ink:var(--ds-text-main);--ink-60:var(--ds-text-secondary);--ink-30:var(--ds-text-muted);--ink-10:var(--ds-border);--color-background-primary:var(--ds-card);--color-background-secondary:var(--ds-bg);--color-background-info:var(--ds-info-soft);--color-background-warning:var(--ds-warn-soft);--color-background-success:var(--ds-success-soft);--color-background-danger:var(--ds-danger-soft);--color-border-tertiary:var(--ds-border);--color-border-secondary:rgba(229,231,235,.12);--send-btn-bg:linear-gradient(135deg,var(--ds-primary),var(--ds-primary-hover));--send-btn-disabled-bg:rgba(229,231,235,.1);--send-btn-disabled-text:rgba(229,231,235,.35);--auth-card-bg:var(--ds-card);--auth-card-border:var(--ds-border);--auth-field-bg:#0a2238;--auth-field-text:var(--ds-text-main);--auth-field-placeholder:var(--ds-text-muted)}body{font-family:var(--font-sans);font-size:16px;color:var(--ds-text-main);background:var(--ds-bg);width:100%;max-width:100%;min-height:100vh;transition:background .2s ease,color .2s ease;overflow-x:hidden;scrollbar-gutter:stable}article,aside,main,section{min-width:0}canvas,img,svg,video{max-width:100%;height:auto}blockquote,dd,figcaption,li,p{overflow-wrap:anywhere}pre{max-width:100%;overflow-x:auto;white-space:pre}html[data-theme=dark] body{background:var(--ds-bg)}button,input,select,textarea{font-family:var(--font-sans);font-size:inherit;color:inherit}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-shell.tutor-active{height:100vh;overflow:hidden}.app-shell.tutor-active .app-main{height:100%;overflow:hidden;padding:0;max-width:100%;margin:0}.app-shell.tutor-active .dashboard-layout{height:100%;overflow:hidden;gap:0}.app-shell.tutor-active .sd2-shell{height:100%;min-height:unset;gap:0;overflow:hidden}.app-shell.tutor-active .sd2-left{border-radius:0;position:static;height:100%}.app-shell.tutor-active .sd2-main{height:100%;overflow:hidden;padding:3 16px 16px;gap:12px}.app-shell.tutor-active .sd2-right{height:100%;overflow-y:auto;padding:3 16px 16px 0}.app-shell.tutor-active .sd2-workspace{height:100%;overflow:hidden;display:flex;flex-direction:column}.app-shell.tutor-active .sd2-content-grid{flex:1;min-height:0;overflow:hidden;padding:0 16px 16px;gap:16px}.app-shell.tutor-active .sd2-header{position:static;flex-shrink:0}.app-header{gap:12px;padding:0 max(20px,env(safe-area-inset-left)) 0 max(20px,env(safe-area-inset-right));min-height:64px;background:var(--ds-sidebar);border-bottom:1px solid hsla(0,0%,100%,.06);position:sticky;top:0;z-index:20}.app-header,.header-brand{display:flex;align-items:center}.header-brand{gap:10px;margin-right:16px;flex-shrink:0}.vlearn-logo{display:inline-flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.vlearn-logo-mark{display:inline-grid;place-items:center;width:38px;height:38px;flex:0 0 auto;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.vlearn-logo-mark img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block}.vlearn-logo-text{font-size:25px;font-weight:850;letter-spacing:0;line-height:1;color:inherit}.vlearn-logo-text-v{color:var(--ds-secondary)}.vlearn-logo-text-learn{color:#fff}.vlearn-logo--sm .vlearn-logo-mark{width:30px;height:30px}.vlearn-logo--sm .vlearn-logo-text{font-size:20px}.vlearn-logo--lg .vlearn-logo-mark{width:54px;height:54px}.vlearn-logo--lg .vlearn-logo-text{font-size:34px}.brand-dot{width:32px;height:32px;border-radius:10px;background:var(--ds-primary);display:flex;align-items:center;justify-content:center;font-size:12px}.brand-dot,.brand-name{color:#fff;font-weight:700}.brand-name{font-family:var(--font-display);font-size:20px;line-height:1;letter-spacing:-.01em}.header-brand-img{height:32px;width:auto;display:block}.header-nav{display:flex;gap:4px;flex:1}.role-nav-pill{padding:5px 12px;border-radius:var(--r-pill);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1px solid hsla(0,0%,100%,.14);color:hsla(0,0%,100%,.7);background:hsla(0,0%,100%,.06);white-space:nowrap}.role-nav-pill.role-student{border-color:rgba(var(--ds-primary-rgb),.5);color:var(--ds-primary)}.role-nav-pill.role-teacher{border-color:rgba(20,184,166,.4);color:#5eead4}.role-nav-pill.role-admin{border-color:rgba(59,130,246,.4);color:#93c5fd}.header-right{display:flex;align-items:center;gap:8px;margin-left:auto;position:relative}.user-chip{font-size:13px;color:hsla(0,0%,100%,.8);padding:6px 12px;border-radius:var(--r-pill);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.1);white-space:nowrap}.notification-wrap,.settings-wrap{position:relative}.notify-btn,.theme-quick-btn{font-size:12px;padding:7px 12px;border-radius:var(--border-radius-md);border:1px solid hsla(0,0%,100%,.1);background:transparent;color:var(--header-text);cursor:pointer;font-weight:500}.notify-btn{position:relative}.notify-btn.active,.notify-btn:hover,.theme-quick-btn:hover{background:hsla(0,0%,100%,.06)}.theme-quick-btn{width:38px;padding:7px 0;text-align:center}.notify-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:50%;background:#ff835f;color:#fff;font-size:10px;line-height:18px;text-align:center;border:2px solid rgba(26,24,20,.96)}.notify-popover{position:absolute;top:calc(100% + 8px);right:0;width:min(360px,calc(100vw - 24px));max-height:420px;border-radius:14px;border:1px solid var(--color-border-tertiary);background:var(--color-background-primary);box-shadow:0 16px 40px rgba(0,0,0,.18);overflow:hidden;z-index:45}.notify-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--color-border-tertiary);font-size:13px;font-weight:600;color:var(--color-text-primary)}.notify-head button{border:none;background:transparent;color:var(--color-text-info);cursor:pointer;font-size:12px;font-weight:600}.notify-list{max-height:340px;overflow-y:auto}.notify-item,.notify-list{display:flex;flex-direction:column}.notify-item{gap:6px;width:100%;padding:10px 12px;border:none;border-bottom:1px solid var(--color-border-tertiary);background:transparent;text-align:left;font:inherit;color:inherit;transition:background .15s}.notify-item:last-child{border-bottom:none}.notify-item-row{display:flex;align-items:flex-start;gap:8px}.notify-item-body{flex:1;min-width:0}.notify-item p{font-size:12px;color:var(--color-text-primary);line-height:1.45;margin:0}.notify-item-time{display:inline-block;margin-top:4px;font-size:11px;color:var(--color-text-tertiary)}.notify-item.success p{color:var(--color-text-success)}.notify-item.warning p{color:var(--color-text-warning)}.notify-item--expandable{cursor:pointer}.notify-item--expandable:hover{background:var(--color-background-secondary)}.notify-item--expandable:focus-visible{outline:2px solid var(--ds-primary);outline-offset:-2px}.notify-item-actions{flex:none;display:inline-flex;align-items:center;gap:2px}.notify-item-dismiss,.notify-item-toggle{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:6px;background:transparent;color:var(--color-text-tertiary);cursor:pointer;transition:opacity .15s,background .15s,color .15s}.notify-item-dismiss{opacity:0}.notify-item:focus-within .notify-item-dismiss,.notify-item:hover .notify-item-dismiss{opacity:1}.notify-item-toggle:hover{background:var(--color-border-tertiary);color:var(--color-text-primary)}.notify-item-dismiss:hover{background:rgba(239,68,68,.12);color:var(--ds-danger)}.notify-item-details{display:flex;flex-direction:column;gap:8px;margin-top:4px;padding:10px 12px;border-radius:8px;background:var(--color-background-secondary);border:.5px solid var(--color-border-tertiary);cursor:default}.notify-item-summary{font-size:12px;line-height:1.5;color:var(--color-text-primary);margin:0}.notify-item-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--color-text-secondary);line-height:1.45}.notify-item-list li::marker{color:var(--ds-primary)}.notify-item-cta{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:8px;border:.5px solid var(--ds-primary);background:var(--ds-primary-soft);color:var(--ds-primary);font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.notify-item-cta:hover{background:var(--ds-primary);color:#fff}.notify-empty{padding:20px 14px;text-align:center;color:var(--color-text-tertiary);font-size:12px}.settings-btn{font-size:12px;padding:7px 12px;border-radius:var(--border-radius-md);border:1px solid hsla(0,0%,100%,.1);background:transparent;color:var(--header-text);cursor:pointer;font-weight:500}.settings-btn:hover{background:hsla(0,0%,100%,.06)}.settings-popover{position:absolute;top:calc(100% + 8px);right:0;width:220px;padding:12px;border-radius:12px;border:1px solid var(--color-border-tertiary);background:var(--color-background-primary);box-shadow:0 12px 32px rgba(0,0,0,.16);z-index:40}.settings-title{font-size:13px;font-weight:700;color:var(--color-text-primary)}.settings-copy{margin-top:4px;font-size:12px;line-height:1.5;color:var(--color-text-secondary)}.theme-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.theme-option{padding:8px 10px;border-radius:10px;border:1px solid var(--color-border-tertiary);background:var(--color-background-secondary);color:var(--color-text-primary);font-size:12px;font-weight:600;cursor:pointer}.theme-option.active{border-color:var(--color-border-info);background:var(--color-background-info);color:var(--color-text-info)}.app-main{flex:1;padding:28px max(24px,env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));max-width:1520px;margin:0 auto;width:100%}.app-main--student{padding:0;max-width:100%;margin:0}.page-status{margin-bottom:14px;padding:10px 12px;border-radius:8px;font-size:12.5px;border-left:2px solid transparent}.page-status.info{background:var(--teal-l);color:var(--teal);border-left-color:var(--teal)}.page-status.success{background:var(--gold-l);color:#7a5a10;border-left-color:var(--gold)}.page-status.error{background:var(--warn-l);color:var(--warn);border-left-color:var(--warn)}.app-toast{position:absolute;top:calc(100% + 8px);right:0;z-index:200;min-width:260px;max-width:min(380px,calc(100vw - 32px));padding:11px 14px;border-radius:10px;border:1px solid var(--ds-border);box-shadow:0 8px 24px rgba(15,23,42,.12),0 2px 6px rgba(15,23,42,.06);background:var(--ds-card);color:var(--ds-text);font-size:13px;font-weight:500;white-space:nowrap;animation:toast-enter .18s ease}.app-toast.success{border-color:rgba(34,197,94,.3);background:var(--ds-card);color:#16a34a}.app-toast.info{border-color:rgba(59,130,246,.3);background:var(--ds-card);color:var(--ds-primary)}.app-toast.error{border-color:rgba(239,68,68,.3);background:var(--ds-card);color:#dc2626}html[data-theme=dark] .app-toast.success{color:#4ade80}html[data-theme=dark] .app-toast.info{color:#93c5fd}html[data-theme=dark] .app-toast.error{color:#fca5a5}@keyframes toast-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.hint-chip,.logout-btn,.new-session-btn,.send-btn,.settings-btn,.start-btn,.tab-btn,.theme-option{box-shadow:none;transition:background .14s,opacity .14s,color .14s,border-color .14s}.hint-chip:hover,.logout-btn:hover,.new-session-btn:hover,.settings-btn:hover,.tab-btn:hover,.theme-option:hover{transform:none}.nav-tabs{display:flex;gap:6px}.tab-btn{padding:8px 16px;font-size:13.5px;border-radius:var(--r);border:1px solid transparent;background:transparent;color:hsla(0,0%,100%,.6);cursor:pointer;font-weight:500;transition:background .15s,color .15s}.tab-btn:hover{background:hsla(0,0%,100%,.08);color:#fff}.tab-btn.active{background:var(--ds-primary);color:#fff;border-color:transparent}.logout-btn{font-size:13px;padding:7px 14px;border-radius:var(--r);border:1px solid hsla(0,0%,100%,.12);background:transparent;color:hsla(0,0%,100%,.7);cursor:pointer;font-weight:500;transition:background .15s}.logout-btn:hover{background:rgba(239,68,68,.18);color:#fca5a5;border-color:rgba(239,68,68,.3)}.vlearn-appearance-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;height:40px;padding:0 12px;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#134d8b;font-size:13px;font-weight:700;cursor:pointer;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.vlearn-appearance-btn:hover{border-color:#cbd5e1;background:#f8fafc;color:#2563eb}.vlearn-appearance-btn:not(.has-text){width:40px;padding:0}.vlearn-appearance-btn.has-text{min-width:76px}.dark .vlearn-appearance-btn,html[data-theme=dark] .vlearn-appearance-btn{border-color:#31506a;background:#102b43;color:#f4f8fc;box-shadow:none}.dark .vlearn-appearance-btn:hover,html[data-theme=dark] .vlearn-appearance-btn:hover{border-color:#4a6e8f;background:#17344c;color:#fff}.ds-pager{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--ds-border)}.ds-pager-info{margin-right:auto;font-size:12px;color:var(--ds-text-secondary);font-variant-numeric:tabular-nums}.ds-pager-btn{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 12px;border:1px solid var(--ds-border);border-radius:var(--r);background:var(--ds-card);color:var(--ds-text-main);font-size:12.5px;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s}.ds-pager-btn:hover:not(:disabled){border-color:var(--ds-primary);color:var(--ds-primary)}.ds-pager-btn:disabled{opacity:.4;cursor:not-allowed}.auth-shell{height:100dvh;overflow:hidden;width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:0;padding:0;max-width:none;margin:0;min-width:0}.auth-shell-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;background:radial-gradient(circle at 50% 42%,rgba(var(--ds-primary-rgb),.1),transparent 28%),var(--ds-bg)}.auth-top-controls{position:absolute;top:16px;right:20px;display:flex;align-items:center;gap:8px;z-index:10}.auth-ctrl-btn{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--ds-border);background:var(--ds-card);color:var(--ds-text-secondary);font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.07);transition:background .15s ease,color .15s ease,border-color .15s ease}.auth-ctrl-btn:hover{color:var(--ds-text-main);border-color:var(--ds-primary);background:var(--ds-primary-soft)}.auth-showcase{min-width:0;background:radial-gradient(ellipse at 82% 12%,rgba(var(--ds-primary-rgb),.56) 0,transparent 48%),radial-gradient(ellipse at 14% 84%,rgba(var(--ds-secondary-rgb),.28) 0,transparent 45%),radial-gradient(ellipse at 54% 45%,rgba(147,197,253,.16) 0,transparent 58%),linear-gradient(160deg,#06142b 0,#0b2f5f 52%,#071426 100%);color:#eff6ff;border-radius:0;padding:36px 36px 32px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;position:relative;overflow:hidden;height:100dvh}.auth-showcase:before{top:-120px;right:-120px;width:560px;height:560px;background:radial-gradient(circle,rgba(var(--ds-primary-rgb),.35),transparent 62%)}.auth-showcase:after,.auth-showcase:before{content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:0}.auth-showcase:after{left:-60px;bottom:20%;width:280px;height:280px;background:radial-gradient(circle,rgba(96,165,250,.2),transparent 65%)}.auth-hero-image{position:absolute;bottom:8%;right:-16px;width:72%;z-index:1;pointer-events:none}.auth-hero-glow{position:absolute;inset:-5% -5% 0 -5%;background:radial-gradient(ellipse at 60% 70%,rgba(var(--ds-primary-rgb),.46) 0,transparent 55%),radial-gradient(ellipse at 40% 30%,rgba(14,165,233,.24) 0,transparent 50%);filter:blur(28px);z-index:0}.auth-hero-image img{position:relative;z-index:1;width:100%;display:block;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 -6px 32px rgba(96,165,250,.28)) drop-shadow(0 28px 56px rgba(3,20,38,.62));mask-image:radial-gradient(ellipse 90% 85% at 60% 55%,#000 30%,rgba(0,0,0,.7) 55%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 90% 85% at 60% 55%,#000 30%,rgba(0,0,0,.7) 55%,transparent 80%)}.auth-logo-lockup{display:flex;align-items:center;gap:10px;margin-bottom:28px;position:relative;z-index:3}.auth-logo-icon{width:46px;height:46px;border-radius:16px;background:linear-gradient(135deg,var(--ds-primary),var(--ds-secondary));box-shadow:0 4px 18px rgba(var(--ds-primary-rgb),.45);display:flex;align-items:center;justify-content:center;margin:0;flex-shrink:0}.auth-logo-icon,.auth-wordmark{font-size:20px;color:#fff;font-weight:800}.auth-wordmark{font-family:var(--font-sans);letter-spacing:-.04em}.auth-logo-img{height:46px;width:auto;display:block}.loading-brand{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:2px}.loading-brand-mark{width:82px;height:82px;display:block;-o-object-fit:contain;object-fit:contain;padding:6px;border-radius:14px;background:transparent;filter:drop-shadow(0 14px 24px rgba(var(--ds-primary-rgb),.14))}.loading-brand-word{color:#0c4b8f;font-size:34px;line-height:1;font-weight:800;letter-spacing:0}.loading-brand-word span{color:#c72127}html[data-theme=dark] .loading-brand-word{color:#f4f8fc}.loading-runner{position:relative;width:172px;height:132px;display:grid;place-items:center}.loading-runner:before{content:"";position:absolute;inset:14px 20px 24px;border-radius:999px;background:linear-gradient(135deg,rgba(var(--ds-primary-rgb),.1),rgba(var(--ds-secondary-rgb),.08));filter:blur(14px);opacity:.9}.loading-mascot{position:relative;z-index:2;width:118px;height:118px;-o-object-fit:contain;object-fit:contain;transform-origin:50% 78%;animation:loading-bot-run .72s ease-in-out infinite;filter:drop-shadow(0 16px 20px rgba(0,31,73,.18))}.loading-shadow{left:50%;bottom:12px;z-index:1;width:76px;height:13px;background:rgba(10,34,56,.18);transform:translateX(-50%);animation:loading-shadow-pulse .72s ease-in-out infinite}.loading-shadow,.loading-speed-line{position:absolute;border-radius:999px}.loading-speed-line{left:4px;z-index:0;width:44px;height:3px;background:linear-gradient(90deg,transparent,rgba(var(--ds-primary-rgb),.45));animation:loading-speed-line .72s linear infinite}.loading-speed-line--one{top:42px;animation-delay:0s}.loading-speed-line--two{top:66px;width:58px;animation-delay:-.22s}.loading-speed-line--three{top:90px;width:34px;animation-delay:-.44s}@keyframes loading-bot-run{0%,to{transform:translateY(0) rotate(-4deg) scaleX(1.02)}25%{transform:translateY(-8px) rotate(3deg) scaleX(.98)}50%{transform:translateY(0) rotate(5deg) scaleX(1.02)}75%{transform:translateY(-6px) rotate(-2deg) scaleX(.99)}}@keyframes loading-shadow-pulse{0%,to{transform:translateX(-50%) scaleX(1);opacity:.2}50%{transform:translateX(-50%) scaleX(.72);opacity:.1}}@keyframes loading-speed-line{0%{transform:translateX(0);opacity:0}18%{opacity:1}to{transform:translateX(84px);opacity:0}}@media (prefers-reduced-motion:reduce){.loading-mascot,.loading-shadow,.loading-speed-line{animation:none}}.auth-page{min-height:100dvh;display:grid;place-items:stretch;padding:0;overflow:hidden;background:linear-gradient(115deg,rgba(var(--ds-primary-rgb),.08) 0,transparent 38%),linear-gradient(180deg,var(--ds-bg) 0,var(--ds-card) 56%,var(--ds-border-soft) 100%)}html[data-theme=dark] .auth-page{background:linear-gradient(115deg,rgba(var(--ds-primary-rgb),.18) 0,transparent 38%),linear-gradient(180deg,var(--ds-bg) 0,var(--ds-sidebar-hover) 56%,var(--ds-sidebar) 100%)}.auth-page .auth-shell{position:relative;width:100%;height:100dvh;max-height:none;min-height:0;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(460px,.92fr);background:var(--ds-card);box-shadow:none;overflow:hidden}.auth-page .auth-shell:before{content:"";position:absolute;left:0;top:0;width:18px;height:118px;background:var(--ds-secondary);clip-path:polygon(0 0,0 100%,100% 50%);z-index:5}.auth-page .auth-showcase{position:relative;isolation:isolate;overflow:hidden;min-width:0;height:auto;padding:clamp(32px,4.5vw,72px) clamp(40px,6vw,96px);color:#fff;background:radial-gradient(circle at 22% 16%,hsla(0,0%,100%,.1),transparent 34%),linear-gradient(180deg,transparent 54%,rgba(0,0,0,.18) 120%),var(--ds-primary);display:flex;flex-direction:column;justify-content:flex-start}.auth-page .auth-showcase:before{content:"";position:absolute;left:clamp(-170px,-9vw,-90px);top:clamp(-80px,-4vw,-36px);width:clamp(360px,42vw,620px);height:clamp(360px,42vw,620px);border-radius:50%;background:hsla(0,0%,100%,.075);z-index:-1}.auth-page .auth-showcase:after{content:"";position:absolute;right:-48px;bottom:-48px;width:132px;height:132px;background:var(--ds-secondary);border-radius:50%;transform:none;opacity:.9;z-index:-1}html[data-theme=dark] .auth-page .auth-showcase{background:linear-gradient(180deg,transparent 54%,rgba(0,0,0,.34) 120%),var(--ds-primary)}.auth-page .auth-brand{display:inline-flex;align-items:center;gap:14px;color:#fff;font-size:clamp(30px,2.5vw,38px);font-weight:800;letter-spacing:.02em;text-decoration:none}.auth-page .auth-brand img{width:clamp(52px,4vw,64px);height:clamp(52px,4vw,64px);-o-object-fit:contain;object-fit:contain}.auth-page .auth-brand span span{color:var(--ds-secondary)}.auth-page .auth-hero{margin-top:clamp(44px,6vh,78px);max-width:650px;position:relative;z-index:3}.auth-page .auth-kicker{display:inline-flex;align-items:center;gap:12px;width:auto;padding:0;margin:0 0 14px;border:0;background:transparent;color:hsla(0,0%,100%,.82);font-size:13px;font-weight:800;letter-spacing:.02em;text-transform:uppercase}.auth-page .auth-kicker:before{content:"";width:10px;height:10px;background:var(--ds-secondary);border-radius:2px;transform:rotate(45deg)}.auth-page .auth-hero-title{margin:0 0 18px;color:#fff;font-size:clamp(34px,4.8vw,62px);font-weight:800;letter-spacing:0;line-height:1.08;text-transform:uppercase;text-wrap:balance}.auth-page .auth-hero-copy{max-width:500px;margin:0;color:hsla(0,0%,100%,.84);font-size:16px;line-height:1.65}.auth-page .auth-tip-stage{position:relative;min-height:170px;margin-top:auto;padding-top:40px}.auth-page .auth-tip-bot{position:absolute;right:clamp(8px,3vw,42px);bottom:-18px;z-index:5;width:clamp(112px,13vw,160px);height:auto;-o-object-fit:contain;object-fit:contain;opacity:.9;filter:drop-shadow(0 18px 22px rgba(0,31,73,.18))}.auth-page .auth-tip-card{position:absolute;left:0;bottom:18px;max-width:min(440px,68%);padding:20px 24px;font-size:14px;line-height:1.58;background:hsla(0,0%,100%,.96);color:var(--ds-text-on-light)!important;border:1px solid hsla(0,0%,100%,.54);border-left:4px solid var(--ds-secondary);border-radius:var(--r-card);box-shadow:0 18px 44px rgba(0,31,73,.16)}.auth-page .auth-tip-card strong{display:block;color:var(--ds-primary)!important;margin-bottom:6px;text-transform:uppercase}.auth-page .auth-tip-text{display:block;color:var(--ds-text-on-light)!important;opacity:1}.auth-page .auth-panel{position:relative;min-width:0;width:100%;height:auto;display:grid;align-items:center;padding:clamp(24px,4vw,48px) clamp(32px,5vw,64px);overflow-x:hidden;overflow-y:auto;background:linear-gradient(180deg,rgba(var(--ds-primary-rgb),.025),transparent 38%),var(--ds-card)}html[data-theme=dark] .auth-page .auth-panel,html[data-theme=dark] .auth-page .auth-shell{background:var(--ds-card)}.auth-page .auth-form-wrap{width:min(100%,460px);margin:0 auto}.auth-page .auth-form-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.auth-page .auth-back-link{display:inline-flex;align-items:center;gap:10px;color:var(--ds-primary);font-size:13px;font-weight:750;text-transform:uppercase;text-decoration:none;transition:color .22s ease}html[data-theme=dark] .auth-page .auth-back-link{color:var(--ds-text-secondary)}.auth-page .auth-back-link:before{content:"";width:9px;height:12px;background:var(--ds-secondary);clip-path:polygon(100% 0,100% 100%,0 50%)}.auth-page .auth-top-controls{position:static;display:inline-flex;align-items:center;gap:6px}.auth-page .auth-ctrl-btn{height:38px;min-width:38px;padding:0 12px;border-radius:12px;border:1px solid var(--ds-border);background:var(--ds-card);color:var(--ds-primary);font-size:12px;font-weight:750;box-shadow:0 10px 24px rgba(var(--ds-primary-rgb),.06);transition:border-color .22s ease,background-color .22s ease,color .22s ease,transform .22s ease}.auth-page .auth-ctrl-btn:hover{border-color:rgba(var(--ds-primary-rgb),.28);background:var(--ds-primary-soft);transform:translateY(-1px)}html[data-theme=dark] .auth-page .auth-ctrl-btn{background:var(--ds-bg);border-color:var(--ds-border);color:var(--ds-text)}.auth-page .auth-role-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:0 0 16px;padding:4px;width:100%;max-width:none;background:var(--ds-border-soft);border:1px solid var(--ds-border);border-radius:var(--r-card)}.auth-page .auth-role-tab{min-height:38px;height:auto;border:0;border-radius:calc(var(--r-card) - 5px);background:transparent;color:var(--ds-text-secondary);font-size:12px;font-weight:750;text-transform:uppercase;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease}.auth-page .auth-role-tab.active,.auth-page .auth-role-tab:hover:not(.disabled){background:var(--ds-card);color:var(--ds-primary);box-shadow:0 10px 24px rgba(var(--ds-primary-rgb),.1)}.auth-page .auth-role-tab.active{background:var(--ds-primary);color:#fff}.auth-page .auth-role-tab.disabled{opacity:.55;cursor:not-allowed}html[data-theme=dark] .auth-page .auth-role-tabs{background:var(--ds-bg);border-color:var(--ds-border)}html[data-theme=dark] .auth-page .auth-role-tab{background:transparent;color:var(--ds-text-secondary)}html[data-theme=dark] .auth-page .auth-role-tab.active{background:var(--ds-primary);color:#fff}.auth-page .pending-status-badge{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:18px;border-radius:16px;color:var(--ds-primary);background:var(--ds-primary-soft)}.auth-page .pending-status-badge--rejected{color:var(--ds-danger);background:var(--ds-danger-soft)}.auth-page .auth-security-note.pending-signed-in{margin-top:18px;margin-bottom:22px}.auth-page .auth-heading{margin-bottom:16px}.auth-page .auth-heading h2{margin:0 0 6px;color:var(--ds-text-main);font-size:clamp(24px,2.5vw,30px);font-weight:800;line-height:1.14;text-transform:uppercase;text-wrap:balance}.auth-page .auth-heading h2 span{color:var(--ds-secondary)}.auth-page .auth-heading p{margin:0;color:var(--ds-text-secondary);font-size:15px;line-height:1.55}html[data-theme=dark] .auth-page .auth-heading h2{color:var(--ds-text)}html[data-theme=dark] .auth-page .auth-heading p{color:var(--ds-text-secondary)}.auth-page .form-stack{display:grid;gap:10px}.auth-page .form-field{display:block}.auth-page .form-field label{display:block;margin-bottom:6px;color:var(--ds-text-main);font-size:12px;font-weight:750;text-transform:uppercase}html[data-theme=dark] .auth-page .form-field label{color:var(--ds-text)}.auth-page .auth-input-wrap{position:relative;width:100%;height:auto;min-height:46px;border:1px solid var(--ds-border);border-radius:var(--r);background:var(--ds-bg);color:var(--ds-text-main);display:flex;align-items:center;gap:8px;padding:0 14px;transition:border-color .25s ease,background-color .25s ease,box-shadow .25s ease}.auth-page .auth-input-wrap:focus-within{border-color:rgba(var(--ds-primary-rgb),.48);background:var(--ds-card);box-shadow:0 0 0 4px rgba(var(--ds-primary-rgb),.12)}html[data-theme=dark] .auth-page .auth-input-wrap{background:var(--ds-bg);border-color:var(--ds-border);color:var(--ds-text)}html[data-theme=dark] .auth-page .auth-input-wrap:focus-within{background:var(--ds-card)}.auth-page .auth-input-wrap input{min-height:46px;border:0;padding:10px 28px 10px 0;background:transparent;color:inherit;outline:none;width:100%;font-size:15px}.auth-page .auth-field-icon{color:var(--ds-text-muted);opacity:.75;flex-shrink:0}.auth-page .auth-eye-btn{position:relative;z-index:2;border:0;background:transparent;color:var(--ds-text-muted);display:inline-flex;align-items:center;padding:0;cursor:pointer}.auth-page .auth-meta-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 2px}.auth-page .auth-checkbox{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:750;text-transform:uppercase;cursor:pointer}.auth-page .auth-checkbox,html[data-theme=dark] .auth-page .auth-checkbox{color:var(--ds-text-secondary)}.auth-page .auth-checkbox input{width:16px;height:16px;accent-color:var(--ds-primary)}.auth-page .auth-text-link{border:0;background:transparent;color:var(--ds-primary);font-size:12px;font-weight:750;cursor:pointer;transition:color .22s ease}.auth-page .auth-text-link:hover{color:var(--ds-secondary)}html[data-theme=dark] .auth-page .auth-text-link{color:var(--ds-text-secondary)}.auth-page .auth-submit-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;width:100%;border:1px solid transparent;border-radius:var(--r);padding:11px 20px;background:var(--ds-primary);color:#fff;font-size:14px;font-weight:800;text-transform:uppercase;cursor:pointer;margin-top:4px;box-shadow:0 16px 34px rgba(var(--ds-primary-rgb),.22);transition:transform .25s ease,background-color .25s ease,box-shadow .25s ease}.auth-page .auth-submit-btn:after{content:"";width:10px;height:14px;background:currentColor;clip-path:polygon(0 0,0 100%,100% 50%)}.auth-page .auth-submit-btn:hover{transform:translateY(-2px);background:var(--ds-primary-hover);box-shadow:0 18px 38px rgba(var(--ds-primary-rgb),.26)}.auth-page .auth-divider{display:flex;align-items:center;gap:14px;margin:12px 0 10px;color:var(--ds-text-muted);font-size:13px}.auth-page .auth-divider:after,.auth-page .auth-divider:before{content:"";flex:1;height:1px;background:var(--ds-border)}html[data-theme=dark] .auth-page .auth-divider:after,html[data-theme=dark] .auth-page .auth-divider:before{background:var(--ds-border)}.auth-page .auth-social-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.auth-page .auth-social-btn{min-height:42px;height:auto;border:1px solid var(--ds-border);border-radius:var(--r);background:var(--ds-card);color:var(--ds-text-main);font-weight:750;cursor:pointer;text-transform:uppercase;transition:border-color .22s ease,background-color .22s ease,color .22s ease,transform .22s ease}.auth-page .auth-social-btn:hover{border-color:rgba(var(--ds-primary-rgb),.34);color:var(--ds-primary);background:var(--ds-primary-soft);transform:translateY(-1px)}html[data-theme=dark] .auth-page .auth-social-btn{border-color:var(--ds-border);background:var(--ds-bg);color:var(--ds-text)}.auth-page .auth-security-note{display:flex;align-items:start;justify-content:flex-start;gap:12px;margin-top:8px;padding:10px 14px;border-radius:var(--r);font-size:12px;line-height:1.5;background:var(--ds-primary-soft);color:var(--ds-text-secondary);border-left:3px solid var(--ds-primary)}.auth-page .auth-security-note:before{content:"";flex:0 0 auto;width:12px;height:12px;margin-top:3px;background:var(--ds-secondary);border-radius:2px;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}html[data-theme=dark] .auth-page .auth-security-note{background:var(--ds-bg);color:var(--ds-text-secondary)}.auth-page .auth-switch-row{font-size:12px;text-align:center;gap:4px}.auth-page .auth-demo-strip,.auth-page .auth-switch-row{margin-top:8px;color:var(--ds-text-muted);display:flex;justify-content:center;align-items:center}.auth-page .auth-demo-strip{padding-top:10px;border-radius:0;border:0;border-top:1px solid var(--ds-border);width:100%;gap:8px;flex-wrap:wrap;background:transparent;font-size:11px}html[data-theme=dark] .auth-page .auth-demo-strip{border-top-color:var(--ds-border)}.auth-page .auth-demo-label{font-size:11px;color:inherit;margin:0}.auth-page .auth-demo-pill{border:0;border-radius:8px;padding:6px 10px;background:var(--ds-border-soft);color:var(--ds-primary);font-family:var(--font-mono);font-size:11px;font-weight:800;cursor:pointer}html[data-theme=dark] .auth-page .auth-demo-pill{background:var(--ds-bg);color:var(--ds-text-secondary)}.auth-page .auth-demo-pill.disabled{opacity:.55;cursor:not-allowed}.auth-page .auth-error-msg{margin:0;padding:10px 12px;border-left:3px solid var(--ds-secondary);border-radius:var(--r);background:rgba(var(--ds-secondary-rgb),.08);color:var(--ds-secondary);font-size:12px;font-weight:700}@media (max-width:899px){.auth-page{height:auto;min-height:100dvh;overflow:visible;padding:0}.auth-page .auth-shell{grid-template-columns:1fr;height:auto;max-height:none}.auth-page .auth-showcase{min-height:420px;padding:22px 24px 24px}.auth-page .auth-panel{padding:18px 20px 22px}}@media (max-width:680px){.auth-page .auth-social-grid{grid-template-columns:1fr}.auth-page .auth-tip-bot{width:132px;right:-24px}.auth-page .auth-tip-card{right:0;max-width:260px}}.auth-kicker{width:-moz-fit-content;width:fit-content;padding:6px 14px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#bfdbfe;background:rgba(37,99,235,.2);border:1px solid rgba(147,197,253,.28);margin-bottom:20px}.auth-hero{position:relative;z-index:3}.auth-hero-title{font-family:var(--font-sans);font-size:clamp(38px,4.8vw,54px);font-weight:800;letter-spacing:-.04em;line-height:.97;color:#f8fbff}.auth-hero-title em{font-style:normal;background:linear-gradient(130deg,#dbeafe 12%,#60a5fa 48%,#38bdf8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.auth-hero-copy{font-size:14px;line-height:1.65;color:rgba(219,234,254,.78);margin-top:16px;max-width:380px}.auth-feature-list{display:flex;flex-direction:column;justify-content:space-evenly;flex:1;min-width:0;max-width:46%;position:relative;z-index:3}.auth-feature-item{display:flex;align-items:flex-start;gap:12px}.auth-feature-icon{width:64px;height:64px;border-radius:16px;background:hsla(0,0%,100%,.07);border:1px solid hsla(0,0%,100%,.14);backdrop-filter:blur(10px);box-shadow:0 2px 10px rgba(0,0,0,.25),inset 0 1px 0 hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0}.auth-feature-icon svg{width:36px;height:36px}.auth-feature-item:first-child .auth-feature-icon{color:#93c5fd;background:rgba(37,99,235,.18);border-color:rgba(147,197,253,.28)}.auth-feature-item:nth-child(2) .auth-feature-icon{color:#67e8f9;background:rgba(14,165,233,.15);border-color:rgba(103,232,249,.22)}.auth-feature-item:nth-child(3) .auth-feature-icon{color:#bfdbfe;background:rgba(96,165,250,.14);border-color:rgba(191,219,254,.24)}.auth-feature-text{display:flex;flex-direction:column;gap:4px}.auth-feature-title{font-size:14px;font-weight:600;color:#f8fbff;line-height:1.2}.auth-feature-desc{font-size:12px;color:rgba(219,234,254,.66);line-height:1.5}.auth-panel{position:relative;min-width:0;width:100%;height:100dvh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:60px 24px 24px;overflow-y:auto;gap:10px;background:radial-gradient(circle at 84% 16%,rgba(37,99,235,.08),transparent 34%),radial-gradient(circle at 14% 84%,rgba(14,165,233,.08),transparent 34%),linear-gradient(180deg,#f8fbff 0,var(--ds-bg) 100%)}.auth-card-new{background:var(--auth-card-bg);border:1px solid color-mix(in srgb,var(--auth-card-border) 64%,var(--ds-primary) 36%);border-radius:24px;padding:24px;box-shadow:0 24px 64px rgba(37,99,235,.1),0 4px 16px rgba(15,23,42,.06);backdrop-filter:blur(8px)}.auth-card-login{width:100%;max-width:500px}.auth-card-login .form-stack{min-height:unset}.auth-role-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;background:color-mix(in srgb,var(--ds-bg) 82%,#e8e8f0 18%);border:1px solid var(--ds-border);border-radius:999px;padding:4px;width:100%;max-width:500px;margin-bottom:12px}.auth-role-tab{height:38px;border:0;background:transparent;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--ds-text-secondary);font-size:13px;font-weight:600;cursor:pointer;transition:background .18s ease,color .18s ease,box-shadow .18s ease;white-space:nowrap}.auth-role-tab:hover:not(.active){color:var(--ds-text-main);background:rgba(var(--ds-primary-rgb),.08)}.auth-role-tab.active{background:var(--ds-card,#fff);color:var(--ds-primary-hover);box-shadow:0 2px 10px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.08);font-weight:700}.auth-title{font-size:clamp(24px,3vw,32px);line-height:1.1;letter-spacing:-.03em;font-family:var(--font-sans);margin-top:6px;font-weight:700;color:var(--ds-text-main)}.auth-subtitle{margin-top:4px;margin-bottom:10px;font-size:13px;color:var(--ds-text-secondary)}.form-stack{gap:10px}.form-field,.form-stack{display:flex;flex-direction:column}.form-field{gap:5px}.form-field label{font-size:13px;color:var(--ink-60);font-weight:600}.auth-input-wrap{height:46px;border:1.5px solid var(--ink-10);border-radius:14px;background:var(--auth-field-bg);color:var(--auth-field-text);display:flex;align-items:center;gap:10px;padding:0 16px;transition:border-color .2s ease,box-shadow .2s ease}.auth-input-wrap:focus-within{border-color:rgba(var(--ds-primary-rgb),.62);box-shadow:0 0 0 3px rgba(var(--ds-primary-rgb),.14)}.auth-eye-btn,.auth-input-wrap svg{color:var(--ds-text-muted);flex-shrink:0}.auth-eye-btn{border:none;background:transparent;padding:0;display:flex;align-items:center;cursor:pointer;transition:color .15s ease}.auth-eye-btn:hover{color:var(--ds-text-main)}.auth-input-wrap input,.auth-input-wrap select{height:100%;border:0;padding:0;font-size:14px;background:transparent;color:var(--auth-field-text);width:100%;outline:none}.auth-input-wrap input::-moz-placeholder{color:var(--auth-field-placeholder);opacity:1}.auth-input-wrap input::placeholder{color:var(--auth-field-placeholder);opacity:1}.auth-meta-row{margin-top:2px;display:flex;justify-content:space-between;align-items:center;gap:10px}.auth-checkbox{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ds-text-secondary)}.auth-checkbox input{width:14px;height:14px;accent-color:var(--ds-primary)}.auth-text-link{border:0;background:transparent;color:var(--ds-primary-hover);font-size:13px;font-weight:600;cursor:pointer}.auth-submit-btn{height:46px;padding:0 20px;font-size:14px;font-weight:700;border-radius:12px;border:none;background:linear-gradient(135deg,var(--ds-primary),var(--ds-primary-hover));color:#fff;cursor:pointer;margin-top:4px;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 18px rgba(var(--ds-primary-rgb),.34);transition:opacity .18s ease,box-shadow .18s ease}.auth-submit-btn:hover{opacity:.93;box-shadow:0 6px 24px rgba(var(--ds-primary-rgb),.44)}.auth-submit-btn:disabled{opacity:.55;cursor:wait}.auth-divider{margin:10px 0 8px;display:flex;align-items:center;gap:10px;color:var(--ds-text-muted);font-size:13px}.auth-divider:after,.auth-divider:before{content:"";flex:1;height:1px;background:var(--ds-border)}.auth-social-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.auth-social-btn{height:42px;border-radius:10px;border:1px solid var(--ds-border);background:color-mix(in srgb,var(--ds-card) 86%,#fff 14%);color:var(--ds-text-main);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer}.auth-social-logo{width:16px;height:16px;flex-shrink:0}.auth-social-btn:hover:not(:disabled){border-color:rgba(var(--ds-primary-rgb),.36);background:rgba(var(--ds-primary-rgb),.08)}.auth-social-btn:disabled{opacity:.6;cursor:not-allowed}.auth-social-spinner{width:16px;height:16px;border:2px solid var(--ds-border);border-top-color:var(--ds-primary);border-radius:50%;animation:auth-spin .7s linear infinite;flex-shrink:0}@keyframes auth-spin{to{transform:rotate(1turn)}}.auth-security-note{margin-top:8px;display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:7px 12px;border-radius:10px;background:rgba(var(--ds-primary-rgb),.08);color:var(--ds-primary-hover);font-size:12px;font-weight:600}.auth-switch-row{margin-top:10px;color:var(--ds-text-secondary);font-size:13px}.auth-demo-strip,.auth-switch-row{display:flex;justify-content:center;align-items:center;gap:6px}.auth-demo-strip{margin-top:0;width:min(100%,500px);flex-wrap:wrap;padding:8px 12px;border-radius:12px;border:1px solid var(--ds-border);background:color-mix(in srgb,var(--ds-card) 86%,#fff 14%)}.auth-demo-label{font-size:12px;color:var(--ds-text-secondary);margin-right:4px}.auth-demo-pill{border:0;border-radius:999px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s ease}.auth-demo-pill--student{background:rgba(var(--ds-primary-rgb),.12);color:var(--ds-primary-hover)}.auth-demo-pill--student:hover{background:rgba(var(--ds-primary-rgb),.22)}.auth-demo-pill--teacher{background:rgba(100,116,139,.12);color:var(--ds-text-secondary)}.auth-demo-pill--teacher:hover{background:rgba(100,116,139,.18)}.card-subtle{font-size:13px;color:var(--ink-60);margin-bottom:10px}