@font-face{font-family:Fredoka;src:url(assets/fredoka.woff) format("woff");font-weight:300 700;font-display:swap}
:root{--pink:#ff8fb1;--pink2:#ffc2d6;--gold:#ffb703;--gold2:#ffd166;--leaf:#2a9d4b;--sky:#8fd3ff;--ink:#3b2a1a;--card:#fffdf8;--plum:#9d174d;--u:clamp(5px,min(.82vw,1.12vh),9px);--sh:0 6px 0 rgba(140,50,80,.16),0 10px 24px rgba(140,50,80,.14)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;position:fixed;inset:0;width:100%}
body{font-family:Fredoka,"Baloo 2",system-ui,sans-serif;color:var(--ink);background:linear-gradient(#cdeeff 0%,#fff0f4 52%,#ffe1ea 100%);touch-action:manipulation}
body:before{content:"";position:fixed;inset:auto 0 0 0;height:22vh;background:repeating-linear-gradient(90deg,#e6b47c 0 46px,#d9a46b 46px 50px);border-top:6px solid #b98049;opacity:.5;z-index:0}
body:after{content:"";position:fixed;top:-10vmin;right:-10vmin;width:36vmin;height:36vmin;border-radius:50%;background:radial-gradient(circle,#fff6c9 0 40%,#ffd23f 41% 58%,rgba(255,210,63,0) 72%);opacity:.8;z-index:0}
#app{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.bar{display:flex;align-items:center;gap:10px;padding:10px 14px}
.title{font-weight:700;font-size:clamp(20px,3vw,28px);color:var(--plum);flex:0 0 auto;letter-spacing:.3px}
.dots{flex:1;display:flex;justify-content:center;gap:10px}
.dots i{width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid var(--pink);transition:.35s}
.dots i.on{background:var(--pink);transform:scale(1.25)}
.dots i.done{background:var(--leaf);border-color:var(--leaf)}
.ibtn{width:54px;height:54px;border-radius:18px;border:0;background:#fff;color:var(--plum);box-shadow:var(--sh);display:grid;place-items:center;cursor:pointer;text-decoration:none;flex:0 0 auto}
.ibtn svg{width:30px;height:30px}.ibtn .slash{display:none}.ibtn[aria-pressed=true] .slash{display:block}
.ibtn:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(140,50,80,.2)}
.guide{display:flex;align-items:center;gap:12px;padding:0 16px;min-height:96px}
.guide img{width:88px;height:88px;border-radius:50%;border:5px solid #fff;box-shadow:var(--sh);background:#fff;flex:0 0 auto;transition:transform .3s}
.guide img.talk{animation:bob .6s ease-in-out infinite alternate}
@keyframes bob{to{transform:translateY(-4px) rotate(-3deg)}}
.bubble{background:#fff;border-radius:22px;padding:12px 20px;font-size:clamp(19px,2.5vw,26px);font-weight:500;box-shadow:var(--sh);position:relative;max-width:820px;line-height:1.25}
.bubble:before{content:"";position:absolute;left:-12px;top:50%;margin-top:-10px;border:10px solid transparent;border-right:14px solid #fff;border-left:0}
.guide.hide{visibility:hidden}
#stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;padding:10px 16px 18px;min-height:0}
.screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;animation:in .45s cubic-bezier(.2,.9,.3,1.2)}
.screen.out{animation:out .3s ease-in forwards}
@keyframes in{from{opacity:0;transform:translateY(24px) scale(.97)}}
@keyframes out{to{opacity:0;transform:translateY(-18px) scale(.98)}}
h1{margin:0;font-size:clamp(40px,7vw,72px);line-height:1;color:#d6336c;text-shadow:0 4px 0 #ffe08a,0 8px 18px rgba(160,40,80,.25);text-align:center}
h2{margin:0;font-size:clamp(24px,3.4vw,34px);color:var(--plum);text-align:center}
.sub{font-size:clamp(18px,2.4vw,24px);text-align:center;margin:0;color:#6b3a4a}
.hero{width:min(70vw,520px);aspect-ratio:16/9;border-radius:32px;background:url(assets/hero.jpg) center/cover;border:8px solid #fff;box-shadow:var(--sh);animation:float 3.5s ease-in-out infinite alternate}
@keyframes float{to{transform:translateY(-8px) rotate(.8deg)}}
.credits{font-size:16px;color:#8a4a5e}.credits a{color:#b5179e}
.btn{font:inherit;font-weight:700;font-size:clamp(24px,3.4vw,34px);border:0;border-radius:999px;padding:16px 46px;min-height:72px;background:linear-gradient(#ffcf4d,#ffa600);color:#5a2e00;box-shadow:0 7px 0 #c46f00,0 14px 24px rgba(160,80,0,.3);cursor:pointer;transition:transform .1s}
.btn:active{transform:translateY(5px);box-shadow:0 2px 0 #c46f00}
.btn.green{background:linear-gradient(#7fd66b,#2a9d4b);color:#fff;box-shadow:0 7px 0 #1c6e33,0 14px 24px rgba(20,90,40,.3)}
.btn.small{font-size:22px;padding:10px 26px;min-height:58px}
.row{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;align-items:center}
.card{background:var(--card);border-radius:26px;box-shadow:var(--sh);border:4px solid #fff;cursor:pointer;transition:transform .15s,box-shadow .15s,opacity .3s,background .3s;font-weight:600;color:var(--ink);font-family:inherit}
.card:active{transform:scale(.96)}
.card.sel,.cbtn.sel{outline:6px solid var(--gold);transform:scale(1.05)}
.card.good{background:#e3f8d8;border-color:var(--leaf)}
.shake{animation:shake .45s}
@keyframes shake{20%,60%{transform:translateX(-10px)}40%,80%{transform:translateX(10px)}}
.pop{animation:pop .4s}
@keyframes pop{50%{transform:scale(1.15)}}
/* coins */
.coin{display:block;width:calc(var(--mm)*var(--u));height:auto;aspect-ratio:1;filter:drop-shadow(0 5px 4px rgba(80,30,10,.35));pointer-events:none;-webkit-user-drag:none}
.cbtn{font:inherit;border:0;background:rgba(255,255,255,.6);border-radius:28px;padding:14px 14px 8px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;cursor:pointer;box-shadow:var(--sh);transition:transform .15s,background .3s,opacity .3s;color:var(--ink);min-width:110px;touch-action:none}
.cbtn:active{transform:scale(.95)}
.cbtn .lab{font-weight:700;font-size:clamp(18px,2.4vw,24px);line-height:1.1;text-align:center;min-height:1.1em}
.cbtn.hide-lab .lab{visibility:hidden}
.cbtn.good{background:#e3f8d8}
.cbtn.used{opacity:.3;pointer-events:none}
.coinrow{display:flex;gap:clamp(12px,2.4vw,30px);align-items:flex-end;justify-content:center;flex-wrap:wrap}
.ask{font-size:clamp(28px,4.4vw,46px);font-weight:700;color:var(--plum);background:#fff;border-radius:999px;padding:8px 34px;box-shadow:var(--sh);min-height:1.4em}
.ask b{color:#d6336c}
.vals{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}
.val{font-size:clamp(32px,5vw,52px);font-weight:700;min-width:130px;min-height:100px;padding:8px 22px;color:#b45309}
.val.good{color:var(--leaf)}
/* compare */
.vs{display:flex;align-items:center;justify-content:center;gap:clamp(16px,4vw,50px)}
.vs .cbtn{min-width:clamp(180px,24vw,260px);min-height:clamp(220px,30vh,290px);--u:clamp(7px,min(1.1vw,1.5vh),11px)}
.vs .or{font-size:clamp(26px,4vw,40px);font-weight:700;color:var(--plum)}
.qbig{font-size:clamp(26px,3.8vw,40px);font-weight:700;color:var(--plum);text-align:center}
.qbig b{color:#d6336c}
/* count */
.count{display:grid;grid-template-columns:1fr minmax(220px,32%);gap:20px;width:100%;max-width:1040px;align-items:center}
.pile{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:flex-end;min-height:180px;background:rgba(255,255,255,.45);border-radius:30px;padding:16px}
.pile .cbtn{min-width:0;padding:10px 10px 6px}
.tally{background:#fff;border-radius:30px;box-shadow:var(--sh);padding:16px;text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center}
.tally .big{font-size:clamp(56px,9vw,96px);font-weight:700;color:var(--leaf);line-height:1}
.tally .trail{font-size:clamp(20px,2.6vw,26px);font-weight:600;color:#6b3a4a;min-height:1.3em}
.tally .counted{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;min-height:60px;--u:2.6px;align-items:flex-end}
.choicebar{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}
.choicebar .val{min-width:150px}
/* store */
.store{display:grid;grid-template-columns:minmax(200px,30%) 1fr;grid-template-rows:auto auto;gap:16px 24px;width:100%;max-width:1060px;align-items:center}
.toy{padding:14px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:default;font-size:clamp(20px,2.6vw,26px)}
.toy svg{width:min(180px,80%);height:auto}
.tag{background:#fff3b0;border:3px dashed #e0a100;border-radius:14px;padding:4px 16px;font-size:clamp(28px,4vw,40px);font-weight:700;color:#8a4b12}
.bank{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;border-radius:30px;padding:8px;transition:.2s}
.bank.hot{background:rgba(255,255,255,.65);transform:scale(1.04)}
.bank svg{width:min(260px,100%);height:auto}
.paid{font-size:clamp(26px,3.6vw,38px);font-weight:700;color:var(--plum)}
.paid b{color:var(--leaf)}.paid.over b{color:#e8590c}
.inbank{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;min-height:72px;--u:3.4px;align-items:center}
.hint{font-size:16px;color:#8a4a5e;visibility:hidden}
.inbank button{border:0;background:none;padding:2px;cursor:pointer}
.purse{grid-column:1/-1;display:flex;gap:clamp(12px,2.4vw,28px);justify-content:center;align-items:flex-end;--u:clamp(5px,min(.7vw,.95vh),7.5px)}
.purse .cbtn{min-width:0;padding:10px 12px 6px}
.purse .cbtn.drag{position:fixed;z-index:50;pointer-events:none;transform:scale(1.08) rotate(-6deg);box-shadow:0 18px 30px rgba(0,0,0,.25);margin:0}
.storebtns{display:flex;gap:12px;justify-content:center}
.piles{display:grid;grid-template-columns:1fr 1fr;gap:22px;width:100%;max-width:960px}
.who{padding:14px;display:flex;flex-direction:column;align-items:center;gap:10px;min-height:220px;font-size:clamp(22px,2.8vw,28px)}
.who img.face{width:76px;height:76px;border-radius:50%;border:4px solid #fff;box-shadow:var(--sh)}
.who .coinrow{--u:clamp(3.4px,.5vw,5px);gap:8px}
.who .amt{font-size:clamp(26px,3.6vw,36px);font-weight:700;color:var(--leaf);min-height:1.2em}
/* finish */
.stars{display:flex;gap:10px}
.stars svg{width:min(15vw,100px);height:auto;opacity:.25;transform:scale(.6);transition:.5s cubic-bezier(.2,1.6,.4,1)}
.stars svg.on{opacity:1;transform:scale(1)}
.cert{width:min(92vw,620px);max-height:42vh;aspect-ratio:1.414;height:auto;border-radius:16px;box-shadow:var(--sh);background:#fff;object-fit:contain}
.namebox{font:inherit;font-size:24px;padding:10px 18px;border-radius:16px;border:3px solid var(--pink);min-height:58px;width:min(80vw,360px);text-align:center;-webkit-user-select:text;user-select:text;color:var(--ink)}
#fx{position:fixed;inset:0;pointer-events:none;z-index:60;overflow:hidden}
.spark{position:absolute;width:14px;height:14px;border-radius:4px;animation:spark .9s ease-out forwards}
@keyframes spark{to{transform:translate(var(--dx),var(--dy)) rotate(260deg) scale(.3);opacity:0}}
.ripple{position:absolute;width:20px;height:20px;margin:-10px;border-radius:50%;border:4px solid #fff;animation:rip .5s ease-out forwards}
@keyframes rip{to{transform:scale(5);opacity:0}}
.fly{position:fixed;z-index:55;pointer-events:none;transition:left .45s cubic-bezier(.3,.7,.4,1),top .45s cubic-bezier(.3,.7,.4,1),transform .45s,opacity .45s}
@media (orientation:portrait){
 :root{--u:clamp(5px,1.05vw,9px)}
 .count{grid-template-columns:1fr}.store{grid-template-columns:1fr 1fr}
 .vs{flex-direction:column;gap:10px}.vs .cbtn{min-height:0;min-width:min(70vw,340px);flex-direction:row;gap:20px;justify-content:center;padding:14px}
 .piles{grid-template-columns:1fr}.who{min-height:0}
 .purse{--u:clamp(5px,1.05vw,8px)}
 .screen>.coinrow{display:grid;grid-template-columns:repeat(2,auto);gap:20px 34px}
}
@media (max-height:700px) and (orientation:landscape){.guide{min-height:76px}.guide img{width:66px;height:66px}.hero{width:min(40vw,330px)}}
#printCert{display:none}
@media print{#app,#fx{display:none!important}#printCert{display:block}#printCert img{width:100%}body,html{position:static;background:#fff}body:before,body:after{display:none}}
