@font-face{font-family:Unbounded;font-style:normal;font-weight:400 900;font-display:swap;src:url(../fonts/unbounded-400-900-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Unbounded;font-style:normal;font-weight:400 900;font-display:swap;src:url(../fonts/unbounded-400-900-latin.woff2) format("woff2");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-sans-400-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-sans-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-sans-500-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-sans-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/ibm-plex-sans-700-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/ibm-plex-sans-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,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-weight:400 800;font-display:swap;src:url(../fonts/jetbrains-mono-400-800-cyrillic.woff2) format("woff2");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-weight:400 800;font-display:swap;src:url(../fonts/jetbrains-mono-400-800-latin.woff2) format("woff2");unicode-range:U+0000-00FF,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{--bg: #0B0E12;--bg-2: #12161C;--bg-3: #1A1F27;--line: #262C36;--text: #E8EDF2;--muted: #8B94A3;--accent: #FFB224;--accent-hover: #FFCA5C;--accent-pressed: #E89F0E;--on-accent: #1A1205;--accent-ink: #FFB224;--success: #3DDC97;--on-success: #0B0E12;--success-ink: #3DDC97;--danger: #FF5C6C;--on-danger: #0B0E12;--danger-ink: #FF5C6C;--syntax-blue: #6EA8FF;--syntax-purple: #B48CF2;--editor-bg: #0D1117;--editor-line: #212B36;--editor-text: #D6E2EE;--radius-card: 10px;--radius-btn: 8px;--radius-chip: 4px;--font: "IBM Plex Sans", -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Unbounded", "IBM Plex Sans", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;--grid-line: rgba(134, 148, 166, .055);--scanline: rgba(0, 0, 0, .16);--glow-1: rgba(255, 178, 36, .07);--glow-2: rgba(110, 168, 255, .05);color-scheme:dark}:root[data-theme=light]{--bg: #F7F5F0;--bg-2: #FFFDF7;--bg-3: #FFFFFF;--line: #E4DECD;--text: #211D13;--muted: #6E6857;--accent: #FFB224;--accent-hover: #FFCA5C;--accent-pressed: #E89F0E;--on-accent: #1A1205;--accent-ink: #8A5200;--success: #2FBE83;--on-success: #10241B;--success-ink: #0B7A50;--danger: #F2435A;--on-danger: #FFFFFF;--danger-ink: #C22540;--syntax-blue: #2B6BE4;--syntax-purple: #7C4BD6;--grid-line: rgba(60, 52, 30, .06);--scanline: rgba(60, 52, 30, .04);--glow-1: rgba(255, 178, 36, .14);--glow-2: rgba(43, 107, 228, .08);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);font-size:16px;line-height:24px;font-weight:400;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(640px 340px at 85% -8%,var(--glow-1),transparent 70%),radial-gradient(560px 380px at -10% 108%,var(--glow-2),transparent 70%),repeating-linear-gradient(0deg,var(--grid-line) 0 1px,transparent 1px 30px),repeating-linear-gradient(90deg,var(--grid-line) 0 1px,transparent 1px 30px),var(--bg)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;pointer-events:none;background:repeating-linear-gradient(0deg,var(--scanline) 0 1px,transparent 1px 4px);opacity:.5}#root{min-height:100vh;min-height:100dvh}::selection{background:var(--accent);color:var(--on-accent)}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}*::-webkit-scrollbar-track{background:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0}.h1{font-family:var(--font-display);font-size:21px;line-height:28px;font-weight:800;letter-spacing:.01em;margin:0 0 12px}.h2{font-family:var(--font-display);font-size:17px;line-height:24px;font-weight:600;margin:0 0 8px}.lead{font-size:16px;line-height:24px;color:var(--muted);margin:0 0 20px}.muted{color:var(--muted);font-size:14px;line-height:20px}.center{text-align:center}.mono{font-family:var(--font-mono);font-size:13px;line-height:18px}.micro{font-family:var(--font-mono);font-size:11px;line-height:15px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.caret:after{content:" ▍";color:var(--accent);animation:caret-blink 1.1s steps(1) infinite}@keyframes caret-blink{0%,55%{opacity:1}56%,to{opacity:0}}.corner-marks{position:relative}.corner-marks:before,.corner-marks:after{content:"+";position:absolute;font-family:var(--font-mono);font-size:12px;color:var(--muted);opacity:.7;pointer-events:none}.corner-marks:before{top:-7px;left:-5px}.corner-marks:after{bottom:-8px;right:-5px}.app-shell{max-width:720px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;position:relative}.app-shell-wide{max-width:960px}.app-main{flex:1;display:flex;flex-direction:column}.side-decor{display:none}.screen{flex:1;padding:18px 16px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;animation:screen-in .18s ease-out}.screen-title{margin-top:2px}@keyframes screen-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.stagger>*{animation:rise .3s cubic-bezier(.2,.7,.3,1) both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:55ms}.stagger>*:nth-child(3){animation-delay:.11s}.stagger>*:nth-child(4){animation-delay:165ms}.stagger>*:nth-child(5){animation-delay:.22s}.stagger>*:nth-child(6){animation-delay:275ms}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:11px 20px;border-radius:var(--radius-btn);font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:.03em;transition:background .14s ease,border-color .14s ease,transform .1s ease,box-shadow .14s ease;-webkit-user-select:none;user-select:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:default}.btn:disabled:active{transform:none}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:inset 0 -2px #0000002e}.btn-primary .btn-label:before{content:"> ";opacity:.55}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:active:not(:disabled){background:var(--accent-pressed)}.btn-primary:not(:disabled){animation:cta-idle 2.8s ease-in-out 6s infinite}@keyframes cta-idle{0%,to{box-shadow:inset 0 -2px #0000002e,0 0 #ffb22400}50%{box-shadow:inset 0 -2px #0000002e,0 0 18px 2px #ffb22438}}.btn-secondary{background:transparent;border:1px solid var(--line);color:var(--text)}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent-ink)}.btn-ghost{background:transparent;color:var(--accent-ink)}.btn-full{width:100%}.btn-spinner{width:15px;height:15px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.btn-label{display:inline-flex;align-items:center;gap:8px}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-card);padding:16px}.card-clickable{transition:transform .1s ease,border-color .14s ease}.card-clickable:active{transform:scale(.99);border-color:var(--muted)}.progress{height:4px;border-radius:2px;background:var(--line);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-pressed),var(--accent));transition:width .2s ease}.streak-flame{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-weight:700;font-size:15px}.streak-icon{color:var(--muted)}.streak-active .streak-icon{color:var(--accent)}.streak-count{color:var(--text)}.streak-label{font-family:var(--font);font-size:13px;font-weight:400;color:var(--muted)}.xp-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--radius-chip);background:#ffb22424;border:1px solid rgba(255,178,36,.4);color:var(--accent-ink);font-family:var(--font-mono);font-weight:700;font-size:13px;white-space:nowrap}:root[data-theme=light] .xp-badge{background:#ffb22438;border-color:#8a520059}.skeleton{background:linear-gradient(90deg,var(--bg-2) 25%,var(--bg-3) 50%,var(--bg-2) 75%);background-size:200% 100%;border:1px solid var(--line);animation:shimmer 1.3s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state,.error-screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:32px 16px}.empty-title{font-family:var(--font-display);font-size:17px;line-height:24px;font-weight:600;margin:6px 0 0}.empty-text{color:var(--muted);font-size:14px;line-height:20px;margin:0;max-width:320px}.empty-action{margin-top:12px}.toast-host{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:1100;width:min(92vw,420px);pointer-events:none}.toast{padding:11px 14px;border-radius:var(--radius-btn);background:var(--bg-3);border:1px solid var(--line);border-left:3px solid var(--muted);color:var(--text);font-family:var(--font-mono);font-size:13px;animation:toast-in .18s ease-out;box-shadow:0 8px 24px #00000059}.toast:before{content:"> ";color:var(--muted)}.toast-success{border-left-color:var(--success)}.toast-success:before{color:var(--success);content:"✓ "}.toast-error{border-left-color:var(--danger)}.toast-error:before{color:var(--danger);content:"✗ "}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.tabbar{position:sticky;bottom:0;display:flex;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:40}.tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 0 7px;min-height:54px;color:var(--muted);text-decoration:none;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;transition:color .14s ease}.tabbar-active{color:var(--accent-ink)}.tabbar-active .tabbar-label:before{content:"> "}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#040609a8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;z-index:900;animation:fade-in .16s ease-out}.modal-sheet{background:var(--bg-2);border:1px solid var(--line);border-bottom:none;border-radius:14px 14px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom));width:100%;max-width:720px;max-height:85vh;overflow-y:auto;animation:sheet-up .2s ease-out;display:flex;flex-direction:column;gap:10px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}.md p{margin:0 0 10px}.md p:last-child{margin-bottom:0}.md-heading{font-size:16px;font-weight:700;margin:12px 0 6px}.md ul{margin:0 0 10px;padding-left:20px}.md-inline-code{font-family:var(--font-mono);font-size:.88em;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--radius-chip);padding:1px 5px;color:var(--accent-ink)}.md-code-block{font-family:var(--font-mono);font-size:13.5px;line-height:20px;background:var(--editor-bg);border:1px solid var(--editor-line);color:var(--editor-text);border-radius:8px;padding:12px;overflow-x:auto;margin:0 0 10px}.tok-keyword{color:var(--syntax-purple)}.tok-string{color:var(--success)}.tok-number{color:var(--accent)}.tok-comment{color:#6b7482;font-style:italic}.tok-builtin{color:var(--syntax-blue)}.mascot{display:block}.mascot-caret{animation:caret-blink 1.1s steps(1) infinite}.term-window{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden}.term-chrome{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--bg-3)}.term-dots{display:inline-flex;gap:5px}.term-dots i{width:9px;height:9px;border-radius:2px;background:var(--line)}.term-dots i:nth-child(1){background:var(--danger);opacity:.75}.term-dots i:nth-child(2){background:var(--accent);opacity:.75}.term-dots i:nth-child(3){background:var(--success);opacity:.75}.term-title{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.term-body{padding:12px}.term-footer{border-top:1px solid var(--line);padding:7px 12px;background:var(--bg-3)}.term-footer-left{font-size:11px;color:var(--muted);letter-spacing:.04em}.editor-window{background:var(--editor-bg);border-color:var(--editor-line)}.editor-window .term-chrome,.editor-window .term-footer{background:#11161d;border-color:var(--editor-line)}.editor-window .term-body{padding:0}.term-output{border-top:1px dashed var(--editor-line);padding:10px 12px}.typewriter{margin:0;font-family:var(--font-mono);font-size:13.5px;line-height:21px;color:var(--editor-text);white-space:pre-wrap;word-break:break-word}.typewriter-caret{color:var(--accent)}.day-card{display:flex;flex-direction:column;gap:10px}.day-card-head{margin-bottom:2px}.day-card-top,.day-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px}.day-level{color:var(--muted);font-size:12.5px}.btn-sub-link{min-height:36px;padding:6px 10px}.module-list{position:relative;display:flex;flex-direction:column;gap:10px;padding-left:18px}.module-list:before{content:"";position:absolute;left:5px;top:12px;bottom:12px;border-left:2px dashed var(--line)}.module-item{position:relative;animation:rise .28s cubic-bezier(.2,.7,.3,1) both;animation-delay:calc(var(--i, 0) * 55ms)}.module-item:before{content:"";position:absolute;left:-17.5px;top:26px;width:9px;height:9px;border-radius:2px;background:var(--bg);border:2px solid var(--line)}.module-item:has(.module-done):before{border-color:var(--success);background:var(--success)}.module-item:has(.module-available):before{border-color:var(--accent);animation:node-pulse 1.8s ease-out infinite}@keyframes node-pulse{0%{box-shadow:0 0 #ffb22466}70%{box-shadow:0 0 0 8px #ffb22400}to{box-shadow:0 0 #ffb22400}}.module-node{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:var(--radius-card);border:1px solid var(--line);background:var(--bg-2);text-align:left;min-height:44px;transition:border-color .14s ease,background .14s ease,transform .1s ease}.module-node:active{transform:scale(.99)}.module-available{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.module-premium{border-style:dashed;border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.module-locked:not(.module-premium){opacity:.62}.module-glyph{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--line);background:var(--bg-3);color:var(--muted)}.module-available .module-glyph{color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.module-done .module-glyph{color:var(--success-ink);border-color:color-mix(in srgb,var(--success) 45%,var(--line))}.module-info{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.module-meta{font-size:10px}.module-title{font-size:16px;font-weight:700;color:var(--text)}.module-locked:not(.module-premium) .module-title{color:var(--muted)}.module-subtitle{font-size:13px;line-height:18px;color:var(--muted)}.module-track{height:3px;border-radius:2px;background:var(--line);overflow:hidden;margin-top:3px}.module-track-fill{display:block;height:100%;background:var(--accent);transition:width .2s ease}.module-done .module-track-fill{background:var(--success)}.module-state{flex-shrink:0}.module-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;letter-spacing:.06em;padding:4px 8px;border-radius:var(--radius-chip);border:1px solid var(--line);color:var(--muted)}.chip-done{color:var(--success-ink);border-color:color-mix(in srgb,var(--success) 45%,var(--line))}.chip-premium,.chip-open{color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.module-skeleton{display:flex;gap:12px;align-items:center;padding:12px}.module-teaser{border-style:dashed;opacity:.55;cursor:default}.module-teaser:active{transform:none}.lesson-list{margin:8px 0 6px 20px;display:flex;flex-direction:column;gap:6px;border-left:2px dashed var(--line);padding-left:14px;animation:screen-in .16s ease-out}.lesson-row{display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-height:44px;font-size:14px;text-align:left;transition:border-color .14s ease}.lesson-row:active{border-color:var(--muted)}.lesson-row-icon{width:20px;display:flex;justify-content:center;color:var(--muted)}.lesson-done .lesson-row-icon{color:var(--success-ink)}.lesson-available .lesson-row-icon{color:var(--accent-ink)}.lesson-locked{opacity:.55}.lesson-row-title{flex:1}.lesson-row-xp{font-size:11px;color:var(--muted);white-space:nowrap}.module-preview{display:flex;flex-direction:column;gap:10px}.module-preview-sub{color:var(--muted);margin:0}.module-preview-count{margin:0;color:var(--muted);font-size:12.5px}.module-preview-lessons{list-style:none;padding:0;margin:0;color:var(--muted);font-size:13px;display:flex;flex-direction:column;gap:7px}.module-preview-lessons li{display:flex;align-items:center;gap:8px}.module-preview-note{display:flex;align-items:center;gap:6px;color:var(--accent-ink);font-family:var(--font-mono);font-size:13px;margin:0 0 6px}.onboarding{justify-content:center}.onboard-step{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;max-width:480px;margin:0 auto;width:100%;flex:1;justify-content:center}.onboard-top,.onboard-foot{align-self:flex-start;margin:0}.onboard-top{margin-bottom:auto}.onboard-foot{margin-top:auto}.onboard-step .term-window{width:100%;text-align:left}.goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}.goal-card{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;transition:border-color .14s ease,transform .1s ease}.goal-icon{color:var(--muted)}.goal-selected{border-color:var(--accent)}.goal-selected .goal-icon{color:var(--accent-ink)}.goal-title{font-weight:700;font-size:15px}.goal-text{font-size:12.5px;line-height:17px;color:var(--muted)}.demo-success{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.demo-success-text{font-size:16px;font-weight:700;margin:0}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:70}.confetti-piece{position:absolute;top:-12px;animation:confetti-fall linear forwards}@keyframes confetti-fall{to{transform:translateY(105vh) rotate(540deg);opacity:.85}}.status-line{display:flex;align-items:center;gap:12px;justify-content:space-between}.status-track{display:inline-flex;gap:4px}.seg{width:22px;height:4px;border-radius:2px;background:var(--line)}.seg-active{background:var(--accent)}.seg-done{background:var(--success)}.lesson-title{margin-bottom:2px}.theory{display:flex;flex-direction:column;gap:10px}.theory-body{font-size:15.5px}.theory-nav{display:flex;gap:10px}.screen-foot{margin:auto 0 0;padding-top:14px;font-size:10.5px;color:var(--muted);opacity:.75}.theory-code{border:1px solid var(--editor-line);border-radius:8px;background:var(--editor-bg);overflow:hidden}.theory-code-chrome{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-bottom:1px solid var(--editor-line);background:#11161d}.copy-btn{display:inline-flex;align-items:center;min-width:32px;min-height:32px;justify-content:center;border-radius:6px;color:var(--muted);transition:color .12s ease,background .12s ease}.copy-btn:hover{color:var(--accent);background:#ffb2241a}.code-lines{margin:0;padding:10px 12px;font-family:var(--font-mono);font-size:13.5px;line-height:21px;color:var(--editor-text);overflow-x:auto}.code-lines code{display:flex;gap:12px}.line-numbers{display:flex;flex-direction:column;text-align:right;color:#3d4756;-webkit-user-select:none;user-select:none;border-right:1px solid var(--editor-line);padding-right:12px}.line-numbers i{font-style:normal}.callout{display:flex;gap:10px;align-items:flex-start;border-radius:8px;padding:12px;font-size:14px;border:1px solid var(--line);border-left-width:3px}.callout-tip{border-left-color:var(--accent);background:#ffb22412}.callout-tip .callout-icon{color:var(--accent);flex-shrink:0;margin-top:2px}.callout-warning{border-left-color:var(--danger);background:#ff5c6c12}.callout-warning .callout-icon{color:var(--danger);flex-shrink:0;margin-top:2px}.theory-image{max-width:100%;border-radius:8px;border:1px solid var(--line)}.quiz{display:flex;flex-direction:column;gap:10px}.quiz-counter{margin:0}.quiz-question{font-size:16px}.quiz-options{display:flex;flex-direction:column;gap:8px}.quiz-option{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:12px 14px;border-radius:var(--radius-card);background:var(--bg-2);border:1px solid var(--line);font-size:15.5px;text-align:left;transition:border-color .14s ease,background .14s ease}.quiz-option:not(:disabled):active{border-color:var(--muted)}.quiz-option-selected{border-color:var(--accent)}.quiz-option-correct{border-color:var(--success);background:#3ddc9714}.quiz-option-wrong{border-color:var(--danger);background:#ff5c6c14}.quiz-marker{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:transparent;transition:all .14s ease}.quiz-marker-multi{border-radius:4px}.quiz-option-selected .quiz-marker{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--bg-2);background:var(--accent)}.quiz-option-correct .quiz-marker{border-color:var(--success);background:var(--success);color:var(--on-success)}.quiz-option-wrong .quiz-marker{border-color:var(--danger);background:var(--danger);color:var(--on-danger)}.quiz-explanation{border-left:3px solid var(--syntax-blue);font-size:14px;animation:screen-in .16s ease-out}.quiz-result{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px}.xp-gain{font-size:17px;font-weight:700;color:var(--accent-ink);margin:0}.lesson-tasks{display:flex;flex-direction:column;gap:12px}.task-list{display:flex;flex-direction:column;gap:8px}.task-row{display:flex;align-items:center;gap:12px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-card);padding:13px 14px;min-height:56px;text-align:left;transition:border-color .14s ease}.task-row:active{border-color:var(--muted)}.task-row-done{border-color:color-mix(in srgb,var(--success) 40%,var(--line))}.task-row-icon{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--bg-3);display:flex;align-items:center;justify-content:center;color:var(--muted);flex-shrink:0}.task-row-done .task-row-icon{color:var(--success-ink);border-color:color-mix(in srgb,var(--success) 45%,var(--line))}.task-row-body{flex:1;display:flex;flex-direction:column;gap:1px}.task-row-title{font-weight:700;font-size:14.5px}.task-row-kind{font-size:11.5px;color:var(--muted)}.task-row-xp{font-size:11.5px;color:var(--muted);white-space:nowrap}.tasks-hint{font-size:11.5px;color:var(--muted);margin:0}.reward{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px}.reward-stats{display:flex;gap:18px;color:var(--muted);font-size:13px}.reward-stat b{color:var(--text)}.level-up{font-weight:700;color:var(--accent-ink);margin:0}.reward-ach{display:flex;flex-direction:column;align-items:center;gap:8px}.reward-ach-list{justify-content:center}.paywall-redirect{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px}.task-prompt{padding:0;overflow:hidden}.task-prompt-head{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 14px;font-size:12px;color:var(--muted);min-height:44px}.chevron{transition:transform .14s ease}.chevron-up{transform:rotate(180deg)}.task-prompt-body{padding:0 14px 12px;font-size:14.5px}.symbol-bar{display:flex;gap:6px;overflow-x:auto;padding:10px 10px 8px;border-bottom:1px solid var(--editor-line);scrollbar-width:none}.symbol-bar::-webkit-scrollbar{display:none}.symbol-btn{min-width:38px;height:34px;border-radius:6px;background:var(--bg-3);border:1px solid var(--editor-line);border-bottom-width:2px;color:var(--editor-text);font-family:var(--font-mono);font-size:15px;flex-shrink:0;transition:background .1s ease,transform .1s ease}.symbol-btn:active{transform:translateY(1px);background:var(--line)}.code-editor .cm-editor{min-height:170px}.answer-block{display:flex;flex-direction:column;gap:6px}.answer-label{font-size:12px;color:var(--muted)}.answer-input{font-family:var(--font-mono);font-size:14px;padding:12px;border-radius:var(--radius-card);border:1px solid var(--line);background:var(--editor-bg);color:var(--editor-text);resize:vertical;min-height:76px}.answer-input:focus{outline:none;border-color:var(--accent)}.answer-input::placeholder{color:var(--muted)}.fail-card{border-left:3px solid var(--danger)}.fail-title{font-weight:700;margin:0 0 8px}.fail-text{font-size:14px;margin:8px 0 0;color:var(--muted)}.failed-test{display:flex;flex-direction:column;gap:8px}.failed-row{display:flex;flex-direction:column;gap:3px}.failed-label{font-size:10px}.failed-row pre{margin:0;font-family:var(--font-mono);font-size:13px;background:var(--editor-bg);border:1px solid var(--editor-line);color:var(--editor-text);border-radius:6px;padding:8px 10px;white-space:pre-wrap;word-break:break-word}.pass-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#3ddc9717;border:1px solid color-mix(in srgb,var(--success) 50%,var(--line));border-radius:var(--radius-card);padding:12px 14px;animation:pass-flash .45s ease-out}@keyframes pass-flash{0%{box-shadow:0 0 #3ddc9780}to{box-shadow:0 0 0 16px #3ddc9700}}.pass-banner-text{display:flex;flex-direction:column;gap:2px}.pass-title{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:15px;color:var(--success-ink)}.practice-screen{gap:16px}.practice-screen .micro{margin-bottom:-6px}.daily-card{display:flex;flex-direction:column;gap:12px}.daily-head{display:flex;align-items:baseline;gap:8px;border-bottom:1px dashed var(--line);padding-bottom:10px}.daily-tag{color:var(--accent-ink);flex-shrink:0}.daily-lesson{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.daily-prompt{font-size:14.5px;line-height:22px}.daily-foot{display:flex;align-items:center;justify-content:space-between;font-size:12px}.daily-xp{color:var(--accent-ink);font-weight:700}.daily-done{display:flex;flex-direction:column;align-items:center;gap:3px;padding:13px 16px;border-radius:var(--radius-btn);background:#3ddc9717;border:1px solid color-mix(in srgb,var(--success) 50%,var(--line))}.daily-done-title{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:15px;color:var(--success-ink)}.daily-memo{display:flex;flex-direction:column;gap:8px}.daily-memo-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.daily-memo-list li:before{content:"· ";color:var(--accent-ink)}.profile-id{display:flex;flex-direction:column;gap:12px}.profile-id-head{margin-bottom:-4px}.profile-head{display:flex;align-items:center;gap:12px}.avatar{width:52px;height:52px;border-radius:10px;background:var(--bg-3);border:1px solid var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:20px;font-weight:800;flex-shrink:0}.profile-head-info{flex:1;min-width:0}.profile-name{font-family:var(--font-display);font-size:16px;font-weight:600}.profile-level{font-size:12px}.profile-stats{display:flex;flex-direction:column;gap:7px;border-top:1px dashed var(--line);padding-top:12px;font-size:13px}.profile-stat-row{display:flex;align-items:center;gap:10px}.profile-stat-dots{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px)}.profile-section-head{display:flex;align-items:center;gap:7px;color:var(--muted);margin-bottom:10px}.heatmap{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin-bottom:8px}.heatmap-cell{aspect-ratio:1;border-radius:2px;background:var(--bg-2);border:1px solid var(--line);cursor:pointer;padding:0}.heat-1{background:color-mix(in srgb,var(--accent) 25%,var(--bg-2));border-color:transparent}.heat-2{background:color-mix(in srgb,var(--accent) 55%,var(--bg-2));border-color:transparent}.heat-3{background:var(--accent);border-color:transparent}.heat-sel{outline:1.5px solid var(--accent-ink);outline-offset:1px}.heatmap-caption{min-height:15px;margin:0}.achievements{display:flex;flex-wrap:wrap;gap:6px}.ach-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:5px 9px;border-radius:var(--radius-chip);border:1px dashed var(--line);color:var(--muted)}.ach-open{border-style:solid;border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent-ink)}.ach-ghost{opacity:.4}.ach-lock{opacity:.85;margin-left:-1px}.ref-card{display:flex;flex-direction:column;gap:10px}.ref-card .profile-section-head{margin-bottom:0}.ref-code-row{display:flex;align-items:center;gap:8px}.ref-code{flex:1;min-width:0;padding:10px 12px;border:1px dashed var(--line);border-radius:var(--radius-chip);background:var(--bg-3);font-weight:700;letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ref-icon-btn{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--radius-btn);color:var(--muted);background:var(--bg-2)}.ref-icon-btn:hover{border-color:var(--accent);color:var(--accent-ink)}.ref-share-btn{color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.ref-stats{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}.ref-stats b{color:var(--text)}.ref-stats-dots{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-3px)}.ref-reward{margin:0}.profile-actions{display:flex;flex-direction:column;gap:8px}.action-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:12px 14px}.action-icon{color:var(--muted);flex-shrink:0}.action-title{flex:1;font-weight:700;font-size:14.5px}.action-value{font-size:11.5px}.sub-info p{margin:0 0 8px;font-size:13.5px}.sub-cancel-btn{margin-top:4px;color:var(--danger-ink);border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.sub-cancel-btn:hover:not(:disabled){border-color:var(--danger);color:var(--danger-ink)}.paywall-screen{position:relative;padding-top:42px}.paywall-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);color:var(--muted);display:flex;align-items:center;justify-content:center;z-index:1}.paywall-features-window .term-body{padding:6px 12px}.paywall-features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.paywall-features li{display:flex;align-items:center;gap:10px;font-size:14px;padding:9px 0;border-bottom:1px dashed var(--line)}.paywall-features li:last-child{border-bottom:none}.feature-icon{color:var(--accent-ink);flex-shrink:0}.plans{display:flex;flex-direction:column;gap:10px}.plan-card{position:relative;display:flex;flex-direction:column;gap:3px;min-height:96px;justify-content:center;transition:border-color .14s ease}.plan-highlighted{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}.plan-selected{border-color:var(--accent);background:#ffb2240f}.plan-badge{position:absolute;top:-9px;right:12px;background:var(--accent);color:var(--on-accent);font-size:11px;font-weight:700;letter-spacing:.05em;padding:2px 8px;border-radius:var(--radius-chip)}.plan-title{font-size:12px;letter-spacing:.08em;text-transform:uppercase}.plan-price{font-family:var(--font-display);font-size:22px;font-weight:800}.plan-per-month{font-size:11.5px}.plan-check{position:absolute;top:12px;right:12px;width:22px;height:22px;border-radius:6px;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center}.paywall-legal{font-size:11px;text-align:center;margin:0}.trial-text{margin:0 0 6px}.settings-screen .micro{margin-bottom:-8px}.settings-group{display:flex;flex-direction:column;gap:14px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}.settings-label{font-size:15.5px;font-weight:700}.switch{width:52px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--bg-3);position:relative;transition:background .14s ease,border-color .14s ease;flex-shrink:0}.switch-on{background:var(--accent);border-color:var(--accent)}.switch-knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:5px;background:var(--muted);transition:transform .14s ease,background .14s ease}.switch-on .switch-knob{transform:translate(22px);background:var(--on-accent)}.time-input{font-family:var(--font-mono);font-size:15px;padding:8px 12px;border-radius:var(--radius-btn);border:1px solid var(--line);background:var(--bg-3);color:var(--text)}.time-input:focus{outline:none;border-color:var(--accent)}.segmented{display:flex;gap:6px}.segmented .btn{flex:1;padding:8px 4px;font-size:12px;min-height:42px}.segmented .btn-ghost{color:var(--muted);border:1px solid var(--line)}.segmented .btn-primary .btn-label:before{content:none}.settings-footnote{margin-top:auto;font-size:11px}.about-rows{color:var(--muted);font-size:12.5px}.about-rows p{margin:0 0 4px}@media (min-width: 768px){.app-shell{border-left:1px solid var(--line);border-right:1px solid var(--line)}.screen{padding:24px 24px calc(24px + env(safe-area-inset-bottom))}}@media (min-width: 1100px){.side-decor{display:flex;flex-direction:column;gap:14px;position:fixed;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);opacity:.5;z-index:1}.side-decor-left{left:max(18px,calc(50% - 520px))}.side-decor-right{right:max(18px,calc(50% - 520px));transform:translateY(-50%) rotate(180deg)}}
