/* Brand display font (inspiration/COLOURS.png): Press Start 2P, SIL Open Font
   License 1.1, Copyright 2012 The Press Start 2P Project Authors. Embedded as
   data so the app makes NO network request for it - a font CDN would phone home
   on every open, which would break the privacy promise. Latin subset only. */
@font-face{font-family:'Press Start 2P';font-style:normal;font-weight:400;font-display:swap;
 src:url(data:font/woff2;base64,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) format('woff2')}
/* ACE - modern arcade skin. 90s soul (neon, HUD, pixel-flavoured labels) with a 2026
   surface: rounded, glowy, free-flowing, no hard boxes. The writing sheet is the one
   deliberate exception - it stays a calm paper page. */
:root{
--bg:#0e1f3d;--panel:rgba(21,45,86,.92);--line:rgba(255,255,255,.12);--ink:#fff;--dim:#98a1b8;
--aqua:#24e1e2;--pink:#FF008F;--cyan:#31AEF9;--yel:#E8E81C;--grn:#4cf05a;--blu:#3374E8;--orn:#F695B0;--pur:#9100FB;--lime:#E8E81C;
--sheet:#fdfbf3;
--r-card:22px;--r-btn:15px;--r-chip:12px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh;display:flex;flex-direction:column;align-items:center;
font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;line-height:1.5;overflow-x:hidden;
background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 3px)}
/* the owner's own background art, fixed behind everything */
body::after{content:'';position:fixed;inset:0;z-index:-2;background:url(img/bg.png) center/cover no-repeat;
 opacity:.85;pointer-events:none}
/* one soft wash of brand colour over her background art */
body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
 background:radial-gradient(circle at 22% 12%,rgba(255,0,143,.16),transparent 55%),
            radial-gradient(circle at 82% 78%,rgba(49,174,249,.14),transparent 55%)}
.wrap{width:100%;max-width:660px;padding:14px 14px 60px}
/* pixel labels use the brand display font. It runs much wider than Courier, so it
   is scaled down and the letter-spacing pulled in - the font already has its own. */
.gly{font-family:"Courier New",Courier,monospace;letter-spacing:0}
.px{font-family:"Press Start 2P","Courier New",Courier,monospace;font-weight:400;
 text-transform:uppercase;letter-spacing:.02em;font-size:.82em;line-height:1.7}

/* hud: floating glass pills */
.hud{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.hud div{text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:9px 6px;
 box-shadow:0 8px 24px rgba(0,0,0,.35)}
.hud .k{font-size:.6em;color:var(--cyan);letter-spacing:.18em}
.hud .v{font-size:2em;color:var(--yel);font-weight:bold;font-variant-numeric:tabular-nums;
 text-shadow:0 0 14px rgba(232,232,28,.5)}
/* reward bar: a prize worth chasing - gold glow, marching sheen, coin at the end */
.rewardbar{background:var(--panel);border:1.5px solid rgba(232,232,28,.35);border-radius:18px;padding:11px 14px;
 margin-bottom:14px;position:relative;box-shadow:0 8px 24px rgba(0,0,0,.35),0 0 22px rgba(232,232,28,.12)}
.rewardbar .top{display:flex;justify-content:space-between;font-size:.66em;color:var(--yel);letter-spacing:.12em}
.trackwrap{position:relative;margin-top:8px;padding-right:16px}
.track{height:17px;background:rgba(255,255,255,.06);border-radius:99px;position:relative;overflow:hidden}
.track i{display:block;height:100%;width:0;border-radius:99px;position:relative;overflow:hidden;
 background:linear-gradient(90deg,var(--pink),var(--yel) 55%,var(--orn));
 box-shadow:0 0 16px rgba(232,232,28,.6);transition:width .5s cubic-bezier(.2,.8,.3,1)}
.track i::after{content:'';position:absolute;top:0;bottom:0;width:45%;
 background:linear-gradient(115deg,transparent 20%,rgba(255,255,255,.55) 50%,transparent 80%);
 animation:sheen 2.8s ease-in-out infinite}
@keyframes sheen{0%{left:-50%}60%,100%{left:110%}}
.rwcoin{position:absolute;right:-4px;top:50%;transform:translateY(-50%);width:28px;height:28px}
.rwcoin svg,.rwcoin img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 9px rgba(232,232,28,.7))}
.rewardbar .goal{font-size:.8em;color:var(--ink);margin-top:9px}
.rewardbar .goal .rwname{color:var(--yel)}
.rewardbar{cursor:pointer}
.mile{position:absolute;top:50%;transform:translate(-50%,-50%);width:4.5px;height:23px;border-radius:3px;
 background:rgba(255,255,255,.28)}
