@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,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(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.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(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#14141f;--paper:#f7f6f3;--lime:#c6f432;--lime-deep:#5f7d00;--bg:var(--paper);--surface:#fff;--surface-2:#efeee9;--text:#14141f;--text-2:#5c5b66;--text-3:#8d8c96;--line:#e4e2dc;--accent:var(--ink);--accent-text:var(--paper);--good:#1f9d55;--good-bg:#e3f6ea;--bad:#e5484d;--bad-bg:#fdecec;--bubble:#6c4cf1;--bubble-bg:#efebff;--chart-bar:#5f7d00;--code-bg:#16161f;--code-text:#e9e8f0;--code-line-hl:#c6f4321f;--radius-s:10px;--radius:16px;--radius-l:24px;--shadow:0 1px 2px #14141f0a, 0 4px 16px #14141f0f;--font:"Inter Variable", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono Variable", ui-monospace, monospace;--tap:52px;--gutter:20px;--max:560px;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0e0e15;--surface:#181822;--surface-2:#22222e;--text:#f2f1ec;--text-2:#a9a8b3;--text-3:#75747f;--line:#2a2a37;--accent:var(--lime);--accent-text:var(--ink);--good:#4cd787;--good-bg:#133222;--bad:#ff6b6f;--bad-bg:#3a1618;--bubble:#a893ff;--bubble-bg:#231d3f;--chart-bar:#7f9f12;--code-bg:#0a0a10;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.5;overflow-x:clip}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;cursor:pointer}code{font-family:var(--mono);background:var(--surface-2);overflow-wrap:anywhere;border-radius:6px;padding:.1em .35em;font-size:.86em}:focus-visible{outline:3px solid var(--lime);outline-offset:2px}.app{min-height:100dvh}.screen{max-width:var(--max);padding:calc(var(--safe-top) + 16px) var(--gutter) calc(var(--safe-bottom) + 104px);margin:0 auto}.btn{min-height:var(--tap);border-radius:var(--radius);background:var(--accent);color:var(--accent-text);letter-spacing:-.01em;border:none;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:17px;font-weight:700;text-decoration:none;transition:transform .12s,box-shadow .12s,filter .12s,opacity .12s;display:inline-flex;box-shadow:inset 0 -2px #0000002e,0 6px 16px -8px #14141f80}.btn svg{flex:none;transition:transform .15s}.btn:active:not(:disabled){transform:scale(.97)translateY(1px);box-shadow:inset 0 -1px #0000002e,0 2px 6px -4px #14141f80}@media (hover:hover){.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:hover:not(:disabled) .btn-arrow{transform:translate(3px)}}.btn:disabled{opacity:.4;box-shadow:none;cursor:default}.btn-block{width:100%}.btn-ghost{background:var(--surface-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}.btn-ghost:active:not(:disabled){box-shadow:inset 0 0 0 1px var(--line)}.btn-lime{background:var(--lime);color:var(--ink);box-shadow:inset 0 -2px #0000001f,0 6px 18px -6px #c6f4328c}.btn-danger{background:var(--bad);color:#fff}.icon-btn{background:var(--surface-2);width:44px;height:44px;box-shadow:inset 0 0 0 1px var(--line);border:none;border-radius:50%;place-items:center;transition:transform .12s;display:grid}.icon-btn:active{transform:scale(.92)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);font-size:13px;font-weight:650}.section-title{letter-spacing:-.02em;font-size:22px;font-weight:750}.bar{background:var(--surface-2);border-radius:99px;height:8px;overflow:hidden}.bar>span{border-radius:inherit;background:var(--lime);height:100%;transition:width .4s;display:block}.pill{background:var(--surface-2);color:var(--text-2);border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.back-link{min-height:44px;color:var(--text-2);background:0 0;border:none;align-items:center;gap:4px;margin-left:-8px;padding:0 8px;font-weight:600;text-decoration:none;display:inline-flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.tabbar{z-index:10;padding:8px 12px calc(var(--safe-bottom) + 8px);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);justify-content:center;gap:8px;display:flex;position:fixed;inset:auto 0 0}.tab{min-height:var(--tap);border-radius:var(--radius-s);color:var(--text-3);flex-direction:column;flex:0 140px;justify-content:center;align-items:center;gap:2px;font-size:12px;font-weight:600;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--text)}.tab[aria-current=page] svg{stroke-width:2.4px}.screen-error{max-width:420px;padding:calc(var(--safe-top) + 48px) var(--gutter) 24px;text-align:center;flex-direction:column;align-items:center;gap:12px;margin:0 auto;display:flex}.screen-error-icon{background:var(--bubble-bg);width:64px;height:64px;color:var(--bubble);border-radius:50%;place-items:center;display:grid}.screen-error h1{letter-spacing:-.02em;font-size:24px;font-weight:800}.screen-error p{color:var(--text-2)}.screen-error .btn{margin-top:4px}.screen-error-detail{overflow-wrap:anywhere;margin-top:8px;font-size:12px}.screen-loading{color:var(--text-2);flex-direction:column;align-items:center;gap:10px;padding:80px 0;animation:.2s .3s backwards fade-in;display:flex}.screen-loading-text{font-size:15px}.screen-loading-slow{visibility:hidden;font-size:14px;animation:0s linear 5s forwards show-late}@keyframes show-late{to{visibility:visible}}@keyframes fade-in{0%{opacity:0}}.learn{flex-direction:column;gap:28px;display:flex}.learn-top{align-items:center;gap:12px;padding-top:8px;display:flex}.learn-top img{border-radius:10px}.learn-hello{letter-spacing:-.02em;font-size:20px;font-weight:750}.learn-sub{color:var(--text-2);font-size:15px}.continue{border-radius:var(--radius-l);background:var(--ink);color:var(--paper);flex-direction:column;gap:6px;padding:22px;text-decoration:none;transition:transform .12s;display:flex;position:relative;overflow:hidden}.continue:after{content:"";pointer-events:none;background:radial-gradient(circle,#c6f43259,#0000 70%);border-radius:50%;width:160px;height:160px;position:absolute;top:-40px;right:-40px}.continue:active{transform:scale(.98)}.continue-eyebrow{color:var(--lime)}.continue-title{letter-spacing:-.025em;font-size:26px;font-weight:750;line-height:1.15}.continue-goal{color:#b9b8c4;font-size:15px}.continue-row{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.continue-time{color:#b9b8c4;align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.continue-btn{min-height:var(--tap);border-radius:var(--radius);background:var(--lime);color:var(--ink);white-space:nowrap;align-items:center;gap:8px;padding:0 20px;font-size:16px;font-weight:750;transition:transform .12s,box-shadow .12s,filter .12s;display:inline-flex;box-shadow:inset 0 -2px #0000001f,0 6px 18px -6px #c6f4328c}.continue-btn svg{transition:transform .15s}.continue:active .continue-btn{transform:scale(.96);box-shadow:inset 0 -1px #0000001f,0 2px 8px -4px #c6f43280}@media (hover:hover){.continue:hover .continue-btn{filter:brightness(1.05)}.continue:hover .continue-btn svg{transform:translate(3px)}}.stage{flex-direction:column;gap:12px;display:flex}.stage-head{justify-content:space-between;align-items:flex-end;display:flex}.stage-count{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:15px;font-weight:650}.modules{flex-direction:column;gap:10px;margin:8px 0 0;padding:0;list-style:none;display:flex}.module{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:72px;box-shadow:var(--shadow);color:var(--text-3);align-items:center;gap:14px;padding:12px 16px 12px 12px;text-decoration:none;transition:transform .12s;display:flex}.module:active{transform:scale(.98)}.module-badge{--p:0%;background:radial-gradient(closest-side, var(--surface-2) 82%, transparent 84%), conic-gradient(var(--lime-deep) var(--p), var(--line) 0);width:48px;height:48px;color:var(--text);border-radius:50%;flex:none;place-items:center;font-size:18px;font-weight:750;display:grid}.module.is-done .module-badge{background:var(--lime);color:var(--ink)}.module-body{flex-direction:column;flex:1;min-width:0;display:flex}.module-title{color:var(--text);font-weight:650;line-height:1.3}.module-meta{color:var(--text-2);font-size:14px}.module.is-locked{box-shadow:none;background:0 0;border-style:dashed}.module.is-locked .module-badge{background:var(--surface-2);color:var(--text-3)}.checkpoint-row.is-open{border:2px solid var(--text)}.checkpoint-row.is-open .module-badge{background:var(--accent);color:var(--accent-text)}.locked-stage.is-unlocked{border:2px solid var(--lime-deep);background:var(--surface)}.unlocked-pill{background:var(--lime);color:var(--ink);font-size:12px}.later{flex-direction:column;gap:10px;display:flex}.locked-stage{border-radius:var(--radius);background:var(--surface-2);color:var(--text-2);padding:14px 16px}.locked-stage-head{color:var(--text-3);justify-content:space-between;align-items:center;display:flex}.locked-stage-head strong{color:var(--text);font-weight:650}.locked-stage-num{color:var(--text-3);margin-right:8px;font-size:13px;font-weight:650}.locked-stage p{margin-top:4px;font-size:14px;line-height:1.45}.streak-chip{white-space:nowrap;background:var(--surface-2);min-height:40px;color:var(--text-2);filter:grayscale();border-radius:99px;flex:none;align-items:center;gap:4px;margin-left:auto;padding:0 12px;font-weight:750;text-decoration:none;display:inline-flex}.streak-chip.is-lit{filter:none;color:var(--text)}.streak-chip.is-done{background:var(--lime);color:var(--ink)}.continue-progress{background:#ffffff24;border-radius:99px;height:6px;margin-top:6px;overflow:hidden}.continue-progress span{border-radius:inherit;background:var(--lime);height:100%;display:block}.review-card{border:2px solid var(--bubble);border-radius:var(--radius-l);background:var(--bubble-bg);color:var(--text);align-items:center;gap:12px;margin-top:-14px;padding:14px 14px 14px 16px;text-decoration:none;transition:transform .12s;display:flex}.review-card:active{transform:scale(.98)}.review-card-icon{flex:none;font-size:26px}.review-card-body{flex-direction:column;flex:1;min-width:0;display:flex}.review-card-title{white-space:nowrap;font-weight:750}.review-card-sub{color:var(--text-2);font-size:13.5px;line-height:1.35}.review-card-btn{background:var(--bubble);color:#fff;flex:none;min-height:44px;padding:0 14px;font-size:15px}.review-later{color:var(--text-2);margin-top:-14px;font-size:14px;font-weight:600}.week-nudge{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);min-height:48px;color:var(--text);justify-content:space-between;align-items:center;gap:8px;margin-top:-14px;padding:0 16px;font-size:15px;font-weight:650;text-decoration:none;display:flex}.module-screen{flex-direction:column;gap:18px;display:flex}.module-head h1{letter-spacing:-.03em;margin-top:4px;font-size:30px;font-weight:800;line-height:1.1}.module-summary{color:var(--text-2);margin-top:8px}.lessons{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex;position:relative}.lesson-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:76px;color:var(--text);align-items:center;gap:14px;padding:14px 16px 14px 14px;text-decoration:none;transition:transform .12s;display:flex}.lesson-row:active{transform:scale(.98)}.lesson-row.is-next{border:2px solid var(--text);padding:13px 15px 13px 13px}.lesson-dot{background:var(--surface-2);border-radius:50%;flex:none;place-items:center;width:40px;height:40px;font-weight:750;display:grid}.lesson-row.is-done .lesson-dot{background:var(--lime);color:var(--ink)}.lesson-row.is-next .lesson-dot{background:var(--accent);color:var(--accent-text)}.lesson-body{flex-direction:column;flex:1;min-width:0;display:flex}.lesson-title{font-weight:650;line-height:1.3}.lesson-goal{color:var(--text-2);font-size:14px;line-height:1.4}.lesson-min{color:var(--text-3);font-size:14px;font-weight:600}.quiz-row{color:var(--text-3);border-style:dashed;border-width:2px;padding:13px 15px 13px 13px}.quiz-row .lesson-dot{background:var(--bubble-bg);color:var(--bubble)}.quiz-row.is-done{border-style:solid;border-width:1px;padding:14px 16px 14px 14px}.quiz-row.is-done .lesson-dot{background:var(--lime);color:var(--ink)}.lesson-row.is-locked{color:var(--text-3);background:0 0;border-style:dashed}.lesson-row.is-locked .lesson-title{color:var(--text)}.in-progress{color:var(--bubble);font-weight:650}.bubble-card{border-radius:var(--radius-l);background:var(--bubble-bg);padding:18px}.bubble-pair{flex-direction:column;gap:6px;display:flex}.bubble-side{border-radius:var(--radius);background:var(--surface);overflow-wrap:anywhere;flex-direction:column;gap:4px;padding:12px 14px;font-size:15px;line-height:1.35;display:flex}.bubble-side .eyebrow{color:var(--bubble);font-size:11px}.bubble-side.is-code strong{font-family:var(--mono);font-size:13.5px;font-weight:600}.bubble-arrow{color:var(--bubble);place-items:center;display:grid;transform:rotate(90deg)}.bubble-explain{color:var(--text);margin-top:14px;font-size:16px}.code{border-radius:var(--radius);background:var(--code-bg);color:var(--code-text);margin:0;overflow:hidden}.code-tab{color:#a9a8bb;font-family:var(--mono);border-bottom:1px solid #ffffff0f;align-items:center;gap:8px;padding:10px 14px;font-size:12.5px;display:flex}.code-dot{background:#a9a8bb;border-radius:50%;width:8px;height:8px}.code-dot-html{background:#ff8a5c}.code-dot-css{background:#6cb6ff}.code-dot-javascript{background:#ffd479}.code-dot-json{background:#c6f432}.code-dot-typescript{background:#a9b8ff}.code-dot-tsx{background:#61dafb}.code-body{font-family:var(--mono);-webkit-overflow-scrolling:touch;margin:0;padding:10px 0;font-size:13.5px;line-height:1.65;overflow-x:auto}.code-line{border-left:3px solid #0000;padding-right:14px;display:flex}.code-line.is-hl{background:var(--code-line-hl);border-left-color:var(--lime)}.code-num{text-align:right;color:#55546a;-webkit-user-select:none;user-select:none;flex:none;width:34px;padding-right:12px}.code-text{white-space:pre-wrap;overflow-wrap:anywhere;text-indent:-1.2em;flex:1;min-width:0;padding-left:1.2em}.preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}.preview-bar{background:var(--surface-2);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 10px;display:flex}.preview-dots{gap:5px;display:flex}.preview-dots i{background:var(--line);border-radius:50%;width:9px;height:9px}.preview-url{background:var(--surface);min-width:0;color:var(--text-2);text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:99px;flex:1;padding:4px 10px;font-size:13px;overflow:hidden}.preview-btn{background:var(--surface);border:none;border-radius:50%;place-items:center;width:36px;height:36px;font-size:18px;display:grid}.preview-frame-box{background:#fff;position:relative;overflow:hidden}.preview-frame{transform-origin:0 0;background:#fff;border:none;display:block}.preview-tools{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px;display:flex}.seg{background:var(--surface-2);border-radius:12px;padding:3px;display:inline-flex}.seg button{min-height:40px;color:var(--text-2);background:0 0;border:none;border-radius:9px;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:650;display:inline-flex}.seg button.is-on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001a}.console-toggle{background:var(--surface-2);border:none;border-radius:12px;align-items:center;gap:8px;min-height:44px;padding:0 14px;font-size:14px;font-weight:650;display:inline-flex}.console-count{background:var(--text);min-width:22px;height:22px;color:var(--bg);border-radius:99px;place-items:center;padding:0 6px;font-size:12px;display:grid}.console-toggle.has-errors .console-count{background:var(--bad);color:#fff}.console-panel{background:var(--code-bg);max-height:220px;font-family:var(--mono);font-size:13px;overflow-y:auto}.console-empty{color:#75747f;font-family:var(--font);padding:12px 14px;font-size:14px}.console-line{color:var(--code-text);border-bottom:1px solid #ffffff0f;align-items:baseline;gap:8px;padding:7px 12px;display:flex}.console-icon{color:#75747f;text-align:center;flex:none;width:14px;font-weight:700}.console-text{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;min-width:0}.console-where{color:#75747f;flex:none;font-size:12px;text-decoration:underline}.console-line.is-error{color:#ff8f92;background:#ff6b6f1a}.console-line.is-error .console-icon{color:#ff6b6f}.console-line.is-warn{color:#ffd479;background:#ffd47914}.console-line.is-info{color:#8fd3ff}.psheet-backdrop{z-index:60;background:#0a0a1073;justify-content:center;align-items:flex-end;animation:.2s both fade-in;display:flex;position:fixed;inset:0}.psheet{width:100%;max-width:var(--max);max-height:94dvh;padding:16px var(--gutter) calc(var(--safe-bottom) + 20px);border-radius:var(--radius-l) var(--radius-l) 0 0;background:var(--bg);flex-direction:column;gap:12px;animation:.28s cubic-bezier(.2,.9,.3,1) both sheet-up;display:flex;overflow-y:auto}.psheet-head{justify-content:space-between;align-items:center;display:flex}.psheet-head h2{font-size:20px;font-weight:750}.psheet-note{color:var(--text-2);font-size:15px}.see-live{border:2px solid var(--text);border-radius:var(--radius);background:0 0;align-self:flex-start;align-items:center;gap:8px;min-height:44px;padding:0 16px;font-size:15px;font-weight:650;display:inline-flex}.see-live:active{transform:scale(.97)}.see-live svg{fill:currentColor}.exercise{flex-direction:column;gap:16px;display:flex}.code-tab-hint{color:#75747f;font-family:var(--font);margin-left:auto;font-size:12px}.line-btn{width:100%;min-height:36px;color:inherit;font:inherit;text-align:left;background:0 0;border-top:none;border-bottom:none;border-right:none;align-items:center}.line-btn:disabled{cursor:default}.line-btn.is-picked{border-left-color:var(--paper);background:#ffffff14}.code-line.is-right{background:#4cd78729;border-left-color:#4cd787}.code-line.is-wrong{background:#ff6b6f29;border-left-color:#ff6b6f}.order-slots{min-height:120px}.order-empty{border-radius:var(--radius-s);color:#75747f;font-family:var(--font);text-align:center;border:1px dashed #3a3a4a;margin:6px 12px;padding:12px;font-size:14px}.gap-code{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--code-text);padding:14px 16px;line-height:2.1}.gap{min-width:56px;color:var(--lime);font:inherit;vertical-align:baseline;background:0 0;border:2px dashed #55546a;border-radius:8px;margin:0 2px;padding:1px 8px;line-height:1.5;display:inline-block}.gap.is-active{border-color:var(--lime);background:#c6f4321a;border-style:solid}.gap.is-filled{border-style:solid}.gap.is-right{color:#4cd787;border-color:#4cd787}.gap.is-wrong{color:#ff6b6f;border-color:#ff6b6f}.choices{flex-direction:column;gap:10px;display:flex}.choices-label{color:var(--text-2);font-size:14px;font-weight:650}.chip-row{flex-wrap:wrap;gap:10px;display:flex}.chip{min-height:var(--tap);border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);font-family:var(--mono);padding:0 18px;font-size:16px;font-weight:600;transition:transform .1s}.chip:active,.option:active{transform:scale(.97)}.chip.is-selected{border-color:var(--text)}.option-list{flex-direction:column;gap:10px;display:flex}.option{min-height:var(--tap);border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);text-align:left;align-items:center;gap:12px;padding:12px 16px;font-size:16px;transition:transform .1s;display:flex}.option:disabled{cursor:default}.option-code{font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.option-letter{background:var(--surface-2);border-radius:8px;flex:none;place-items:center;width:28px;height:28px;font-size:13px;font-weight:750;display:grid}.option.is-selected{border-color:var(--text)}.option.is-selected .option-letter{background:var(--text);color:var(--bg)}.option.is-right{border-color:var(--good);background:var(--good-bg)}.option.is-wrong{border-color:var(--bad);background:var(--bad-bg)}.console{border-radius:var(--radius);background:var(--code-bg);border-left:4px solid #ff6b6f;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.console-label{color:#75747f;letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:650}.console-error{color:#ff8f92;background:0 0;padding:0;font-size:13.5px;line-height:1.5}.hints{flex-direction:column;gap:8px;display:flex}.hint{border-radius:var(--radius);background:var(--bubble-bg);padding:12px 14px;font-size:15.5px;animation:.25s both step-in}.hint-label{color:var(--bubble);letter-spacing:.05em;text-transform:uppercase;margin-bottom:2px;font-size:12px;font-weight:750;display:block}.tutor-tag{background:var(--bubble);color:#fff;letter-spacing:.04em;border-radius:99px;margin-left:8px;padding:1px 7px;font-size:10.5px}.qa-q{background:var(--surface);border-radius:12px 12px 4px;margin-bottom:8px;padding:8px 12px;font-weight:600}.tutor-notice{color:var(--text-2);font-size:14px}.thinking{align-items:center;min-height:48px;display:flex}.dots{gap:5px;display:inline-flex}.dots i{background:var(--bubble);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite dot}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dot{50%{opacity:.25;transform:translateY(-3px)}}.ask-row{gap:8px;display:flex}.ask-input{min-width:0;min-height:var(--tap);border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;flex:1;padding:0 14px;font-size:16px}.ask-input:focus{border-color:var(--bubble);outline:none}.ask-btn{background:var(--bubble);color:#fff;flex:none}.model-answer{border-radius:var(--radius);background:var(--good-bg);padding:12px 14px}.model-answer .hint-label{color:var(--good)}.explain-box{border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);font:inherit;resize:vertical;padding:14px;font-size:17px;line-height:1.5}.explain-box:focus{border-color:var(--text);outline:none}.word-count{color:var(--text-3);font-size:14px;font-weight:600}.word-count.is-ok{color:var(--good)}.hint-btn{flex:none;padding:0 14px;font-size:15px}.edit-tools{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.text-btn svg{fill:none}.text-btn{min-height:40px;color:var(--text-2);background:0 0;border:none;align-self:flex-start;align-items:center;gap:4px;padding:0 4px;font-size:15px;font-weight:600;display:inline-flex}.sheet-space-sm{height:8px}.sheet-space{height:160px}.sheet{z-index:20;max-width:var(--max);padding:18px var(--gutter) calc(var(--safe-bottom) + 16px);border-radius:var(--radius-l) var(--radius-l) 0 0;flex-direction:column;gap:8px;margin:0 auto;animation:.25s cubic-bezier(.2,.9,.3,1) both sheet-up;display:flex;position:fixed;inset:auto 0 0;box-shadow:0 -8px 30px #0000001f}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet.is-right{background:var(--good-bg)}.sheet.is-wrong{background:var(--bad-bg)}.sheet.is-neutral{background:var(--surface-2)}.sheet-title{align-items:center;gap:8px;font-size:20px;font-weight:800;display:flex}.sheet.is-right .sheet-title{color:var(--good)}.sheet.is-wrong .sheet-title{color:var(--bad)}.sheet-text{font-size:15.5px;line-height:1.5}.sheet-actions{gap:10px;margin-top:6px;display:flex}.sheet-actions .btn-ghost:not(.btn-block),.hint-btn{white-space:nowrap;flex:none}.live-result{scroll-margin-top:88px}.file-tree{flex-direction:column;gap:8px;display:flex}.file-option .code-dot{border-radius:50%;flex:none;width:10px;height:10px}.code-dot-folder{background:var(--text-3)}.file-name{font-family:var(--mono);font-size:15px;font-weight:650}.file-kind{color:var(--text-3);text-align:right;margin-left:auto;font-size:13px}.lesson{max-width:var(--max);min-height:100dvh;padding:calc(var(--safe-top) + 12px) var(--gutter) calc(var(--safe-bottom) + 112px);margin:0 auto}.lesson-top{z-index:5;margin:0 calc(var(--gutter) * -1);padding:8px var(--gutter);background:var(--bg);align-items:center;gap:14px;display:flex;position:sticky;top:0}.lesson-progress{flex:1;gap:4px;display:flex}.lesson-progress span{background:var(--surface-2);border-radius:99px;flex:1;height:6px;transition:background .3s}.lesson-progress .is-done{background:var(--lime-deep)}.lesson-progress .is-now{background:var(--text)}.lesson-content{padding-top:20px;animation:.28s backwards step-in}@keyframes step-in{0%{opacity:0;transform:translate(16px)}}.step{flex-direction:column;gap:16px;display:flex}.lesson-title-big{letter-spacing:-.03em;font-size:32px;font-weight:800;line-height:1.1}.lesson-goal-big{color:var(--text-2);font-size:18px}.step-label{color:var(--bubble);margin-top:12px}.step-title{letter-spacing:-.02em;font-size:24px;font-weight:750;line-height:1.2}.step-text{flex-direction:column;gap:12px;font-size:17.5px;line-height:1.6;display:flex}.tip{border-radius:var(--radius);background:var(--surface-2);align-items:baseline;gap:10px;padding:14px 16px;font-size:15px;display:flex}.tip-label{background:var(--lime);color:var(--ink);text-transform:uppercase;letter-spacing:.04em;border-radius:6px;flex:none;padding:2px 8px;font-size:12px;font-weight:750}.practice-pill{background:var(--lime);color:var(--ink);align-self:flex-start}.soon{border:1px dashed var(--line);border-radius:var(--radius);color:var(--text-2);align-items:flex-start;gap:12px;padding:14px 16px;font-size:15px;display:flex}.soon svg{flex:none;margin-top:2px}.lesson-footer{z-index:5;max-width:var(--max);padding:12px var(--gutter) calc(var(--safe-bottom) + 14px);background:linear-gradient(to top, var(--bg) 70%, transparent);gap:10px;margin:0 auto;display:flex;position:fixed;inset:auto 0 0}.lesson-back{width:var(--tap);height:var(--tap);border-radius:var(--radius);flex:none}.lesson-done{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.done-badge{background:var(--lime);width:104px;height:104px;color:var(--ink);border-radius:50%;place-items:center;margin-bottom:12px;animation:.5s cubic-bezier(.2,1.6,.4,1) both pop;display:grid}@keyframes pop{0%{opacity:0;transform:scale(.3)}}.done-actions{flex-direction:column}.lesson-missing{padding:40px var(--gutter);gap:16px;display:grid}.test-facts{flex-wrap:wrap;gap:8px;display:flex}.test-result{padding-top:calc(var(--safe-top) + 40px);text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.score-ring{--p:0%;background:radial-gradient(closest-side, var(--bg) 80%, transparent 82%), conic-gradient(var(--bad) var(--p), var(--surface-2) 0);border-radius:50%;place-items:center;width:132px;height:132px;margin-bottom:8px;animation:.5s cubic-bezier(.2,1.6,.4,1) both pop;display:grid}.score-ring.is-passed{background:radial-gradient(closest-side, var(--bg) 80%, transparent 82%), conic-gradient(var(--lime-deep) var(--p), var(--surface-2) 0)}.score-ring span{letter-spacing:-.03em;font-size:34px;font-weight:800}.result-list{flex-wrap:wrap;justify-content:center;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.result-list li{border-radius:99px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:600;display:inline-flex}.result-list .is-right{background:var(--good-bg);color:var(--good)}.result-list .is-wrong{background:var(--bad-bg);color:var(--bad)}.test-note{max-width:340px;color:var(--text-3);font-size:14px}.checkpoint-parts{flex-direction:column;gap:10px;margin:4px 0 0;padding:0;list-style:none;display:flex}.checkpoint-parts li{align-items:center;gap:12px;font-weight:600;display:flex}.part-num{background:var(--lime);width:30px;height:30px;color:var(--ink);border-radius:50%;flex:none;place-items:center;font-size:14px;font-weight:750;display:grid}.checkpoint-part{margin-bottom:8px}.practice-wait{color:var(--text-2);text-align:center;flex-direction:column;align-items:center;gap:14px;padding:60px 20px;display:flex}.tutor-card{border-radius:var(--radius);background:var(--bubble-bg);text-align:left;width:100%;max-width:420px;padding:14px 16px;font-size:15px}.tutor-card ul{margin:6px 0 0;padding-left:20px}.review-meta{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.review-steps{gap:4px;display:inline-flex}.review-steps i{background:var(--surface-2);border-radius:99px;width:18px;height:6px}.review-steps i.is-done{background:var(--chart-bar)}.review-list{text-align:left;flex-direction:column;gap:6px;width:100%;max-width:420px;margin:12px 0 0;padding:0;list-style:none;display:flex}.review-list li{border-radius:var(--radius-s);align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.review-list .is-right{background:var(--good-bg);color:var(--good)}.review-list .is-wrong{background:var(--bad-bg);color:var(--bad)}.review-list-title{min-width:0;color:var(--text);flex:1;font-weight:600}.review-list-next{white-space:nowrap;font-weight:650}.project{flex-direction:column;gap:14px;display:flex}.project-sub{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;display:flex}.edited-pill{background:var(--bubble-bg);color:var(--bubble)}.project-banner{border-radius:var(--radius);background:var(--surface);border:2px solid var(--lime-deep);flex-direction:column;gap:10px;padding:14px 16px;font-size:15px;display:flex}.project-banner-actions{gap:10px;display:flex}.project-seg{align-self:stretch}.project-seg button{flex:1;justify-content:center;min-height:44px;font-size:15px}.project-code{flex-direction:column;gap:10px;display:flex}.file-chips{margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter);scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.file-chips::-webkit-scrollbar{display:none}.file-chip{border:2px solid var(--line);background:var(--surface);min-height:44px;font-family:var(--mono);border-radius:12px;flex:none;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:600;display:inline-flex}.file-chip.is-on{border-color:var(--text)}.file-about,.project-hint{color:var(--text-2);font-size:14px}.project-reset{flex-direction:column;gap:10px;padding-top:4px;font-size:15px;display:flex}.project-reset .text-btn{color:var(--bad)}.export-card{flex-direction:column;gap:10px;padding:18px;display:flex}.export-note{border-radius:var(--radius-s);background:var(--good-bg);color:var(--good);padding:10px 12px;font-size:14px;font-weight:600}.export-card .settings-h{align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.project-conflict{border-color:var(--bubble)}.new-file-chip{color:var(--text-2);font-family:var(--font);border-style:dashed}.new-file-form{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);flex-direction:column;gap:8px;padding:14px;display:flex}.new-file-form label{font-size:15px;font-weight:650}.name-problem{color:var(--bad);font-size:14px;font-weight:600}.delete-file{color:var(--bad)}.project-which{width:100%;margin-bottom:14px;display:flex}.project-which button{white-space:nowrap;flex:1;justify-content:center;min-height:40px;font-size:14.5px}.progress{flex-direction:column;gap:14px;display:flex}.page-title{letter-spacing:-.03em;padding-top:8px;font-size:30px;font-weight:800}.streak-card{border-radius:var(--radius-l);background:var(--ink);color:var(--paper);flex-direction:column;gap:16px;padding:20px;display:flex}.streak-main{align-items:center;gap:14px;display:flex}.streak-flame{filter:grayscale();opacity:.5;font-size:40px;line-height:1}.streak-flame.is-lit{filter:none;opacity:1}.streak-num{letter-spacing:-.03em;font-size:34px;font-weight:800;line-height:1}.streak-num span{font-size:18px;font-weight:650}.streak-sub{color:#b9b8c4;margin-top:4px;font-size:14px}.streak-best{color:#b9b8c4;white-space:nowrap;background:#ffffff14;border-radius:99px;align-self:flex-start;margin-left:auto;padding:4px 10px;font-size:13px;font-weight:650}.streak-days{grid-template-columns:repeat(7,1fr);gap:6px;margin:0;padding:0;list-style:none;display:grid}.streak-days li{flex-direction:column;align-items:center;gap:6px;display:flex}.streak-dot{width:32px;height:32px;color:var(--ink);border:2px solid #ffffff24;border-radius:50%;place-items:center;display:grid}.streak-days .is-active .streak-dot{border-color:var(--lime);background:var(--lime)}.streak-days .is-today .streak-dot{border-color:var(--lime)}.streak-day{color:#8d8c96;font-size:12px;font-weight:650}.streak-days .is-today .streak-day{color:var(--paper)}.streak-rule{color:#8d8c96;font-size:12.5px}.stats{grid-template-columns:1fr 1fr;gap:10px;display:grid}.stat{flex-direction:column;padding:16px;display:flex}.stat-num{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:28px;font-weight:800;line-height:1.15}.stat-num small{color:var(--text-3);font-size:16px;font-weight:650}.stat-label{color:var(--text-2);font-size:14px}.chart-card,.skills-card,.tests-card{flex-direction:column;gap:14px;padding:18px;display:flex}.chart-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.chart-title{font-size:17px;font-weight:700}.chart-readout{color:var(--text-2);white-space:nowrap;font-size:14px}.chart-readout strong{color:var(--text)}.bars{grid-template-columns:repeat(7,1fr);gap:2px;height:150px;display:grid}.bar-col{background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:0;display:flex}.bar-track{border-bottom:1px solid var(--line);flex:1;justify-content:center;align-items:flex-end;width:100%;display:flex;position:relative}.bar{background:var(--chart-bar);border-radius:4px 4px 0 0;width:60%;max-width:28px;transition:height .4s}.bar-col.is-picked .bar-track{background:var(--surface-2);border-radius:6px 6px 0 0}.bar-label{color:var(--text-3);font-size:12px;font-weight:600}.bar-label.is-today{color:var(--text)}.text-link{color:var(--bubble);background:0 0;border:none;padding:6px 0;font-size:14px;font-weight:650}.how-levels{border-radius:var(--radius-s);background:var(--bubble-bg);margin:0;padding:12px 14px 12px 30px;font-size:14px;line-height:1.6}.skill-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.skill-row{border:none;border-bottom:1px solid var(--line);text-align:left;background:0 0;grid-template-columns:96px 1fr 20px;align-items:center;gap:12px;width:100%;min-height:44px;padding:0;display:grid}.skill-list li:last-child .skill-row{border-bottom:none}.skill-name{font-size:15px;font-weight:650}.pips{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.pip{background:var(--surface-2);border-radius:3px;height:10px;overflow:hidden}.pip span{background:var(--chart-bar);height:100%;display:block}.skill-level{color:var(--text-2);text-align:right;font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.skill-row.is-later .skill-name{color:var(--text-3)}.skill-later{color:var(--text-3);font-size:13px}.skill-detail{color:var(--text-2);flex-wrap:wrap;gap:6px;padding:10px 0 12px;font-size:13px;display:flex}.skill-detail span{background:var(--surface-2);border-radius:99px;padding:3px 9px;font-weight:600}.test-group{flex-direction:column;gap:6px;display:flex}.test-stage{color:var(--text-2);font-size:13px;font-weight:650}.test-cells{flex-wrap:wrap;gap:6px;display:flex}.test-cell{border:2px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--text-3);border-radius:9px;place-items:center;padding:0;font-size:14px;display:grid}.test-cell.is-passed{border-color:var(--chart-bar);background:var(--chart-bar);color:#fff}.test-cell.is-open{border-color:var(--text);color:var(--text)}.test-cell.is-locked{border-style:dashed}.test-picked{min-height:20px;color:var(--text-2);font-size:14px}.legend{color:var(--text-2);flex-wrap:wrap;gap:14px;font-size:13px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend .test-cell{border-width:2px;border-radius:4px;width:14px;height:14px}.weak-card{flex-direction:column;gap:12px;padding:18px;display:flex}.weak-empty{color:var(--text-2);font-size:14px}.weak-list{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.weak-item{border-bottom:1px solid var(--line);flex-direction:column;gap:6px;padding-bottom:14px;display:flex}.weak-item:last-child{border-bottom:none;padding-bottom:0}.weak-top{align-items:center;gap:10px;display:flex}.weak-rank{background:var(--bad-bg);width:26px;height:26px;color:var(--bad);border-radius:50%;place-items:center;font-size:13px;font-weight:800;display:grid}.weak-skill{flex:1;font-weight:700}.weak-acc{color:var(--text-2);font-size:14px;font-weight:650}.weak-detail{color:var(--text-2);font-size:13.5px}.weak-go{justify-content:space-between;min-height:46px;padding:0 14px;font-size:14.5px}.review-stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.review-stats span{border-radius:var(--radius-s);background:var(--surface-2);color:var(--text-2);text-align:center;flex-direction:column;padding:10px;font-size:13px;display:flex}.review-stats strong{color:var(--text);font-size:22px;font-weight:800}.week-link{min-height:64px;color:var(--text-3);align-items:center;gap:12px;padding:12px 16px;text-decoration:none;transition:transform .12s;display:flex}.week-link:active{transform:scale(.98)}.week-link-icon{font-size:24px}.week-link-body{flex-direction:column;flex:1;min-width:0;display:flex}.week-link-body strong{color:var(--text);font-weight:700}.week-link-body span{color:var(--text-2);font-size:13.5px}.settings{flex-direction:column;gap:14px;display:flex}.settings-card{flex-direction:column;gap:10px;padding:18px;font-size:16px;display:flex}.settings-h{align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.settings-muted{color:var(--text-2);font-size:15px}.roadmap{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.roadmap li{color:var(--text-2);align-items:center;gap:12px;font-size:15px;display:flex}.roadmap li.is-done{color:var(--text);font-weight:600}.roadmap-dot{background:var(--surface-2);border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:13px;font-weight:700;display:grid}.roadmap li.is-done .roadmap-dot{background:var(--lime);color:var(--ink)}.roadmap-later{margin-top:8px}.roadmap-later-list{color:var(--text-2);flex-direction:column;gap:6px;margin:0;padding-left:20px;font-size:15px;display:flex}.confirm-row{gap:10px;display:flex}.settings-message{border-radius:var(--radius-s);background:var(--surface-2);padding:10px 12px;font-size:15px;font-weight:600}.settings-version{color:var(--text-3);text-align:center;padding:8px 0;font-size:13px}.tutor-status{border-radius:var(--radius-s);background:var(--surface-2);padding:10px 12px;font-size:15px;font-weight:600}.tutor-status.is-good{background:var(--good-bg);color:var(--good)}.tutor-status.is-bad{background:var(--bad-bg);color:var(--bad)}.settings-message.is-ok{background:var(--good-bg);color:var(--good)}.settings-message.is-bad{background:var(--bad-bg);color:var(--bad)}.replace-link{color:var(--text-3);align-self:flex-start;font-size:13px;text-decoration:underline}.week{flex-direction:column;gap:14px;display:flex}.week-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.week-title{letter-spacing:-.03em;margin-top:4px;font-size:30px;font-weight:800;line-height:1.1}.week-range{color:var(--text-2);font-size:15px}.week-nav{gap:8px;display:flex}.week-nav .icon-btn{color:var(--text);text-decoration:none}.week-nav .is-off{opacity:.35}.week-tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.week-tile{flex-direction:column;gap:2px;padding:16px;display:flex}.week-num{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800}.week-num small{color:var(--text-3);font-size:16px}.week-label{color:var(--text-2);font-size:13.5px}.week-change{margin-top:4px;font-size:12.5px;font-weight:700}.week-change.is-up{color:var(--good)}.week-change.is-down{color:var(--text-3)}.week-dots{gap:4px;margin-top:6px;display:flex}.week-dots i{background:var(--surface-2);border-radius:99px;flex:1;height:6px}.week-dots i.is-on{background:var(--chart-bar)}.week-card{flex-direction:column;gap:10px;padding:18px;display:flex}.week-h{font-size:17px;font-weight:700}.week-empty{color:var(--text-2);font-size:14.5px}.week-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.week-list li{align-items:center;gap:10px;font-size:15px;display:flex}.week-list svg{color:var(--good)}.week-grow{flex:1}.week-badge{background:var(--surface-2);color:var(--text-2);border-radius:6px;flex:none;padding:2px 8px;font-size:12px;font-weight:700}.week-cards{border-top:1px solid var(--line);color:var(--text-2);padding-top:10px;font-size:14px}.week-cards strong{color:var(--text)}.week-chips{flex-wrap:wrap;gap:8px;display:flex}.week-chip{background:var(--bad-bg);color:var(--bad);border-radius:99px;padding:6px 12px;font-size:14px;font-weight:650}.week-focus{border:2px solid var(--lime-deep)}.week-focus-item{flex-direction:column;gap:6px;display:flex}.week-why{color:var(--text-2);font-size:14px}.week-go{justify-content:space-between}
