:root{--primary: #5645d4;--primary-pressed: #4534b3;--on-primary: #ffffff;--navy: #0a1530;--navy-deep: #070f24;--navy-mid: #1a2a52;--link-blue: #0075de;--brand-orange: #dd5b00;--brand-pink: #ff64c8;--brand-purple-300: #d6b6f6;--brand-green: #1aae39;--brand-yellow: #f5d75e;--tint-peach: #ffe8d4;--tint-rose: #fde0ec;--tint-mint: #d9f3e1;--tint-lavender: #e6e0f5;--tint-sky: #dcecfa;--tint-yellow: #fef7d6;--tint-yellow-bold: #f9e79f;--tint-cream: #f8f5e8;--tint-gray: #f0eeec;--canvas: #ffffff;--surface: #f6f5f4;--surface-soft: #fafaf9;--hairline: #e5e3df;--hairline-soft: #ede9e4;--hairline-strong: #c8c4be;--ink: #1a1a1a;--charcoal: #37352f;--slate: #5d5b54;--steel: #787671;--stone: #a4a097;--muted: #bbb8b1;--on-dark: #ffffff;--on-dark-muted: #a4a097;--error: #e03131;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-xxl: 20px;--r-xxxl: 24px;--sh-1: rgba(15, 15, 15, .04) 0 1px 2px 0;--sh-2: rgba(15, 15, 15, .08) 0 4px 12px 0;--sh-3: rgba(15, 15, 15, .2) 0 24px 48px -8px;--font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;font-family:var(--font-sans);color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}::selection{background:var(--tint-lavender);color:var(--ink)}.brand{display:inline-flex;gap:10px;align-items:center;min-width:0;font-size:14px;font-weight:600;letter-spacing:-.224px}.brand-mark{display:grid;flex:0 0 auto;width:26px;height:26px;place-items:center;color:#fff;background:#06c;border-radius:8px}.language-switch{display:inline-flex;align-items:center;min-height:34px;padding:3px;background:#ffffff0f;border:1px solid rgba(255,255,255,.16);border-radius:9999px}.language-switch button{min-width:38px;min-height:28px;padding:0 9px;color:#f5f5f7b8;font-size:12px;font-weight:400;letter-spacing:-.12px;cursor:pointer;background:transparent;border:0;border-radius:9999px}.language-switch button.is-active{color:#1d1d1f;background:#f5f5f7}.home{color:var(--ink);background:var(--canvas)}.shell{width:min(1280px,100% - 64px);margin:0 auto}.section{padding:96px 0}.kicker{margin:0 0 16px;color:var(--steel);font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.section-title{max-width:15ch;margin:0 0 20px;font-size:48px;font-weight:600;line-height:1.15;letter-spacing:-.5px}.section-body{max-width:62ch;margin:0;color:var(--slate);font-size:18px;line-height:1.55}.tag{display:inline-block;padding:2px 8px;color:var(--charcoal);font-size:13px;font-weight:600;background:#ffffffa6;border-radius:var(--r-sm)}.btn{display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:44px;padding:0 18px;font-size:14px;font-weight:500;line-height:1.3;white-space:nowrap;cursor:pointer;border:0;border-radius:var(--r-md);transition:background .16s ease,border-color .16s ease,transform .16s ease}.btn-sm{min-height:36px;padding:0 14px}.btn-primary{color:var(--on-primary);background:var(--primary)}.btn-primary:hover{background:var(--primary-pressed)}.btn-secondary{color:var(--ink);background:transparent;border:1px solid var(--hairline-strong)}.btn-secondary:hover{border-color:var(--charcoal)}.btn-on-dark{color:var(--on-dark);background:transparent;border:1px solid var(--on-dark-muted)}.btn-on-dark:hover{border-color:var(--on-dark)}.btn:active{transform:translateY(1px)}.topbar{position:sticky;top:0;z-index:40;background:#ffffffdb;border-bottom:1px solid var(--hairline);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.topbar-inner{display:flex;gap:24px;align-items:center;min-height:64px}.home .brand{gap:10px;color:var(--ink)}.home .brand-mark{width:28px;height:28px;color:#fff;background:var(--primary);border-radius:var(--r-md)}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-text b{font-size:12px;font-weight:600;letter-spacing:.6px;color:var(--steel)}.brand-text i{font-size:15px;font-style:normal;font-weight:600;color:var(--ink)}.topbar-nav{display:flex;gap:4px;margin-right:auto}.topbar-nav a{padding:8px 12px;color:var(--slate);font-size:14px;font-weight:500;border-radius:var(--r-sm)}.topbar-nav a:hover{color:var(--ink);background:var(--surface)}.topbar-actions{display:flex;gap:12px;align-items:center}.home .language-switch{min-height:32px;background:var(--surface);border:1px solid var(--hairline)}.home .language-switch button{min-height:26px;color:var(--steel);font-weight:500}.home .language-switch button.is-active{color:var(--ink);background:var(--canvas);box-shadow:var(--sh-1)}.topbar-menu{display:none;place-items:center;width:38px;height:38px;color:var(--ink);cursor:pointer;background:transparent;border:1px solid var(--hairline);border-radius:var(--r-md)}.hero{position:relative;padding:104px 0 64px;overflow:hidden;color:var(--on-dark);background:radial-gradient(900px 420px at 50% -8%,rgba(86,69,212,.5),transparent 70%),var(--navy)}.hero-caps{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.hero-cap{position:absolute;display:grid;min-width:46px;height:46px;padding:0 12px;place-items:center;color:#ffffff9e;font-family:var(--font-mono);font-size:15px;background:#ffffff12;border:1px solid rgba(255,255,255,.16);border-radius:var(--r-lg);box-shadow:inset 0 -3px #ffffff14;animation:capFloat 7s ease-in-out infinite}@keyframes capFloat{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-14px) rotate(2deg)}}.hero-inner{position:relative;z-index:2;text-align:center}.hero-badge{display:inline-block;margin:0 0 28px;padding:6px 14px;color:var(--brand-purple-300);font-size:13px;font-weight:600;background:#ffffff14;border:1px solid rgba(214,182,246,.3);border-radius:9999px}.hero-title{max-width:18ch;margin:0 auto 24px;font-size:80px;font-weight:600;line-height:1.05;letter-spacing:-2px}.hero-title span{display:block;color:var(--brand-purple-300)}.hero-copy{max-width:56ch;margin:0 auto 36px;color:#ffffffc7;font-size:18px;line-height:1.55}.hero-actions{display:flex;gap:12px;justify-content:center}.hero-hint{margin:20px 0 0;color:var(--on-dark-muted);font-size:13px}.hero-stage-band{padding-bottom:8px;background:linear-gradient(to bottom,var(--navy) 0,var(--navy) 120px,var(--canvas) 120px)}.hero-stage{position:relative;z-index:3}.trainer{padding:0 0 18px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-xl);box-shadow:var(--sh-3)}.trainer.is-engaged{border-color:var(--primary);box-shadow:var(--sh-3),0 0 0 3px #5645d42e}.trainer.is-shaking{animation:trainerShake .22s ease}@keyframes trainerShake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.trainer-chrome{display:flex;gap:8px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--hairline-soft)}.trainer-dot{width:10px;height:10px;background:var(--hairline-strong);border-radius:9999px}.trainer-file{display:flex;gap:10px;align-items:center;margin-left:10px;margin-right:auto;color:var(--steel);font-size:13px}.trainer-chip{padding:2px 8px;color:var(--primary);font-size:12px;font-weight:600;background:var(--tint-lavender);border-radius:var(--r-sm)}.trainer-reset{display:inline-flex;gap:6px;align-items:center;padding:6px 10px;color:var(--steel);font-size:12px;cursor:pointer;background:transparent;border:1px solid var(--hairline);border-radius:var(--r-sm)}.trainer-reset:hover{color:var(--ink);border-color:var(--hairline-strong)}.trainer-stage{position:relative;padding:34px 24px 64px}.trainer-line{margin:0;font-family:var(--font-mono);font-size:clamp(18px,2.4vw,30px);line-height:1.7;letter-spacing:0;text-align:center;word-break:break-word}.tc{position:relative;color:var(--muted);white-space:pre;transition:color 90ms linear}.tc.is-correct{color:var(--charcoal)}.tc.is-wrong{color:var(--error);background:var(--tint-rose);border-radius:3px}.tc.is-current{color:var(--ink);background:var(--tint-lavender);border-radius:3px}.tc.is-current:after{position:absolute;top:-2px;bottom:-2px;left:-2px;width:2px;content:"";background:var(--primary);animation:caret 1s steps(2,start) infinite}@keyframes caret{0%,50%{opacity:1}50.01%,to{opacity:0}}.trainer-veil,.trainer-done{position:absolute;inset:auto 0 16px;display:flex;gap:10px;align-items:center;justify-content:center;font-size:13px}.trainer-veil{flex-direction:column;gap:2px;padding:0;color:var(--steel);cursor:pointer;background:transparent;border:0}.trainer-veil strong{color:var(--primary);font-size:14px}.trainer-done strong{display:inline-flex;gap:6px;align-items:center;padding:5px 12px;color:var(--brand-green);font-size:13px;background:var(--tint-mint);border-radius:9999px}.trainer-done button{padding:6px 14px;color:var(--on-primary);font-size:13px;font-weight:500;cursor:pointer;background:var(--primary);border:0;border-radius:var(--r-sm)}.trainer-input{position:absolute;bottom:0;left:50%;width:1px;height:1px;padding:0;opacity:0;border:0;outline:none}.trainer-stats{display:flex;gap:10px;justify-content:center;padding:0 24px 20px}.trainer-stat{min-width:108px;padding:10px 16px;text-align:center;background:var(--surface);border-radius:var(--r-lg)}.trainer-stat span{display:inline-flex;gap:5px;align-items:center;justify-content:center;color:var(--steel);font-size:12px}.trainer-stat strong{display:block;margin-top:2px;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.5px}.trainer-stat.is-combo.tier-1{background:var(--tint-yellow)}.trainer-stat.is-combo.tier-2{background:var(--tint-peach)}.trainer-stat.is-combo.tier-3{color:var(--on-primary);background:var(--brand-orange)}.trainer-stat.is-combo.tier-3 span,.trainer-stat.is-combo.tier-3 strong{color:var(--on-primary)}.vk{display:flex;flex-direction:column;gap:5px;padding:16px 20px 6px;border-top:1px solid var(--hairline-soft)}.vk-row{display:flex;gap:5px}.vk-key{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;height:38px;color:var(--vk-ink, var(--charcoal));font-family:var(--font-mono);font-size:11px;line-height:1.1;background:var(--finger-tint);border:1px solid var(--vk-edge, rgba(55, 53, 47, .1));border-bottom-width:2px;border-radius:var(--r-sm);transition:transform 80ms ease,box-shadow .12s ease,background .12s ease}.vk-key em{font-size:9px;font-style:normal;opacity:.5}.vk-key b{font-weight:500}.vk-key.is-home:after{position:absolute;bottom:3px;width:10px;height:2px;content:"";background:var(--vk-bump, rgba(55, 53, 47, .34));border-radius:2px}.vk-key.is-next{z-index:1;color:var(--on-primary);background:var(--primary);border-color:var(--primary-pressed);box-shadow:0 0 0 3px #5645d438;transform:translateY(-1px)}.vk-key.is-next em,.vk-key.is-next.is-home:after{color:var(--on-primary);background:#fff9;opacity:.8}.vk-key.is-shift-hint{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.vk-key.is-pressed{border-bottom-width:1px;transform:translateY(2px);filter:brightness(var(--vk-press-brightness, .94))}.vk.is-wrong .vk-key.is-next{background:var(--error);border-color:var(--error);box-shadow:0 0 0 3px #e0313133}.trainer-legend{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;margin:10px 0 0;padding:0 20px;list-style:none}.trainer-legend li{display:inline-flex;gap:6px;align-items:center;color:var(--steel);font-size:11px}.trainer-legend li:before{width:11px;height:11px;content:"";background:var(--finger-tint);border:1px solid rgba(55,53,47,.12);border-radius:3px}.why-section{background:var(--canvas)}.compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:48px}.compare-card{padding:32px;border-radius:var(--r-lg)}.compare-card h3{margin:0 0 20px;font-size:22px;font-weight:600;line-height:1.3}.compare-card ul{display:grid;gap:14px;margin:0;padding:0;list-style:none}.compare-card li{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;font-size:16px;line-height:1.55}.compare-card li svg{margin-top:4px}.compare-card.is-ordinary{color:var(--slate);background:var(--surface);border:1px solid var(--hairline)}.compare-card.is-ordinary svg{color:var(--stone)}.compare-card.is-dojo{color:var(--charcoal);background:var(--tint-mint)}.compare-card.is-dojo li{font-family:var(--font-sans)}.compare-card.is-dojo svg{color:var(--brand-green)}.mechanics-section{background:var(--surface-soft)}.mechanic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:48px}.mechanic-card{display:flex;flex-direction:column;align-items:flex-start;padding:32px;color:var(--charcoal);border-radius:var(--r-lg)}.mechanic-card.is-mint{background:var(--tint-mint)}.mechanic-card.is-peach{background:var(--tint-peach)}.mechanic-card.is-lavender{background:var(--tint-lavender)}.mechanic-icon{display:grid;width:44px;height:44px;margin-bottom:20px;place-items:center;color:var(--ink);background:#ffffffb3;border-radius:var(--r-lg)}.mechanic-card h3{margin:12px 0 10px;font-size:22px;font-weight:600;line-height:1.3}.mechanic-card p{margin:0;font-size:16px;line-height:1.55}.levels-banner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:40px;align-items:center;padding:48px;background:var(--tint-yellow-bold);border-radius:var(--r-xxxl)}.levels-banner .kicker,.levels-banner .section-body{color:#37352fb8}.levels-banner .section-title,.levels-banner .section-body{max-width:44ch}.levels-banner .section-title{color:var(--charcoal)}.levels-ladder{display:flex;gap:8px;align-items:flex-end}.levels-ladder span{width:22px;border-radius:var(--r-sm) var(--r-sm) 2px 2px}.level-list{margin:24px 0 0;padding:0;list-style:none;border:1px solid var(--hairline);border-radius:var(--r-lg);overflow:hidden}.level-row{display:grid;grid-template-columns:132px minmax(0,1fr) minmax(0,1.3fr) 20px;gap:20px;align-items:center;padding:20px 24px;background:var(--canvas);border-bottom:1px solid var(--hairline-soft)}.level-row:last-child{border-bottom:0}.level-rank{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;color:#fff;font-size:13px;font-weight:600;background:var(--rank);border-radius:var(--r-sm)}.level-name{font-size:17px;font-weight:600}.level-goal{display:flex;flex-direction:column;gap:2px;color:var(--slate);font-size:15px}.level-goal-label{color:var(--stone);font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase}.level-arrow{color:var(--muted)}.templates-section{background:var(--surface-soft)}.templates-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;align-items:center}.templates-note{margin:24px 0 0;color:var(--stone);font-size:13px}.code-card{overflow:hidden;background:var(--navy);border-radius:var(--r-xl);box-shadow:var(--sh-2)}.code-tabs{display:flex;gap:4px;padding:12px 12px 0}.code-tab{padding:8px 14px;color:var(--on-dark-muted);font-size:13px;font-weight:500;cursor:pointer;background:transparent;border:0;border-radius:var(--r-sm) var(--r-sm) 0 0}.code-tab.is-active{color:var(--on-dark);background:var(--navy-mid)}.code-meta{padding:10px 20px;color:var(--on-dark-muted);font-family:var(--font-mono);font-size:11px;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08)}.code-body{margin:0;padding:18px 20px 24px;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.75}.code-line{display:grid;grid-template-columns:24px minmax(0,1fr);gap:14px;white-space:pre}.code-text{min-width:0}.code-gutter{color:#ffffff42;text-align:right;-webkit-user-select:none;user-select:none}.tk-kw{color:var(--brand-purple-300)}.tk-ident{color:#e8f0ff}.tk-num{color:var(--brand-yellow)}.tk-punct{color:#8fa3c8}.tk-plain{color:inherit}.arena-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:48px}.arena-card{padding:24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.arena-icon{display:grid;width:38px;height:38px;margin-bottom:16px;place-items:center;color:var(--primary);background:var(--tint-lavender);border-radius:var(--r-md)}.arena-card h3{margin:0 0 8px;font-size:18px;font-weight:600}.arena-card p{margin:0;color:var(--slate);font-size:15px;line-height:1.55}.streak-strip{display:flex;gap:20px;align-items:center;margin-top:24px;padding:24px 28px;background:var(--surface);border-radius:var(--r-lg)}.streak-label{color:var(--steel);font-size:13px;font-weight:500;white-space:nowrap}.streak-cells{display:flex;flex-wrap:wrap;gap:6px}.streak-cell{width:18px;height:18px;background:var(--hairline);border-radius:4px}.streak-cell.level-1{background:#c3e9cd}.streak-cell.level-2{background:#7fd096}.streak-cell.level-3{background:var(--brand-green)}.teachers-section{background:var(--surface-soft)}.teachers-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center}.report-card{padding:24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--sh-2)}.report-head{margin-bottom:16px;color:var(--steel);font-size:13px;font-weight:600}.report-chart{display:block;width:100%;height:auto;margin-bottom:20px;background:var(--surface-soft);border-radius:var(--r-md)}.report-list{display:grid;gap:12px;margin:0;padding:0;list-style:none}.report-list li{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;color:var(--charcoal);font-size:15px;line-height:1.5}.report-list svg{margin-top:2px;color:var(--primary)}.cta-banner{padding:64px;text-align:center;background:var(--surface);border-radius:var(--r-xxxl)}.cta-banner h2{margin:0 0 14px;font-size:48px;font-weight:600;line-height:1.15;letter-spacing:-.5px}.cta-banner p{margin:0 0 32px;color:var(--slate);font-size:18px}.cta-actions{display:flex;gap:12px;justify-content:center}.site-footer{padding:64px 0 32px;background:var(--canvas);border-top:1px solid var(--hairline)}.footer-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,1fr));gap:40px}.footer-brand{display:flex;gap:12px;align-items:flex-start}.footer-brand .brand-mark{display:grid;width:30px;height:30px;place-items:center;color:#fff;font-size:14px;font-weight:600;background:var(--primary);border-radius:var(--r-md)}.footer-brand strong{font-size:14px;font-weight:600}.footer-brand p{margin:6px 0 0;max-width:34ch;color:var(--steel);font-size:14px;line-height:1.5}.footer-col{display:flex;flex-direction:column;gap:4px}.footer-col h3{margin:0 0 10px;font-size:13px;font-weight:600}.footer-col a{padding:4px 0;color:var(--steel);font-size:14px}.footer-col a:hover{color:var(--ink)}.footer-base{display:flex;gap:16px;justify-content:space-between;margin-top:48px;padding-top:24px;color:var(--stone);font-size:13px;border-top:1px solid var(--hairline-soft)}.footer-base a:hover{color:var(--steel)}.legal-page{min-height:100vh;color:#f5f5f7;background:#000}.legal-nav{position:sticky;top:0;z-index:10;min-height:64px;padding:0 24px;background:#000000b8;border-bottom:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.legal-nav-inner{display:flex;align-items:center;justify-content:space-between;width:min(980px,100%);margin:0 auto}.legal-nav .brand-mark{font-weight:600}.legal-language-switch{flex:0 0 auto}.legal-shell{width:min(880px,calc(100% - 48px));margin:0 auto}.legal-hero{padding:104px 0 72px;text-align:center;background:radial-gradient(circle at 50% 0%,rgba(0,102,204,.24),transparent 34%),#000}.legal-kicker{margin:0 0 18px;color:#86868b;font-size:14px;letter-spacing:-.224px}.legal-hero h1{margin:0;font-size:clamp(40px,6vw,72px);font-weight:600;line-height:1.08;letter-spacing:-.01em}.legal-hero p{max-width:640px;margin:24px auto 0;color:#f5f5f7bd;font-size:17px;line-height:1.47;letter-spacing:-.374px}.legal-content{padding:32px 0 96px;background:#f5f5f7}.legal-blocks{display:grid;gap:18px}.legal-blocks article,.legal-contact{padding:28px;color:#1d1d1f;background:#fff;border:1px solid #e0e0e0;border-radius:18px}.legal-blocks h2{margin:0 0 12px;font-size:24px;font-weight:600;line-height:1.14;letter-spacing:-.374px}.legal-blocks p{margin:0;color:#333;font-size:17px;line-height:1.47;letter-spacing:-.374px}.legal-contact{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-top:18px}.legal-contact span{color:#7a7a7a;font-size:14px}.legal-contact a{color:#06c;font-size:17px}@media(max-width:1279px){.hero-title{font-size:72px}.hero-cap{display:none}}@media(max-width:1023px){.shell{width:min(1280px,100% - 48px)}.section{padding:72px 0}.topbar-nav{display:none}.topbar-actions{margin-left:auto}.topbar-menu{display:grid}.hero{padding:72px 0 48px}.hero-title{font-size:56px;letter-spacing:-1px}.hero-stage-band{background:linear-gradient(to bottom,var(--navy) 0,var(--navy) 80px,var(--canvas) 80px)}.section-title,.cta-banner h2{font-size:36px}.mechanic-grid,.arena-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.levels-banner{grid-template-columns:minmax(0,1fr);gap:28px;padding:36px}.templates-grid,.teachers-grid{grid-template-columns:minmax(0,1fr);gap:36px}.level-row{grid-template-columns:108px minmax(0,1fr) 20px;gap:16px}.level-goal{grid-column:2 / 4}}@media(max-width:767px){.shell{width:min(1280px,100% - 32px)}.hero-title{font-size:44px}.hero-copy,.section-body{font-size:16px}.hero-actions,.cta-actions{flex-direction:column}.hero-actions .btn,.cta-actions .btn{width:100%}.compare,.mechanic-grid{grid-template-columns:minmax(0,1fr)}.footer-grid{grid-template-columns:minmax(0,1fr);gap:32px}.cta-banner{padding:40px 24px}.compare-card,.mechanic-card{padding:24px}.trainer-stats{flex-wrap:wrap;padding:0 16px 18px}.trainer-stat{flex:1 1 90px;min-width:0;padding:8px 10px}}@media(max-width:559px){.hero-title{font-size:36px}.section-title,.cta-banner h2{font-size:30px}.brand-text b,.topbar-actions .btn.is-hero-duplicate{display:none}.arena-grid{grid-template-columns:minmax(0,1fr)}.streak-strip{flex-direction:column;align-items:flex-start}.trainer-stage{padding:26px 14px 60px}.vk{padding:12px 10px 6px}.vk-key{height:28px;font-size:9px}.vk-key em{display:none}.level-row{grid-template-columns:96px minmax(0,1fr);padding:16px}.level-arrow{display:none}.level-goal{grid-column:1 / 3}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-cap,.tc.is-current:after,.trainer.is-shaking,.practice.is-shaking,.duel-race.is-shaking,.duel-dots i{animation:none}.duel-bar i,.btn,.vk-key,.tc{transition:none}}@media(max-width:559px){.legal-contact{align-items:flex-start;flex-direction:column}}.train-page{min-height:100vh;background:var(--surface-soft)}.map-screen{padding:48px 0 96px}.map-head{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-end;justify-content:space-between;margin-bottom:40px}.map-head h1{margin:0 0 10px;font-size:40px;font-weight:600;letter-spacing:-1px}.map-head p{max-width:52ch;margin:0;color:var(--slate);font-size:15px;line-height:1.55}.map-stats{display:flex;gap:10px}.map-stat{min-width:108px;padding:12px 16px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.map-stat span{display:inline-flex;gap:5px;align-items:center;color:var(--steel);font-size:12px}.map-stat strong{display:block;margin-top:2px;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}.map-stat i{color:var(--stone);font-size:14px;font-style:normal;font-weight:400}.map-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px;align-items:start}.map-tiers{display:grid;gap:36px}.tier-head{display:flex;gap:12px;align-items:center;margin-bottom:16px}.tier-head h2{margin:0;font-size:20px;font-weight:600}.tier-rank{display:inline-flex;align-items:center;padding:4px 10px;color:#fff;font-size:13px;font-weight:600;border-radius:var(--r-sm)}.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.lesson-card{display:flex;flex-direction:column;gap:6px;padding:18px;text-align:left;cursor:pointer;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.lesson-card:hover:not(:disabled){border-color:var(--primary);box-shadow:var(--sh-2);transform:translateY(-2px)}.lesson-card.is-boss{background:linear-gradient(180deg,var(--tint-yellow) 0,var(--canvas) 64px)}.lesson-card.is-locked{cursor:not-allowed;background:var(--surface);opacity:.62}.lesson-top{display:flex;gap:8px;align-items:center;justify-content:space-between;min-height:20px}.lesson-boss{padding:2px 8px;color:var(--brand-orange);font-size:11px;font-weight:700;letter-spacing:.6px;background:var(--tint-peach);border-radius:var(--r-xs, 4px)}.stars{display:inline-flex;gap:2px;margin-left:auto;color:var(--hairline-strong)}.stars .is-on{color:var(--brand-yellow);fill:var(--brand-yellow)}.lesson-card strong{font-size:16px;font-weight:600}.lesson-goal{color:var(--slate);font-size:13px;line-height:1.5}.lesson-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px;color:var(--stone);font-size:12px}.lesson-best{color:var(--primary);font-size:12px;font-weight:500}.lesson-lock{display:inline-flex;gap:5px;align-items:center;margin-top:4px;color:var(--steel);font-size:12px}.map-side{display:grid;gap:16px;position:sticky;top:84px}.side-card{padding:20px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.side-card h3{margin:0 0 12px;font-size:15px;font-weight:600}.side-empty,.side-hint{margin:0 0 12px;color:var(--steel);font-size:13px;line-height:1.5}.weak-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.weak-list li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px 10px;align-items:center}.weak-key{display:grid;height:28px;place-items:center;color:var(--charcoal);font-family:var(--font-mono);font-size:13px;background:var(--tint-rose);border:1px solid rgba(55,53,47,.12);border-radius:var(--r-sm)}.weak-bar{display:block;height:6px;overflow:hidden;background:var(--hairline-soft);border-radius:9999px}.weak-bar i{display:block;height:100%;min-width:4px;background:var(--error)}.weak-num{grid-column:2;color:var(--stone);font-size:11px}.calendar{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;margin-bottom:16px}.cal-cell{aspect-ratio:1;background:var(--hairline-soft);border-radius:4px}.cal-cell.is-on{background:var(--brand-green)}.side-reset{display:inline-flex;gap:6px;align-items:center;padding:6px 10px;color:var(--steel);font-size:12px;cursor:pointer;background:transparent;border:1px solid var(--hairline);border-radius:var(--r-sm)}.side-reset:hover{color:var(--error);border-color:var(--error)}.practice{padding:32px 0 72px}.practice.is-shaking{animation:trainerShake .22s ease}.practice-head{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center;margin-bottom:18px}.practice-quit{display:inline-flex;gap:4px;align-items:center;padding:8px 12px 8px 8px;color:var(--slate);font-size:14px;cursor:pointer;background:transparent;border:1px solid var(--hairline);border-radius:var(--r-md)}.practice-quit:hover{color:var(--ink);border-color:var(--hairline-strong)}.practice-title{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin-right:auto}.practice-title strong{font-size:20px;font-weight:600}.practice-title>span:last-child{color:var(--steel);font-size:14px}.practice-target{display:flex;flex-direction:column;gap:2px;color:var(--steel);font-size:12px;text-align:right}.practice-progress{height:6px;margin-bottom:18px;overflow:hidden;background:var(--hairline-soft);border-radius:9999px}.practice-progress i{display:block;height:100%;background:var(--primary);transition:width .14s ease}.practice-stage{position:relative;padding:28px 24px 44px;background:var(--navy);border-radius:var(--r-xl);box-shadow:var(--sh-2)}.practice-code{margin:0;overflow-x:auto;font-family:var(--font-mono);font-size:clamp(14px,1.5vw,19px);line-height:2}.pl-line{display:grid;grid-template-columns:28px minmax(0,1fr);gap:16px;white-space:pre}.pl-num{color:#ffffff3d;text-align:right;-webkit-user-select:none;user-select:none}.pc{position:relative;color:#ffffff52;transition:color 90ms linear}.pc.is-auto{color:#ffffff29}.pc.is-correct{color:#e8f0ff}.pc.is-wrong{color:#fff;background:#e03131b8;border-radius:3px}.pc.is-current{color:#fff;background:var(--primary);border-radius:3px}.pc.is-break{color:#fff3}.pc.is-break.is-current,.pc.is-break.is-correct{color:#ffffffa8}.practice-veil{position:absolute;inset:auto 0 14px;color:var(--brand-purple-300);font-size:13px;cursor:pointer;background:transparent;border:0}.practice-stats{display:flex;gap:10px;margin:18px 0}.practice-stat{flex:1 1 0;padding:12px 16px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.practice-stat span{display:inline-flex;gap:5px;align-items:center;color:var(--steel);font-size:12px}.practice-stat strong{display:block;margin-top:2px;font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.5px}.practice-stat.is-over{background:var(--tint-rose);border-color:var(--error)}.practice-stat.is-over span,.practice-stat.is-over strong{color:var(--error)}.practice .vk{padding:16px 0 0;border-top:0}.result-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;padding:24px;place-items:center;background:#0a15309e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.result-card{width:min(460px,100%);padding:32px;text-align:center;background:var(--canvas);border-radius:var(--r-xxl);box-shadow:var(--sh-3)}.result-stars{display:inline-flex;gap:6px;margin-bottom:12px;color:var(--hairline-strong)}.result-stars .is-on{color:var(--brand-yellow);fill:var(--brand-yellow)}.result-card h2{margin:0 0 8px;font-size:28px;font-weight:600}.result-card.is-failed h2{color:var(--error)}.result-hint{margin:0 0 20px;color:var(--steel);font-size:14px;line-height:1.5}.result-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0;padding:16px 0;border-top:1px solid var(--hairline-soft);border-bottom:1px solid var(--hairline-soft)}.result-stats span{display:block;color:var(--steel);font-size:11px}.result-stats strong{display:block;margin-top:2px;font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.result-weak{margin-bottom:22px}.result-weak>span{display:block;margin-bottom:8px;color:var(--steel);font-size:12px}.result-weak div{display:flex;gap:8px;justify-content:center}.result-weak em{display:inline-flex;gap:4px;align-items:center;padding:4px 10px;color:var(--charcoal);font-family:var(--font-mono);font-size:13px;font-style:normal;background:var(--tint-rose);border-radius:var(--r-sm)}.result-weak i{color:var(--error);font-size:11px;font-style:normal;font-weight:600}.result-actions{display:flex;gap:10px;justify-content:center}.result-all{margin:18px 0 0;color:var(--stone);font-size:13px}@media(max-width:1023px){.map-body{grid-template-columns:minmax(0,1fr)}.map-side{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.map-head h1{font-size:32px}}@media(max-width:767px){.map-side{grid-template-columns:minmax(0,1fr)}.map-stats{flex-wrap:wrap}.map-stat{flex:1 1 96px;min-width:0}.practice-target{text-align:left}.practice-stats{flex-wrap:wrap}.practice-stat{flex:1 1 40%}.result-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 8px}.result-actions{flex-direction:column}.result-actions .btn{width:100%}}.today-row{margin-bottom:40px}.today-title{margin:0 0 16px;font-size:20px;font-weight:600}.today-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.today-card{display:flex;flex-direction:column;gap:8px;padding:22px;text-align:left;cursor:pointer;border:1px solid var(--hairline);border-radius:var(--r-lg);transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.today-card:hover:not(:disabled){box-shadow:var(--sh-2);transform:translateY(-2px)}.today-card.is-daily{background:var(--tint-sky)}.today-card.is-weak{background:var(--tint-rose)}.today-card.is-locked{cursor:not-allowed;background:var(--surface);opacity:.7}.today-tag{color:var(--slate);font-size:12px;font-weight:600;letter-spacing:.4px}.today-card strong{font-size:20px;font-weight:600;line-height:1.3}.today-desc{color:var(--slate);font-size:13px;line-height:1.5}.today-keys{display:flex;gap:6px}.today-keys i{display:grid;min-width:30px;height:30px;padding:0 6px;place-items:center;color:var(--charcoal);font-family:var(--font-mono);font-size:14px;font-style:normal;background:#ffffffbf;border:1px solid rgba(55,53,47,.12);border-radius:var(--r-sm)}.today-foot{margin-top:auto;padding-top:8px}.today-go{display:inline-flex;align-items:center;padding:6px 14px;color:var(--on-primary);font-size:13px;font-style:normal;font-weight:500;background:var(--primary);border-radius:var(--r-sm)}.today-done{display:inline-flex;gap:5px;align-items:center;color:var(--brand-green);font-size:13px;font-style:normal;font-weight:600}.arena-card.is-soon{background:var(--surface-soft)}.arena-soon{display:inline-block;margin-bottom:8px;padding:2px 8px;color:var(--steel);font-size:11px;font-weight:600;background:var(--tint-gray);border-radius:var(--r-sm)}@media(max-width:767px){.today-cards{grid-template-columns:minmax(0,1fr)}}.auth-page{min-height:100vh;background:var(--surface-soft)}.auth-shell{display:flex;justify-content:center;padding:64px 24px 96px}.auth-card{width:100%;max-width:440px;padding:32px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--sh-2)}.auth-title{margin:0 0 8px;font-size:28px;font-weight:600;line-height:1.25;letter-spacing:-.4px;color:var(--ink)}.auth-body{margin:0 0 24px;font-size:14px;line-height:1.6;color:var(--slate)}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-roles{display:flex;gap:8px;padding:0;margin:0;border:0}.auth-roles legend{padding:0 0 8px;font-size:13px;font-weight:500;color:var(--charcoal)}.auth-role{flex:1;min-height:40px;font-size:14px;color:var(--slate);cursor:pointer;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-md);transition:background .16s ease,border-color .16s ease,color .16s ease}.auth-role:hover{border-color:var(--hairline-strong)}.auth-role.is-active{font-weight:500;color:var(--primary);background:var(--tint-lavender);border-color:var(--primary)}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field>span{font-size:13px;font-weight:500;color:var(--charcoal)}.auth-field>i{font-size:12px;font-style:normal;color:var(--steel)}.auth-field input{min-height:44px;padding:0 12px;font-family:inherit;font-size:15px;color:var(--ink);background:var(--canvas);border:1px solid var(--hairline-strong);border-radius:var(--r-md);transition:border-color .16s ease,box-shadow .16s ease}.auth-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #5645d429}.auth-submit{width:100%;margin-top:4px}.auth-error{padding:10px 12px;margin:0;font-size:13px;line-height:1.5;color:var(--error);background:#fdf1f1;border:1px solid #f4c9c9;border-radius:var(--r-md)}.auth-warning{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;margin:0 0 20px;font-size:13px;line-height:1.5;color:var(--brand-orange);background:var(--tint-peach);border-radius:var(--r-md)}.auth-warning svg{flex:none;margin-top:2px}.auth-summary{display:flex;gap:12px;padding:0;margin:0 0 24px;list-style:none}.auth-summary li{flex:1;padding:14px;text-align:center;background:var(--surface);border-radius:var(--r-md)}.auth-summary b{display:block;font-size:24px;font-weight:600;color:var(--ink)}.auth-summary span{font-size:12px;color:var(--steel)}.auth-actions{display:flex;flex-direction:column;gap:10px}.auth-actions .btn{width:100%}.auth-foot{padding-top:20px;margin-top:24px;border-top:1px solid var(--hairline-soft)}.auth-switch{padding:0;font-family:inherit;font-size:14px;font-weight:500;color:var(--link-blue);cursor:pointer;background:none;border:0}.auth-switch:hover{text-decoration:underline}.auth-guest{margin:12px 0 0;font-size:13px;line-height:1.6;color:var(--steel)}.auth-guest a{font-weight:500;color:var(--link-blue)}.sync-badge{padding:4px 10px;font-size:12px;font-weight:500;color:var(--steel);white-space:nowrap;background:var(--surface);border-radius:var(--r-full, 9999px)}.sync-badge[data-synced=true]{color:var(--brand-green);background:var(--tint-mint)}.btn:disabled{cursor:not-allowed;opacity:.55}@media(max-width:640px){.auth-shell{padding:32px 16px 64px}.auth-card{padding:24px 20px}.sync-badge{display:none}}.auth-app-notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;margin:0 0 24px;background:var(--tint-lavender);border:1px solid var(--primary);border-radius:var(--r-md)}.auth-app-notice svg{flex:none;margin-top:2px;color:var(--primary)}.auth-app-notice b{display:block;margin-bottom:4px;font-size:14px;font-weight:600;color:var(--primary)}.auth-app-notice span{font-size:13px;line-height:1.55;color:var(--charcoal)}.class-list{padding:0;margin:0 0 16px;list-style:none}.class-list li{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--hairline-soft)}.class-list li:last-child{border-bottom:0}.class-list svg{flex:none;margin-top:3px;color:var(--primary)}.class-list b{display:block;font-size:14px;font-weight:600;color:var(--ink)}.class-list span{display:flex;gap:4px;align-items:center;font-size:12px;color:var(--steel)}.class-join{display:flex;flex-direction:column;gap:10px;padding-top:14px;border-top:1px solid var(--hairline-soft)}.class-join .btn{align-self:flex-start}.guardian-code{display:flex;gap:8px;align-items:center;padding:12px;margin:12px 0;background:var(--tint-mint);border-radius:var(--r-md)}.guardian-code b{font-family:var(--font-mono);font-size:20px;font-weight:600;letter-spacing:3px;color:var(--ink)}.guardian-code span{margin-left:auto;font-size:11px;color:var(--steel)}.guardian-copy{display:inline-flex;padding:4px;color:var(--slate);cursor:pointer;background:none;border:0}.guardian-copy:hover{color:var(--primary)}.side-card h3 svg{margin-right:4px;vertical-align:-2px;color:var(--primary)}.board-tabs{display:inline-flex;gap:2px;padding:2px;margin:0 0 14px;background:var(--surface);border-radius:var(--r-sm)}.board-tab{padding:5px 12px;font-family:inherit;font-size:12px;color:var(--slate);cursor:pointer;background:none;border:0;border-radius:var(--r-xs, 4px)}.board-tab.is-active{font-weight:500;color:var(--ink);background:var(--canvas);box-shadow:var(--sh-1)}.board-list{padding:0;margin:0;list-style:none;counter-reset:board}.board-list li,.board-me{display:flex;gap:10px;align-items:center;padding:7px 0}.board-list li.is-me{padding-right:8px;padding-left:8px;margin:0 -8px;background:var(--tint-lavender);border-radius:var(--r-sm)}.board-rank{flex:none;width:22px;font-size:12px;font-weight:600;color:var(--steel);text-align:center}.board-rank.is-gold{color:#8a6d00;background:var(--brand-yellow);border-radius:var(--r-full, 9999px)}.board-rank.is-silver{color:#55524c;background:#e3e1dd;border-radius:var(--r-full, 9999px)}.board-rank.is-bronze{color:#7a4a1d;background:#f0d4b8;border-radius:var(--r-full, 9999px)}.board-list b,.board-me b{flex:1;overflow:hidden;font-size:13px;font-weight:500;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}.board-metric{flex:none;font-size:12px;font-variant-numeric:tabular-nums;color:var(--charcoal);text-align:right}.board-metric i{display:block;font-size:11px;font-style:normal;color:var(--steel)}.board-me{padding-top:10px;margin-top:4px;border-top:1px dashed var(--hairline-strong)}.board-note{margin:12px 0 0;font-size:11px;line-height:1.5;color:var(--steel)}.teacher-page{min-height:100vh;background:var(--surface-soft)}.teacher-shell{padding:40px 0 96px}.teacher-head{display:flex;gap:16px;align-items:center;justify-content:space-between}.teacher-head h1{display:flex;gap:10px;align-items:center;margin:0;font-size:32px;font-weight:600;letter-spacing:-.5px;color:var(--ink)}.teacher-archived{padding:3px 8px;font-size:11px;font-style:normal;font-weight:500;color:var(--steel);background:var(--tint-gray);border-radius:var(--r-full, 9999px)}.teacher-sub{margin:8px 0 28px;font-size:15px;color:var(--slate)}.teacher-back{display:inline-flex;gap:5px;align-items:center;padding:0;margin-bottom:18px;font-family:inherit;font-size:13px;color:var(--link-blue);cursor:pointer;background:none;border:0}.teacher-create{display:flex;gap:12px;align-items:flex-end;max-width:460px;padding:20px;margin-bottom:28px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.teacher-create .auth-field{flex:1}.teacher-invite{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:16px 20px;margin:20px 0 28px;background:var(--tint-lavender);border-radius:var(--r-lg)}.teacher-invite>span{font-size:13px;font-weight:500;color:var(--primary)}.teacher-invite b{font-family:var(--font-mono);font-size:26px;font-weight:600;letter-spacing:5px;color:var(--ink)}.teacher-invite i{flex-basis:100%;font-size:12px;font-style:normal;color:var(--slate)}.teacher-columns{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.teacher-roster{padding:24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.teacher-roster h2{margin:0 0 16px;font-size:18px;font-weight:600;color:var(--ink)}.teacher-roster ul,.teacher-list{padding:0;margin:0;list-style:none}.teacher-roster li{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--hairline-soft)}.teacher-roster li:last-child{border-bottom:0}.roster-who{flex:1;min-width:0}.roster-who b{display:block;font-size:14px;font-weight:500;color:var(--ink)}.roster-who span{font-size:12px;color:var(--steel)}.roster-actions{display:flex;gap:6px}.roster-btn{display:inline-flex;gap:4px;align-items:center;padding:5px 10px;font-family:inherit;font-size:12px;color:var(--slate);cursor:pointer;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-sm)}.roster-btn:hover{border-color:var(--hairline-strong)}.roster-btn.is-danger:hover{color:var(--error);border-color:var(--error)}.roster-reset{display:flex;flex-basis:100%;gap:14px;align-items:center;padding:12px 14px;background:var(--tint-mint);border-radius:var(--r-md)}.roster-reset b{flex:none;font-family:var(--font-mono);font-size:20px;font-weight:600;letter-spacing:3px;color:var(--ink)}.roster-reset span{display:block;font-size:13px;font-weight:500;color:var(--charcoal)}.roster-reset i{display:block;font-size:11px;font-style:normal;line-height:1.5;color:var(--slate)}.teacher-list li{margin-bottom:10px}.teacher-list button{display:block;width:100%;padding:16px 20px;font-family:inherit;text-align:left;cursor:pointer;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg);transition:border-color .16s ease}.teacher-list button:hover{border-color:var(--hairline-strong)}.teacher-list b{display:flex;gap:8px;align-items:center;font-size:16px;font-weight:600;color:var(--ink)}.teacher-list span{font-size:12px;color:var(--steel)}@media(max-width:900px){.teacher-columns{grid-template-columns:minmax(0,1fr)}}.family-panel,.report{padding:24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.family-panel .report{padding:0;background:none;border:0}.family-tabs{display:flex;flex-wrap:wrap;gap:2px;padding:2px;margin-bottom:16px;background:var(--surface);border-radius:var(--r-sm)}.family-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:20px}.family-head h2{margin:0;font-size:18px;font-weight:600;color:var(--ink)}.family-head-actions{display:flex;gap:10px;align-items:center}.report-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0;margin:0 0 24px;list-style:none}.report-stats li{padding:14px;text-align:center;background:var(--surface);border-radius:var(--r-md)}.report-stats b{display:block;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}.report-stats span{font-size:12px;color:var(--steel)}.report-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:24px}.chart{margin:0}.chart figcaption{margin-bottom:12px;font-size:13px;font-weight:500;color:var(--charcoal)}.chart-plot{display:flex;gap:2px;align-items:flex-end;height:96px}.chart-col{display:flex;flex:1;flex-direction:column;gap:6px;align-items:center;height:100%}.chart-bar-slot{position:relative;display:flex;flex:1;align-items:flex-end;justify-content:center;width:100%}.chart-bar{width:100%;max-width:26px;background:var(--primary);border-radius:4px 4px 0 0}.chart-bar.is-empty{background:var(--hairline-strong);border-radius:2px}.chart-peak{position:absolute;top:-16px;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--primary)}.chart-tick{font-size:11px;color:var(--steel)}.report-weak h4{margin:0 0 12px;font-size:13px;font-weight:500;color:var(--charcoal)}.report-weak ul{padding:0;margin:0;list-style:none}.report-weak li{display:flex;gap:10px;align-items:center;padding:5px 0}.report-weak code{flex:none;width:30px;padding:3px 0;font-family:var(--font-mono);font-size:13px;color:var(--ink);text-align:center;background:var(--surface);border-radius:var(--r-xs, 4px)}.weak-track{flex:1;height:6px;overflow:hidden;background:var(--surface);border-radius:var(--r-full, 9999px)}.weak-track span{display:block;height:100%;background:var(--brand-orange);border-radius:var(--r-full, 9999px)}.report-weak i{flex:none;font-size:11px;font-style:normal;font-variant-numeric:tabular-nums;color:var(--steel)}.report-foot{padding-top:16px;margin:20px 0 0;font-size:12px;color:var(--steel);border-top:1px solid var(--hairline-soft)}@media(max-width:700px){.report-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.report-charts{grid-template-columns:minmax(0,1fr)}}.class-report{padding:20px 24px;margin-bottom:24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-lg)}.class-report-head{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;justify-content:space-between;margin-bottom:14px}.class-report-head h2{margin:0;font-size:16px;font-weight:600;color:var(--ink)}.class-report-head span{font-size:12px;color:var(--steel)}.class-report table{width:100%;font-size:13px;border-collapse:collapse}.class-report th{padding:6px 8px;font-size:11px;font-weight:500;color:var(--steel);text-align:right;border-bottom:1px solid var(--hairline)}.class-report th:first-child{text-align:left}.class-report td{padding:8px;font-variant-numeric:tabular-nums;color:var(--charcoal);text-align:right;border-bottom:1px solid var(--hairline-soft)}.class-report td:first-child{font-variant-numeric:normal;color:var(--ink);text-align:left}.class-report tr.is-quiet td{color:var(--steel)}.class-report tr.is-quiet em{margin-left:8px;padding:2px 7px;font-size:10px;font-style:normal;color:var(--brand-orange);background:var(--tint-peach);border-radius:var(--r-full, 9999px)}.ime-warning{display:flex;gap:8px;align-items:center;justify-content:center;padding:10px 14px;margin:0 0 12px;font-size:13px;line-height:1.5;color:var(--brand-orange);background:var(--tint-peach);border-radius:var(--r-md)}.ime-warning svg{flex:none}@media(max-width:559px){.vk{display:none}.topbar-inner,.practice-head{flex-wrap:wrap;row-gap:8px}.practice-stats{gap:8px}.practice-stat{padding:8px 10px}.report-charts,.report-stats{gap:10px}.teacher-invite b{font-size:20px;letter-spacing:3px}.class-report{padding:16px}.class-report table{display:block;overflow-x:auto;white-space:nowrap}}.badge-panel h2{margin:0 0 4px;font-size:18px;font-weight:600;color:var(--ink)}.badge-count{margin:0 0 20px;font-size:13px;color:var(--steel)}.badge-group{margin-bottom:20px}.badge-group h4{margin:0 0 10px;font-size:12px;font-weight:500;color:var(--steel)}.badge-group ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;padding:0;margin:0;list-style:none}.badge{position:relative;display:flex;gap:12px;align-items:flex-start;padding:12px 14px;background:var(--surface);border:1px solid transparent;border-radius:var(--r-md)}.badge.is-unlocked{background:var(--tint-yellow);border-color:var(--brand-yellow)}.badge.is-new{border-color:var(--primary);box-shadow:0 0 0 3px #5645d424}.badge-icon{display:inline-flex;flex:none;align-items:center;justify-content:center;width:34px;height:34px;color:var(--muted);background:var(--canvas);border-radius:var(--r-full, 9999px)}.badge.is-unlocked .badge-icon{color:#8a6d00}.badge-body{min-width:0}.badge-body b{display:block;font-size:14px;font-weight:600;color:var(--ink)}.badge:not(.is-unlocked) .badge-body b{color:var(--slate)}.badge-body>span{display:block;font-size:12px;line-height:1.45;color:var(--steel)}.badge-progress{display:flex;gap:8px;align-items:center;margin-top:8px}.badge-track{flex:1;height:5px;overflow:hidden;background:var(--canvas);border-radius:var(--r-full, 9999px)}.badge-track i{display:block;height:100%;background:var(--primary);border-radius:var(--r-full, 9999px)}.badge-progress em{flex:none;font-size:11px;font-style:normal;font-variant-numeric:tabular-nums;color:var(--steel)}.badge-new{position:absolute;top:-8px;right:10px;padding:2px 8px;font-size:10px;font-weight:500;color:var(--on-primary);background:var(--primary);border-radius:var(--r-full, 9999px)}.result-badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;padding:0;margin:4px 0 12px;list-style:none}.result-badges li{display:inline-flex;gap:5px;align-items:center;padding:4px 10px;font-size:12px;font-weight:500;color:#8a6d00;background:var(--tint-yellow);border:1px solid var(--brand-yellow);border-radius:var(--r-full, 9999px)}.drills .side-hint{margin-bottom:14px}.drill-form{display:flex;flex-direction:column;gap:14px;padding:16px;margin-bottom:18px;background:var(--surface);border-radius:var(--r-md)}.drill-form textarea{padding:10px 12px;font-family:var(--font-mono);font-size:13px;line-height:1.7;color:var(--ink);resize:vertical;background:var(--canvas);border:1px solid var(--hairline-strong);border-radius:var(--r-md)}.drill-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #5645d429}.drill-targets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.drill-actions{display:flex;gap:8px}.drill-list,.assigned-drills{padding:0;margin:0;list-style:none}.drill-list li{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--hairline-soft)}.drill-list li:last-child{border-bottom:0}.drill-list li.is-archived{opacity:.55}.drill-info{flex:1;min-width:0}.drill-info b{display:flex;gap:8px;align-items:center;font-size:14px;font-weight:500;color:var(--ink)}.drill-info em{padding:2px 7px;font-size:10px;font-style:normal;color:var(--steel);background:var(--tint-gray);border-radius:var(--r-full, 9999px)}.drill-info code{display:block;overflow:hidden;font-family:var(--font-mono);font-size:12px;color:var(--slate);text-overflow:ellipsis;white-space:nowrap}.drill-info>span{font-size:11px;color:var(--steel)}.assigned-drills li{display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--hairline-soft)}.assigned-drills li:last-child{border-bottom:0}.assigned-drills div{flex:1;min-width:0}.assigned-drills b{display:block;overflow:hidden;font-size:13px;font-weight:500;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}.assigned-drills span{font-size:11px;color:var(--steel)}.duel-shell{max-width:900px}.duel-lobby{display:flex;flex-direction:column;gap:14px}.duel-card{display:flex;flex-direction:column;gap:12px;padding:20px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-xl);box-shadow:var(--sh-1)}.duel-card h2{display:flex;align-items:center;gap:7px;margin:0;font-size:15px}.duel-card select{width:100%;padding:9px 10px;font:inherit;font-size:14px;color:var(--ink);background:var(--surface-soft);border:1px solid var(--hairline);border-radius:var(--r-md)}.duel-card .btn{align-self:flex-start}.duel-or{margin:0;color:var(--stone);font-size:12px;text-align:center;text-transform:uppercase;letter-spacing:.08em}.duel-join{display:flex;gap:10px;align-items:stretch}.duel-code-input{flex:1;min-width:0;padding:9px 12px;font-family:var(--font-mono);font-size:18px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);background:var(--surface-soft);border:1px solid var(--hairline);border-radius:var(--r-md)}.duel-code-input:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.duel-room{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:26px 24px;background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-xl);box-shadow:var(--sh-1)}.duel-room-label{margin:0;color:var(--steel);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.duel-code{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.duel-code strong{font-family:var(--font-mono);font-size:clamp(30px,7vw,46px);letter-spacing:.16em;line-height:1.1;color:var(--primary)}.duel-waiting{display:flex;align-items:center;gap:9px;margin:0;color:var(--slate);font-size:14px}.duel-dots{display:inline-flex;gap:4px}.duel-dots i{width:6px;height:6px;background:var(--primary);border-radius:50%;animation:duel-dot 1.2s ease-in-out infinite}.duel-dots i:nth-child(2){animation-delay:.16s}.duel-dots i:nth-child(3){animation-delay:.32s}@keyframes duel-dot{0%,70%,to{opacity:.25;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}.duel-race{display:flex;flex-direction:column;gap:12px}.duel-race.is-shaking{animation:trainerShake .22s ease}.duel-tracks{display:flex;flex-direction:column;gap:10px}.duel-track-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:5px;font-size:13px}.duel-track-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duel-track-head span{flex-shrink:0;color:var(--steel);font-size:12px;font-variant-numeric:tabular-nums}.duel-rank{margin-left:6px;padding:1px 6px;font-style:normal;font-weight:600;color:var(--on-primary);background:var(--primary);border-radius:9999px}.duel-bar{height:10px;overflow:hidden;background:var(--hairline-soft);border-radius:9999px}.duel-bar i{display:block;height:100%;border-radius:9999px;transition:width .22s ease}.duel-track.is-me .duel-bar i{background:var(--primary)}.duel-track.is-rival .duel-bar i,.duel-track.is-rival .duel-rank{background:var(--brand-orange)}.duel-fair{display:flex;align-items:center;gap:6px;margin:0;color:var(--stone);font-size:12px}.duel-fair.is-warning{color:var(--brand-orange)}.duel-countdown{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#0a1530e0;border-radius:var(--r-xl)}.duel-countdown strong{font-family:var(--font-mono);font-size:clamp(48px,12vw,88px);line-height:1;color:var(--on-dark)}.duel-countdown span{color:var(--on-dark-muted);font-size:13px;letter-spacing:.14em;text-transform:uppercase}.duel-lesson-hint{margin:0;color:var(--stone);font-size:12px;text-align:center}.duel-result{display:flex;flex-direction:column;gap:10px;align-items:flex-start;margin-top:16px;padding:20px;background:var(--tint-lavender);border-radius:var(--r-xl)}.duel-result h2{display:flex;align-items:center;gap:7px;margin:0;font-size:15px}.duel-verdict{margin:0;font-size:22px;font-weight:600;color:var(--slate)}.duel-verdict.is-win{color:var(--primary)}@media(max-width:559px){.duel-join{flex-direction:column}.duel-join .btn{width:100%}}.arena-try{display:inline-flex;align-items:center;gap:4px;margin-top:10px;color:var(--link-blue);font-size:13px;font-weight:500;text-decoration:none}.arena-try:hover{text-decoration:underline}.today-card.is-duel{text-decoration:none;color:inherit}.pc.is-ghost{border-radius:3px;box-shadow:inset 0 0 0 1.5px #d6b6f6bf}.practice-progress-wrap{position:relative;margin-bottom:18px}.practice-progress-wrap .practice-progress{margin-bottom:0}.practice-ghost-mark{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;background:var(--brand-purple-300);border-radius:9999px}.ghost-status{display:flex;align-items:center;gap:6px;margin:-12px 0 16px;color:var(--stone);font-size:12px}.ghost-toggle{display:inline-flex;align-items:center;gap:4px;align-self:flex-end;margin-top:2px;padding:2px 8px;color:var(--steel);font-size:11px;background:transparent;border:1px solid var(--hairline);border-radius:9999px;cursor:pointer}.ghost-toggle.is-on{color:var(--primary);border-color:var(--brand-purple-300);background:var(--tint-lavender)}.result-record{display:flex;align-items:center;gap:6px;margin:0;padding:6px 12px;color:var(--primary);font-size:13px;font-weight:500;background:var(--tint-lavender);border-radius:9999px}.vk[data-skin=graphite]{--vk-press-brightness: 1.35}.feel-group+.feel-group{margin-top:14px}.feel-group>span{display:block;margin-bottom:7px;color:var(--steel);font-size:12px}.feel-options{display:flex;flex-wrap:wrap;gap:6px}.feel-option{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;color:var(--slate);font-size:12px;background:var(--canvas);border:1px solid var(--hairline);border-radius:9999px;cursor:pointer}.feel-option:hover{border-color:var(--hairline-strong)}.feel-option.is-on{color:var(--primary);background:var(--tint-lavender);border-color:var(--brand-purple-300)}.feel-swatch{display:inline-flex;overflow:hidden;border:1px solid var(--vk-edge, rgba(55, 53, 47, .16));border-radius:3px}.feel-swatch i{width:7px;height:12px}.sound-toggle{display:inline-flex;align-items:center;gap:4px;align-self:flex-end;margin-top:2px;padding:2px 8px;color:var(--steel);font-size:11px;background:transparent;border:1px solid var(--hairline);border-radius:9999px;cursor:pointer}.sound-toggle.is-on{color:var(--primary);border-color:var(--brand-purple-300);background:var(--tint-lavender)}.class-report th.is-cumulative,.class-report td.is-cumulative{color:var(--steel)}.class-report th.is-cumulative-start,.class-report td.is-cumulative-start{border-left:1px solid var(--hairline)}.weak-chapters{margin-top:20px;padding-top:16px;border-top:1px solid var(--hairline-soft)}.weak-chapters h3{display:flex;align-items:center;gap:6px;margin:0 0 4px;font-size:14px}.weak-chapters ul{display:flex;flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none}.weak-chapters li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;background:var(--surface-soft);border-radius:var(--r-md)}.weak-chapter-who{display:flex;flex-direction:column;gap:1px;min-width:0}.weak-chapter-who b{font-size:14px;font-weight:500}.weak-chapter-who span{color:var(--stone);font-size:12px}.weak-chapter-score{display:flex;align-items:baseline;gap:6px;flex-shrink:0;color:var(--brand-orange);font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.weak-chapter-score i{color:var(--stone);font-size:12px;font-style:normal;font-weight:400}.weak-chapter-score i:before{content:"/ "}.join-privacy{margin:10px 0 12px;padding:10px 12px;background:var(--surface-soft);border:1px solid var(--hairline-soft);border-radius:var(--r-md)}.join-privacy>b{display:flex;align-items:center;gap:5px;color:var(--slate);font-size:12px;font-weight:600}.join-privacy ul{display:flex;flex-direction:column;gap:4px;margin:7px 0 0;padding:0;list-style:none}.join-privacy li{display:flex;align-items:flex-start;gap:6px;color:var(--slate);font-size:12px;line-height:1.5}.join-privacy li svg{flex-shrink:0;margin-top:3px}.join-privacy li .is-yes{color:var(--brand-green)}.join-privacy li.is-hidden-row{color:var(--stone)}.join-privacy>i{display:block;margin-top:8px;color:var(--stone);font-size:11px;font-style:normal}.class-list li>div{flex:1;min-width:0}.class-leave{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;align-self:center;padding:3px 8px;color:var(--steel);font-size:11px;background:transparent;border:1px solid var(--hairline);border-radius:9999px;cursor:pointer}.class-leave:hover{color:var(--error);border-color:var(--error)}.report-app{margin-top:18px;padding-top:16px;border-top:1px solid var(--hairline-soft)}.report-app h4{margin:0 0 6px;font-size:14px}.report-app .report-stats{margin-top:10px}.report-app .report-stats{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));margin-bottom:0}.report-app .report-stats li.is-cumulative{background:transparent;border:1px dashed var(--hairline-strong)}.report-app .report-stats li.is-cumulative b{color:var(--steel)}.student-link{padding:0;color:var(--link-blue);font:inherit;background:none;border:0;cursor:pointer}.student-link:hover{text-decoration:underline}