.mile.hit{background:var(--yel);box-shadow:0 0 9px rgba(232,232,28,.85)}
.rwhint{font-size:.62em;color:var(--dim);margin-top:6px;letter-spacing:.1em}
.rwdetails{font-family:system-ui,-apple-system,sans-serif;text-transform:none;letter-spacing:0;
 border-top:1px dashed rgba(255,255,255,.15);margin-top:10px;padding-top:10px;font-size:.86em;
 font-weight:400;color:var(--ink);line-height:1.6}
.rwdetails b{color:var(--yel)}
.rwdetails .tier{display:flex;gap:8px;align-items:baseline;margin:2px 0}
.rwdetails .tn{font-family:"Courier New",monospace;font-weight:bold;color:var(--cyan);flex:none;width:74px}
.spark{position:absolute;width:15px;height:15px;color:var(--yel);animation:twinkle 2.3s ease-in-out infinite}
.spark svg{width:100%;height:100%}
.spark.s1{top:-7px;right:22px}
.spark.s2{bottom:-6px;left:16px;width:11px;height:11px;color:var(--pink);animation-delay:1.15s}
@keyframes twinkle{0%,100%{transform:scale(.55) rotate(0);opacity:.35}50%{transform:scale(1.2) rotate(25deg);opacity:1}}

/* sticker-style logo lockup with a gentle float */
.logo{margin:14px 0 0}
.logo svg{width:min(280px,72%);height:auto;display:block;overflow:visible;
 filter:drop-shadow(0 8px 18px rgba(0,0,0,.5));animation:logoFloat 4.5s ease-in-out infinite}
@keyframes logoFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-4px) rotate(-.6deg)}}
.slog{color:var(--dim);font-size:.78em;margin:10px 0 16px;letter-spacing:.08em}

/* scattered symbol confetti around the edges - energy, kept faint */
.sprinkles{position:fixed;inset:0;pointer-events:none;z-index:-1}
.sprinkles svg{position:absolute;width:26px;height:26px;opacity:.16}
.sprinkles svg:nth-child(1){top:9%;left:5%;transform:rotate(-14deg)}
.sprinkles svg:nth-child(2){top:20%;right:6%;transform:rotate(12deg);width:20px}
.sprinkles svg:nth-child(3){top:44%;left:3%;transform:rotate(8deg);width:18px}
.sprinkles svg:nth-child(4){top:60%;right:4%;transform:rotate(-6deg)}
.sprinkles svg:nth-child(5){bottom:24%;left:6%;transform:rotate(18deg);width:22px}
.sprinkles svg:nth-child(6){bottom:12%;right:14%;transform:rotate(-16deg);width:20px}
.sprinkles svg:nth-child(7){top:32%;right:2.5%;transform:rotate(10deg);width:16px}
.sprinkles svg:nth-child(8){bottom:38%;left:2.5%;transform:rotate(-10deg);width:18px}
@media (max-width:740px){.sprinkles svg{opacity:.11}}

/* player banner: PLAYER ONE energy - always clear who is logged in; tap to switch */
.playerbar{width:100%;display:flex;align-items:center;gap:11px;background:var(--panel);border:1px solid var(--line);
 border-radius:16px;padding:9px 14px;margin-bottom:10px;cursor:pointer;color:var(--yel);font-size:.78em;
 box-shadow:0 8px 24px rgba(0,0,0,.35);text-align:left}
.playerbar .stk{width:34px;height:34px;flex:none}
.playerbar .stk img,.profcard .stk img{width:100%;height:100%;object-fit:contain;display:block}
.playerbar .pv{text-shadow:0 0 12px rgba(232,232,28,.5)}
.playerbar .sw{margin-left:auto;color:var(--dim);letter-spacing:.12em;font-size:.85em}
body[data-screen="who"] .playerbar{display:none}
.whohead{color:var(--yel);font-size:1.35em;margin:0 0 12px;letter-spacing:.18em;
 text-shadow:0 0 16px rgba(232,232,28,.45)}

