/* =====================================================================
   FastTypingTest - design system
   Themes via [data-theme]; everything below uses CSS variables.
   ===================================================================== */
@font-face{font-family:"Inter";src:url(/assets/fonts/inter-var.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/assets/fonts/jetbrains-mono-var.woff2) format("woff2");font-weight:100 800;font-display:swap}
@font-face{font-family:"Noto Sans Devanagari";src:url(/assets/fonts/noto-devanagari-var.woff2) format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0900-097F,U+1CD0-1CFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839,U+A8E0-A8FF}

:root{
  --bg:#0b0d17;--bg2:#0f1220;--surface:#141729;--surface2:#1b1f37;--border:#272c4a;
  --text:#e9ebf8;--muted:#8f96bd;--faint:#5b6290;
  --primary:#8b5cf6;--primary2:#6d3df0;--accent:#22d3ee;--ok:#34d399;--bad:#fb7185;--warn:#fbbf24;
  --grad:linear-gradient(135deg,#8b5cf6 0%,#22d3ee 100%);
  --grad-soft:linear-gradient(135deg,rgba(139,92,246,.18),rgba(34,211,238,.14));
  --shadow:0 10px 40px -12px rgba(0,0,0,.6);
  --radius:16px;--radius-sm:10px;
  --f0:#f472b6;--f1:#fb923c;--f2:#facc15;--f3:#4ade80;--f4:#22d3ee;--f5:#60a5fa;--f6:#a78bfa;--f7:#f87171;
  --type-scale:1;
  --font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans Devanagari","Nirmala UI",sans-serif;
  --mono:"JetBrains Mono","Noto Sans Devanagari","Nirmala UI",ui-monospace,SFMono-Regular,Consolas,monospace;
  --hindi:"Noto Sans Devanagari","Nirmala UI","Mangal",sans-serif;
  color-scheme:dark;
}
[data-theme=light]{--bg:#f5f6fb;--bg2:#eceef8;--surface:#fff;--surface2:#f0f2fa;--border:#dfe2f0;--text:#171a30;--muted:#5d6488;--faint:#9aa1c4;--primary:#6d4aff;--primary2:#5a37f0;--accent:#0891b2;--ok:#059669;--bad:#e11d48;--warn:#d97706;--grad:linear-gradient(135deg,#6d4aff,#0ea5e9);--shadow:0 10px 30px -14px rgba(40,50,120,.28);color-scheme:light}
[data-theme=ocean]{--bg:#06141f;--bg2:#081b2a;--surface:#0b2233;--surface2:#10304a;--border:#17415f;--text:#e3f4fb;--muted:#7fb0c9;--faint:#4b7d97;--primary:#22d3ee;--primary2:#06b6d4;--accent:#60a5fa;--grad:linear-gradient(135deg,#22d3ee,#3b82f6)}
[data-theme=sunset]{--bg:#1c1018;--bg2:#241421;--surface:#2b1826;--surface2:#37203a;--border:#4a2c4a;--text:#fbeaf0;--muted:#c79aae;--faint:#8a5f78;--primary:#fb923c;--primary2:#f97316;--accent:#f472b6;--grad:linear-gradient(135deg,#fb923c,#f43f5e)}
[data-theme=matrix]{--bg:#050a06;--bg2:#08110a;--surface:#0b160d;--surface2:#10200f;--border:#1b3a1d;--text:#d8f9de;--muted:#6fb27c;--faint:#3d7a49;--primary:#4ade80;--primary2:#22c55e;--accent:#a3e635;--grad:linear-gradient(135deg,#4ade80,#a3e635)}
[data-theme=paper]{--bg:#f4efe4;--bg2:#ebe4d3;--surface:#fbf8f0;--surface2:#f0e9d8;--border:#dccfb4;--text:#2b2418;--muted:#7a6a4d;--faint:#ad9d7d;--primary:#b45309;--primary2:#92400e;--accent:#0f766e;--ok:#15803d;--bad:#b91c1c;--grad:linear-gradient(135deg,#b45309,#0f766e);--shadow:0 10px 30px -14px rgba(90,60,10,.25);color-scheme:light}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
html.reduce-motion *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--font);min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}
main{flex:1}
img,svg,canvas{max-width:100%}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{line-height:1.2;margin:0 0 .5em;letter-spacing:-.02em}
h1{font-size:clamp(2.1rem,5vw,3.6rem);font-weight:800}
h2{font-size:clamp(1.5rem,3vw,2.2rem);font-weight:800}
h3{font-size:1.2rem;font-weight:700}
p{margin:0 0 1em}
.muted{color:var(--muted)}
.wrap{width:min(1180px,100% - 32px);margin-inline:auto}
.narrow{width:min(820px,100% - 32px);margin-inline:auto}
.skip-link{position:absolute;left:-999px;top:8px;background:var(--primary);color:#fff;padding:8px 14px;border-radius:8px;z-index:200}
.skip-link:focus{left:8px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
::selection{background:color-mix(in srgb,var(--primary) 40%,transparent)}
.gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hindi{font-family:var(--hindi)}
[hidden]{display:none!important}

/* animated background orbs */
.bg-orbs{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.bg-orbs i{position:absolute;width:46vw;height:46vw;border-radius:50%;filter:blur(90px);opacity:.22;background:var(--primary);animation:orb 26s ease-in-out infinite alternate}
.bg-orbs i:nth-child(2){background:var(--accent);right:-12vw;top:30vh;animation-duration:32s;opacity:.16}
.bg-orbs i:nth-child(3){background:#f472b6;left:20vw;bottom:-30vw;animation-duration:38s;opacity:.1}
.bg-orbs i:nth-child(1){left:-14vw;top:-18vw}
@keyframes orb{to{transform:translate(8vw,6vh) scale(1.15)}}
[data-theme=light] .bg-orbs i,[data-theme=paper] .bg-orbs i{opacity:.12}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;backdrop-filter:saturate(1.4) blur(14px);background:color-mix(in srgb,var(--bg) 78%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}
.header-in{display:flex;align-items:center;gap:18px;height:64px}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:700;font-size:1.15rem;letter-spacing:-.03em;text-decoration:none!important;flex-shrink:0}
.brand-mark{width:34px;height:34px;filter:drop-shadow(0 4px 12px rgba(139,92,246,.45))}
.brand-text b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}
.brand-sm .brand-text{font-size:1.1rem}
.main-nav{display:flex;align-items:center;gap:2px;margin-left:12px;flex:1}
.main-nav>a,.more-btn{color:var(--muted);font-weight:600;font-size:.92rem;padding:8px 12px;border-radius:10px;text-decoration:none!important;background:none;border:0;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:5px;transition:.15s}
.main-nav>a:hover,.more-btn:hover{color:var(--text);background:var(--surface2)}
body[data-nav=test] .main-nav a[data-k=test],body[data-nav=lessons] a[data-k=lessons],body[data-nav=practice] a[data-k=practice],body[data-nav=games] a[data-k=games],body[data-nav=daily] a[data-k=daily],body[data-nav=leaderboard] a[data-k=leaderboard]{color:var(--text);background:var(--surface2);box-shadow:inset 0 -2px 0 var(--primary)}
.more{position:relative}
.more-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:240px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:8px;box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(-6px);transition:.16s}
.more.open .more-menu{opacity:1;visibility:visible;transform:none}
.more-menu a{display:block;padding:9px 12px;border-radius:9px;color:var(--text);font-weight:500;font-size:.93rem;text-decoration:none!important}
.more-menu a:hover{background:var(--surface2)}
.header-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.icon-btn{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);display:grid;place-items:center;cursor:pointer;transition:.15s}
.icon-btn:hover{background:var(--surface2);transform:translateY(-1px)}
.nav-toggle{display:none}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-weight:700;font-size:.85rem;background:var(--surface);border:1px solid var(--border);color:var(--text)!important;text-decoration:none!important}
.chip-streak .flame{display:inline-block;animation:flicker 1.6s ease-in-out infinite;transform-origin:50% 90%}
@keyframes flicker{0%,100%{transform:scale(1) rotate(-2deg)}50%{transform:scale(1.18) rotate(3deg)}}
.chip-level{background:var(--grad-soft)}

/* ---------- buttons / forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border-radius:12px;font:700 .98rem var(--font);border:1px solid transparent;cursor:pointer;text-decoration:none!important;transition:transform .15s,box-shadow .2s,background .2s;color:#fff;background:var(--grad);box-shadow:0 8px 24px -8px color-mix(in srgb,var(--primary) 70%,transparent)}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px -10px color-mix(in srgb,var(--primary) 80%,transparent)}
.btn:active{transform:translateY(0) scale(.98)}
.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:none}
.btn-ghost:hover{background:var(--surface2);box-shadow:none}
.btn-sm{padding:8px 14px;font-size:.88rem;border-radius:10px}
.btn-lg{padding:15px 30px;font-size:1.08rem;border-radius:14px}
.btn[disabled]{opacity:.45;pointer-events:none}
select,input[type=text],input[type=email],input[type=password],input[type=tel],input[type=url],input[type=number],input[type=search],textarea{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font:500 .95rem var(--font);width:100%}
select:focus,input:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--primary) 60%,transparent);border-color:transparent}
.field{margin-bottom:14px}
.field label{display:block;font-size:.8rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
input[type=range]{width:100%;accent-color:var(--primary)}
.switch{display:flex;align-items:center;gap:12px;padding:9px 0;cursor:pointer;font-weight:500}
.switch input{position:absolute;opacity:0}
.switch span{width:42px;height:24px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);position:relative;transition:.2s;flex-shrink:0}
.switch span::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--muted);transition:.2s}
.switch input:checked+span{background:var(--primary);border-color:transparent}
.switch input:checked+span::after{left:20px;background:#fff}
.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}

/* segmented control */
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:3px;gap:2px;flex-wrap:wrap}
.toolbar>*{min-width:0;max-width:100%}
.seg{max-width:100%}
.seg button{border:0;background:none;color:var(--muted);font:600 .86rem var(--font);padding:7px 13px;border-radius:9px;cursor:pointer;transition:.15s;white-space:nowrap}
.seg button:hover{color:var(--text)}
.seg button.on{background:var(--grad);color:#fff;box-shadow:0 4px 14px -4px color-mix(in srgb,var(--primary) 70%,transparent)}

/* ---------- cards / layout ---------- */
.section{padding:72px 0}
.section-sm{padding:36px 0}
.section-title{text-align:center;margin-bottom:40px}
.section-title p{color:var(--muted);max-width:640px;margin:8px auto 0}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.card-soft{background:var(--grad-soft);border:1px solid var(--border);border-radius:var(--radius);padding:24px}
.grid{display:grid;gap:18px}
.grid>*{min-width:0}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.feature{transition:transform .25s,border-color .25s,box-shadow .25s;position:relative;overflow:hidden}
.feature:hover{transform:translateY(-5px);border-color:color-mix(in srgb,var(--primary) 60%,var(--border))}
.feature .ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:1.4rem;background:var(--grad-soft);margin-bottom:14px}
.feature h3{margin-bottom:6px}
.feature p{color:var(--muted);margin:0;font-size:.95rem}
.page-head{padding:44px 0 18px}
.page-head h1{font-size:clamp(1.8rem,4vw,2.8rem);margin-bottom:8px}
.page-head p{color:var(--muted);max-width:720px;font-size:1.05rem}
.eyebrow{display:inline-block;font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.pill{display:inline-block;padding:3px 10px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);font-size:.75rem;font-weight:700;color:var(--muted)}
.pill-ok{color:var(--ok)}.pill-bad{color:var(--bad)}

/* ---------- hero ---------- */
.hero{padding:56px 0 30px;text-align:center;position:relative}
.hero h1{max-width:900px;margin:0 auto 16px}
.hero .lead{font-size:clamp(1.05rem,2vw,1.3rem);color:var(--muted);max-width:720px;margin:0 auto 26px}
.hero-badges{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:22px}
.hero-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px}
.stat-band{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:40px}
.stat-band .s{padding:18px;text-align:center}
.stat-band b{display:block;font-size:2rem;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.stat-band span{color:var(--muted);font-size:.88rem}

/* ---------- typing arena ---------- */
.arena{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:22px 26px 26px;box-shadow:var(--shadow);overflow:hidden}
.arena::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad);opacity:.9}
.arena-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.live{display:flex;gap:26px;align-items:flex-end}
.live .m{display:flex;flex-direction:column;line-height:1}
.live .m b{font-size:2.15rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.live .m small{font-size:.7rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:5px}
.live .m.timer b{color:var(--accent)}
.progress{height:5px;background:var(--surface2);border-radius:9px;overflow:hidden;margin-bottom:16px}
.progress>i{display:block;height:100%;width:0;background:var(--grad);border-radius:9px;transition:width .25s linear}
.tt-box{position:relative;cursor:text}
.tt-viewport{position:relative;overflow:hidden;height:calc(var(--lines,3) * var(--lh,3.4rem))}
.tt-text{position:relative;font:500 calc(1.75rem * var(--type-scale))/1.95 var(--mono);color:var(--faint);letter-spacing:.01em;transition:transform .18s ease;user-select:none;-webkit-user-select:none;word-break:keep-all;white-space:pre-wrap;overflow-wrap:normal;--lh:calc(1.75rem * var(--type-scale) * 1.95)}
.tt-box{--lh:calc(1.75rem * var(--type-scale) * 1.95)}
.tt-text.hi{font-family:var(--hindi);font-size:calc(1.9rem * var(--type-scale));line-height:2.05;font-weight:500}
.tt-box.hi{--lh:calc(1.9rem * var(--type-scale) * 2.05)}
.tt-text .c{position:relative;transition:color .08s}
.tt-text .c.ok{color:var(--text)}
.tt-text .c.bad{color:var(--bad);background:color-mix(in srgb,var(--bad) 18%,transparent);border-radius:4px;text-decoration:underline wavy color-mix(in srgb,var(--bad) 60%,transparent) 1px;text-underline-offset:4px}
.tt-text .c.bad.sp{background:color-mix(in srgb,var(--bad) 40%,transparent)}
.tt-text.blind .c.ok,.tt-text.blind .c.bad{color:var(--text);background:none;text-decoration:none}
.tt-text .c.pop{animation:keypop .16s ease}
@keyframes keypop{0%{transform:translateY(0)}40%{transform:translateY(-3px)}100%{transform:none}}
.tt-caret{position:absolute;left:0;top:0;width:3px;height:1.5em;margin-top:-.75em;background:var(--accent);border-radius:3px;box-shadow:0 0 14px var(--accent);pointer-events:none;will-change:transform;animation:blink 1.05s steps(1) infinite}
.tt-caret.run{animation:none}
.tt-caret.smooth{transition:transform .095s cubic-bezier(.3,.7,.4,1)}
.tt-caret.block{background:color-mix(in srgb,var(--accent) 45%,transparent);border-radius:4px;box-shadow:none}
.tt-caret.underline{height:3px;margin-top:.7em;box-shadow:none}
.tt-caret.box{background:none;border:2px solid var(--accent);border-radius:5px;box-shadow:0 0 12px color-mix(in srgb,var(--accent) 50%,transparent)}
.tt-caret.ghost{background:color-mix(in srgb,var(--warn) 85%,transparent);box-shadow:0 0 12px var(--warn);animation:none;opacity:.8;width:2px}
.tt-caret.pace{background:color-mix(in srgb,var(--ok) 85%,transparent);box-shadow:0 0 12px var(--ok);animation:none;opacity:.8;width:2px}
@keyframes blink{0%,49%{opacity:1}50%,100%{opacity:.15}}
.tt-input{position:absolute;opacity:0;pointer-events:none;left:0;top:0;width:1px;height:1px;resize:none;border:0;padding:0}
.tt-hint{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--surface) 72%,transparent);backdrop-filter:blur(5px);border-radius:12px;font-weight:700;color:var(--text);cursor:pointer;transition:.2s;z-index:3;text-align:center;padding:10px}
.tt-hint.hide{opacity:0;pointer-events:none}
.tt-hint span{display:inline-flex;align-items:center;gap:10px;background:var(--surface2);border:1px solid var(--border);padding:10px 18px;border-radius:12px}
.arena.shake{animation:shake .25s}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.arena-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap;color:var(--muted);font-size:.86rem}
kbd{background:var(--surface2);border:1px solid var(--border);border-bottom-width:3px;border-radius:7px;padding:1px 7px;font:600 .8rem var(--mono);color:var(--text)}
.toolbar{display:flex;gap:10px 14px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.toolbar .sep{width:1px;height:26px;background:var(--border)}
.toolbar .lbl{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.opt-row{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:.9rem}
.opt-row label{display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.opt-row input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px}
.opt-row input[type=number]{width:74px;padding:5px 8px}

/* ---------- on-screen keyboard ---------- */
.kb{--ku:clamp(26px,3.7vw,46px);display:flex;flex-direction:column;gap:5px;align-items:center;margin:18px auto 0;user-select:none;transition:opacity .3s}
.kb-row{display:flex;gap:5px}
.key{position:relative;height:var(--ku);min-width:var(--ku);width:calc(var(--ku) * var(--w,1) + (var(--w,1) - 1) * 5px);border-radius:9px;background:var(--surface2);border:1px solid var(--border);border-bottom-width:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:600 calc(var(--ku) * .33)/1 var(--mono);color:var(--muted);transition:background .12s,transform .08s,box-shadow .12s,color .12s;overflow:hidden}
.key small{font-size:.62em;opacity:.65;font-weight:500;margin-top:2px}
.key.f0{--fc:var(--f0)}.key.f1{--fc:var(--f1)}.key.f2{--fc:var(--f2)}.key.f3{--fc:var(--f3)}.key.f4{--fc:var(--f4)}.key.f5{--fc:var(--f5)}.key.f6{--fc:var(--f6)}.key.f7{--fc:var(--f7)}.key.f8{--fc:var(--faint)}
.kb.fingers .key{border-bottom-color:color-mix(in srgb,var(--fc) 70%,var(--border));background:color-mix(in srgb,var(--fc) 9%,var(--surface2))}
.key.home::after{content:"";position:absolute;bottom:4px;width:10px;height:2px;border-radius:2px;background:currentColor;opacity:.7}
.key.next{background:var(--fc,var(--primary))!important;color:#06070d;border-color:transparent;transform:translateY(-2px);box-shadow:0 0 0 3px color-mix(in srgb,var(--fc,var(--primary)) 35%,transparent),0 8px 20px -6px var(--fc,var(--primary));animation:nextpulse 1s ease-in-out infinite}
@keyframes nextpulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--fc,var(--primary)) 18%,transparent),0 8px 20px -6px var(--fc,var(--primary))}}
.key.down{transform:translateY(2px);background:var(--accent)!important;color:#06070d}
.key.ripple::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle,var(--accent),transparent 70%);animation:ripple .5s ease-out forwards}
@keyframes ripple{from{opacity:.9;transform:scale(.3)}to{opacity:0;transform:scale(1.8)}}
.key.wrong{background:var(--bad)!important;color:#fff}
.key.tested{background:color-mix(in srgb,var(--ok) 40%,var(--surface2));color:var(--text)}
.key.heat{background:color-mix(in srgb,var(--bad) calc(var(--h,0) * 1%),var(--surface2));color:var(--text)}
.kb-legend{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:12px;font-size:.75rem;color:var(--muted)}
.kb-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.hands{display:none}

/* ---------- results ---------- */
.results{animation:fadeUp .5s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.res-top{display:grid;grid-template-columns:minmax(200px,260px) 1fr;gap:22px;align-items:stretch}
.res-main{display:flex;flex-direction:column;gap:14px}
.big-stat{background:var(--grad-soft);border:1px solid var(--border);border-radius:16px;padding:16px 18px;text-align:center;position:relative;overflow:hidden}
.big-stat .lab{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.big-stat .val{font-size:clamp(3rem,7vw,4.6rem);font-weight:800;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.big-stat .sub{font-size:.85rem;color:var(--muted)}
.big-stat.pb::after{content:"NEW BEST";position:absolute;top:10px;right:-30px;transform:rotate(35deg);background:var(--warn);color:#1a1200;font-size:.62rem;font-weight:900;padding:2px 34px;letter-spacing:.1em}
.res-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.mini{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:12px 14px}
.mini .lab{font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.mini .val{font-size:1.45rem;font-weight:800;font-variant-numeric:tabular-nums}
.mini .val small{font-size:.7em;color:var(--muted);font-weight:600}
.chart-box{background:var(--surface2);border:1px solid var(--border);border-radius:14px;padding:12px;margin-top:16px}
.chart-box canvas{width:100%;height:220px;display:block}
.chart-legend{display:flex;gap:16px;font-size:.78rem;color:var(--muted);padding:0 4px 6px}
.chart-legend i{display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.insights{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:16px}
.insight{background:var(--surface2);border:1px solid var(--border);border-radius:14px;padding:16px}
.insight h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px}
.tag-list{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-family:var(--mono);font-weight:700;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:4px 10px;font-size:.92rem}
.tag em{font-style:normal;color:var(--bad);margin-left:6px;font-size:.78rem}
.tag.slow em{color:var(--warn)}
.res-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.verdict{display:inline-flex;align-items:center;gap:8px;font-weight:800;padding:6px 14px;border-radius:99px;font-size:.88rem}
.verdict.pass{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok)}
.verdict.fail{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}
.rank-line{margin:6px 0 0;color:var(--muted);font-size:.95rem}
.rank-line b{color:var(--text)}

/* ---------- lessons ---------- */
.course-tabs{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap;align-items:center}
.stage{margin-bottom:34px}
.stage h3{display:flex;align-items:center;gap:10px}
.lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:12px}
.lesson{position:relative;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px;cursor:pointer;color:var(--text);font-family:inherit;transition:.2s;display:flex;flex-direction:column;gap:6px;min-height:118px}
.lesson:hover:not(.locked){transform:translateY(-4px);border-color:var(--primary);box-shadow:var(--shadow)}
.lesson .n{font-size:.7rem;font-weight:800;color:var(--faint);letter-spacing:.1em}
.lesson .t{font-weight:700;line-height:1.25}
.lesson .keys{margin-top:auto;display:flex;gap:4px;flex-wrap:wrap}
.lesson .keys span{font:700 .78rem var(--mono);background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:1px 6px}
.lesson .stars{position:absolute;top:10px;right:12px;letter-spacing:1px;font-size:.85rem;color:var(--warn)}
.lesson.locked{opacity:.45;cursor:not-allowed}
.lesson.locked::after{content:"🔒";position:absolute;top:10px;right:12px;font-size:.9rem}
.lesson.done{border-color:color-mix(in srgb,var(--ok) 50%,var(--border))}
.lesson.current{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 25%,transparent)}
.lesson-run{display:none}
.lesson-run.on{display:block;animation:fadeUp .35s ease both}
.lesson-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px}
.goal-row{display:flex;gap:10px;flex-wrap:wrap}
.drill-dots{display:flex;gap:6px;margin:0 0 14px}
.drill-dots i{width:34px;height:6px;border-radius:5px;background:var(--surface2);transition:.3s}
.drill-dots i.done{background:var(--ok)}.drill-dots i.cur{background:var(--primary)}
.hand-tip{display:flex;gap:10px;align-items:center;background:var(--grad-soft);border:1px solid var(--border);border-radius:12px;padding:10px 14px;margin-bottom:14px;font-size:.92rem}
.hand-tip b{color:var(--accent)}

/* ---------- games ---------- */
.game-tabs{margin-bottom:18px}
.game-stage{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--border);background:linear-gradient(180deg,var(--bg2),var(--surface));box-shadow:var(--shadow)}
.game-stage canvas{display:block;width:100%;height:auto;aspect-ratio:16/9;background:transparent}
.game-hud{display:flex;gap:18px;flex-wrap:wrap;padding:12px 18px;border-bottom:1px solid var(--border);font-weight:700;align-items:center}
.game-hud span small{color:var(--muted);font-weight:600;margin-right:6px}
.game-overlay{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(6px);text-align:center;padding:20px;z-index:4}
.game-overlay .box{max-width:460px}
.game-overlay h2{margin-bottom:8px}
.race-track{padding:18px;display:flex;flex-direction:column;gap:10px}
.lane{position:relative;height:46px;border-radius:12px;background:repeating-linear-gradient(90deg,var(--surface2) 0 38px,color-mix(in srgb,var(--surface2) 70%,var(--bg)) 38px 76px);border:1px solid var(--border);overflow:hidden}
.lane .car{position:absolute;left:0;top:50%;transform:translate(0,-50%);font-size:1.7rem;transition:left .2s linear;filter:drop-shadow(0 4px 6px rgba(0,0,0,.4));will-change:left}
.lane .nm{position:absolute;right:36px;top:50%;transform:translateY(-50%);font-size:.74rem;font-weight:800;color:var(--muted);background:var(--surface);padding:2px 8px;border-radius:99px}
.lane.me{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 30%,transparent)}
.lane::after{content:"🏁";position:absolute;right:8px;top:50%;transform:translateY(-50%);opacity:.7}

