/* ===== Typing Academy 2.0 — dynamic typing games (runner / feed / rescue / race / boss) ===== */
.tv2g .prompt{min-height:0;padding:6px 10px}
.tv2g .prompt .av{width:44px;height:44px}
.tv2g .prompt .tx{font-size:17px}
.tv2g .prompt .tx .zh{font-size:12.5px}
.tv2g .prompt .spk{width:44px;height:44px}
.tv2g .arena{flex:1;min-height:0;padding:0;display:flex;justify-content:stretch;align-items:stretch;margin:6px 0 0}
.stg{position:relative;flex:1;min-height:150px;border-radius:20px;overflow:hidden;isolation:isolate;
  box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.35),0 10px 30px rgba(0,0,0,.45);background:#070c2a;user-select:none;-webkit-user-select:none}
.stg .bgi{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}
.stg .shd{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(4,8,30,.6),transparent 30%,transparent 72%,rgba(4,8,30,.45))}
/* HUD */
.stg .h-time,.stg .h-score{position:absolute;top:8px;z-index:20;display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;font-family:'Orbitron',var(--font);font-weight:800;font-size:14px;
  background:rgba(6,12,40,.78);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.4)}
.stg .h-time{left:8px;color:#bff8ff}.stg .h-score{right:8px;color:#ffd25a}
.stg .h-time.low{color:#ff8a6b;box-shadow:inset 0 0 0 1.5px #ff8a6b}
.stg .h-combo{position:absolute;right:8px;top:44px;z-index:20;text-align:center;padding:3px 10px;border-radius:12px;font-family:'Orbitron',var(--font);color:#3b1d00;
  background:linear-gradient(180deg,#ffe07f,#ff9f2e);box-shadow:0 0 18px rgba(255,170,60,.55);transition:opacity .2s}
.stg .h-combo b{display:block;font-size:18px;line-height:1}.stg .h-combo small{font-size:9px;letter-spacing:2px;font-weight:800}
.stg .h-combo.off{opacity:0}
.stg .h-combo.bump{animation:hcB .25s}
@keyframes hcB{50%{transform:scale(1.25)}}
.stg .h-bar{position:absolute;left:50%;top:15px;z-index:20;transform:translateX(-50%);width:min(34%,260px);height:10px;border-radius:99px;background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.stg .h-bar b{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:linear-gradient(90deg,#5ee9ff,#ffd25a);transition:width .25s}
.stg .h-bar i{position:absolute;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;color:#56608a}
.stg .h-bar i.on{color:#ffd25a;filter:drop-shadow(0 0 6px #ffb02e)}
.stg .h-extra{position:absolute;left:8px;top:42px;z-index:20;padding:3px 9px;border-radius:99px;font-size:12px;font-weight:800;color:#dfe7ff;background:rgba(6,12,40,.7)}
.stg .cd{position:absolute;inset:0;z-index:40;display:grid;place-items:center;pointer-events:none}
.stg .cd b{font-family:'Orbitron',var(--font);font-size:min(22vh,110px);color:#fff;text-shadow:0 0 30px #5ee9ff,0 6px 0 #1b3a8a;animation:cdP .62s ease-out both}
@keyframes cdP{0%{transform:scale(2.2);opacity:0}30%{transform:scale(1);opacity:1}100%{transform:scale(.8);opacity:0}}
.stg .banner2{position:absolute;left:50%;top:38%;z-index:40;transform:translate(-50%,-50%);padding:10px 26px;border-radius:18px;font-family:'Orbitron',var(--font);font-weight:900;font-size:30px;white-space:nowrap;
  color:#3b1d00;background:linear-gradient(180deg,#ffe07f,#ff9f2e);box-shadow:0 0 40px rgba(255,170,60,.7);animation:bnIn .4s cubic-bezier(.2,1.6,.4,1)}
.stg .banner2 small{display:block;font-family:var(--zh,inherit);font-size:15px;font-weight:800;text-align:center}
@keyframes bnIn{from{transform:translate(-50%,-50%) scale(.3);opacity:0}}
.stg .pop2{position:absolute;z-index:30;pointer-events:none;font-family:'Orbitron',var(--font);font-weight:900;font-size:20px;color:#fff;text-shadow:0 0 10px #000,0 2px 0 #000;white-space:nowrap;transform:translate(-50%,-50%)}
.stg .spk2{position:absolute;z-index:25;width:8px;height:8px;border-radius:50%;pointer-events:none}
/* letter token */
.tk2{position:absolute;z-index:12;display:grid;place-items:center;width:var(--ts,54px);height:var(--ts,54px);margin:calc(var(--ts,54px) / -2) 0 0 calc(var(--ts,54px) / -2);border-radius:50%;
  font-family:'Orbitron',var(--font);font-weight:900;font-size:calc(var(--ts,54px) * .48);color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.6);
  background:radial-gradient(circle at 40% 30%,rgba(255,255,255,.55),var(--c,#1f8fff) 55%,color-mix(in srgb,var(--c,#1f8fff) 60%,#000));box-shadow:0 0 0 3px rgba(255,255,255,.85),0 0 20px var(--c,#1f8fff)}
.tk2.tgt{box-shadow:0 0 0 4px #ffd25a,0 0 26px #ffd25a;animation:tkP .8s ease-in-out infinite}
.tk2.ok{background:radial-gradient(circle at 40% 30%,#c8ffe4,#24c97a 60%);box-shadow:0 0 0 3px #fff,0 0 22px #46e39a}
@keyframes tkP{50%{transform:scale(1.13)}}
/* dock: finger hint | keyboard | stats */
.dock2{flex:none;display:flex;gap:8px;align-items:stretch;padding:6px 8px 8px}
.dock2 .kbwrap{flex:1;min-width:0;margin:0}
.dock2 .kbwrap .kb{max-width:660px;margin:0 auto}
.dock2 .fp2,.dock2 .sp2{flex:none;width:132px;border-radius:16px;padding:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  background:linear-gradient(180deg,rgba(10,22,66,.82),rgba(4,9,32,.92));box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.3)}
.dock2 .fp2 .hands{display:block!important;width:100%;max-width:122px;margin:0}
.dock2 .fp2 b{font-size:12.5px;white-space:nowrap}
.dock2 .sp2{align-items:stretch;gap:5px}
.dock2 .sp2 div{display:flex;justify-content:space-between;gap:6px;font-size:12px;color:var(--ink2)}.dock2 .sp2 div b{font-family:'Orbitron',var(--font);color:#fff}
.tv2g:not(.wide) .dock2{flex-direction:column;padding-top:4px}
.tv2g:not(.wide) .dock2 .sp2{display:none}
.tv2g:not(.wide) .dock2 .fp2{order:2;width:auto;flex-direction:row;padding:3px 10px;gap:10px;align-self:center}
.tv2g:not(.wide) .dock2 .fp2 .hands{width:96px;max-width:96px}
@media (max-height:700px){.tv2g:not(.wide) .dock2 .fp2 .hands{display:none!important}}
/* ---------- runner ---------- */
.run .r-sky{position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,#1a0f3a,#5a2a3a 55%,#c0603a);}
.run .r-far,.run .r-mid,.run .r-ground,.run .r-near{position:absolute;left:0;right:0;z-index:2;background-repeat:repeat-x;will-change:background-position}
.run .r-far{top:0;bottom:16%;left:0;right:auto;display:flex;white-space:nowrap}
.run .r-far img{flex:none;height:100%;object-fit:cover;object-position:50% 62%;display:block}.run .r-far img.mir{transform:scaleX(-1)}
.run .r-mid{bottom:16%;height:20%;z-index:3;background-image:radial-gradient(ellipse 60px 26px at 50% 100%,#7a3a20 60%,transparent 62%),radial-gradient(ellipse 110px 46px at 50% 100%,#6a301a 60%,transparent 62%);background-size:260px 100%,430px 100%;background-position:0 100%,120px 100%}
.run .r-ground{bottom:0;height:18%;z-index:4;background-image:linear-gradient(180deg,#b85a2c,#7a3418 40%,#4a1c0c),repeating-linear-gradient(90deg,transparent 0 60px,rgba(0,0,0,.18) 60px 64px,transparent 64px 140px);background-size:100% 100%,140px 100%}
.run .r-ground::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,#ffb27a,#ff8a4a);opacity:.7}
.run .r-lines{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;transition:opacity .3s;background:repeating-linear-gradient(180deg,transparent 0 28px,rgba(255,255,255,.18) 28px 30px,transparent 30px 70px);mask:linear-gradient(90deg,transparent,#000 30%,#000 70%,transparent)}
.run.sprint .r-lines{opacity:1;animation:rl .25s linear infinite}
@keyframes rl{to{background-position:0 70px}}
.run .hero{position:absolute;z-index:10;transform-origin:50% 100%;will-change:transform}
.run .hero img{display:block;height:100%;filter:drop-shadow(0 8px 10px rgba(0,0,0,.45))}
.run .hero.run1 img{animation:runB .32s ease-in-out infinite alternate}
@keyframes runB{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-6%) rotate(3deg)}}
.run .hero.trip img{animation:trip .5s}
@keyframes trip{30%{transform:rotate(-18deg) translateY(4%);filter:brightness(1.6) drop-shadow(0 0 10px #ff5a3c)}}
.run .hero .fire{position:absolute;right:62%;top:38%;width:0;height:24%;border-radius:50%;background:linear-gradient(90deg,transparent,#ff9f2e,#fff3b0);filter:blur(2px);transition:width .3s;z-index:-1}
.run.sprint .hero .fire{width:120%}
.run .shadow{position:absolute;z-index:9;height:12px;border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.45),transparent 70%)}
.run .rock2{position:absolute;z-index:8;border-radius:50% 50% 32% 32%/70% 70% 30% 30%;background:radial-gradient(circle at 35% 30%,#d79a70,#7a3a1c 62%,#4a200c);box-shadow:inset -6px -6px 0 rgba(0,0,0,.2),0 8px 12px rgba(0,0,0,.45)}
.run .star3{position:absolute;z-index:8;color:#ffd25a;filter:drop-shadow(0 0 12px #ffb02e);animation:st3 1.2s ease-in-out infinite}
@keyframes st3{50%{transform:translateY(-8px) rotate(12deg) scale(1.08)}}
.run .dust{position:absolute;z-index:9;width:10px;height:10px;border-radius:50%;background:rgba(255,200,160,.7);pointer-events:none}
/* ---------- feed ---------- */
.fed .alien{position:absolute;z-index:6;transform-origin:50% 100%;filter:drop-shadow(0 10px 14px rgba(0,0,0,.5));animation:alIdle 1.8s ease-in-out infinite}
@keyframes alIdle{50%{transform:translateY(-3%) rotate(1.5deg)}}
.fed .alien.chomp{animation:chomp .45s}
@keyframes chomp{20%{transform:scale(1.14,.86)}50%{transform:scale(.94,1.08)}80%{transform:scale(1.04,.97)}}
.fed .alien.sad{filter:grayscale(.7) brightness(.75) drop-shadow(0 10px 14px rgba(0,0,0,.5));animation:sad .6s}
@keyframes sad{30%{transform:translateX(-4%)}60%{transform:translateX(4%)}}
.fed .ped{position:absolute;z-index:5;height:16px;border-radius:50%;background:radial-gradient(ellipse,rgba(94,233,255,.6),rgba(94,233,255,.08) 60%,transparent 72%);box-shadow:0 0 30px rgba(94,233,255,.35)}
.fed .want{position:absolute;z-index:12;display:flex;align-items:center;gap:6px;padding:5px 8px 5px 5px;border-radius:16px;background:#f4f7ff;color:#18204a;box-shadow:0 6px 16px rgba(0,0,0,.45);transform:translateX(-50%)}
.fed .want::after{content:"";position:absolute;left:50%;bottom:-8px;margin-left:-8px;border:8px solid transparent;border-top-color:#f4f7ff;border-bottom:0}
.fed .want img{width:34px;height:34px;object-fit:contain}
.fed .want .k{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-family:'Orbitron',var(--font);font-weight:900;font-size:20px;color:#fff;background:var(--c)}
.fed .want.tgt{box-shadow:0 0 0 3px #ffd25a,0 0 20px #ffd25a}
.fed .pat{position:absolute;z-index:12;height:7px;border-radius:99px;background:rgba(255,255,255,.18);transform:translateX(-50%)}
.fed .pat b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ff6b6b,#ffd25a 40%,#46e39a)}
.fed .food{position:absolute;z-index:14;width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 0 8px #fff);pointer-events:none}
/* ---------- rescue ---------- */
.res .cliff{position:absolute;z-index:4;bottom:0;background:radial-gradient(ellipse at 50% 0%,#9a6a4c,#5a3422 55%,#2a170e);box-shadow:inset 0 6px 0 rgba(255,190,140,.35)}
.res .cliff.l{left:-3%;border-radius:0 46% 0 0/0 30% 0 0}.res .cliff.r{right:-3%;border-radius:46% 0 0 0/30% 0 0 0}
.res .chasm{position:absolute;z-index:3;left:0;right:0;bottom:0;height:24%;background:linear-gradient(180deg,transparent,rgba(255,90,40,.35));}
.res .ast{position:absolute;z-index:2;border-radius:46% 54% 50% 50%;background:radial-gradient(circle at 35% 30%,#a88a78,#5a4438 65%,#2c1f18);box-shadow:inset -6px -8px 0 rgba(0,0,0,.25)}
.res .slot{position:absolute;z-index:7;height:16px;border-radius:5px;border:2px dashed rgba(255,255,255,.45)}
.res .plank{position:absolute;z-index:8;height:16px;border-radius:5px;background:linear-gradient(180deg,#ffe2a8,#c98a3c);box-shadow:0 0 14px rgba(255,200,90,.7);transform-origin:50% 50%}
.res .plank.new{animation:plk .4s cubic-bezier(.2,1.6,.4,1)}
@keyframes plk{from{transform:translateY(-60px) scale(.4);opacity:0}}
.res .hero2{position:absolute;z-index:10;transition:left .45s ease-in-out;transform-origin:50% 100%}
.res .hero2 img{display:block;height:100%;filter:drop-shadow(0 8px 10px rgba(0,0,0,.45))}
.res .hero2.walk img{animation:runB .25s ease-in-out infinite alternate}
.res .pod{position:absolute;z-index:5;border-radius:22px;background:linear-gradient(135deg,rgba(170,235,255,.32),rgba(90,170,255,.14));box-shadow:inset 0 0 0 3px rgba(190,240,255,.8),0 0 30px rgba(120,220,255,.6)}
.res .pod.warn{box-shadow:inset 0 0 0 3px #ff8a6b,0 0 30px rgba(255,120,90,.7)}
.res .buddy{position:absolute;z-index:6;filter:drop-shadow(0 8px 10px rgba(0,0,0,.45));transform-origin:50% 100%;animation:alIdle 1.5s ease-in-out infinite}
.res .buddy.free{animation:hop .5s ease-out 3}
@keyframes hop{50%{transform:translateY(-18%)}}
.res .o2w{position:absolute;z-index:12;transform:translateX(-50%);padding:4px 8px 6px;border-radius:10px;background:rgba(6,12,40,.8);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.35);text-align:center}
.res .o2{height:8px;border-radius:99px;background:rgba(255,255,255,.18);margin-top:2px}
.res .o2 b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ff6b6b,#5ee9ff 35%,#46e39a)}
.res .o2lbl{display:block;font-size:11px;font-weight:800;letter-spacing:1px;color:#bff8ff;white-space:nowrap}
/* ---------- race ---------- */
.rc .sf{position:absolute;inset:0;z-index:1;background-repeat:repeat;will-change:background-position}
.rc .sf1{background-image:radial-gradient(1.5px 1.5px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 90px 120px,#cfe,transparent),radial-gradient(1.2px 1.2px at 150px 60px,#fff,transparent);background-size:180px 160px;opacity:.7}
.rc .sf2{background-image:radial-gradient(2px 2px at 40px 50px,#fff,transparent),radial-gradient(2.5px 2.5px at 210px 140px,#bff8ff,transparent);background-size:300px 220px}
.rc .lane{position:absolute;left:2%;right:2%;z-index:3;border-radius:16px;background:rgba(5,10,35,.38);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.22)}
.rc .ship{position:absolute;z-index:10;transform:translate(-50%,-50%);will-change:transform}
.rc .ship img{display:block;height:100%;filter:drop-shadow(0 0 10px rgba(94,233,255,.5))}
.rc .ship.me img{animation:shB .6s ease-in-out infinite alternate}
@keyframes shB{to{transform:translateY(-5%) rotate(-1.5deg)}}
.rc .trail{position:absolute;z-index:9;border-radius:50%;transform:translate(-100%,-50%);background:linear-gradient(90deg,transparent,rgba(255,159,46,.85),#fff3b0);filter:blur(1.5px);transition:width .15s}
.rc .trail.ufo{background:linear-gradient(90deg,transparent,rgba(164,92,255,.8),#e9d8ff)}
.rc .ring{position:absolute;z-index:8;border-radius:50%;border:4px solid rgba(94,233,255,.95);box-shadow:0 0 18px rgba(94,233,255,.7),inset 0 0 18px rgba(94,233,255,.4);transform:translate(-50%,-50%)}
.rc .ring.ok{border-color:#46e39a;box-shadow:0 0 22px #46e39a}
.rc .wtiles{position:absolute;z-index:12;display:flex;gap:4px;transform:translate(-50%,0)}
.rc .wtiles span{width:30px;height:36px;border-radius:8px;display:grid;place-items:center;font-family:'Orbitron',var(--font);font-weight:900;font-size:18px;background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35)}
.rc .wtiles span.d{background:linear-gradient(180deg,#7cf3ff,#1f8fff)}.rc .wtiles span.c{box-shadow:inset 0 0 0 3px #ffd25a}
.rc .finish{position:absolute;z-index:7;width:16px;border-radius:4px;background:repeating-linear-gradient(0deg,#fff 0 12px,#111 12px 24px);transform:translateX(-50%)}
.rc .rivtag{position:absolute;z-index:12;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:800;color:#18204a;background:#d6dcff;white-space:nowrap;transform:translate(-50%,0)}
.rc .rivarrow{position:absolute;z-index:12;right:8px;padding:3px 9px;border-radius:99px;font-size:12px;font-weight:800;color:#18204a;background:#d6dcff}
.rc .mini{position:absolute;left:12%;right:12%;bottom:8px;z-index:12;height:6px;border-radius:99px;background:rgba(255,255,255,.15)}
.rc .mini i{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%}
/* ---------- boss ---------- */
.bs .bolt{position:absolute;z-index:8;transform-origin:50% 100%;filter:drop-shadow(0 8px 12px rgba(0,0,0,.5))}
.bs .bolt.hurt{animation:sad .5s;filter:brightness(1.6) drop-shadow(0 0 14px #ff5a3c)}
.bs .bwrap{position:absolute;z-index:6}
.bs .bwrap .boss{position:absolute;inset:0;width:100%;height:100%;margin:0}
.bs .bwrap.hit .boss{animation:bHit .45s}
@keyframes bHit{15%{transform:translateX(5%) rotate(5deg);filter:brightness(2) saturate(.4)}45%{transform:translateX(-4%) rotate(-4deg)}}
.bs .bwrap.dead{animation:bDead .9s forwards}
@keyframes bDead{40%{transform:scale(1.15);filter:brightness(2.4)}100%{transform:scale(.2) rotate(40deg);opacity:0}}
.bs .hpb{position:absolute;z-index:20;left:50%;top:36px;transform:translateX(-50%);width:min(40%,300px);text-align:center}
.bs .hpb small{font-size:11px;letter-spacing:3px;color:#ff8a6b;font-weight:800}
.bs .hpb .hp{width:100%;margin:2px 0 0;height:12px}
.bs .wbox{width:max-content;max-width:96%;position:absolute;z-index:14;left:50%;bottom:6%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:16px;background:rgba(6,12,40,.72);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.35)}
.bs .wbox .pic-img,.bs .wbox .pic-emo{--ps:36px;--pw:48px}
.bs .tiles{display:flex;gap:5px}
.bs .tiles span{width:38px;height:46px;border-radius:10px;display:grid;place-items:center;font-family:'Orbitron',var(--font);font-weight:900;font-size:24px;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.05));box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.bs .tiles span.d{background:linear-gradient(180deg,#7cf3ff,#1f8fff);box-shadow:0 0 14px #5ee9ff}.bs .tiles span.c{box-shadow:inset 0 0 0 3px #ffd25a,0 0 14px rgba(255,210,90,.6)}
.bs .beam{position:absolute;z-index:7;height:12px;border-radius:12px;background:linear-gradient(90deg,rgba(94,233,255,0),#bff8ff,#fff);box-shadow:0 0 26px #5ee9ff;transform-origin:0 50%;pointer-events:none}
.bs .met2{position:absolute;z-index:12}
.bs .met2 .rk{position:absolute;inset:0;border-radius:46% 54% 50% 50%;background:radial-gradient(circle at 35% 30%,#ffb27a,#a83a1a 60%,#4a0f08);box-shadow:0 0 18px rgba(255,90,40,.7);animation:spin 1.6s linear infinite}
.bs .shield2{position:absolute;z-index:20;left:8px;top:42px;display:flex;gap:4px}
.bs .shield2 i{width:16px;height:9px;border-radius:3px;background:var(--cyan);box-shadow:0 0 8px var(--cyan)}.bs .shield2 i.off{background:rgba(255,255,255,.15);box-shadow:none}
/* meteor juice */
.blaster .met{animation:metSpin 3s linear infinite}
@keyframes metSpin{to{rotate:360deg}}
.mcombo{position:absolute;right:8px;top:8px;z-index:20;padding:3px 10px;border-radius:12px;font-family:'Orbitron',var(--font);font-weight:900;color:#3b1d00;background:linear-gradient(180deg,#ffe07f,#ff9f2e);box-shadow:0 0 18px rgba(255,170,60,.55)}
/* hub: free play */
.fplay{margin:4px 0 14px;padding:10px;border-radius:18px;background:linear-gradient(180deg,rgba(14,26,78,.75),rgba(6,12,40,.8));box-shadow:inset 0 0 0 1.5px rgba(255,210,90,.45)}
.fplay h3{margin:0 0 8px;font-size:16px;letter-spacing:2px;color:#ffd25a}.fplay h3 small{font-size:12.5px;color:var(--ink2);letter-spacing:0;margin-left:6px}
.fplay .modes{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.fplay .modes button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:14px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.3);color:#fff}
.fplay .modes button img{height:46px;object-fit:contain}
.fplay .modes button b{font-size:13px;line-height:1.1}.fplay .modes button small{font-size:11px;color:var(--ink2)}
.fplay .keys2{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.fplay .keys2 button{padding:4px 10px;border-radius:99px;font-size:12.5px;font-weight:800;color:#bff8ff;background:rgba(94,233,255,.1);box-shadow:inset 0 0 0 1.5px rgba(94,233,255,.35)}
.fplay .keys2 button.on{color:#3b1d00;background:linear-gradient(180deg,#ffe07f,#ffb02e)}
.fed .want:empty{display:none}
.bs .tiles{flex-wrap:nowrap}
.stg.narrow .banner2{font-size:20px;padding:8px 16px}.stg.narrow .banner2 small{font-size:12.5px}
.stg.bs.narrow .tiles span{width:32px;height:40px;font-size:20px}
/* the five dynamic modes never need SPACE: drop that row to give the stage more room */
.tv2g .kb .r:has(.key.space){display:none}
.tv2g .prompt{margin:6px 0 2px}
html.df-scaled .tv2g .prompt{padding:4px 10px}
html.df-scaled .tv2g .prompt .av,html.df-scaled .tv2g .prompt .spk{width:38px;height:38px}