/* who-is-playing profile cards */
.profcards{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.profcard{display:flex;align-items:center;gap:11px;background:rgba(10,26,54,.7);border:1.5px solid var(--line);
 border-radius:16px;padding:12px 18px;cursor:pointer;min-width:150px;transition:transform .12s,border-color .15s}
.profcard:active{transform:scale(.96)}
.profcard .stk{width:42px;height:42px}
.profcard .nm{font-weight:800;font-size:1.1em}
.profcard .sub{color:var(--dim);font-size:.72em}
.badgeopt{width:54px;height:54px;border-radius:50%;border:2.5px solid transparent;background:none;cursor:pointer;padding:2px}
.badgeopt[aria-pressed=true]{border-color:var(--yel)}
.badgeopt svg,.badgeopt img{width:100%;height:100%;object-fit:contain}

/* the universal Back button - one simple step backwards, every screen */
.backbtn{border:0;background:rgba(255,255,255,.88);color:#1b2430;padding:7px 15px;border-radius:99px;
 font-family:"Courier New",monospace;font-weight:bold;font-size:.68em;letter-spacing:.12em;cursor:pointer;
 margin-bottom:12px;text-transform:uppercase;display:inline-block;box-shadow:0 3px 10px rgba(0,0,0,.3)}
.backbtn:active{background:#fff}

/* make it obvious where typing happens */
.typewhere{text-align:center;color:var(--cyan);font-size:.72em;margin:12px 0 2px;
 text-shadow:0 0 10px rgba(49,174,249,.4)}
/* the earned sticker slams in with a punch, then drops down onto the board */
.stickerpop{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;pointer-events:none}
.stickerpop .stkbig{width:min(58vw,290px);filter:drop-shadow(0 16px 44px rgba(0,0,0,.55));animation:stkPunch .5s cubic-bezier(.2,.9,.3,1.4) both}
.stickerpop .stkbig svg,.stickerpop .stkbig img{width:100%;height:auto;display:block}
.stickerpop .stklabel{color:var(--yel);font-size:1.05em;letter-spacing:.18em;text-shadow:0 0 20px rgba(232,232,28,.7);animation:stkPunch .5s .1s cubic-bezier(.2,.9,.3,1.4) both}
.stickerpop.away{transition:opacity .8s ease-in,transform .8s ease-in;opacity:0;transform:translateY(44vh) scale(.22)}
@keyframes stkPunch{0%{transform:scale(3) rotate(-14deg);opacity:0}60%{transform:scale(.92) rotate(3deg);opacity:1}80%{transform:scale(1.07)}100%{transform:scale(1) rotate(0)}}

/* the grown-up check button must POP - bright pink, impossible to miss */
.btn.bigcheck{font-size:.92em;padding:15px 22px;box-shadow:0 8px 24px rgba(255,0,143,.5),0 0 26px rgba(255,0,143,.35)}

/* big tick celebration when the grown-up approves */
.bigtick{position:fixed;inset:0;background:rgba(5,6,10,.72);z-index:80;display:flex;align-items:center;justify-content:center;pointer-events:none}
.bigtick svg{width:min(46vw,260px);height:auto;filter:drop-shadow(0 0 40px rgba(76,240,90,.7));animation:tickPop .7s cubic-bezier(.2,.8,.3,1.4)}
@keyframes tickPop{0%{transform:scale(0) rotate(-20deg)}70%{transform:scale(1.15) rotate(4deg)}100%{transform:scale(1)}}

/* step badge: makes the spell-then-write plan visible at a glance */
.stepbadge{display:inline-flex;align-items:center;gap:5px;background:rgba(49,174,249,.1);
 border:1px solid rgba(49,174,249,.4);color:var(--cyan);border-radius:99px;
 padding:5px 13px;font-size:.66em;margin-bottom:12px}
.stepbadge .ic svg{width:1.3em;height:1.3em}

/* cards: soft, floating, glowing - not boxes */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:18px 16px;
 box-shadow:0 14px 40px rgba(0,0,0,.45),0 0 32px rgba(49,174,249,.10)}
.card.pk{box-shadow:0 14px 40px rgba(0,0,0,.45),0 0 32px rgba(255,0,143,.14)}
.card.yl{box-shadow:0 14px 40px rgba(0,0,0,.45),0 0 32px rgba(232,232,28,.12)}
.card.gr{box-shadow:0 14px 40px rgba(0,0,0,.45),0 0 32px rgba(76,240,90,.14)}

/* Ace: free-standing, no box; his words float in a soft bubble beside him */
.ace{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.ace .av{width:78px;flex:none;filter:drop-shadow(0 8px 16px rgba(0,0,0,.55))}
.ace .av{position:relative}
.ace .av img{width:100%;height:auto;display:block;animation:aceIdle 2.6s ease-in-out infinite;transform-origin:50% 92%}
/* he blinks: the closed-eye frame sits on top and flashes for a moment */
.ace .av img.blink{position:absolute;inset:0;opacity:0;animation:aceIdle 2.6s ease-in-out infinite,aceBlink 5.4s infinite}
@keyframes aceBlink{0%,95.5%{opacity:0}96%,98.4%{opacity:1}98.9%,100%{opacity:0}}
/* speech bubble: the words come out of Ace, with a tail pointing back at him */
.bubble{position:relative;margin:0;font-size:.92em;line-height:1.5;background:#fff;color:#16233b;
 border:2.5px solid #1b2430;border-radius:16px;padding:12px 15px;
 box-shadow:0 8px 22px rgba(0,0,0,.45)}
.bubble::before,.bubble::after{content:'';position:absolute;left:-13px;top:26px;width:0;height:0;
 border:11px solid transparent;border-right-color:#1b2430;border-left:0}
.bubble::after{left:-9px;border-right-color:#fff}
.bubble b{display:block;color:#FF008F;font-family:"Press Start 2P","Courier New",monospace;
 font-size:.82em;letter-spacing:.08em;margin-bottom:7px;text-shadow:0 1px 0 rgba(0,0,0,.12)}
.ace p.legacy{
 border-radius:16px;border-bottom-left-radius:4px;padding:10px 13px;flex:1}
.ace .bubble b{color:#FF008F;letter-spacing:.08em;font-family:"Press Start 2P","Courier New",monospace}

/* buttons: rounded, punchy, pressable */
.btn{border:0;background:#1a1f33;color:#fff;padding:12px 16px;font-family:inherit;font-weight:700;cursor:pointer;
 text-transform:uppercase;letter-spacing:.07em;font-size:.8em;border-radius:var(--r-btn);
 box-shadow:0 6px 16px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.08);
 transition:transform .12s cubic-bezier(.2,.8,.3,1.4),box-shadow .12s}
.btn:active{transform:translateY(2px) scale(.97);box-shadow:0 2px 6px rgba(0,0,0,.4)}
.btn.cy{background:linear-gradient(160deg,var(--cyan),#1E8FD6);color:#04202e;box-shadow:0 6px 18px rgba(49,174,249,.35)}
.btn.pk{background:linear-gradient(160deg,var(--pink),#d61e56);color:#fff;box-shadow:0 6px 18px rgba(255,0,143,.35)}
.btn.yl{background:linear-gradient(160deg,var(--yel),#c9c918);color:#22220a;box-shadow:0 6px 18px rgba(232,232,28,.3)}
.btn.gr{background:linear-gradient(160deg,var(--grn),#22c93e);color:#04240a;box-shadow:0 6px 18px rgba(76,240,90,.35)}
.btn.sm{font-size:.7em;padding:9px 12px;min-height:44px}
.btn[aria-pressed=true]{outline:2px solid var(--yel);outline-offset:2px}
.ic{display:inline-flex;vertical-align:-3px;margin-right:2px}
.ic svg{width:1.1em;height:1.1em}
.row{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
.center{justify-content:center}.between{justify-content:space-between}

/* the word box: filled by ACE's own keys below it, never the system keyboard -
   no white overlay, no autocorrect changing a rough spelling attempt */
.typebox{flex:1;min-width:140px;min-height:52px;background:rgba(8,22,46,.72);border:1.5px solid rgba(49,174,249,.5);
 color:var(--yel);padding:12px 15px;font-family:"Courier New",monospace;font-weight:bold;font-size:1.15em;
 letter-spacing:.12em;border-radius:var(--r-btn);display:flex;align-items:center}
.typebox.empty{color:#5a637c;letter-spacing:.08em}
/* Caret sits at the START while the box is empty, so a kid can see exactly where
   their letters will land (owner's call). Once they are typing it follows the text. */
.typebox.empty::before,.typebox:not(.empty)::after{content:'';width:4px;height:1.25em;
 background:var(--cyan);flex:none;border-radius:1px;
 animation:caret 1.1s steps(1) infinite;box-shadow:0 0 10px rgba(49,174,249,.9)}
.typebox.empty::before{margin-right:8px}
.typebox:not(.empty)::after{margin-left:4px}
.typecue{text-align:center;color:var(--yel);font-size:.68em;margin:2px 0 8px;
 text-shadow:0 0 12px rgba(232,232,28,.5)}
@keyframes caret{50%{opacity:0}}
select,.pinput{background:rgba(0,0,0,.45);color:#fff;border:1px solid var(--line);padding:11px 12px;font-family:inherit;font-size:16px;width:100%;border-radius:10px;min-height:44px}

/* choices */
.choice{display:flex;align-items:center;gap:10px;background:rgba(0,0,0,.35);border:1px solid var(--line);
 border-radius:16px;padding:9px 10px;margin-top:10px;transition:box-shadow .2s}
.choice .w{flex:1;font-size:1.35em;font-weight:800;letter-spacing:.06em;color:var(--yel)}
.choice .hear{border:0;background:linear-gradient(160deg,var(--cyan),#1E8FD6);color:#04202e;padding:11px 13px;
 font-size:1em;cursor:pointer;font-family:inherit;font-weight:bold;border-radius:12px;box-shadow:0 4px 12px rgba(49,174,249,.3)}
.choice .pick{border:0;background:linear-gradient(160deg,var(--grn),#22c93e);color:#04240a;padding:11px 13px;cursor:pointer;
 font-family:inherit;font-weight:bold;font-size:.76em;text-transform:uppercase;border-radius:12px;box-shadow:0 4px 12px rgba(76,240,90,.3)}
.choice .hear svg{width:1.05em;height:1.05em;display:block}
.choice.playing{box-shadow:0 0 0 2px var(--yel),0 0 22px rgba(232,232,28,.4)}
.sent{color:var(--dim);font-size:.78em;margin:5px 0 0 8px}
/* dictionary meaning under the chosen word (ready screen) */
.wordmean{color:var(--dim);font-size:.86em;text-align:center;max-width:34em;margin:-4px auto 12px;
 font-family:system-ui,-apple-system,sans-serif;text-transform:none;letter-spacing:0}

/* sounds strip */
/* spell boxes */
.boxes{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:16px 0}
.bx{width:50px;height:60px;border:2px solid rgba(255,255,255,.14);background:rgba(0,0,0,.4);border-radius:14px;
 display:flex;align-items:center;justify-content:center;font-size:1.5em;font-weight:800;color:var(--yel);
 font-family:"Courier New",monospace;transition:border-color .2s,box-shadow .2s}
.bx.here{border-color:var(--yel);box-shadow:0 0 16px rgba(232,232,28,.4)}
.bx.got{background:linear-gradient(160deg,var(--grn),#22c93e);color:#04240a;border-color:transparent;box-shadow:0 0 14px rgba(76,240,90,.35)}
.bx.shake{animation:sh .34s}
@keyframes sh{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.keys{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.krow{display:flex;gap:5px;justify-content:center}
.krow1{padding:0 4.5%}
.key{border:0;background:#181d31;color:#fff;padding:13px 0;font-family:inherit;font-weight:700;font-size:1em;cursor:pointer;
 border-radius:12px;box-shadow:0 3px 8px rgba(0,0,0,.35);transition:transform .1s;flex:1;min-width:0}
.key.back{flex:1.6;font-size:1.05em}
.key:active{background:var(--cyan);color:#04202e;transform:scale(.93)}

.fb{min-height:24px;text-align:center;font-weight:700;margin-top:12px;font-size:.9em;letter-spacing:.04em}
.fb.good{color:var(--grn);text-shadow:0 0 12px rgba(76,240,90,.5)}.fb.soft{color:var(--pur)}

/* writing sheet: the calm paper exception */
.sheet{background:var(--sheet);border-radius:14px;padding:7px;margin-top:12px;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.sheet svg{display:block;width:100%;height:auto}
.dots{display:flex;gap:6px;justify-content:center;margin:12px 0 2px;flex-wrap:wrap}
.dot{min-width:44px;border:1.5px solid var(--line);background:rgba(0,0,0,.35);color:#fff;padding:9px 0;font-weight:700;
 font-size:1.05em;font-family:"Courier New",monospace;cursor:pointer;border-radius:12px;transition:all .15s}
.dot[aria-pressed=true]{border-color:var(--yel);background:rgba(232,232,28,.14);color:var(--yel);box-shadow:0 0 12px rgba(232,232,28,.3)}
.dot.done{background:linear-gradient(160deg,var(--grn),#22c93e);color:#04240a;border-color:transparent}
.stepinfo{text-align:center;color:var(--cyan);font-weight:bold;margin-top:10px;min-height:20px;font-size:.74em;letter-spacing:.1em}

/* sticker board: real earned stickers, slightly askew like a real sticker book */
/* a real pin board: cork, a timber frame, and a pin through every sticker */
.pinboard{margin-top:16px;border-radius:16px;padding:12px 13px 15px;
 background:#c98f4e;
 background-image:radial-gradient(circle at 20% 30%,rgba(0,0,0,.13) 1.5px,transparent 2px),
   radial-gradient(circle at 70% 65%,rgba(0,0,0,.11) 1.5px,transparent 2px),
   radial-gradient(circle at 45% 85%,rgba(255,255,255,.1) 1.5px,transparent 2px);
 background-size:17px 17px,23px 23px,29px 29px;
 border:5px solid #7a4a1d;box-shadow:0 10px 26px rgba(0,0,0,.5),inset 0 0 30px rgba(0,0,0,.25)}
.boardlabel{display:block;color:#5c3210;font-size:.62em;margin-bottom:9px;text-align:center}
.stickers{display:flex;gap:13px;flex-wrap:wrap;margin-top:4px;justify-content:center}
.stickers .stk{width:74px;height:74px;position:relative;filter:drop-shadow(0 4px 7px rgba(0,0,0,.45))}
.stickers .stk::before{content:'';position:absolute;top:-6px;left:50%;transform:translateX(-50%);
 width:10px;height:10px;border-radius:50%;z-index:2;
 background:radial-gradient(circle at 35% 30%,#fff,#FF008F 45%,#8d0050);
 box-shadow:0 2px 3px rgba(0,0,0,.5)}
.stickers .stk:nth-child(odd){transform:rotate(-7deg)}
.stickers .stk:nth-child(even){transform:rotate(6deg)}
.stickers .stk img{width:100%;height:100%;object-fit:contain;display:block}
@keyframes stkPop{0%{transform:scale(0) rotate(-30deg)}70%{transform:scale(1.25) rotate(8deg)}100%{transform:scale(1)}}
.stickers .stk.new{animation:stkPop .6s cubic-bezier(.2,.8,.3,1.3)}

/* reward unlocked: a proper celebration, not a toast */
.celebrate{position:fixed;inset:0;background:rgba(5,6,10,.82);z-index:70;display:flex;align-items:center;justify-content:center;padding:20px}
.celebrate .cbox{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:24px 20px;max-width:420px;width:100%;
 text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.6),0 0 40px rgba(232,232,28,.25)}
.celebrate h2{font-family:"Courier New",monospace;text-transform:uppercase;letter-spacing:.14em;color:var(--yel);
 margin:0 0 6px;font-size:1.5em;text-shadow:0 0 18px rgba(232,232,28,.6)}
.celebrate .rname{color:var(--cyan);font-weight:800;font-size:1.15em;margin:4px 0 10px}
.celebrate p{color:var(--ink);font-size:.92em;margin:0 0 14px}

/* "how many words have you beaten" - the number is the point, so it is huge */
.beaten{background:#fff;border:2px solid rgba(145,0,251,.35);border-radius:18px;
 padding:14px 16px;margin-top:16px;box-shadow:0 10px 26px rgba(0,0,0,.35)}
.beatentop{display:flex;align-items:center;gap:12px}
.beatenq{color:#7A00D4;font-size:.66em;line-height:1.6;flex:1}
.beatenn{font-family:"Press Start 2P","Courier New",monospace;font-size:2.1em;color:#9100FB;flex:none}
.chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.beaten .chip{background:rgba(145,0,251,.1);border-color:rgba(145,0,251,.45);color:#7A00D4}
.chip{border:1px solid var(--line);background:rgba(10,26,54,.75);color:var(--dim);padding:7px 13px;font-size:.8em;cursor:pointer;
 font-family:"Courier New",monospace;font-weight:bold;border-radius:99px;transition:all .15s}
.chip:active{color:var(--yel);border-color:var(--yel)}
.hidden{display:none}
.note{color:#565f78;font-size:.7em;text-align:center;margin-top:16px;letter-spacing:.06em}
.pop{position:fixed;left:50%;top:18%;transform:translateX(-50%);background:linear-gradient(160deg,var(--yel),#c9c918);color:#000;
 font-weight:bold;padding:13px 22px;border-radius:16px;z-index:60;box-shadow:0 14px 40px rgba(0,0,0,.5),0 0 30px rgba(232,232,28,.5);
 font-size:1em;font-family:"Courier New",monospace;text-transform:uppercase;letter-spacing:.1em}
.coin{position:fixed;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe66b,var(--yel) 60%,#d9a800);
 border:2px solid #8f8f11;z-index:59;pointer-events:none;display:flex;align-items:center;justify-content:center}
.coin::after{content:'★';font-size:11px;color:#8f8f11}
.confetti{position:fixed;width:10px;height:10px;border-radius:3px;z-index:59;pointer-events:none}
.bigword{font-size:2.3em;font-weight:800;text-align:center;letter-spacing:.12em;margin:12px 0;color:var(--yel);
 font-family:"Courier New",monospace;text-shadow:0 0 20px rgba(232,232,28,.5)}
/* grown-ups: a folder tab, so it reads as a separate drawer for adults, not
   another kid button. Solid brand colour, reversed-out text. */
.folder{margin-top:18px}
.foldertab{display:inline-flex;align-items:center;gap:7px;border:0;cursor:pointer;
 background:var(--aqua);color:#0e2a52;font-size:.68em;
 padding:11px 20px 12px;border-radius:14px 14px 0 0;position:relative;bottom:-2px;
 box-shadow:0 -3px 14px rgba(36,225,226,.45)}
.foldertab:active{filter:brightness(1.12)}
.drawer{background:var(--aqua) url(img/teal.png) center/cover no-repeat;
 border-radius:0 16px 16px 16px;padding:15px;color:#0e2a52;
 box-shadow:0 12px 30px rgba(0,0,0,.5)}
.drawerhead{font-size:.66em;color:#0e2a52;margin:0 0 6px;line-height:1.8}
.drawer label{display:block;font-size:.74em;color:#0e2a52;font-weight:700;margin:11px 0 4px;letter-spacing:.04em}
.drawer .pinput{background:#fff;border:2px solid rgba(0,0,0,.25);color:#16233b}
.drawer .btn.gr{background:linear-gradient(160deg,#9100FB,#6d00c2);color:#fff;
 box-shadow:0 6px 16px rgba(145,0,251,.45)}
.drawer .badgeopt[aria-pressed=true]{border-color:#7A00D4}
#addPlayer{border-radius:16px;margin-top:12px}
.parent{border:1.5px dashed rgba(255,255,255,.18);border-radius:16px;padding:12px;margin-top:12px}
.parent label{display:block;font-size:.72em;color:var(--dim);margin:9px 0 4px;letter-spacing:.06em}

/* Ace is alive: idle bob + blink always; he slides in, hops on wins, dances on a beaten
   word, and shuffles about on his own every few seconds */
@keyframes aceIdle{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes aceArrive{0%{transform:translateX(-46px) rotate(-8deg);opacity:0}
 60%{transform:translateX(6px) rotate(3deg);opacity:1}100%{transform:translateX(0) rotate(0)}}
.av.arrive img{animation:aceArrive .55s cubic-bezier(.2,.8,.3,1.2),aceIdle 2.6s .55s ease-in-out infinite}
@keyframes aceHop{0%{transform:translateY(0)}35%{transform:translateY(-11px) scale(1.07)}65%{transform:translateY(0) scaleY(.9)}100%{transform:scaleY(1)}}
.av.hop img{animation:aceHop .45s ease-out}
@keyframes aceDance{0%,100%{transform:rotate(0)}15%{transform:rotate(-9deg) translateY(-5px)}35%{transform:rotate(9deg)}55%{transform:rotate(-7deg) translateY(-4px)}75%{transform:rotate(7deg)}}
.av.dance img{animation:aceDance .8s ease-in-out 2}
@keyframes aceShuffle{0%,100%{transform:translateX(0)}25%{transform:translateX(7px) rotate(3deg)}50%{transform:translateX(-5px) rotate(-2deg)}75%{transform:translateX(3px)}}
.av.shuffle img{animation:aceShuffle .9s ease-in-out}
@keyframes lidBlink{0%,93%,100%{opacity:0}95%,98%{opacity:1}}
.av .lid{animation:lidBlink 4.3s infinite}
@media (prefers-reduced-motion:reduce){
 .ace .av img,body::before,body::after,.track i::after,.spark{animation:none!important}}

/* safety net: art dropped into a sized slot always fits it, never its natural size */
.rwcoin img,.spark img,.stickers .stk img,.playerbar .stk img,.profcard .stk img,
.badgeopt img,.ace .av img{max-width:100%;max-height:100%}

/* the owner's grown-up character (inspiration/Adult.png) marks anything aimed at,
   or pointing a child towards, an adult */
.adulticon{display:inline-block;vertical-align:middle;flex:none}
.adulticon img{display:block;width:100%;height:100%;object-fit:contain}
.foldertab .adulticon{width:40px;height:40px;margin:-11px 3px -11px -6px}
.btn .adulticon{width:34px;height:34px;margin:-9px 5px -9px -3px}
.fb .adulticon{width:44px;height:44px;margin-right:8px}
.fb.soft{display:flex;align-items:center;text-align:left}
.adultcue{display:flex;align-items:center;gap:10px}
.adultcue .adulticon{width:56px;height:56px}

/* Australian vs American spelling. A child doing Australian schoolwork has to be
   able to tell "diarrhoea" from "diarrhea" at a glance, so both are labelled and
   the Australian one is offered first. */
.dialect{display:inline-block;font-family:system-ui,-apple-system,sans-serif;
 font-size:.5em;font-weight:600;letter-spacing:.02em;text-transform:none;
 vertical-align:middle;margin-left:9px;padding:3px 9px;border-radius:99px;white-space:nowrap}
.dialect.au{background:rgba(76,240,90,.18);color:#7ff58a;border:1px solid rgba(76,240,90,.45)}
.dialect.us{background:rgba(255,255,255,.1);color:var(--dim);border:1px solid rgba(255,255,255,.2)}
.dialectbar{max-width:34em;margin:-2px auto 10px;padding:9px 14px;border-radius:12px;
 font-family:system-ui,-apple-system,sans-serif;font-size:.82em;text-align:center;
 text-transform:none;letter-spacing:0;line-height:1.5}
.dialectbar.au{background:rgba(76,240,90,.14);border:1px solid rgba(76,240,90,.4);color:#c9ffce}
.dialectbar.us{background:rgba(255,0,143,.14);border:1px solid rgba(255,0,143,.45);color:#ffd0e8}
.dialectbar b{color:#fff}

/* sound check: plain reading text, left-aligned tips */
.soundcheck .cbox p{font-family:system-ui,-apple-system,sans-serif;text-transform:none;letter-spacing:0}
.sctips{font-family:system-ui,-apple-system,sans-serif;text-transform:none;letter-spacing:0;
 text-align:left;font-size:.88em;line-height:1.6;background:rgba(0,0,0,.25);border-radius:12px;
 padding:12px 15px;margin-top:12px}
.sctips ul{margin:8px 0;padding-left:20px}
.sctips li{margin:6px 0}
.btn.big{font-size:1.05em;padding:15px 24px}