/* ---------- tables / lists ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
table.tbl{width:100%;border-collapse:collapse;font-size:.94rem;min-width:520px}
.tbl th{text-align:left;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface2);white-space:nowrap}
.tbl td{padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:color-mix(in srgb,var(--surface2) 60%,transparent)}
.tbl .num{font-variant-numeric:tabular-nums;font-weight:700}
.rank{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface2);font-weight:800;font-size:.85rem}
.rank.r1{background:#fbbf24;color:#2a1c00}.rank.r2{background:#cbd5e1;color:#1d2433}.rank.r3{background:#f59e0b;color:#2a1500;opacity:.9}
.empty{padding:36px;text-align:center;color:var(--muted)}

/* dashboard */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.kpi{padding:18px}
.kpi .lab{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.kpi .val{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums}
.kpi .sub{font-size:.8rem;color:var(--muted)}
.cal{display:grid;grid-template-rows:repeat(7,14px);grid-auto-flow:column;grid-auto-columns:14px;gap:4px;overflow-x:auto;padding-bottom:6px}
.cal i{border-radius:3px;background:var(--surface2)}
.cal i[data-l="1"]{background:color-mix(in srgb,var(--primary) 30%,var(--surface2))}
.cal i[data-l="2"]{background:color-mix(in srgb,var(--primary) 55%,var(--surface2))}
.cal i[data-l="3"]{background:color-mix(in srgb,var(--primary) 80%,var(--surface2))}
.cal i[data-l="4"]{background:var(--accent)}
.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.badge{padding:14px;text-align:center;border-radius:14px;background:var(--surface);border:1px solid var(--border);transition:.2s}
.badge .e{font-size:2rem;display:block;filter:grayscale(1) opacity(.35);transition:.3s}
.badge b{display:block;font-size:.88rem}.badge small{color:var(--muted);font-size:.74rem}
.badge.got{border-color:color-mix(in srgb,var(--warn) 50%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--warn) 9%,var(--surface)),var(--surface))}
.badge.got .e{filter:none;animation:pop .6s ease}
@keyframes pop{0%{transform:scale(.3)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
.xpbar{height:10px;background:var(--surface2);border-radius:99px;overflow:hidden}
.xpbar i{display:block;height:100%;background:var(--grad);border-radius:99px;transition:width .8s cubic-bezier(.2,.8,.2,1)}

/* certificate */
.cert-wrap{background:var(--surface2);border:1px solid var(--border);border-radius:16px;padding:14px}
.cert-wrap canvas{width:100%;height:auto;display:block;border-radius:8px;box-shadow:0 20px 50px -20px rgba(0,0,0,.6)}

/* drawer / toasts */
.drawer-backdrop{position:fixed;inset:0;background:rgba(3,4,10,.55);backdrop-filter:blur(3px);z-index:90;animation:fade .2s}
@keyframes fade{from{opacity:0}}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(380px,92vw);background:var(--surface);border-left:1px solid var(--border);z-index:100;transform:translateX(105%);transition:transform .3s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;box-shadow:var(--shadow)}
.drawer.open{transform:none}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}
.drawer-head h3{margin:0}
.drawer-body{padding:18px 20px;overflow-y:auto}
.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.theme-grid button{background:var(--surface2);border:2px solid transparent;border-radius:12px;padding:8px 4px;color:var(--text);font:600 .75rem var(--font);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px}
.theme-grid button i{width:100%;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--a) 55%,var(--b) 55%);border:1px solid var(--border)}
.theme-grid button.on{border-color:var(--primary)}
.toast-host{position:fixed;right:16px;bottom:16px;z-index:120;display:flex;flex-direction:column;gap:10px;align-items:flex-end;pointer-events:none}
.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:12px;padding:12px 16px;box-shadow:var(--shadow);display:flex;gap:12px;align-items:center;max-width:340px;animation:toastin .4s cubic-bezier(.2,.9,.3,1.3) both}
.toast.out{animation:toastout .3s ease forwards}
.toast .e{font-size:1.6rem}
.toast b{display:block}.toast small{color:var(--muted)}
@keyframes toastin{from{opacity:0;transform:translateX(40px) scale(.9)}}
@keyframes toastout{to{opacity:0;transform:translateX(40px)}}
canvas.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:130}

