: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;--tray-h: 132px;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);flex-shrink:0;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}.play.sticker-face{background:none;box-shadow:none;padding:4%;box-sizing:border-box;filter:drop-shadow(0 12px 0 var(--shadow-soft)) drop-shadow(0 18px 24px var(--shadow))}.play.sticker-face .emoji{display:block}.play.sticker-face:active{box-shadow:none;filter:drop-shadow(0 6px 0 var(--shadow-soft)) drop-shadow(0 10px 14px var(--shadow))}.jar-spot{position:relative;display:flex;flex-direction:column;align-items:center;margin-top:6vmin}.jar{display:flex;align-items:center;gap:.3em;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.full{animation:jar-full .5s ease-out}@keyframes jar-full{0%{transform:scale(1)}40%{transform:scale(1.12);filter:brightness(1.15)}to{transform:scale(1);filter:brightness(1)}}.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;z-index:4;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}.books-read{max-width:480px;margin:14px auto 0;padding:10px 12px;border-radius:18px;background:var(--card)}.books-read-row{display:flex;flex-wrap:wrap;gap:8px}.books-read-row input{flex:1 1 160px;min-width:0;min-height:52px}.books-read-row button{display:inline-flex;align-items:center;justify-content:center;gap:.35em;height:52px;padding:0 16px;border-radius:12px;font-size:18px;font-weight:600;background:var(--sun);box-shadow:0 3px 0 var(--sun-dark);white-space:nowrap}.books-read-row button:active{transform:translateY(2px)}.books-read-count{font-size:15px;opacity:.7;padding:6px 4px 0}.books-read-list{list-style:none;margin:4px 0 0;padding:0}.books-read-item{display:grid;grid-template-columns:1fr auto 44px;gap:10px;align-items:center;min-height:44px;border-top:1px solid rgba(74,59,42,.1)}.books-read-undo{width:44px;height:44px;border-radius:12px;font-size:20px;background:var(--white)}.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-note{margin:4px 0 0;font-size:15px;opacity:.75}.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 li:first-child .stuck-row{border-top:0}.stuck-row{display:grid;width:100%;grid-template-columns:24px 1fr auto auto;gap:12px;align-items:center;text-align:left;min-height:52px;padding:2px 8px;border-top:1px solid rgba(74,59,42,.1);border-radius:0}.stuck-row:active{background:#4a3b2a0f}.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-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}button.chip:active{transform:translateY(2px);box-shadow:none}.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}.chip.book-chip{min-height:64px;padding:8px 20px;background:var(--white)}.chip.book-chip.on{background:#fff3b0;border-color:var(--sun-dark)}.book-readiness{margin:0 0 6px;padding:0 4px;font-size:17px;opacity:.8}.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.resting-chip{background:#e6e2f7}.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}.sheet-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:#4a3b2a59;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.word-sheet{position:relative;width:100%;max-width:440px;max-height:calc(100% - 32px);overflow-y:auto;padding:20px 20px 24px;border-radius:24px;background:var(--card);box-shadow:0 6px 0 var(--shadow-soft);text-align:center}@media (min-width: 700px){.sheet-backdrop{align-items:center}}.sheet-close{position:absolute;top:8px;right:8px;width:52px;height:52px;border-radius:50%;font-size:24px;opacity:.6}.sheet-word{font-size:56px;font-weight:600;line-height:1.1;margin:24px 56px 4px;overflow-wrap:anywhere}.sheet-meta{font-size:16px;opacity:.65;margin-bottom:18px}.sheet-actions{display:flex;flex-direction:column;gap:10px}.word-sheet .sheet-btn{display:flex;align-items:center;gap:14px;min-height:64px;padding:0 20px;border-radius:18px;font-size:22px;font-weight:600;background:var(--white);box-shadow:0 3px #4a3b2a26;text-align:left}.sheet-btn:active{transform:translateY(2px);box-shadow:none}.sheet-icon{width:1.4em;font-size:24px;text-align:center}.sheet-btn.knows{background:#c6efc6}.sheet-btn.remove{background:#f0ebe4;opacity:.85}.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}.update-now{margin-left:12px;min-height:44px;padding:0 14px;border-radius:12px;font-weight:500;background:var(--white);box-shadow:0 3px #4a3b2a26}.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)}.bonus{flex:none;display:inline-flex;align-items:center;gap:2px;margin-left:8px;padding:2px 8px 2px 5px;border-radius:999px;border:2px solid rgba(74,59,42,.22);font-size:clamp(14px,2.4vmin,20px);font-weight:600;line-height:1;color:var(--ink);opacity:.45;transition:opacity .2s ease,background-color .2s ease}.bonus.lit{opacity:1;border-color:var(--sun-dark);background:var(--sun)}.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.5em;opacity:.8}.card.fb-quick .hint,.card.fb-slow .hint{opacity:1}.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}}.growth{display:inline-flex;align-items:center;gap:.15em;height:1.2em;padding:0 .4em 0 .25em;box-sizing:border-box;margin-top:.3em;border-radius:999px;background:#e2f5e5;box-shadow:0 3px #b5dfbc;color:#2f8a45;font-weight:700;font-size:1em;line-height:1;transform-origin:50% 100%;animation:grow-in .42s cubic-bezier(.2,1.5,.4,1) both}.growth.stage-read{padding-left:.4em}.growth .emoji{width:1em;height:1em;vertical-align:0}.growth.stage-4{animation-name:grow-in-star;animation-duration:.48s}.growth.stage-4 .emoji{filter:drop-shadow(0 2px 6px rgba(217,140,18,.5))}.growth-xp{display:inline-block;animation:xp-up .36s ease-out .12s both}@keyframes grow-in{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes grow-in-star{0%{transform:scale(.2) rotate(-25deg);opacity:0}70%{transform:scale(1.2) rotate(6deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes xp-up{0%{transform:translateY(.4em);opacity:0}to{transform:translateY(0);opacity:1}}.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}[data-screen=home]{overflow:hidden}.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}}.mastered-badge.landed{animation:badge-land .6s ease-out}@keyframes badge-land{0%{transform:scale(1)}40%{transform:scale(1.18);filter:brightness(1.25)}to{transform:scale(1)}}.stars{position:absolute;inset:0;z-index:1;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) * var(--stagger, .28s)),calc(var(--i, 0) * var(--stagger, .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}}.level-spot{display:flex;align-items:center;justify-content:center;gap:2vmin;margin-bottom:4vmin}@media (max-height: 500px){.play{width:36vmin;height:36vmin;min-width:120px;min-height:120px;font-size:18vmin}.level-spot{margin-bottom:2vmin}.jar-spot{margin-top:3vmin}}.level{display:flex;align-items:center;gap:.25em;min-height:64px;padding:.08em .5em .08em .35em;border-radius:999px;background:var(--pill);box-shadow:0 5px 0 var(--shadow-soft);font-size:min(8vmin,56px);font-weight:700;color:var(--ink)}.level-num{min-width:1.1em;text-align:center}.level-bar{position:relative;width:clamp(110px,20vmin,180px);height:.42em;margin-left:.1em;border-radius:999px;overflow:hidden;background:#4a3b2a1f}.level-fill{display:block;height:100%;border-radius:999px;background:#5cbf6d;box-shadow:inset 0 -3px #2f8a4559;transition:width .85s cubic-bezier(.3,.7,.3,1)}.level-fill.instant{transition:none}.level.pop{animation:level-pop .7s cubic-bezier(.2,1.4,.4,1)}.level.sparkle{animation:sparkle .5s ease-out}@keyframes level-pop{0%{transform:scale(1)}35%{transform:scale(1.35);filter:brightness(1.2) drop-shadow(0 0 12px rgba(245,166,35,.6))}to{transform:scale(1);filter:none}}.home-row{display:flex;align-items:center;justify-content:center;gap:3vmin;margin-top:2vmin}.home-row .mastered-badge{margin-top:0}@media (prefers-reduced-motion: reduce){.home-row .books-badge.sparkle{animation:glow .7s ease-out}}.book-card{display:flex;align-items:center;gap:.35em;min-height:64px;padding:0 18px;border-radius:999px;background:var(--pill);box-shadow:0 4px 0 var(--shadow-soft);font-size:min(6vmin,40px);font-weight:600;color:var(--ink)}.book-card.flip .emoji{animation:page-flip .5s ease-in-out}@keyframes page-flip{0%{transform:rotateY(0)}50%{transform:rotateY(180deg) scale(1.1)}to{transform:rotateY(360deg)}}.book-bar{display:flex;width:clamp(80px,14vmin,140px);height:.45em;border-radius:999px;overflow:hidden;background:#4a3b2a1f}.book-bar-ready{height:100%;background:var(--sun-dark)}.book-bar-learning{height:100%;background:#f5a62373}.book-ready{font-size:.7em}.album-button{display:flex;align-items:center;justify-content:center;min-height:64px;padding:.08em .3em;border-radius:999px;background:var(--pill);box-shadow:0 5px 0 var(--shadow-soft);font-size:min(8vmin,56px)}.album-button:active{transform:translateY(3px);box-shadow:0 2px 0 var(--shadow-soft)}.album-button.landed{animation:badge-land .6s ease-out}.new-sticker-spot{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none}.new-sticker{width:min(40vmin,280px);height:min(40vmin,280px);padding:min(4vmin,28px);box-sizing:border-box;border-radius:28%;background:var(--white);box-shadow:0 10px 0 var(--shadow-soft),0 0 0 min(1.4vmin,10px) #ffd666d9,0 0 60px 20px #ffd6668c;animation:sticker-pop .65s cubic-bezier(.2,1.4,.4,1) both,sticker-fly .75s cubic-bezier(.5,0,.8,.4) .9s forwards}.new-sticker .emoji{display:block}@keyframes sticker-pop{0%{transform:scale(0) rotate(-25deg);opacity:0}to{transform:scale(1) rotate(-4deg);opacity:1}}@keyframes sticker-fly{0%{transform:translate(0) scale(1) rotate(-4deg);opacity:1}to{transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(.18) rotate(8deg);opacity:.4}}.sticker-pick{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:16px;background:#4a3b2a59;animation:veil-in .3s ease-out both}.sticker-pick-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:min(5vmin,40px)}.sticker-pick-row.nudge{animation:wobble .4s ease-in-out}.sticker-offer{width:min(26vmin,220px);height:min(26vmin,220px);min-width:64px;min-height:64px;padding:min(3vmin,22px);box-sizing:border-box;border-radius:28%;background:var(--white);box-shadow:0 8px 0 var(--shadow-soft),0 0 0 min(1vmin,8px) #ffd666d9;animation:sticker-pop .55s cubic-bezier(.2,1.4,.4,1) both;animation-delay:calc(var(--i, 0) * .12s)}.sticker-offer .emoji{display:block}.sticker-offer:active{transform:translateY(4px) scale(.97)}@keyframes veil-in{0%{opacity:0}to{opacity:1}}.album{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding:calc(124px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));box-sizing:border-box}@media (max-height: 500px){.album{padding-top:calc(16px + env(safe-area-inset-top));padding-left:calc(124px + env(safe-area-inset-left))}}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(clamp(96px,17vmin,150px),1fr));gap:clamp(14px,3vmin,28px);max-width:1100px;margin:0 auto}.sticker{position:relative;aspect-ratio:1;width:100%;padding:14%;box-sizing:border-box;border-radius:28%;background:var(--white);box-shadow:0 6px 0 var(--shadow-soft);transform:rotate(var(--tilt, 0deg));touch-action:pan-y}.sticker .sticker-art{display:block}.sticker:active{transform:rotate(var(--tilt, 0deg)) translateY(3px);box-shadow:0 3px 0 var(--shadow-soft)}.sticker.boing{animation:sticker-boing .52s cubic-bezier(.2,1.4,.4,1)}@keyframes sticker-boing{0%{transform:rotate(var(--tilt, 0deg)) scale(1)}35%{transform:rotate(calc(var(--tilt, 0deg) - 10deg)) scale(1.22)}65%{transform:rotate(calc(var(--tilt, 0deg) + 6deg)) scale(1.08)}to{transform:rotate(var(--tilt, 0deg)) scale(1)}}.sticker.locked{background:#ffffff73;box-shadow:none;outline:4px dashed rgba(74,59,42,.2);outline-offset:-4px}.sticker.locked .sticker-art{filter:brightness(0);opacity:.13}.sticker-count{position:absolute;right:-6px;bottom:-6px;padding:4px 10px;border-radius:999px;background:var(--sun);color:var(--white);font-size:clamp(18px,3vmin,26px);font-weight:700;box-shadow:0 3px 0 var(--sun-dark)}@media (prefers-reduced-motion: reduce){.sticker.boing,.album-button.landed,.sticker-pick-row.nudge{animation:glow .7s ease-out}.sticker-pick,.sticker-offer{animation:none}}@keyframes glow{0%,to{filter:brightness(1)}40%{filter:brightness(1.25) drop-shadow(0 0 14px rgba(245,166,35,.8))}}.decorate-button{position:absolute;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));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)}.decorate-button:active{transform:translateY(3px);box-shadow:0 3px 0 var(--shadow)}.home-stickers{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.home-sticker{position:absolute;width:clamp(80px,13vmin,120px);height:clamp(80px,13vmin,120px);padding:clamp(10px,1.6vmin,15px);box-sizing:border-box;border-radius:28%;background:var(--white);box-shadow:0 5px 0 var(--shadow-soft);top:var(--y, 50%);transform:translate(-50%,-50%) rotate(var(--tilt, 0deg));pointer-events:auto}.home-sticker .emoji{display:block}.home-sticker.boing{animation:home-sticker-boing .52s cubic-bezier(.2,1.4,.4,1)}@keyframes home-sticker-boing{0%{transform:translate(-50%,-50%) rotate(var(--tilt, 0deg)) scale(1)}35%{transform:translate(-50%,-50%) rotate(calc(var(--tilt, 0deg) - 10deg)) scale(1.22)}65%{transform:translate(-50%,-50%) rotate(calc(var(--tilt, 0deg) + 6deg)) scale(1.08)}to{transform:translate(-50%,-50%) rotate(var(--tilt, 0deg)) scale(1)}}[data-decorating=true]>:is(.level-spot,.play,.jar-spot,.home-row){opacity:.25;pointer-events:none;transition:opacity .25s ease-out,transform .15s ease-out}[data-decorating=true]>.play.sticker-face{opacity:1}[data-decorating=true]>.play.drop-hover{opacity:1;transform:scale(1.1)}.play.boing{animation:sticker-boing .52s cubic-bezier(.2,1.4,.4,1)}.home-stickers.editing{z-index:2;pointer-events:auto}.home-stickers.editing .home-sticker{top:min(var(--y, 50%),calc(100% - var(--tray-h) - env(safe-area-inset-bottom) - clamp(40px,6.5vmin,60px)));touch-action:none;cursor:grab}.home-stickers.editing.dragging{z-index:3}.home-stickers.editing.dragging~.sticker-tray{z-index:2}.home-sticker.lifted{z-index:1;transform:translate(-50%,-50%) rotate(var(--tilt, 0deg)) scale(1.15);box-shadow:0 14px 0 var(--shadow-soft),0 18px 30px var(--shadow)}.sticker-tray{position:absolute;z-index:3;left:0;right:0;bottom:0;height:calc(var(--tray-h) + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:safe center;gap:clamp(12px,2.5vmin,22px);padding:16px calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));box-sizing:border-box;overflow-x:auto;background:#ffffffb3;box-shadow:0 -6px 0 var(--shadow-soft);border-radius:var(--card-radius) var(--card-radius) 0 0}.tray-sticker{position:relative;flex-shrink:0;width:100px;height:100px;padding:14px;box-sizing:border-box;border-radius:28%;background:var(--white);box-shadow:0 5px 0 var(--shadow-soft);touch-action:none}.tray-sticker .emoji{display:block}.tray-sticker.boing{animation:sticker-boing .52s cubic-bezier(.2,1.4,.4,1)}.decorate-done{position:absolute;z-index:3;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)}.decorate-done.boing{animation:wobble .4s ease-in-out}.decorate-done:active{transform:translateY(3px);box-shadow:0 3px 0 var(--shadow)}@media (prefers-reduced-motion: reduce){.home-sticker.boing,.tray-sticker.boing,.play.boing,.decorate-done.boing{animation:glow .7s ease-out}[data-decorating=true]>:is(.level-spot,.play,.jar-spot,.home-row){transition:none}}@media (prefers-reduced-motion: reduce){.star,.mastered-badge.landed,.jar.full,.book-card.flip .emoji,.fly-spark{animation:none}.fly-spark{opacity:0}.stars{position:static;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,.growth,.growth-xp,.level.pop,.level.sparkle,.level-fill{animation:none;transition: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}
