/* Theme headings use the selected hue with readable light/dark contrast. */
h1,h2,h3,h4,.empty h3,.article-nav h2,.page-heading h1,.lesson-card h3,.practice-head h2,.lesson-section h2,.landing-copy h1,.public-section h2,.game-results h1{color:var(--theme-ink,var(--green))}
.lesson-card h3,.arcade-card h2,h1,h2,h3{transition:color .2s ease}
/* Hands sit over the keyboard; only the wrist area extends below it. */
.keyboard-stage.show-hands{padding-bottom:var(--hand-space,90px)!important}
.keyboard-stage .hands-overlay{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none;margin:0!important;z-index:3;overflow:visible;aspect-ratio:auto;pointer-events:none}
.hand-digit{fill:var(--theme-key);fill-opacity:.13;stroke:var(--theme-ink);stroke-opacity:.5;stroke-width:1.4;stroke-linejoin:round}
.hand-digit.is-active{fill-opacity:.34;stroke-opacity:.95;stroke-width:1.8}
.finger-nail{fill:var(--panel);fill-opacity:.68;stroke:var(--theme-ink);stroke-opacity:.45;stroke-width:1}
.finger-nail.is-active{fill:var(--theme-bar);fill-opacity:.75;stroke-opacity:1}
.finger-target{fill:none;stroke:var(--theme-ink);stroke-width:1.4;opacity:.75}
.guide-palm{fill:var(--soft);fill-opacity:.9;stroke:var(--theme-ink);stroke-opacity:.45;stroke-width:1.4;stroke-linejoin:round}
.palm-crease{fill:none;stroke:var(--theme-ink);stroke-opacity:.22;stroke-width:1}
.guide-label{fill:var(--theme-ink);font:500 8px ui-sans-serif,sans-serif;letter-spacing:1.5px;opacity:.8}
.keyboard-stage .key{color:var(--ink)}
.keyboard-stage.show-hands .key{align-items:flex-start;padding-top:3px}
.keyboard-stage.show-hands .key.space,.keyboard-stage.show-hands .key.shift{align-items:center;padding-top:0}
/* An illustrated arcade; all artwork is local SVG, with no embeds or trackers. */
.arcade-welcome{display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center;padding:34px 38px;background:var(--soft);border:1px solid var(--line);border-radius:23px;margin-bottom:30px;overflow:hidden}
.arcade-welcome h1{font-family:Georgia,serif;font-size:clamp(30px,3.2vw,49px);font-weight:400;line-height:1.12;letter-spacing:-1.4px;margin:15px 0}
.arcade-welcome p{font-size:13px;line-height:1.8;color:var(--muted)}
.arcade-facts{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;font-size:10px;color:var(--theme-ink)}
.arcade-facts span:not(:first-child):before{content:'•';margin-right:12px;opacity:.5}
.arcade-hero-art{position:relative;padding:8px 0 24px;transform:rotate(-2deg)}
.arcade-hero-art .arcade-art{border:7px solid var(--panel);border-radius:20px;box-shadow:0 14px 28px #182b3c20;aspect-ratio:1.8}
.hero-ticket{position:absolute;right:8%;bottom:0;display:block;padding:14px 20px;border-radius:12px;background:var(--theme-key);color:var(--theme-key-ink);font-size:10px;letter-spacing:1px;font-weight:700;transform:rotate(6deg);box-shadow:0 5px 15px #182b3c15}
.hero-ticket b{font-size:32px;position:absolute;right:15px;top:8px}.hero-ticket{padding-right:62px}
.arcade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:30px 0 15px}
.arcade-filters{display:flex;gap:7px;flex-wrap:wrap}.filter-chip{padding:9px 14px;border:1px solid var(--line);border-radius:30px;font-size:11px;color:var(--muted);background:var(--panel);cursor:pointer;transition:background .2s,transform .2s}
.filter-chip:hover{transform:translateY(-2px);color:var(--theme-ink)}.filter-chip[aria-pressed=true]{background:var(--green);border-color:var(--green);color:var(--button-text)}
.game-search input{padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);font:inherit;font-size:12px;max-width:200px}
.arcade-count{font-size:11px;color:var(--muted);margin-bottom:20px}
.arcade-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.arcade-card{border:1px solid var(--line);border-radius:18px;background:var(--panel);overflow:hidden;transition:transform .22s,box-shadow .22s,border-color .22s;min-width:0;display:flex;flex-direction:column}
.arcade-card:hover{transform:translateY(-5px);box-shadow:0 12px 30px #1f312815;border-color:var(--theme-ink)}.arcade-card[hidden],.arcade-empty[hidden]{display:none}
.arcade-art{aspect-ratio:640/300;position:relative;overflow:hidden;background:#e6c7a3;isolation:isolate}
.arcade-art svg{display:block;width:100%;height:100%;overflow:hidden}.art-rally{background:#c8e0dc}.art-orbit{background:#282e57}.art-hoops{background:#f4d8b1}.art-falling-words{background:#9fc6bf}.art-sprint{background:#db9776}.art-precision{background:#c9d9b8}
.scene-title{font:600 15px ui-sans-serif,sans-serif;letter-spacing:2px;fill:#304b4e}.scene-small{font:600 11px ui-sans-serif,sans-serif;letter-spacing:1px;fill:#fff}.art-orbit .scene-title{fill:#e6dcff}
.arcade-card-copy{padding:22px;display:flex;flex-direction:column;flex:1}.arcade-tagline{display:flex;justify-content:space-between;align-items:center;gap:10px}.arcade-tagline>span{font-size:9px;text-transform:uppercase;letter-spacing:1.5px;font-weight:700;color:var(--theme-ink)}.arcade-tagline small{font-size:9px;color:var(--muted)}
.arcade-card h2{font-size:21px;letter-spacing:-.5px;margin:10px 0}.arcade-card-copy>p{font-size:12px;color:var(--muted);line-height:1.8;min-height:44px;margin-bottom:20px}
.arcade-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:auto}.arcade-levels a{padding:10px 8px;border:1px solid var(--line);border-radius:9px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:10px;transition:background .2s,color .2s}.arcade-levels a span{font-size:13px}.arcade-levels a:hover{background:var(--soft);border-color:var(--theme-ink);color:var(--theme-ink)}
.level-dots{display:block;width:3px;height:9px;background:var(--theme-ink);border-radius:1px;flex-shrink:0}.level-dots.medium{height:12px}.level-dots.hard{height:15px}
.arcade-record{font-size:9px;color:var(--muted);border-top:1px solid var(--line);padding-top:14px;margin-top:18px}
.arcade-note{margin:30px 0;padding:23px 25px;border:1px dashed var(--line);border-radius:16px;display:flex;align-items:center;gap:20px}.arcade-note>span{font-size:30px;color:var(--theme-ink)}.arcade-note strong{font-size:14px;color:var(--theme-ink)}.arcade-note p{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.7}.arcade-note a{white-space:nowrap;margin-left:auto;font-size:12px}
.arcade-intro{display:grid;grid-template-columns:1fr 1fr;gap:35px;background:var(--panel);border:1px solid var(--line);border-radius:22px;overflow:hidden;padding:30px;align-items:center;max-width:1100px;margin:30px auto}.arcade-intro>.arcade-art{border-radius:14px;aspect-ratio:1.5}.arcade-intro h2{font-size:30px;line-height:1.2;margin:12px 0}.arcade-intro p{font-size:13px;line-height:1.9;color:var(--muted);margin:20px 0}.arcade-intro .muted{font-size:11px}.intro-levels{display:flex;gap:8px}.intro-levels a{font-size:11px;padding:6px 13px;border:1px solid var(--line);border-radius:20px}.intro-levels a[aria-current]{background:var(--soft);border-color:var(--theme-ink);color:var(--theme-ink)}
.arcade-stage{padding:0;max-width:1000px;margin:auto}.arcade-stage .game-metrics{padding:20px;margin:0}.arcade-stage .game-metrics strong{color:var(--theme-ink)}.arcade-stage .game-metrics small{color:var(--muted);font-size:10px}.arcade-stage .game-metrics strong{font-size:25px}.page-heading h1 small{font:400 12px ui-sans-serif,sans-serif;display:inline-block;vertical-align:middle;border:1px solid var(--line);border-radius:20px;padding:7px 12px;letter-spacing:0}
.arcade-playfield{position:relative;overflow:hidden;background:var(--soft)}.arcade-playfield>.arcade-art{height:270px;aspect-ratio:auto}.arcade-playfield .scene-title{display:none}.arcade-playfield .word-arena{margin:0;height:100px;background:var(--panel);border-top:1px solid var(--line)}
.arcade-playfield .game-word{font-size:clamp(18px,2.3vw,30px);letter-spacing:1px}.arcade-playfield .game-word small{font-size:10px;margin-top:5px}.arcade-playfield .game-word .correct{color:var(--theme-ink)}
.arcade-controls{padding:20px 30px 24px}.arcade-controls input{max-width:540px;display:block;margin:auto;padding:13px}.arcade-controls label{text-align:center}.arcade-controls #game-tip{margin:12px 0 0;min-height:20px}.arcade-controls .game-instruction{margin:4px 0 0}
.race-label{position:absolute;top:12px;left:15px;padding:5px 10px;border-radius:15px;color:#263c47;background:#eef8eddd;font-size:10px}.player-car{transition:transform .35s ease}.orbit-laser,.orbit-burst{opacity:0}.orbit-burst{transform-origin:420px 94px}.shot .orbit-laser{animation:laser-shot .45s ease-out}.shot .orbit-burst{animation:ship-burst .5s ease-out}.shot .hoop-ball{animation:hoop-shot .65s ease-out}.danger-meter{position:absolute;left:20px;right:20px;top:15px;height:5px;background:#ffffff20;border-radius:5px;overflow:hidden}.danger-meter span{display:block;height:100%;background:#f0aa9d;width:0}.arcade-stage .precision-track{left:22px;right:22px;bottom:111px;gap:6px}.arcade-stage .precision-track i{height:7px;background:#ffffff77}.arcade-stage .precision-track i.done{background:#41645f}
.arcade-stage.falling-words .arcade-playfield>.arcade-art{height:300px}.arcade-stage.falling-words .word-arena{position:absolute;inset:0;height:auto;border:0;background:none}.arcade-stage.falling-words .word-cloud{display:none}.arcade-stage.falling-words .game-word{padding:11px 20px;border-radius:12px;background:var(--panel);border:1px solid var(--line);box-shadow:0 6px 15px #1b4b4620;max-width:92%;white-space:normal;min-width:100px}.arcade-stage.falling-words .landing-line{color:#f5fff2;border-color:#f5fff2aa;bottom:12px;font-size:10px}.game-paused *{animation-play-state:paused!important}
.arcade-card:hover .sprint-keys,.arcade-card:hover .word-cloud{animation:arcade-float 2s ease-in-out infinite}.arcade-card:hover .cloud-two{animation-delay:.25s}.arcade-card:hover .hoop-ball{animation:ball-bounce .9s ease-in-out infinite}.arcade-card:hover .enemy-ship{animation:ship-hover 2s ease-in-out infinite}.arcade-hero-art{animation:hero-arrive .65s ease both}.arcade-grid{animation:enter .4s ease both}.lesson-card:focus-visible,.arcade-levels a:focus-visible,.filter-chip:focus-visible{outline:3px solid var(--theme-ink);outline-offset:4px}.shot .sprint-keys{animation:sprint-hit .3s ease-out}
@keyframes arcade-float{50%{translate:0 -7px}}@keyframes ball-bounce{50%{translate:0 -16px}}@keyframes ship-hover{50%{translate:0 7px}}@keyframes hero-arrive{from{opacity:0;transform:translateY(15px) rotate(0)}to{opacity:1;transform:translateY(0) rotate(-2deg)}}@keyframes laser-shot{0%,55%{opacity:1}100%{opacity:0}}@keyframes ship-burst{0%{opacity:1;scale:.5}100%{opacity:0;scale:2}}@keyframes hoop-shot{0%{transform:translate(190px,216px)}50%{transform:translate(360px,25px)}80%{transform:translate(488px,126px)}100%{transform:translate(488px,200px);opacity:0}}@keyframes sprint-hit{50%{translate:18px -3px}}
@media(max-width:1200px){.arcade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.arcade-welcome{padding:28px;gap:25px}.arcade-welcome h1{font-size:35px}.arcade-facts{gap:8px}.arcade-facts span:not(:first-child):before{margin-right:8px}.arcade-intro{gap:24px}.arcade-intro h2{font-size:25px}}
@media(max-width:760px){.arcade-welcome{grid-template-columns:1fr;padding:25px}.arcade-welcome h1{font-size:38px}.arcade-hero-art{max-width:520px;display:none}.arcade-toolbar{gap:12px}.game-search,.game-search input{width:100%;max-width:none}.arcade-grid{gap:15px}.arcade-card-copy{padding:17px}.arcade-card h2{font-size:20px}.arcade-tagline{gap:6px}.arcade-tagline small{font-size:8px}.arcade-levels{gap:4px}.arcade-levels a{padding:10px 5px;font-size:10px}.arcade-intro{grid-template-columns:1fr;padding:22px;gap:20px}.arcade-intro>.arcade-art{aspect-ratio:640/270}.arcade-intro p{margin:15px 0}.arcade-note{flex-wrap:wrap;gap:12px}.arcade-note>div{flex:1}.arcade-note a{margin-left:42px}.arcade-controls{padding:18px}.arcade-playfield>.arcade-art{height:230px}.arcade-stage .game-metrics{padding:16px}.arcade-playfield .word-arena{height:100px}.arcade-stage.falling-words .word-arena{height:auto}.guide-label{font-size:6px;letter-spacing:1px}}
@media(max-width:480px){.arcade-grid{grid-template-columns:1fr}.arcade-card-copy{padding:22px}.arcade-card h2{font-size:23px}.arcade-card-copy>p{min-height:0}.arcade-card .arcade-art{aspect-ratio:2.1}.arcade-tagline small{font-size:10px}.arcade-levels a{font-size:12px}.arcade-card-copy>p{font-size:13px}.filter-chip{padding:8px 12px}.arcade-stage .game-metrics strong{font-size:21px}.arcade-stage .game-metrics small{font-size:9px}.arcade-playfield>.arcade-art{height:180px}.arcade-playfield .arcade-art svg{object-fit:cover}.arcade-playfield .game-word{font-size:18px;letter-spacing:.5px}.arcade-intro h2{font-size:27px}.arcade-note{padding:20px}.arcade-welcome{padding:23px}.arcade-facts{gap:6px;font-size:9px}.arcade-facts span:not(:first-child):before{margin-right:6px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.arcade-card:hover,.filter-chip:hover{transform:none}.arcade-hero-art{transform:none}}

.arcade-playfield .art-rally{background:linear-gradient(#c8e0dc 59%,#29394b 59%)}.arcade-playfield .art-hoops{background:linear-gradient(#f4d8b1 72%,#d78358 72%)}