/* faq / prose */
.faq-item{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin-bottom:10px;overflow:hidden}
.faq-item summary{cursor:pointer;padding:16px 20px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq-item summary::after{content:"+";font-size:1.4rem;line-height:1;color:var(--accent);transition:.2s}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item>div{padding:0 20px 18px;color:var(--muted)}
.prose{font-size:1.05rem;line-height:1.8}
.prose h2{margin-top:2em;font-size:1.6rem}
.prose h3{margin-top:1.6em}
.prose ul,.prose ol{padding-left:1.3em}
.prose li{margin-bottom:.4em}
.prose blockquote{margin:1.4em 0;padding:14px 20px;border-left:4px solid var(--primary);background:var(--surface);border-radius:0 12px 12px 0;color:var(--muted)}
.prose table{border-collapse:collapse;width:100%;margin:1.2em 0}
.prose th,.prose td{border:1px solid var(--border);padding:8px 12px;text-align:left}
.prose th{background:var(--surface2)}
.article-card{display:block;color:var(--text)!important;text-decoration:none!important;transition:.25s}
.article-card:hover{transform:translateY(-4px);border-color:var(--primary)}
.article-card p{color:var(--muted);margin:6px 0 0;font-size:.93rem}
.crumbs{font-size:.85rem;color:var(--muted);margin-bottom:10px}

/* exam pills */
.preset-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.preset{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 14px;color:var(--text);cursor:pointer;font:600 .88rem var(--font);text-align:left;transition:.15s}
.preset small{display:block;color:var(--muted);font-weight:500}
.preset:hover{border-color:var(--primary)}
.preset.on{border-color:var(--primary);background:var(--grad-soft)}
.notice{background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 35%,var(--border));border-radius:12px;padding:12px 16px;font-size:.9rem;color:var(--text)}
.notice.info{background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,var(--border))}

