@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.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: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}.game{flex-direction:column;gap:clamp(8px,1.4vh,16px);max-width:1280px;height:100vh;margin:0 auto;padding:clamp(10px,1.6vh,18px) clamp(14px,2.4vw,36px);display:flex;overflow:hidden}.topbar{grid-template-columns:36px 1fr 36px;align-items:center;gap:12px;display:grid}.topbar-title{text-align:center;flex-direction:column;align-items:center;gap:1px;display:flex}.topbar-title strong{font-size:1.05rem;font-weight:650}.progress{background:var(--surface-3);border-radius:99px;flex:none;height:3px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .25s}.stats{flex-wrap:wrap;justify-content:center;gap:clamp(16px,4vw,48px);display:flex}.stat{flex-direction:column;align-items:center;gap:1px;min-width:70px;display:flex}.stat-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.7rem;font-weight:600}.stat-value{font-family:var(--mono);font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-size:1.35rem;font-weight:600;display:inline-flex}.stat.warn .stat-value{color:var(--error)}.mult{color:var(--accent);font-size:.8rem;font-weight:700}.text-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:clamp(12px,2.2vh,24px) clamp(16px,2.6vw,36px)}.text-window{height:calc(var(--fs) * 1.7 * 3);font-family:var(--mono);font-size:var(--fs);position:relative;overflow:hidden}.text-window.shake{animation:.25s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.text-inner{line-height:1.7;transition:transform .25s;position:relative}.seg{white-space:pre;display:inline-block}.ch{border-radius:3px;transition:color .1s;display:inline-block}.ch.todo{color:var(--faint)}.ch.done{color:var(--text)}.ch.done.wrong{color:var(--error);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--error) 50%, transparent);text-decoration-color:color-mix(in srgb, var(--error) 50%, transparent);text-underline-offset:5px}.ch.current{color:var(--text);background:var(--accent-soft);box-shadow:inset 0 -3px 0 var(--accent)}.ch.current.err{background:var(--error-soft);box-shadow:inset 0 -3px 0 var(--error);color:var(--error)}.ch.space.current{color:var(--accent);opacity:.8}.helper{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;min-height:36px;display:grid}.helper-side{justify-content:flex-start;display:flex}.helper-side.right{justify-content:flex-end}.note{background:var(--surface-2);height:30px;color:var(--text-2);border-radius:8px;align-items:center;padding:0 12px;font-size:.85rem;font-weight:550;animation:.2s ease-out noteIn;display:inline-flex}.note.good{background:var(--accent-soft);color:var(--accent)}.note.warn{background:var(--error-soft);color:var(--error)}@keyframes noteIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.finger-hint{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:8px;height:36px;padding:0 14px;font-size:.88rem;display:inline-flex}.finger-hint.placeholder{visibility:hidden}.blind-note{text-align:center;color:var(--muted);margin:auto 0}.kb-area{flex-direction:column;align-items:center;gap:6px;margin-top:auto;display:flex}.kb-area.static{margin-top:0;overflow-x:auto}.keyboard{gap:var(--gap);padding:calc(var(--u) * .2);background:var(--surface-2);border:1px solid var(--border);border-radius:calc(var(--u) * .3);flex-direction:column;display:inline-flex}.keyboard.compact{--u:min(3.1vw, 4.2vh, 44px)}.kb-row{gap:var(--gap);display:flex}.key{height:calc(var(--u) - var(--gap));border-radius:calc(var(--u) * .14);background:color-mix(in srgb, var(--key-c,var(--key-base)) 24%, var(--key-base));border:1px solid var(--border);border-bottom:2px solid var(--key-edge);font-family:var(--mono);font-size:calc(var(--u) * .32);color:var(--text);flex:none;justify-content:center;align-items:center;font-weight:550;transition:opacity .2s,background .15s,transform .1s;display:flex;position:relative}.key.special{color:var(--muted);font-family:var(--font);font-size:calc(var(--u) * .24)}.key.unlearned{opacity:.32}.key.guide{opacity:1;background:var(--key-g);color:#111;z-index:2;box-shadow:0 0 0 2px var(--surface-2), 0 0 0 4px var(--key-g);animation:1.2s ease-in-out infinite ring;transform:translateY(-1px)}@keyframes ring{0%,to{box-shadow:0 0 0 2px var(--surface-2), 0 0 0 4px var(--key-g)}50%{box-shadow:0 0 0 2px var(--surface-2), 0 0 0 6px color-mix(in srgb, var(--key-g) 45%, transparent)}}.key-top{opacity:.55;font-size:.7em;position:absolute;top:2px;left:16%}.key-bump{opacity:.5;background:currentColor;border-radius:1px;width:26%;height:2px;position:absolute;bottom:14%}.key-rate{opacity:.85;font-size:.5em;position:absolute;bottom:1px;right:4px}.keyboard.heatmap .key:not(.special){background:color-mix(in srgb, var(--key-c,var(--key-base)) 55%, var(--key-base))}.key-flash{border-radius:inherit;pointer-events:none;animation:.35s ease-out forwards keyflash;position:absolute;inset:-1px}.key-flash.ok{background:color-mix(in srgb, var(--success) 70%, transparent)}.key-flash.bad{background:color-mix(in srgb, var(--error) 80%, transparent);animation-duration:.5s}@keyframes keyflash{0%{opacity:1}to{opacity:0}}.key.fresh:after{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:3px;right:3px}.hands{justify-content:center;gap:calc(var(--u) * 2.6);height:calc(var(--u) * 1.9);display:flex}.hand{height:100%;overflow:visible}.finger-body,.hand-palm{fill:var(--surface);stroke:var(--border-strong);stroke-width:2px}.hand-palm-cover{fill:var(--surface)}.finger{transition:transform .2s}.finger.active{transform:translateY(-8px)}.finger.active .finger-body{stroke-width:0}.overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#0a0c1073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.overlay.clear{-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;background:0 0}.dialog{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:18px;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:520px;max-height:100%;padding:28px 32px;animation:.2s ease-out dialogIn;display:flex;overflow:auto}.dialog h2{font-size:1.5rem}@keyframes dialogIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.new-keys{flex-wrap:wrap;justify-content:center;gap:18px;margin:6px 0;display:flex}.new-key{flex-direction:column;align-items:center;gap:6px;display:flex}.new-key small{color:var(--muted);max-width:120px;font-size:.78rem}.tip{color:var(--text-2);background:var(--surface-2);border-radius:var(--radius-sm);padding:10px 14px;font-size:.92rem}.home-row{align-items:center;gap:10px;font-size:.85rem;display:flex}.legend{text-align:left;flex-direction:column;gap:8px;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.legend li{align-items:center;gap:10px;display:flex}.legend-chip{border:1px solid;border-radius:6px;justify-content:center;align-items:center;width:28px;height:24px;display:inline-flex}.countdown{font-family:var(--mono);color:var(--text);font-size:22vh;font-weight:700;animation:.7s ease-out forwards count}@keyframes count{0%{opacity:0;transform:scale(1.3)}30%{opacity:1;transform:scale(1)}to{opacity:.15;transform:scale(.95)}}.done-burst{letter-spacing:-.03em;color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:18px;padding:14px 32px;font-size:clamp(32px,6vw,64px);font-weight:750;animation:.25s ease-out dialogIn}.rain-field{border-radius:var(--radius);background:linear-gradient(#0b0d12 0%,#11141c 70%,#1a1018 100%);border:1px solid #1f2430;flex:1;min-height:220px;transition:box-shadow .2s;position:relative;overflow:hidden}.rain-grid{background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0}.rain-field.frozen{box-shadow:inset 0 0 0 2px #5ec8ff,inset 0 0 60px #5ec8ff40}.game.rain.hurt .rain-field{box-shadow:inset 0 0 0 2px var(--error), inset 0 -40px 60px #ff505a40;animation:.3s shake}.meteor{color:#e8eaee;font-family:var(--mono);white-space:nowrap;will-change:transform;background:#1b1f28;border:1px solid #333a48;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:clamp(17px,2.6vh,24px);display:flex;position:absolute;top:0}.meteor:before{content:"";pointer-events:none;background:linear-gradient(#0000,#ffffff38);width:2px;height:46px;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.meteor.target{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);z-index:3}.meteor .typed{color:#a49dff}.meteor .rest{color:#e8eaee}.kind-gold{color:#f5bd3a;border-color:#f5bd3a66}.kind-ice{color:#5ec8ff;border-color:#5ec8ff66}.kind-heart{color:#ff6b9a;border-color:#ff6b9a66}.meteor.kind-gold,.meteor.kind-ice,.meteor.kind-heart{background:#1b1f28}.boom{font-family:var(--mono);color:#a49dff;pointer-events:none;z-index:4;font-size:1.2rem;font-weight:700;animation:.8s ease-out forwards boom;position:absolute;transform:translate(-50%)}.boom.kind-gold{color:#f5bd3a}.boom.hit{color:var(--error)}@keyframes boom{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-40px)}}.rain-banner{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#fff;pointer-events:none;white-space:nowrap;z-index:5;font-size:clamp(22px,4vh,40px);font-weight:700;animation:1.4s ease-out forwards banner;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes banner{0%{opacity:0;transform:translate(-50%,-40%)}15%{opacity:1;transform:translate(-50%,-50%)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-60%)}}.ground{background:linear-gradient(#0000,#e5484d38);border-top:1px dashed #e5484d73;height:64px;position:absolute;bottom:0;left:0;right:0}.lives{align-items:center;gap:3px}.life{color:var(--surface-3)}.life.on{color:var(--error)}.results{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.results-card{text-align:center;align-items:center;gap:10px;width:100%;max-width:620px;padding:28px clamp(18px,4vw,40px);animation:.25s ease-out dialogIn}.results-card h1{font-size:1.9rem}.score{flex-direction:column;align-items:center;margin:4px 0;display:flex}.score-value{font-family:var(--mono);letter-spacing:-.03em;font-size:clamp(2.2rem,6vw,3rem);font-weight:700;line-height:1.1}.misses{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;font-size:.85rem;display:flex}.miss{align-items:center;gap:3px;display:inline-flex}.new-achievements{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.achievement-chip{background:var(--accent-soft);height:30px;color:var(--accent);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:.85rem;font-weight:600;display:inline-flex}.actions{margin-top:8px}.results-card .tiles{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}.profiles{flex-direction:column;min-height:100vh;display:flex}.profiles-top{justify-content:space-between;align-items:center;padding:16px clamp(16px,3vw,32px);display:flex}.profiles-body{text-align:center;flex-direction:column;flex:1;align-items:center;gap:8px;width:100%;max-width:760px;margin:0 auto;padding:6vh 16px 48px;display:flex}.profiles-body h1{font-size:2rem}.profile-grid{flex-wrap:wrap;justify-content:center;gap:12px;width:100%;margin-top:24px;display:flex}.profile-grid>*{width:176px}.profile-card{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;align-items:center;gap:6px;padding:22px 12px;transition:border-color .15s,transform .15s;display:flex}.profile-card:hover{border-color:var(--accent);transform:translateY(-2px)}.profile-card.add{box-shadow:none;color:var(--muted);background:0 0;border-style:dashed;justify-content:center}.add-icon{background:var(--surface-2);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;display:inline-flex}.profile-name{margin-top:4px;font-size:1.05rem;font-weight:650}.create-card{text-align:left;gap:18px;width:100%;max-width:440px;margin-top:24px;padding:24px}.field{flex-direction:column;gap:8px;font-size:.85rem;font-weight:600;display:flex}.field input{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);height:42px;color:var(--text);outline:none;padding:0 12px;font-size:1rem;font-weight:450}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.color-row{flex-wrap:wrap;gap:8px;display:flex}.color-choice{border:2px solid var(--surface);width:30px;height:30px;box-shadow:0 0 0 1px var(--border);border-radius:50%}.color-choice.on{box-shadow:0 0 0 2px var(--text)}.create-preview{border-radius:var(--radius-sm);background:var(--surface-2);align-items:center;gap:10px;padding:10px 12px;font-weight:600;display:flex}.home{min-height:100vh}.navbar{z-index:20;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:10px clamp(16px,3vw,32px);display:flex;position:sticky;top:0}.navbar-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.navbar-right .chip{margin-right:4px}.navbar-sep{background:var(--border);width:1px;height:22px;margin:0 6px}.profile-chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:8px;margin-left:6px;padding:3px 12px 3px 3px;display:flex}.profile-chip:hover{border-color:var(--border-strong)}.profile-chip-text{flex-direction:column;align-items:flex-start;font-size:.85rem;line-height:1.15;display:flex}.profile-chip-text small{color:var(--muted);font-size:.72rem}.home-main{grid-template-columns:minmax(300px,360px) 1fr;align-items:start;gap:24px;max-width:1280px;margin:0 auto;padding:24px clamp(16px,3vw,32px) 48px;display:grid}.sidebar{flex-direction:column;gap:14px;display:flex}.continue h2{margin-top:-6px;font-size:1.35rem}.xp{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:12px;font-size:.82rem;display:flex}.xp-head{justify-content:space-between;gap:8px;display:flex}.modes{gap:4px}.modes .card-title{margin-bottom:6px}.mode{border-radius:var(--radius-sm);text-align:left;background:0 0;border:none;align-items:center;gap:12px;margin:0 -10px;padding:10px;transition:background .15s;display:flex}button.mode:hover:not(:disabled),a.mode:hover{background:var(--surface-2)}a.mode{color:inherit;text-decoration:none}.mode-go{color:var(--faint);flex:none}.mode:disabled{opacity:.55}.mode.multi{align-items:flex-start}.mode-icon{background:var(--surface-2);width:34px;height:34px;color:var(--text-2);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.mode-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.mode-text b{font-size:.95rem;font-weight:600}.mode-text small{color:var(--muted);font-size:.8rem}.diff-row{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.diff{border:1px solid var(--border);background:var(--surface);border-radius:7px;align-items:center;gap:5px;height:28px;padding:0 10px;font-size:.78rem;font-weight:550;transition:border-color .15s,background .15s;display:inline-flex}.diff:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.diff:disabled{opacity:.5}.diff em{font-style:normal;font-family:var(--mono);color:var(--muted);font-size:.72rem}.course{flex-direction:column;gap:28px;display:flex}.module{flex-direction:column;gap:12px;display:flex}.module-head{align-items:center;gap:12px;display:flex}.module-icon{background:var(--accent-soft);width:38px;height:38px;color:var(--accent);border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.module-title{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.module-title h3{font-size:1.1rem}.module-progress{flex-direction:column;align-items:flex-end;gap:6px;min-width:170px;display:flex}.module-progress .bar{width:100%}.module-progress .star{vertical-align:-1px}.lesson-grid{grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:10px;display:grid}.lesson{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);text-align:left;box-shadow:var(--shadow-sm);flex-direction:column;gap:8px;padding:12px 14px;transition:border-color .15s,transform .15s;display:flex}.lesson:hover:not(:disabled){border-color:var(--border-strong);transform:translateY(-1px)}.lesson.current{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.lesson.locked{opacity:.5;box-shadow:none;background:0 0}.lesson-top{justify-content:space-between;align-items:center;display:flex}.lesson-num{color:var(--muted);font-size:.75rem}.lesson.current .lesson-num{color:var(--accent);font-weight:700}.lesson-title{font-size:.95rem;font-weight:600;line-height:1.25}.lesson-meta{justify-content:space-between;align-items:center;gap:8px;min-height:24px;margin-top:auto;display:flex}.page{flex-direction:column;gap:16px;max-width:1040px;margin:0 auto;padding:20px clamp(16px,3vw,32px) 48px;display:flex}.page.narrow{max-width:760px}.page-top{align-items:center;gap:10px;margin-bottom:4px;display:flex}.page-top h1{font-size:1.4rem}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.select{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);height:36px;color:var(--text);padding:0 10px;font-size:.88rem}.table{gap:0;padding:6px}.table-head,.table-row{grid-template-columns:44px 1fr 110px 170px;align-items:center;gap:12px;padding:10px 12px;display:grid}.table-head{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);font-size:.72rem;font-weight:600}.table-row{border-radius:var(--radius-sm)}.table-row+.table-row{border-top:1px solid var(--border)}.table-row.me{background:var(--accent-soft);border-top-color:#0000}.place{font-family:var(--mono);color:var(--muted);text-align:center;font-weight:700}.place.p1{color:var(--star)}.place.p2{color:#9aa3b2}.place.p3{color:#c98a5a}.who{align-items:center;gap:10px;min-width:0;font-weight:600;display:flex}.table-empty{text-align:center;padding:32px}.me-hero{flex-flow:wrap;align-items:center;gap:18px}.me-info{flex-direction:column;flex:1;gap:6px;min-width:220px;display:flex}.me-info .bar{max-width:360px}.level-steps{gap:4px;display:flex}.level-steps span{background:var(--surface-3);border-radius:4px;width:14px;height:22px}.level-steps span.on{background:var(--accent)}.achievements{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.achievement{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--muted);align-items:center;gap:12px;padding:10px 12px;display:flex}.achievement.on{color:var(--text);background:var(--surface-2);border-color:#0000}.achievement-icon{background:var(--surface-2);width:36px;height:36px;color:var(--faint);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.achievement.on .achievement-icon{background:var(--accent-soft);color:var(--accent)}.achievement-text{flex-direction:column;gap:1px;min-width:0;display:flex}.achievement-text b{font-size:.88rem;font-weight:600}.achievement-text small{color:var(--muted);font-size:.76rem}.settings{flex-direction:column;display:flex}.setting{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.setting+.setting{border-top:1px solid var(--border)}.toggle{appearance:none;background:var(--surface-3);cursor:pointer;border-radius:99px;flex:none;width:42px;height:24px;margin:0;transition:background .2s;position:relative}.toggle:after{content:"";width:18px;height:18px;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;transition:transform .2s;position:absolute;top:3px;left:3px}.toggle:checked{background:var(--accent)}.toggle:checked:after{transform:translate(18px)}.textarea{font-family:var(--mono);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);resize:vertical;outline:none;padding:12px 14px;font-size:.95rem;line-height:1.6}.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.confetti-layer{pointer-events:none;z-index:100;width:100vw;height:100vh;position:fixed;inset:0}.toasts{z-index:110;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);min-width:260px;max-width:340px;box-shadow:var(--shadow);align-items:center;gap:12px;padding:12px 16px 12px 12px;animation:.25s ease-out toastIn,.3s 3.9s forwards toastOut;display:flex}.toast-icon{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex}.toast-title{font-size:.9rem;font-weight:600}.toast-text{color:var(--muted);font-size:.8rem}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}@media (width<=980px){.home-main{grid-template-columns:1fr}.helper{grid-template-columns:1fr;justify-items:center;gap:6px}.helper-side,.helper-side.right{justify-content:center}.helper-side:empty{display:none}}@media (width<=640px){.navbar{flex-wrap:wrap}.profile-chip-text,.navbar-sep{display:none}.module-head{flex-wrap:wrap}.module-progress{align-items:flex-start;width:100%;min-width:0}.table-head,.table-row{grid-template-columns:32px 1fr 90px}.hide-sm{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
