:root{--cream: #fff6e0;--sun: #f5a623;--sun-dark: #d98c12;--ink: #4a3b2a;--white: #ffffff;--shadow: rgba(74, 59, 42, .15);--shadow-soft: rgba(74, 59, 42, .1);--pill: rgba(255, 255, 255, .75);--card: rgba(255, 255, 255, .6);--card-radius: 40px;--tap-min: 64px;font-family:Fredoka,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}#app,.screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--cream);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}button{font-family:inherit;color:inherit;border:0;background:none;padding:0;margin:0;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;min-width:var(--tap-min);min-height:var(--tap-min);line-height:1}button:focus-visible{outline:4px solid var(--sun-dark);outline-offset:4px}.emoji{display:inline-block;vertical-align:-.18em;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.play{position:relative;width:min(48vmin,320px);height:min(48vmin,320px);min-width:200px;min-height:200px;border-radius:50%;background:var(--sun);box-shadow:inset 0 10px #ffffff47,0 12px 0 var(--sun-dark),0 18px 30px #4a3b2a40;font-size:min(24vmin,160px);display:flex;align-items:center;justify-content:center;transition:transform 80ms ease-out}.play:active{transform:translateY(6px) scale(.98);box-shadow:inset 0 10px #ffffff47,0 6px 0 var(--sun-dark),0 10px 18px #4a3b2a40}.jar{display:flex;align-items:center;gap:.3em;margin-top:6vmin;padding:.05em .5em .05em .35em;border-radius:999px;background:var(--pill);box-shadow:0 6px 0 var(--shadow-soft);font-size:min(10vmin,72px);font-weight:600;color:var(--ink)}.jar:active{transform:translateY(3px);box-shadow:0 3px 0 var(--shadow-soft)}.jar.clink{animation:wobble .4s ease-in-out}.mastered-badge{display:flex;align-items:center;gap:.25em;margin-top:2vmin;padding:0 18px;min-height:64px;font-size:min(6vmin,40px);font-weight:600;border-radius:999px;background:var(--pill);box-shadow:0 4px 0 var(--shadow-soft);color:var(--ink)}.mastered-badge.sparkle{animation:sparkle .5s ease-out}@keyframes sparkle{0%{transform:scale(1);filter:brightness(1)}40%{transform:scale(1.15) rotate(-6deg);filter:brightness(1.3)}70%{transform:scale(1.05) rotate(4deg)}to{transform:scale(1) rotate(0);filter:brightness(1)}}.gear{position:absolute;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));width:56px;height:56px;min-width:56px;min-height:56px;font-size:36px;opacity:.55;display:flex;align-items:center;justify-content:center}.gear.wobble{animation:wobble .4s ease-in-out}@keyframes wobble{0%{transform:rotate(0)}25%{transform:rotate(-20deg)}50%{transform:rotate(20deg)}75%{transform:rotate(-10deg)}to{transform:rotate(0)}}.back{position:absolute;top:calc(12px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));width:96px;height:96px;font-size:64px;display:flex;align-items:center;justify-content:center;border-radius:24px;background:var(--white);box-shadow:0 6px 0 var(--shadow)}.back:active{transform:translateY(3px);box-shadow:0 3px 0 var(--shadow)}.gear-icon{position:relative}.gear-ring{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--sun-dark);stroke-width:4;stroke-linecap:round;transform:rotate(-90deg);stroke-dasharray:157;stroke-dashoffset:157;opacity:0}.gear.holding{opacity:1}.gear.holding .gear-ring{opacity:1;animation:gear-fill linear forwards}@keyframes gear-fill{0%{stroke-dashoffset:157}to{stroke-dashoffset:0}}.empty-deck{display:flex;align-items:center;gap:4vmin;padding:5vmin 8vmin;border-radius:var(--card-radius);background:var(--white);box-shadow:0 10px 0 var(--shadow-soft);font-size:min(24vmin,160px)}.empty-deck:active{transform:translateY(4px) scale(.99);box-shadow:0 6px 0 var(--shadow-soft)}.empty-arrow{animation:nudge 1.2s ease-in-out infinite}@keyframes nudge{0%,to{transform:translate(0)}50%{transform:translate(12px,-12px)}}.parent{justify-content:flex-start;align-items:stretch;font-size:18px}.parent-header{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;padding:12px 96px 8px 124px;min-height:96px}.parent-header h1{margin:0;font-size:28px;font-weight:600}.parent-counts{opacity:.7}.parent-body button,.parent-tabs button{min-width:44px;min-height:44px}.parent-body input{font-family:inherit;font-size:20px;color:var(--ink);min-height:44px;border:2px solid rgba(74,59,42,.25);border-radius:12px;background:var(--white);padding:0 12px}.parent-body input:focus-visible{outline:3px solid var(--sun-dark);outline-offset:2px}.parent-body h2{margin:14px 0 6px;font-size:18px;font-weight:600;opacity:.75}.segmented{display:inline-flex;border-radius:14px;background:#4a3b2a1a;padding:3px;gap:3px}.segmented button{padding:0 16px;border-radius:11px;font-size:18px;font-weight:500;opacity:.75}.segmented button.on{background:var(--white);opacity:1;box-shadow:0 2px #4a3b2a26}.parent-tabs{margin-left:8px}.parent-body{flex:1;min-height:0;overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:0 16px 16px}.panel{max-width:720px;margin:0 auto}.jar-total{font-size:56px;font-weight:600;text-align:center;padding:8px 0 12px}.stepper{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 8px}.step-group{display:flex;gap:8px}.stepper button{width:64px;min-height:52px;height:52px;border-radius:12px;background:var(--white);font-size:20px;font-weight:600;box-shadow:0 3px #4a3b2a26}.stepper button:disabled{opacity:.35;box-shadow:none}.stepper input{width:96px;text-align:center;font-size:26px;font-weight:600;-moz-appearance:textfield;appearance:textfield}.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none}.stepper.small{justify-content:flex-start}.stepper-value{min-width:64px;text-align:center;font-size:22px;font-weight:600}.tokens-panel .note{display:block;width:100%;max-width:420px;margin:12px auto 0;box-sizing:border-box}.token-actions{display:flex;justify-content:center;gap:12px;margin-top:12px}.token-actions button{min-width:150px;height:56px;padding:0 20px;border-radius:16px;font-size:20px;font-weight:600;background:var(--white);box-shadow:0 4px #4a3b2a26}.token-actions .spend{background:var(--sun);box-shadow:0 4px 0 var(--sun-dark)}.token-actions button:disabled{opacity:.4;box-shadow:none}.token-actions button:active:not(:disabled){transform:translateY(2px)}.cap-hint{text-align:center;min-height:1.4em;font-size:15px;opacity:.7;margin-top:4px}.history{list-style:none;margin:12px 0 0;padding:2px 10px;border-radius:18px;background:var(--card)}.history-row:first-child{border-top:0}.history-row{display:grid;grid-template-columns:32px 1fr auto 64px;gap:10px;align-items:center;min-height:44px;padding:4px 8px;border-top:1px solid rgba(74,59,42,.1)}.history-empty{opacity:.7;padding:8px}.h-icon{font-size:20px}.h-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.h-day{font-size:15px;opacity:.6}.h-delta{text-align:right;font-weight:600}.history-row.spend .h-delta{color:#b3471d}.history-row.earned .h-delta,.history-row.adjust .h-delta{color:#3b8a3b}.last-session{margin-top:6px;padding:10px 14px 8px;border-radius:18px;background:var(--card)}.last-session h2{margin:0 0 4px}.last-counts{display:flex;gap:18px;font-size:20px;font-weight:500}.last-chips{padding-top:8px}.last-chips .chip{box-shadow:none;border-color:transparent;cursor:default}.chip.last-helped{background:#ffe0a3}.chip.last-slow{background:#fff3b0}.stuck{list-style:none;margin:0;padding:2px 10px;border-radius:18px;background:var(--card)}.stuck-row:first-child{border-top:0}.stuck-row{display:grid;grid-template-columns:24px 1fr auto auto;gap:12px;align-items:center;min-height:40px;padding:2px 8px;border-top:1px solid rgba(74,59,42,.1)}.stuck-word{font-size:22px;font-weight:500}.stuck-stat{font-size:16px;opacity:.75;min-width:64px}.box-dot{display:inline-block;width:18px;height:18px;border-radius:50%;border:2px solid rgba(74,59,42,.2);background:#eee}.chips{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:center;gap:10px;padding:4px 0 8px}.chip{display:inline-flex;align-items:center;gap:.3em;min-height:44px;padding:6px 14px;border-radius:999px;font-size:22px;font-weight:500;color:var(--ink);background:#eee;border:2px solid rgba(74,59,42,.12);box-shadow:0 2px 0 var(--shadow-soft);line-height:1.1}.chip.box-0,.box-dot.box-0{background:#ffd6d0}.chip.box-1,.box-dot.box-1{background:#ffe4bf}.chip.box-2,.box-dot.box-2{background:#fff3b0}.chip.box-3,.box-dot.box-3{background:#e4f5b8}.chip.box-4,.box-dot.box-4{background:#c6efc6}.chip.archived{opacity:.55}.chip-group{display:inline-flex;align-items:center;gap:6px}.chip-group.open .chip{outline:3px solid var(--sun-dark)}.chip-actions{display:inline-flex;gap:6px}.chip-actions button{padding:0 14px;border-radius:999px;font-size:17px;font-weight:600;background:var(--white);box-shadow:0 3px #4a3b2a26}.add-words{margin:4px 0 10px}.add-words-row{display:flex;gap:8px;max-width:480px}.add-words-row input{flex:1;min-width:0;min-height:52px}.add-words-row button{min-width:96px;height:52px;padding:0 18px;border-radius:12px;font-size:20px;font-weight:600;background:var(--sun);box-shadow:0 3px 0 var(--sun-dark);white-space:nowrap}.add-words-row button:disabled{opacity:.4;box-shadow:none}.add-words-row button:active:not(:disabled){transform:translateY(2px)}.add-hint{min-height:1.4em;font-size:15px;opacity:.7;padding:2px 4px 0}.chip-src{font-size:.65em;opacity:.75;margin-left:.15em}.deck-hint{margin:0 0 6px;padding:0 10px;font-size:17px;opacity:.6}.deck-caption{margin:-4px 0 4px;font-size:15px;opacity:.55}.chip .box-dot{width:14px;height:14px;margin-right:2px;border-color:#4a3b2a4d}.chip-due{font-size:14px;font-weight:500;opacity:.65;margin-left:4px;white-space:nowrap}.chip.hopper-chip{background:var(--white)}.chip-n{font-size:14px;font-weight:600;opacity:.5;min-width:1.2em;text-align:right}.chip.more{background:transparent;box-shadow:none;border-style:dashed;font-size:18px;opacity:.75}.archived-toggle{font-size:17px;opacity:.75;padding:0 8px}.chips.archived{opacity:.9}.settings-panel{padding-top:8px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:6px 14px;border-top:1px solid rgba(74,59,42,.1)}.setting-row:first-child{border-top:0}.settings-panel>.setting-row{background:var(--card)}.settings-panel>.setting-row:nth-of-type(1),.sync-block+.setting-row{border-top:0;border-radius:18px 18px 0 0}.settings-panel>.setting-row:last-child,.settings-panel>.setting-row:has(+.start-over){border-radius:0 0 18px 18px}.sync-block{padding:4px 14px 10px;border-radius:18px;background:var(--card)}.setting-label{font-size:20px}.setting-label small{display:block;font-size:13px;line-height:1.25;opacity:.7}.parent-empty{margin:8px 0;opacity:.8}.parent-footer{padding:8px 16px 12px;font-size:14px;opacity:.6;text-align:right}.session{justify-content:space-between;align-items:stretch;overflow:hidden}.session-top{position:relative;display:flex;align-items:center;justify-content:space-between;padding:8px 12px 0;min-height:72px}.progress{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:flex-end;gap:6px;max-width:max(120px,calc(100% - 380px));overflow:hidden;padding:4px;pointer-events:none}.dot{flex:none;box-sizing:border-box;width:clamp(10px,1.5vmin,12px);height:clamp(10px,1.5vmin,12px);border-radius:50%;border:2px solid rgba(74,59,42,.22);background:transparent}.dot.done{border-color:var(--sun);background:var(--sun)}.dot.now{border:2px solid var(--sun-dark);transform:scale(1.35)}.jar-mini{min-height:64px;display:flex;align-items:center;gap:.25em;font-size:clamp(28px,5vmin,44px);font-weight:600;padding:6px 18px 6px 14px;border-radius:999px;background:var(--pill);box-shadow:0 4px 0 var(--shadow-soft)}.jar-mini.clink{animation:wobble .4s ease-in-out}.end{width:64px;height:64px;font-size:28px;opacity:.5;border-radius:50%;display:flex;align-items:center;justify-content:center}.card-area{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:0 4vw 2vmin}.card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1vmin;box-sizing:border-box;max-width:100%;min-width:min(70vw,760px);min-height:min(42vmin,340px);padding:2.5vmin 4vw;border-radius:var(--card-radius);background:var(--white);box-shadow:0 12px 0 var(--shadow-soft),0 20px 40px #4a3b2a14}.card.enter{animation:card-in .26s ease-out}@keyframes card-in{0%{transform:translate(14vw);opacity:0}to{transform:translate(0);opacity:1}}.coins{display:flex;justify-content:center;gap:.12em;font-size:clamp(29px,5.1vmin,45px);opacity:.9;min-height:1.2em}.coins.spent{visibility:hidden}.word{font-weight:600;line-height:1.1;text-align:center;max-width:84vw;font-size:min(36vmin,260px,calc(112vw / var(--len, 5)));overflow-wrap:anywhere;letter-spacing:.01em}.hint{font-size:clamp(28px,6vmin,56px);min-height:1.2em;opacity:.8}.card.fb-helped .word{animation:word-wobble .6s ease-in-out}.card.fb-helped .hint{animation:hint-in .4s ease-out}@keyframes word-wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-3deg)}45%{transform:rotate(3deg)}70%{transform:rotate(-2deg)}}@keyframes hint-in{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:.8}}.word.bounce,.card.fb-quick .word,.card.fb-slow .word{animation:word-bounce .5s ease-out}@keyframes word-bounce{0%{transform:scale(1)}30%{transform:scale(1.08)}to{transform:scale(1)}}.fly{position:absolute;inset:0;pointer-events:none}.fly-coin{position:absolute;margin:-.5em 0 0 -.5em;line-height:1;width:1em;text-align:center;font-size:clamp(28px,6vmin,56px);animation:coin-fly .6s cubic-bezier(.2,.7,.3,1) forwards;animation-delay:calc(var(--i, 0) * 60ms);opacity:0}@keyframes coin-fly{0%{transform:translate(0) scale(1.4);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.6);opacity:.2}}.fly-spark{position:absolute;margin:-.5em 0 0 -.5em;line-height:1;width:1em;text-align:center;font-size:clamp(24px,5vmin,44px);animation:spark-fly .65s cubic-bezier(.2,.7,.3,1) forwards;animation-delay:calc(var(--i, 0) * 60ms);opacity:0}@keyframes spark-fly{0%{transform:translate(0) scale(.6) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.2) rotate(90deg);opacity:0}}.grade{display:flex;justify-content:center;gap:4vw;padding:8px 4vw calc(12px + env(safe-area-inset-bottom))}.grade-btn{flex:0 1 40%;min-width:160px;height:clamp(120px,22vh,200px);border-radius:32px;font-size:clamp(64px,12vh,110px);display:flex;align-items:center;justify-content:center;transition:transform 80ms ease-out}.grade-btn:active{transform:translateY(5px) scale(.98)}.grade-btn.got{background:#b8ebc0;box-shadow:0 10px #6fbf7d}.grade-btn.got:active{box-shadow:0 5px #6fbf7d}.grade-btn.helped{background:#ffe0a3;box-shadow:0 10px #e0a94a}.grade-btn.helped:active{box-shadow:0 5px #e0a94a}.results{overflow:hidden;gap:4vmin}.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-10vh;font-size:clamp(24px,5vmin,48px);animation:confetti-fall 2s ease-in forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}90%{opacity:1}to{transform:translateY(120vh) rotate(320deg);opacity:0}}.results-jar{display:flex;flex-direction:column;align-items:center;gap:1vmin}.results-jar-icon{font-size:min(34vmin,220px);line-height:1}.results-jar.full .results-jar-icon{animation:wobble .5s ease-in-out}.results-count{display:flex;align-items:center;gap:.25em;padding:0 .45em 0 .3em;border-radius:999px;background:var(--pill);box-shadow:0 6px 0 var(--shadow-soft);font-size:min(14vmin,96px);font-weight:600}.results-actions{display:flex;gap:6vw;padding-bottom:env(safe-area-inset-bottom)}.again,.home{width:clamp(120px,24vmin,200px);height:clamp(96px,20vmin,160px);border-radius:32px;font-size:clamp(56px,11vmin,96px);display:flex;align-items:center;justify-content:center;background:var(--white);box-shadow:0 8px 0 var(--shadow)}.again{background:var(--sun);box-shadow:0 8px 0 var(--sun-dark)}.again:active,.home:active{transform:translateY(4px);box-shadow:0 4px 0 var(--shadow)}.again:active{box-shadow:0 4px 0 var(--sun-dark)}.results-mastered{position:absolute;top:calc(14px + env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.25em;min-height:64px;padding:0 20px;border-radius:999px;background:var(--pill);font-size:clamp(28px,5vmin,40px);font-weight:600;box-shadow:0 4px 0 var(--shadow-soft)}.results-mastered.landed{animation:badge-land .6s ease-out}@keyframes badge-land{0%{transform:translate(-50%) scale(1)}40%{transform:translate(-50%) scale(1.18);filter:brightness(1.25)}to{transform:translate(-50%) scale(1)}}.stars{position:absolute;left:0;right:0;top:calc(50% - 20vmin);height:0;display:flex;align-items:center;justify-content:center;gap:3vmin;pointer-events:none}.star{display:inline-block;font-size:min(18vmin,128px);line-height:1;filter:drop-shadow(0 6px 10px rgba(217,140,18,.45));animation:star-pop .7s cubic-bezier(.2,1.4,.4,1) both,star-fly .8s cubic-bezier(.5,0,.8,.4) forwards;animation-delay:calc(var(--i, 0) * .28s),calc(var(--i, 0) * .28s + 1.4s)}@keyframes star-pop{0%{transform:scale(0) rotate(-30deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}@keyframes star-fly{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(.3);opacity:0}}@media (prefers-reduced-motion: reduce){.star,.results-mastered.landed,.fly-spark{animation:none}.fly-spark{opacity:0}.stars{position:static;height:auto;margin-top:-1vmin}.star{font-size:min(12vmin,96px)}.card.enter,.card.fb-helped .word,.word.bounce,.jar-mini.clink,.card.fb-quick .word,.card.fb-slow .word,.fly-coin,.mastered-badge.sparkle,.results-jar.full .results-jar-icon{animation:none}.fly-coin{opacity:0}.confetti-piece{display:none}}.password{gap:18px;padding:24px;text-align:center}.password h1{margin:0;font-size:40px;font-weight:600}.password-lead{margin:0;font-size:22px;max-width:28em;opacity:.85}.password-form{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(100%,460px)}.password .password-form{box-sizing:border-box;width:min(100%,520px);padding:24px 24px 12px;border-radius:28px;background:var(--card);box-shadow:0 8px 0 var(--shadow-soft)}.password-form input{font-family:inherit;font-size:26px;color:var(--ink);width:100%;box-sizing:border-box;min-height:64px;border:3px solid rgba(74,59,42,.25);border-radius:16px;background:var(--white);padding:0 18px;text-align:center;-webkit-user-select:text;user-select:text}.password-form input:focus-visible{outline:4px solid var(--sun-dark);outline-offset:2px}.password-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.password-actions button{min-width:170px;min-height:64px;padding:0 24px;border-radius:20px;font-size:24px;font-weight:600;background:var(--white);box-shadow:0 4px #4a3b2a26}.password-actions .connect{background:var(--sun);box-shadow:0 4px 0 var(--sun-dark)}.password-actions button:disabled{opacity:.45;box-shadow:none}.password-actions button:active:not(:disabled){transform:translateY(2px)}.password-hint{margin:-4px 0 0;min-height:1.25em;line-height:1.25;font-size:18px;opacity:.8}.sync-block{margin-bottom:10px}.sync-status{font-size:18px;opacity:.85}.sync-actions{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 10px}.sync-actions button{padding:0 16px;border-radius:12px;font-size:17px;font-weight:500;background:var(--white);box-shadow:0 3px #4a3b2a26}.sync-actions button:disabled{opacity:.4;box-shadow:none}.sync-actions .forget{opacity:.75}.start-over{margin-top:14px;padding:10px 14px 6px;border:2px solid rgba(200,60,50,.55);border-radius:18px;background:#c83c320d}.start-over button{min-height:44px;padding:0 16px;border-radius:12px;font-size:17px;font-weight:500;color:#aa281e;background:var(--white);box-shadow:0 3px #c83c3240}.start-over button.armed{color:var(--white);background:#c83c32;box-shadow:0 3px #8c1e14}.start-over p{margin:8px 0 4px;font-size:14px;line-height:1.3;opacity:.75}.sync-block .password-form{align-items:flex-start}.sync-block .password-form input{min-height:48px;font-size:20px;text-align:left}.sync-block .password-actions button{min-width:120px;min-height:48px;font-size:18px}