/* footer */
.site-footer{border-top:1px solid var(--border);background:color-mix(in srgb,var(--bg2) 70%,transparent);margin-top:60px;padding-top:44px}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:30px}
.footer-grid h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:12px}
.footer-grid a:not(.brand){display:block;color:var(--text);opacity:.85;padding:3px 0;font-size:.93rem}
.footer-bottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:26px 0;margin-top:26px;border-top:1px solid var(--border);font-size:.85rem}

/* kbd test */
.kbt{--ku:clamp(22px,3.1vw,44px)}
.kbt-stats{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin:18px 0}

/* ---------- finger guide overlay (SVG hands) ---------- */
.kb{position:relative}
.kb-hands{position:absolute;inset:0;pointer-events:none;z-index:6}
.hands-svg{position:absolute;left:0;top:0;overflow:visible;filter:drop-shadow(0 10px 14px rgba(60,30,20,.28)) drop-shadow(0 2px 3px rgba(60,30,20,.25))}
.tipdot-ring{transform-box:fill-box;transform-origin:center;animation:dotpulse 1.2s ease-out infinite}
@keyframes dotpulse{0%{transform:scale(.55);opacity:.6}100%{transform:scale(1.7);opacity:0}}
.hands-in .hands-g{animation:handsIn 1.05s cubic-bezier(.2,.9,.25,1) both}
.hands-fade .hands-g{animation:fadein .3s both}
@keyframes handsIn{from{transform:translateY(190px);opacity:0}to{transform:none;opacity:1}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.flabel{position:absolute;transform:translate(-50%,-100%);font:700 calc(var(--ku) * .27)/1 var(--font);color:var(--text);background:var(--surface);border:2px solid var(--c,var(--border));border-radius:99px;padding:4px 9px;white-space:nowrap;box-shadow:0 6px 14px -6px rgba(0,0,0,.6);animation:fadein .4s both}
.flabel.thumb,.flabel.bump{transform:translate(-50%,0)}
.flabel.bump{background:none;border:0;box-shadow:none;color:var(--warn);font-size:calc(var(--ku) * .22);padding:0}
.hand-caption{position:absolute;left:50%;transform:translateX(-50%);width:min(660px,96%);background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px 16px;font-size:.92rem;box-shadow:var(--shadow);pointer-events:auto;text-align:center;animation:fadein .5s 1.6s both}
.hand-caption kbd{margin:0 1px}
.hand-caption .btn{margin-left:8px}
.finger-tip{--fc:var(--primary);position:absolute;transform:translate(-50%,-100%);background:var(--surface);border:2px solid var(--fc);border-radius:12px;padding:6px 12px;font-size:.85rem;white-space:nowrap;box-shadow:0 10px 24px -8px rgba(0,0,0,.6);animation:fadein .25s both;z-index:3}
.finger-tip::after{content:"";position:absolute;left:50%;bottom:-7px;width:12px;height:12px;background:var(--surface);border-right:2px solid var(--fc);border-bottom:2px solid var(--fc);transform:translateX(-50%) rotate(45deg)}
.finger-tip kbd{font-size:.85rem}
.finger-tip.f0{--fc:var(--f0)}.finger-tip.f1{--fc:var(--f1)}.finger-tip.f2{--fc:var(--f2)}.finger-tip.f3{--fc:var(--f3)}
.finger-tip.f4{--fc:var(--f4)}.finger-tip.f5{--fc:var(--f5)}.finger-tip.f6{--fc:var(--f6)}.finger-tip.f7{--fc:var(--f7)}.finger-tip.f8{--fc:var(--accent)}
.key.hint-target{outline:3px solid var(--fc,var(--accent));outline-offset:2px;z-index:3}

.hands-panel{width:min(520px,88%);margin:16px auto 0;position:relative}
.hands-panel svg{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 8px 10px rgba(60,30,20,.18))}
.guide-svg{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.guide-line{fill:none;stroke-width:3;stroke-linecap:round}
.guide-line.flow{stroke-dasharray:2 9;animation:dashflow .7s linear infinite}
.guide-line.draw{stroke-dasharray:900;stroke-dashoffset:900;opacity:.85;animation:drawline 1.1s ease forwards}
.guide-end.draw{animation:fadein .4s both}
@keyframes dashflow{to{stroke-dashoffset:-11}}
@keyframes drawline{to{stroke-dashoffset:0}}
.key.home-glow{box-shadow:0 0 0 3px color-mix(in srgb,var(--fc,var(--accent)) 50%,transparent)}

/* ---------- advertising ---------- */
.ad-slot{display:none}
.ad-slot.ad-on{display:block;max-width:970px;margin:38px auto;text-align:center;min-height:110px;clear:both}
.ad-slot.ad-spaced.ad-on{margin-top:64px}
.ad-label{font:700 .66rem var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}
@media print{.ad-slot{display:none!important}}

.done-card{text-align:center;max-width:680px;margin:0 auto;padding:30px 26px}
.done-icon{width:84px;height:84px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;font-size:2.6rem;font-weight:800;color:#fff;animation:pop .6s ease}
.done-icon.ok{background:linear-gradient(135deg,#34d399,#059669);box-shadow:0 12px 30px -8px rgba(5,150,105,.6)}
.done-icon.try{background:linear-gradient(135deg,#fbbf24,#f97316);box-shadow:0 12px 30px -8px rgba(249,115,22,.5)}
.done-name{color:var(--muted);margin:-4px 0 6px}
.done-stars{font-size:1.8rem;color:var(--warn);letter-spacing:4px;margin:0 0 16px}
.done-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 18px}
.done-stats .goal{font-size:.74rem}
.unlock-note{display:flex;gap:12px;align-items:center;text-align:left;justify-content:center;background:color-mix(in srgb,var(--ok) 12%,transparent);border:1px solid color-mix(in srgb,var(--ok) 35%,var(--border));border-radius:14px;padding:12px 16px;margin:0 0 20px}
.unlock-note .ico{font-size:1.8rem}
.done-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:6px}
@media (max-width:640px){.done-stats{grid-template-columns:repeat(2,1fr)}}

/* ---------- blog ---------- */
.blog-head{padding:44px 0 10px}
.post-meta{display:flex;gap:10px 16px;flex-wrap:wrap;color:var(--muted);font-size:.9rem;margin:0 0 20px}
.post-cover{width:100%;max-height:380px;object-fit:cover;border-radius:18px;border:1px solid var(--border);margin:0 0 24px}
.prose img{max-width:100%;border-radius:12px;height:auto}
.prose pre{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:14px;overflow:auto;font:500 .9rem var(--mono)}
.prose code{background:var(--surface2);padding:1px 6px;border-radius:6px;font-family:var(--mono);font-size:.92em}
.prose pre code{background:none;padding:0}
.tag-chip{display:inline-block;padding:2px 10px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);font-size:.78rem;color:var(--muted)}
.pager{display:flex;justify-content:center;gap:10px;margin:30px 0}

/* accounts + certificate tiers */
.auth-card{max-width:480px;margin:0 auto;padding:34px 28px 26px;border-radius:22px}
.auth-title{font-size:clamp(1.8rem,5vw,2.3rem);text-align:center;margin:0 0 8px}
.auth-sub{text-align:center;color:var(--muted);margin:0 0 22px}
.link-btn{background:none;border:0;padding:0;font:inherit;color:var(--primary);font-weight:700;cursor:pointer}
.link-btn:hover{text-decoration:underline}
.link-btn.strong{color:var(--text);font-weight:800;font-size:.9rem}
.auth-foot{text-align:center;margin:18px 0 0}
.social-row{display:grid;gap:10px;justify-items:center}
.g-slot{display:flex;justify-content:center;width:100%}
.social-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:11px 16px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:600 .97rem var(--font);cursor:pointer;transition:.15s}
.social-btn:hover{background:var(--surface2)}
.social-btn[hidden]{display:none}
.or-line{display:flex;align-items:center;gap:14px;color:var(--muted);margin:14px 0 18px;font-size:.92rem}
.or-line::before,.or-line::after{content:"";flex:1;height:1px;background:var(--border)}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:46px}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;background:none;color:var(--muted);cursor:pointer;font-size:1.05rem;border-radius:8px}
.pw-eye:hover{background:var(--surface2);color:var(--text)}
.auth-card .field{margin-bottom:12px}
.auth-card .field label{text-transform:none;letter-spacing:0;font-size:.9rem;color:var(--text);font-weight:600}
.auth-card input{padding:12px 14px;border-radius:10px;font-size:1rem}
.form-err{color:var(--bad);font-weight:600;font-size:.9rem;min-height:1.3em;margin:6px 0}
.recovery{font:800 1.6rem var(--mono);letter-spacing:.08em;text-align:center;padding:16px;border:2px dashed var(--warn);border-radius:14px;background:color-mix(in srgb,var(--warn) 10%,transparent);user-select:all}
.tier-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tier{border:1px solid var(--border);border-radius:16px;padding:16px;background:var(--surface);position:relative;overflow:hidden;text-align:center}
.tier::before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:linear-gradient(90deg,var(--t1),var(--t2))}
.tier .em{font-size:2rem}
.tier b{display:block;font-size:1.05rem}
.tier .req{color:var(--muted);font-size:.85rem}
.tier.got{border-color:var(--t1);box-shadow:0 0 0 3px color-mix(in srgb,var(--t1) 25%,transparent)}
.tier.got::after{content:"✔ achieved";position:absolute;top:12px;right:10px;font-size:.68rem;font-weight:800;color:var(--ok)}
.cert-banner{display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:space-between;margin:16px 0;padding:16px 18px;border-radius:14px;border:1px solid var(--border);background:var(--grad-soft)}
.cert-banner .t{font-weight:800}
.bar{height:8px;border-radius:9px;background:var(--surface2);overflow:hidden}.bar i{display:block;height:100%;background:var(--grad);border-radius:9px}

/* two-column promo */
.split{display:grid;grid-template-columns:1.2fr 1fr;gap:30px;align-items:center}

/* ---------- responsive ---------- */
@media (max-width:440px){.chip-streak{display:none}}
@media (max-width:350px){.brand-text{display:none}}
@media (max-width:1020px){
  .main-nav{position:fixed;inset:64px 0 auto 0;background:var(--surface);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;padding:12px 16px 18px;margin:0;gap:4px;transform:translateY(-130%);transition:transform .3s;max-height:calc(100vh - 64px);overflow:auto;z-index:50}
  .main-nav.open{transform:none}
  .main-nav>a,.more-btn{padding:12px;font-size:1rem}
  .more-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;padding:0 0 0 12px;background:none}
  .more-btn{display:none}
  .nav-toggle{display:grid}
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .footer-grid{grid-template-columns:1fr 1fr}
  .res-top{grid-template-columns:1fr}
  .res-grid{grid-template-columns:repeat(2,1fr)}
  .split{grid-template-columns:1fr}
  .tier-row{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .stat-band{grid-template-columns:repeat(2,1fr)}
  .section{padding:48px 0}
  .arena{padding:16px 14px 18px;border-radius:16px}
  .live{gap:16px}.live .m b{font-size:1.6rem}
  .tt-text{font-size:calc(1.25rem * var(--type-scale))}.tt-box{--lh:calc(1.25rem * var(--type-scale) * 1.95)}
  .tt-text{--lh:calc(1.25rem * var(--type-scale) * 1.95)}
  .footer-grid{grid-template-columns:1fr}
  .chip-level{display:none}
  #authBtn{padding:6px 10px}
  .header-in{gap:10px}
  .header-actions{gap:6px}
  .kb{--ku:clamp(15px,4.5vw,28px)}
  .kb-row{gap:3px}.kb{gap:3px}
  .key{width:calc(var(--ku) * var(--w,1) + (var(--w,1) - 1) * 3px);border-radius:6px}
  .brand-text{font-size:1.02rem}
}
@media print{
  .site-header,.site-footer,.bg-orbs,.no-print,.drawer,.toast-host{display:none!important}
  body{background:#fff}
  .cert-wrap{border:0;padding:0;background:none}
  .cert-wrap canvas{box-shadow:none;width:100%}
  @page{size:A4 landscape;margin:0}
}

/* SEO landing pages: breadcrumbs, related links, site map */
nav.crumbs{padding-top:18px;margin-bottom:0}
.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--text);text-decoration:underline}
.related{display:flex;flex-wrap:wrap;gap:10px}
.chip-link{display:inline-block;padding:9px 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none;font-size:.92rem;font-weight:600;transition:transform .15s,border-color .15s}
.chip-link:hover{transform:translateY(-2px);border-color:var(--accent,#8b5cf6)}
.sitemap-list{list-style:none;padding:0;margin:0 0 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 24px}
.sitemap-list a{text-decoration:none}.sitemap-list a:hover{text-decoration:underline}
.calc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.calc-out{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:16px}
.calc-out .m{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px;text-align:center}
.calc-out .m b{display:block;font-size:1.8rem}.calc-out .m small{color:var(--muted)}
.footer-links{padding:6px 0 18px;font-size:.88rem;color:var(--muted);line-height:2}
.footer-links a{color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--text);text-decoration:underline}
.prose table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.share-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px;padding:12px 14px;border:1px dashed var(--border);border-radius:14px}
.share-bar[hidden]{display:none}
.share-bar .chip-link{cursor:pointer;font-family:inherit}
.next-steps{margin-top:18px}
