:root{--c-paper: #fffbf2;--c-paper-raised: #fffdf8;--c-ink: #33291c;--c-ink-rgb: 51 41 28;--c-ink-soft: #7a6a56;--c-sand-50: #fbf5e9;--c-sand-100: #f3eada;--c-sand-200: #e7dac5;--c-sand-300: #d6c6ac;--c-coral: #ff7a45;--c-coral-deep: #db693b;--c-grass: #5fcf4e;--c-grass-deep: #52b243;--c-rose: #ff5a7a;--c-rose-deep: #db4d69;--c-lemon: #ffd84d;--c-lemon-deep: #dbba42;--c-teal: #3fd0c9;--c-teal-deep: #36b3ad;--c-violet: #a78bfa;--c-violet-deep: #9078d7;--c-coral-wash: #ffe7d8;--c-grass-wash: #e2f6d9;--c-rose-wash: #ffe0e4;--c-lemon-wash: #fff3d2;--c-teal-wash: #d8f5f1;--c-violet-wash: #ece4fe;--bg: var(--c-paper);--ink: var(--c-ink);--muted: var(--c-ink-soft);--surface: var(--c-paper-raised);--surface-sunken: var(--c-sand-50);--hairline: var(--c-sand-200);--hairline-soft: var(--c-sand-100);--on-brand: var(--ink);--action: var(--c-coral);--action-deep: var(--c-coral-deep);--action-wash: var(--c-coral-wash);--good: var(--c-grass);--good-deep: var(--c-grass-deep);--good-wash: var(--c-grass-wash);--again: var(--c-rose);--again-deep: var(--c-rose-deep);--again-wash: var(--c-rose-wash);--spark: var(--c-lemon);--spark-deep: var(--c-lemon-deep);--spark-wash: var(--c-lemon-wash);--track-word: var(--c-teal);--track-word-deep: var(--c-teal-deep);--track-word-wash: var(--c-teal-wash);--track-pattern: var(--c-violet);--track-pattern-deep: var(--c-violet-deep);--track-pattern-wash: var(--c-violet-wash);--shade-neutral: var(--c-sand-300);--focus-ring: var(--c-coral);--grain: rgb(var(--c-ink-rgb) / .02);--chunk-depth: 3px;--chunk-shade: var(--shade-neutral);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--gap-xs: 6px;--gap-sm: 10px;--gap-md: 14px;--gap-lg: 20px;--gap-xl: 28px;--fs-xs: 12px;--fs-sm: 14px;--fs-md: 16px;--fs-lg: 19px;--fs-xl: 24px;--fs-2xl: 30px;--fs-3xl: 40px;--fs-display: 52px;--font-display: "Baloo 2", "Nunito", system-ui, "PingFang SC", "Microsoft YaHei", sans-serif;--font-ui: "Nunito", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--font-phonetic: system-ui, -apple-system, "Segoe UI", "Noto Sans", "Arial Unicode MS", sans-serif;--dur-press: .1s;--dur-state: .2s}.screen--kid{--chunk-depth: 5px;--radius-sm: 14px;--radius-md: 18px;--radius-lg: 24px;--gap-xs: 8px;--gap-sm: 12px;--gap-md: 18px;--gap-lg: 24px;--gap-xl: 34px;--fs-xs: 13px;--fs-sm: 15px;--fs-md: 18px;--fs-lg: 22px;--fs-xl: 28px;--fs-2xl: 34px;--fs-3xl: 44px;--fs-display: 56px}.screen--adult{--chunk-depth: 2px;--radius-sm: 8px;--radius-md: 11px;--radius-lg: 14px;--gap-xs: 4px;--gap-sm: 8px;--gap-md: 12px;--gap-lg: 16px;--gap-xl: 22px;--fs-xs: 11px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 30px;--fs-display: 36px}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/nunito-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122}@font-face{font-family:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/nunito-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+1E00-1E9F,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/baloo2-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/baloo2-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+1E00-1E9F,U+2C60-2C7F,U+A720-A7FF}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-md);background-image:repeating-linear-gradient(64deg,var(--grain) 0 1px,transparent 1px 4px),repeating-linear-gradient(-58deg,var(--grain) 0 1px,transparent 1px 5px);background-attachment:fixed;-webkit-font-smoothing:antialiased}.screen{max-width:560px;margin:0 auto;min-height:100dvh;padding:max(24px,env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.screen.center{align-items:center;justify-content:center;text-align:center;gap:var(--gap-xs)}.phonetic{font-family:var(--font-phonetic);letter-spacing:.01em;font-variant-ligatures:none}.chunk{box-shadow:0 var(--chunk-depth) 0 var(--chunk-shade);transition:transform .1s ease,box-shadow .1s ease,background-color .15s ease}.chunk:active:not(:disabled){transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--chunk-shade)}.chunk:disabled{opacity:.55}.chunk:focus-visible{outline:3px solid var(--action);outline-offset:3px}.btn{--chunk-shade: var(--btn-shade);display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:var(--btn-pad, 15px 20px);border:none;border-radius:var(--radius-md);background:var(--btn-bg);color:var(--btn-ink);font-family:var(--font-ui);font-size:var(--fs-md);font-weight:800;line-height:1.2;cursor:pointer;letter-spacing:.01em}.btn--action{--btn-bg: var(--action);--btn-shade: var(--action-deep);--btn-ink: var(--on-brand)}.btn--good{--btn-bg: var(--good);--btn-shade: var(--good-deep);--btn-ink: var(--on-brand)}.btn--again{--btn-bg: var(--again);--btn-shade: var(--again-deep);--btn-ink: var(--on-brand)}.btn--quiet{--btn-bg: var(--surface);--btn-shade: var(--shade-neutral);--btn-ink: var(--muted);border:2px solid var(--hairline)}.btn-text{background:none;border:none;padding:8px 6px;color:var(--action);font-family:var(--font-ui);font-size:var(--fs-md);font-weight:700;cursor:pointer;white-space:nowrap}.btn-text:active{opacity:.6}.card{--chunk-shade: var(--shade-neutral);background:var(--surface);border-radius:var(--radius-lg);padding:var(--card-pad, 18px)}.track-card{--chunk-shade: var(--track-deep);display:flex;align-items:center;gap:16px;width:100%;padding:20px 22px;border:none;border-radius:var(--radius-lg);background:var(--track);color:var(--on-brand);font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:800;text-align:left;cursor:pointer}.track-card--word{--track: var(--track-word);--track-deep: var(--track-word-deep)}.track-card--pattern{--track: var(--track-pattern);--track-deep: var(--track-pattern-deep)}.track-card-icon{font-size:1.6em;line-height:1;flex-shrink:0}.track-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.track-card-sub{font-size:var(--fs-sm);font-weight:700;opacity:.85}.chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px 11px;border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--muted);font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:800;white-space:nowrap}.chip--count{background:var(--again);color:var(--on-brand)}.chip--spark{background:var(--spark-wash);color:var(--ink)}.chip--word{background:var(--track-word-wash);color:var(--ink)}.chip--pattern{background:var(--track-pattern-wash);color:var(--ink)}.chip--on-dark{background:#ffffffeb;color:var(--track, var(--action))}.seg-btn{--chunk-shade: var(--shade-neutral);border:2px solid var(--hairline);background:var(--surface);color:var(--muted);border-radius:var(--radius-pill);padding:7px 15px;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:800;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.seg-btn.on{background:var(--action);border-color:var(--action);color:var(--on-brand)}.field{width:100%;padding:13px 15px;border:2px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-md);font-size:max(16px,var(--fs-md))}.field:focus{outline:none;border-color:var(--action);background:var(--surface)}.field::placeholder{color:var(--muted)}.field--sm{padding:9px 12px;font-size:var(--fs-sm)}.check{display:flex;align-items:center;gap:10px;font-family:var(--font-ui);font-size:var(--fs-md);color:var(--muted);cursor:pointer}.check input[type=checkbox]{width:22px;height:22px;flex-shrink:0;accent-color:var(--action)}.progress-track{height:var(--progress-h, 12px);background:var(--surface-sunken);border-radius:var(--radius-pill);overflow:hidden;box-shadow:inset 0 2px 0 var(--hairline)}.progress-fill{height:100%;background:var(--progress-color, var(--good));border-radius:var(--radius-pill);transition:width .35s cubic-bezier(.34,1.3,.64,1);box-shadow:inset 0 3px #ffffff52}.icon-btn{--chunk-shade: var(--shade-neutral);display:inline-flex;align-items:center;justify-content:center;width:var(--icon-btn-size, 40px);height:var(--icon-btn-size, 40px);border:none;border-radius:50%;background:var(--surface-sunken);color:var(--muted);font-size:calc(var(--icon-btn-size, 40px) * .45);line-height:1;cursor:pointer;flex-shrink:0}.icon-btn--lg{--icon-btn-size: 62px}.icon-btn--sm{--icon-btn-size: 32px}.small{font-size:var(--fs-sm)}.status{font-family:var(--font-ui);font-size:var(--fs-sm);color:var(--muted)}.status.bad{color:var(--again);font-weight:700}.quota-notice{display:flex;flex-direction:column;gap:3px;border-radius:var(--radius-md);padding:var(--gap-sm) var(--gap-md);background:var(--spark-wash);color:var(--ink);font-family:var(--font-ui);line-height:1.5;text-align:left}.quota-notice__title{font-size:var(--fs-sm);font-weight:800}.quota-notice__hint{font-size:var(--fs-xs);color:var(--muted)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}.topbar-title{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.topbar-spacer{width:44px;flex-shrink:0}.topbar-actions{display:flex;align-items:center;gap:4px}.spinner{width:44px;height:44px;border:5px solid var(--surface-sunken);border-top-color:var(--action);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:14px}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2s}.progress-fill{transition-duration:.01s}}.pet-mascot{display:block;max-width:100%;overflow:visible;flex:0 0 auto;pointer-events:none}.pet-mascot[data-stage="5"]{--pet-gear-primary: var(--action);--pet-gear-primary-deep: var(--action-deep);--pet-gear-secondary: var(--spark);--pet-gear-secondary-deep: var(--spark-deep);--pet-gear-aurora: var(--good)}.pet-mascot[data-stage="6"]{--pet-gear-primary: var(--track-word-wash);--pet-gear-primary-deep: var(--track-word-deep);--pet-gear-secondary: var(--spark);--pet-gear-secondary-deep: var(--spark-deep);--pet-gear-aurora: var(--track-word)}.pet-mascot[data-stage="7"]{--pet-gear-primary: var(--track-pattern);--pet-gear-primary-deep: var(--track-pattern-deep);--pet-gear-secondary: var(--spark);--pet-gear-secondary-deep: var(--spark-deep);--pet-gear-aurora: var(--action)}.pet-mascot[data-stage="8"]{--pet-gear-primary: var(--track-pattern);--pet-gear-primary-deep: var(--track-pattern-deep);--pet-gear-secondary: var(--spark);--pet-gear-secondary-deep: var(--spark-deep);--pet-gear-aurora: var(--good)}.pet-mascot__event,.pet-mascot__idle,.pet-mascot__antenna,.pet-mascot__eyes,.pet-mascot__prop,.pet-mascot__seed,.pet-mascot__growth-glow,.pet-mascot__scarf,.pet-mascot__confetti,.pet-mascot__satisfied,.pet-mascot__halo,.pet-mascot__sleep-cue,.pet-mascot__star-trail,.pet-mascot__late-star-trail,.pet-mascot__stage-gear,.pet-mascot__staff,.pet-mascot__staff-ring,.pet-mascot__pose-effect,.pet-mascot__map,.pet-mascot__scan,.pet-mascot__guard,.pet-mascot__magic,.pet-mascot__constellation,.pet-mascot__rally,.pet-mascot__arms,.pet-mascot__feet{transform-box:fill-box;transform-origin:center}.pet-mascot__event,.pet-mascot__idle{transform-origin:center bottom}.pet-mascot__bulb,.pet-mascot__belly-star,.pet-mascot__halo,.pet-mascot__staff-ring,.pet-mascot__pose-effect{filter:drop-shadow(0 0 3px var(--spark))}.pet-mascot[data-motion=home][data-action=none] .pet-mascot__idle{animation:pet-breathe 3.8s ease-in-out infinite}.pet-mascot[data-motion=home][data-action=none] .pet-mascot__eyes{animation:pet-blink 6.4s linear infinite}.pet-mascot[data-motion=home][data-action=none] .pet-mascot__antenna{animation:pet-antenna 5.6s ease-in-out infinite;transform-origin:center bottom}.pet-mascot[data-motion=study][data-action=none] .pet-mascot__idle{animation:pet-study-bob 3.2s ease-in-out infinite}.pet-mascot[data-motion=study][data-action=none] .pet-mascot__eyes{animation:pet-blink 5.4s linear infinite}.pet-mascot[data-motion=study][data-action=none] .pet-mascot__antenna{animation:pet-antenna 4.6s ease-in-out infinite;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=look] .pet-mascot__idle{animation:pet-look 1.05s ease-in-out both}.pet-mascot[data-action=none][data-pose=waddle] .pet-mascot__idle{animation:pet-waddle .48s ease-in-out infinite}.pet-mascot[data-action=none][data-pose=hop] .pet-mascot__event{animation:pet-scene-hop .86s cubic-bezier(.25,1.45,.45,1) both}.pet-mascot[data-action=none][data-pose=walk] .pet-mascot__idle{animation:pet-walk .46s ease-in-out infinite}.pet-mascot[data-action=none][data-pose=walk] .pet-mascot__feet,.pet-mascot[data-action=none][data-pose=run] .pet-mascot__feet{animation:pet-feet-step .28s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=wave] .pet-mascot__arms{animation:pet-wave .42s ease-in-out 3 alternate;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=run] .pet-mascot__idle{animation:pet-run .3s ease-in-out infinite}.pet-mascot[data-action=none][data-pose=run] .pet-mascot__scarf{animation:pet-scarf-run .32s ease-in-out infinite alternate;transform-origin:center left}.pet-mascot[data-action=none][data-pose=spin] .pet-mascot__event{animation:pet-spin .92s cubic-bezier(.3,.8,.35,1) both;transform-origin:center}.pet-mascot[data-action=none][data-pose=spin] .pet-mascot__scarf{animation:pet-scarf-spin .46s ease-in-out 2 alternate}.pet-mascot[data-action=none][data-pose=float] .pet-mascot__idle{animation:pet-float .82s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=celebrate] .pet-mascot__event{animation:pet-star-celebrate 1.12s cubic-bezier(.22,1.35,.42,1) both}.pet-mascot[data-action=none][data-pose=float] .pet-mascot__star-trail,.pet-mascot[data-action=none][data-pose=celebrate] .pet-mascot__star-trail{animation:pet-star-trail .72s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=scout] .pet-mascot__idle{animation:pet-scout .56s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=map] .pet-mascot__event{animation:pet-map-look 1.25s ease-in-out both}.pet-mascot[data-action=none][data-pose=map] .pet-mascot__map{animation:pet-map-open .72s cubic-bezier(.22,1.25,.4,1) both}.pet-mascot[data-action=none][data-pose=scan] .pet-mascot__scan{animation:pet-scan-ring 1.15s ease-in-out infinite}.pet-mascot[data-action=none][data-pose=scan] .pet-mascot__stage-gear--explorer{animation:pet-goggles-scan .46s ease-in-out 2 alternate}.pet-mascot[data-action=none][data-pose=patrol] .pet-mascot__idle{animation:pet-patrol .42s ease-in-out infinite}.pet-mascot[data-action=none][data-pose=patrol] .pet-mascot__feet{animation:pet-feet-step .24s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=guard] .pet-mascot__guard{animation:pet-guard-shield 1.25s ease-out both}.pet-mascot[data-action=none][data-pose=salute] .pet-mascot__arms{animation:pet-salute .4s ease-in-out 3 alternate;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=staff-glide] .pet-mascot__idle{animation:pet-staff-glide .76s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=staff-glide] .pet-mascot__staff{animation:pet-staff-lean .76s ease-in-out infinite alternate;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=cast] .pet-mascot__staff{animation:pet-staff-cast 1.15s cubic-bezier(.22,1.25,.4,1) both;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=cast] .pet-mascot__magic{animation:pet-magic-bloom 1.25s ease-out both}.pet-mascot[data-action=none][data-pose=staff-spin] .pet-mascot__staff{animation:pet-staff-spin 1.15s ease-in-out both;transform-origin:center bottom}.pet-mascot[data-action=none][data-pose=staff-spin] .pet-mascot__magic{animation:pet-magic-orbit 1.15s ease-in-out both}.pet-mascot[data-action=none][data-pose=starflight] .pet-mascot__idle{animation:pet-starflight .68s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=starflight] .pet-mascot__stage-gear--back{animation:pet-cape-flight .34s ease-in-out infinite alternate;transform-origin:right center}.pet-mascot[data-action=none][data-pose=staff-glide] .pet-mascot__late-star-trail,.pet-mascot[data-action=none][data-pose=starflight] .pet-mascot__late-star-trail{animation:pet-late-star-trail .62s ease-in-out infinite alternate}.pet-mascot[data-action=none][data-pose=constellation] .pet-mascot__constellation{animation:pet-constellation-draw 1.4s ease-out both}.pet-mascot[data-action=none][data-pose=rally] .pet-mascot__event{animation:pet-rally-bounce 1.25s cubic-bezier(.22,1.3,.42,1) both}.pet-mascot[data-action=none][data-pose=rally] .pet-mascot__rally{animation:pet-rally-ring 1.25s ease-out both}.pet-mascot[data-action=none][data-pose=doze] .pet-mascot__idle{animation:pet-doze 1.8s ease-in-out infinite}.pet-mascot[data-action=correct] .pet-mascot__event{animation:pet-hop .62s cubic-bezier(.25,1.5,.5,1)}.pet-mascot[data-action=retry] .pet-mascot__event{animation:pet-reassure .52s ease-in-out}.pet-mascot[data-action=eat] .pet-mascot__event,.pet-mascot[data-action=drink] .pet-mascot__event{animation:pet-care-bounce .9s cubic-bezier(.25,1.35,.45,1)}.pet-mascot[data-action=eat] .pet-mascot__spoon{animation:pet-spoon .32s ease-in-out 2 alternate;transform-origin:right bottom}.pet-mascot[data-action=drink] .pet-mascot__prop--water{animation:pet-sip .42s ease-in-out 2 alternate;transform-origin:left bottom}.pet-mascot[data-action=drink] .pet-mascot__water-drop{animation:pet-drop .72s ease-in both}.pet-mascot[data-action=satisfied] .pet-mascot__event{animation:pet-satisfied-bounce .95s cubic-bezier(.22,1.35,.45,1)}.pet-mascot[data-action=satisfied] .pet-mascot__satisfied{animation:pet-spark-in .7s ease-out both}.pet-mascot[data-action=energy] .pet-mascot__event{animation:pet-energy-bounce 1.1s cubic-bezier(.2,1.35,.4,1)}.pet-mascot[data-action=energy] .pet-mascot__seed,.pet-mascot[data-action=grow] .pet-mascot__seed{animation:pet-seed-orbit .8s ease-in-out both}.pet-mascot[data-action=energy] .pet-mascot__seed--two,.pet-mascot[data-action=grow] .pet-mascot__seed--two{animation-delay:.08s}.pet-mascot[data-action=energy] .pet-mascot__seed--three,.pet-mascot[data-action=grow] .pet-mascot__seed--three{animation-delay:.16s}.pet-mascot[data-action=grow] .pet-mascot__event{animation:pet-grow 1.55s cubic-bezier(.22,.9,.32,1.2)}.pet-mascot[data-action=grow] .pet-mascot__growth-glow{animation:pet-growth-glow 1.35s ease-in-out both}.pet-mascot[data-action=grow] .pet-mascot__scarf,.pet-mascot[data-action=grow] .pet-mascot__belly-star,.pet-mascot[data-action=grow] .pet-mascot__halo,.pet-mascot[data-action=grow] .pet-mascot__stage-gear{animation:pet-milestone-in .55s cubic-bezier(.2,1.5,.4,1) .78s both}.pet-mascot[data-action=correct] .pet-mascot__confetti{animation:pet-spark-in .48s ease-out both}.pet-mascot[data-action=sleep] .pet-mascot__bulb,.pet-mascot[data-mood=sleepy] .pet-mascot__bulb{filter:none;opacity:.62}@keyframes pet-breathe{0%,to{transform:scale(1)}50%{transform:translateY(-1.5px) scale(1.025,1.045)}}@keyframes pet-study-bob{0%,to{transform:translateY(0) rotate(-.8deg)}50%{transform:translateY(-2px) rotate(1.2deg) scale(1.015)}}@keyframes pet-look{0%,to{transform:rotate(0) translateY(0)}35%{transform:rotate(-4deg) translateY(-2px)}70%{transform:rotate(3deg) translateY(-1px)}}@keyframes pet-waddle{0%,to{transform:rotate(-4deg) translateY(0) scale(1.01,.99)}50%{transform:rotate(4deg) translateY(-3px) scale(.99,1.02)}}@keyframes pet-scene-hop{0%,to{transform:translateY(0) scale(1)}38%{transform:translateY(-17px) scale(1.05,.94)}72%{transform:translateY(2px) scale(.96,1.05)}}@keyframes pet-walk{0%,to{transform:translateY(0) rotate(-1.8deg)}50%{transform:translateY(-4px) rotate(1.8deg)}}@keyframes pet-feet-step{0%{transform:skew(-8deg) translate(-1px)}to{transform:skew(8deg) translate(1px)}}@keyframes pet-wave{0%{transform:rotate(-3deg)}to{transform:rotate(7deg) translateY(-2px)}}@keyframes pet-run{0%,to{transform:translateY(1px) rotate(-2.5deg) scale(1.025,.975)}50%{transform:translateY(-6px) rotate(2.5deg) scale(.98,1.035)}}@keyframes pet-scarf-run{0%{transform:rotate(-3deg) skew(-4deg)}to{transform:rotate(6deg) skew(7deg)}}@keyframes pet-spin{0%{transform:translateY(0) rotate(0) scale(1)}45%{transform:translateY(-9px) rotate(190deg) scale(.92,1.06)}82%{transform:translateY(-2px) rotate(360deg) scale(1.04,.97)}to{transform:translateY(0) rotate(360deg) scale(1)}}@keyframes pet-scarf-spin{0%{transform:rotate(-8deg) scaleX(.92)}to{transform:rotate(12deg) scaleX(1.08)}}@keyframes pet-float{0%{transform:translateY(1px) rotate(-2deg)}to{transform:translateY(-9px) rotate(2deg) scale(1.025)}}@keyframes pet-star-celebrate{0%,to{transform:translateY(0) scale(1) rotate(0)}38%{transform:translateY(-16px) scale(1.08,.94) rotate(-5deg)}68%{transform:translateY(-6px) scale(.98,1.05) rotate(4deg)}}@keyframes pet-star-trail{0%{opacity:.35;transform:translate(7px,3px) scale(.75)}to{opacity:1;transform:translate(-4px,-5px) scale(1.08)}}@keyframes pet-scout{0%{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-5px) rotate(3deg) scale(1.015)}}@keyframes pet-map-look{0%,to{transform:rotate(0) translateY(0)}45%{transform:rotate(-3deg) translateY(2px)}}@keyframes pet-map-open{0%{opacity:0;transform:scaleX(.25) translateY(8px)}to{opacity:1;transform:scaleX(1) translateY(0)}}@keyframes pet-scan-ring{0%,to{opacity:.2;transform:scale(.72)}50%{opacity:1;transform:scale(1.08)}}@keyframes pet-goggles-scan{0%{transform:translateY(0)}to{transform:translateY(-2px) scale(1.025)}}@keyframes pet-patrol{0%,to{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-4px) rotate(1.5deg)}}@keyframes pet-guard-shield{0%{opacity:0;transform:scale(.58)}55%{opacity:1;transform:scale(1.06)}to{opacity:.86;transform:scale(1)}}@keyframes pet-salute{0%{transform:rotate(-3deg)}to{transform:rotate(5deg) translateY(-2px)}}@keyframes pet-staff-glide{0%{transform:translateY(1px) rotate(-3deg)}to{transform:translateY(-8px) rotate(2deg) scale(1.02)}}@keyframes pet-staff-lean{0%{transform:rotate(-3deg)}to{transform:rotate(4deg) translateY(-2px)}}@keyframes pet-staff-cast{0%,to{transform:rotate(0)}42%{transform:rotate(-18deg) translateY(-6px)}72%{transform:rotate(7deg) translateY(-2px)}}@keyframes pet-magic-bloom{0%{opacity:0;transform:scale(.35) rotate(-25deg)}60%{opacity:1;transform:scale(1.16) rotate(8deg)}to{opacity:.92;transform:scale(1) rotate(0)}}@keyframes pet-staff-spin{0%,to{transform:rotate(0)}50%{transform:rotate(38deg) translateY(-5px)}}@keyframes pet-magic-orbit{0%{opacity:0;transform:rotate(-35deg) scale(.65)}55%{opacity:1;transform:rotate(190deg) scale(1.1)}to{opacity:.8;transform:rotate(360deg) scale(1)}}@keyframes pet-starflight{0%{transform:translate(-1px,1px) rotate(-3deg)}to{transform:translate(5px,-10px) rotate(3deg) scale(1.025)}}@keyframes pet-cape-flight{0%{transform:skewY(-4deg) scaleX(.96)}to{transform:skewY(6deg) scaleX(1.05)}}@keyframes pet-late-star-trail{0%{opacity:.28;transform:translate(9px,3px) scale(.72)}to{opacity:1;transform:translate(-5px,-4px) scale(1.08)}}@keyframes pet-constellation-draw{0%{opacity:0;transform:scale(.55);stroke-dashoffset:40}70%{opacity:1;transform:scale(1.08);stroke-dashoffset:0}to{opacity:.94;transform:scale(1)}}@keyframes pet-rally-bounce{0%,to{transform:translateY(0) scale(1)}38%{transform:translateY(-14px) scale(1.07,.95)}70%{transform:translateY(-3px) scale(.98,1.04)}}@keyframes pet-rally-ring{0%{opacity:0;transform:scale(.45)}65%{opacity:1;transform:scale(1.08)}to{opacity:.65;transform:scale(1)}}@keyframes pet-doze{0%,to{transform:translateY(2px) scale(1.025,.975)}50%{transform:translateY(3px) scale(1.04,.955)}}@keyframes pet-blink{0%,46%,50%,to{transform:scaleY(1)}48%{transform:scaleY(.12)}}@keyframes pet-antenna{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(2.5deg)}}@keyframes pet-hop{0%,to{transform:translateY(0) scale(1)}38%{transform:translateY(-10px) scale(1.04,.97)}68%{transform:translateY(1px) scale(.98,1.03)}}@keyframes pet-reassure{0%,to{transform:rotate(0)}28%{transform:rotate(-3deg)}68%{transform:rotate(2deg)}}@keyframes pet-care-bounce{0%,to{transform:translateY(0) scale(1)}24%{transform:translateY(-4px) scale(1.03,.98)}55%{transform:translateY(1px) scale(.98,1.03)}78%{transform:translateY(-2px) scale(1.01)}}@keyframes pet-spoon{0%{transform:rotate(-8deg)}to{transform:rotate(14deg) translate(-2px,-2px)}}@keyframes pet-sip{0%{transform:rotate(0)}to{transform:rotate(-9deg) translate(-2px,-4px)}}@keyframes pet-drop{0%{opacity:0;transform:translateY(-7px) scale(.7)}45%{opacity:1}to{opacity:0;transform:translateY(7px) scale(.9)}}@keyframes pet-satisfied-bounce{0%,to{transform:translateY(0)}45%{transform:translateY(-5px) scale(1.025)}}@keyframes pet-energy-bounce{0%,to{transform:translateY(0) scale(1)}35%{transform:translateY(-8px) scale(1.045,.97)}70%{transform:translateY(1px) scale(.98,1.025)}}@keyframes pet-seed-orbit{0%{opacity:0;transform:rotate(-35deg) translate(8px) scale(.45)}38%{opacity:1;transform:rotate(10deg) translate(0) scale(1.15)}to{opacity:0;transform:translate(20px,-28px) scale(.35)}}@keyframes pet-grow{0%,to{transform:translateY(0) scale(1)}18%{transform:translateY(2px) scale(1.04,.95)}52%{transform:translateY(-8px) scale(.95,1.12);filter:brightness(1.08)}78%{transform:translateY(-3px) scale(1.04,1.02)}}@keyframes pet-growth-glow{0%,to{opacity:0;transform:scale(.7)}35%,70%{opacity:.78;transform:scale(1.08)}}@keyframes pet-milestone-in{0%{opacity:0;transform:scale(.4) rotate(-8deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes pet-spark-in{0%{opacity:0;transform:scale(.45) rotate(-10deg)}55%{opacity:1;transform:scale(1.18) rotate(4deg)}to{opacity:.9;transform:scale(1) rotate(0)}}.pet-care{width:min(100%,430px)}.pet-care__button{--chunk-shade: var(--action-deep);width:100%;min-height:96px;display:grid;grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:var(--gap-sm);border:2px solid var(--action-deep);border-radius:var(--radius-lg);padding:var(--gap-sm) var(--gap-md);color:var(--on-brand);background:var(--action-wash);font:inherit;text-align:left;cursor:pointer}.pet-care__button--water{--chunk-shade: var(--track-word-deep);border-color:var(--track-word-deep);background:var(--track-word-wash)}.pet-care__button:focus-visible{outline:4px solid var(--focus-ring);outline-offset:3px}.pet-care__button:disabled{cursor:wait;opacity:.68}.pet-care__item{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:var(--surface);box-shadow:inset 0 -3px 0 var(--hairline)}.pet-care__item svg{width:62px;height:58px;overflow:visible}.pet-care__food-top,.pet-care__food-bowl{fill:var(--action);stroke:var(--action-deep);stroke-width:2}.pet-care__food-fill,.pet-care__spoon{fill:var(--spark-deep)}.pet-care__spoon-stem{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round}.pet-care__cup,.pet-care__cup-rim{fill:var(--surface);stroke:var(--track-word-deep);stroke-width:2.5}.pet-care__water,.pet-care__drop{fill:var(--track-word)}.pet-care__copy{min-width:0;display:flex;flex-direction:column;gap:2px}.pet-care__copy strong{font-family:var(--font-display);font-size:var(--fs-lg);line-height:1.15}.pet-care__copy span{color:var(--muted);font-size:var(--fs-sm);line-height:1.35}.pet-care__arrow{font-family:var(--font-display);font-size:var(--fs-2xl);line-height:1}.pet-care__status{min-height:1.35em;margin:var(--gap-xs) 0 0;color:var(--again-deep);font-size:var(--fs-sm);font-weight:700;text-align:center}.pet-stage{width:min(100%,520px);padding:var(--gap-md);border:2px solid var(--hairline);border-radius:var(--radius-lg);background:var(--surface)}.pet-stage__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm)}.pet-stage__heading>div{min-width:0;display:flex;flex-direction:column}.pet-stage__eyebrow{color:var(--muted);font-size:var(--fs-xs);font-weight:800}.pet-stage__name{font-family:var(--font-display);font-size:var(--fs-xl);line-height:1.1}.pet-stage__active-form{margin-top:2px;color:var(--muted);font-size:var(--fs-xs);font-weight:700}.pet-stage__energy{flex:0 0 auto;padding:var(--gap-xs) var(--gap-sm);border-radius:var(--radius-pill);background:var(--spark-wash);color:var(--ink);font-size:var(--fs-sm);font-weight:800}.pet-stage__rail{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-xs);margin:var(--gap-md) 0;padding:0;list-style:none}.pet-growth-celebration{width:min(100%,520px);padding:var(--gap-md);border:2px solid var(--spark-deep);border-radius:var(--radius-lg);background:var(--spark-wash);color:var(--ink);text-align:center;box-shadow:0 var(--chunk-depth) 0 var(--spark-deep)}.pet-growth-celebration>strong{font-family:var(--font-display);font-size:var(--fs-lg)}.pet-growth-celebration ol{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--gap-sm);margin:var(--gap-sm) 0 0;padding:0;list-style:none}.pet-growth-celebration__stage{min-width:96px;display:grid;justify-items:center;gap:2px;padding:var(--gap-sm);border:2px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);animation:pet-growth-badge .52s cubic-bezier(.34,1.56,.64,1) both;animation-delay:calc(var(--growth-index) * .14s)}.pet-growth-celebration__stage>span{font-size:28px;line-height:1}.pet-growth-celebration__stage small{color:var(--muted);font-size:var(--fs-xs);font-weight:800}.pet-growth-celebration__stage b{font-size:var(--fs-sm)}@keyframes pet-growth-badge{0%{opacity:0;transform:translateY(8px) scale(.78)}to{opacity:1;transform:translateY(0) scale(1)}}.pet-stage__step{min-width:0;color:var(--muted);font-size:var(--fs-xs);font-weight:700;text-align:center}.pet-stage__choice{width:100%;min-height:76px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;padding:var(--gap-xs) 2px;border:2px solid transparent;border-radius:var(--radius-md);background:transparent;color:inherit;font:inherit;line-height:1.2}.pet-stage__choice:not(:disabled){cursor:pointer}.pet-stage__choice:not(:disabled):hover{border-color:var(--good-deep);background:var(--good-wash)}.pet-stage__choice:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.pet-stage__choice small{padding:1px var(--gap-xs);border-radius:var(--radius-pill);background:var(--spark-wash);color:var(--ink);font-size:10px;font-weight:800}.pet-stage__dot{display:grid;place-items:center;width:30px;height:30px;border:2px solid var(--hairline);border-radius:50%;background:var(--surface-sunken);color:var(--muted)}.pet-stage__step.is-done .pet-stage__dot{border-color:var(--good-deep);background:var(--good);color:var(--on-brand)}.pet-stage__step.is-selected{color:var(--ink)}.pet-stage__step.is-selected .pet-stage__choice{border-color:var(--spark-deep);background:var(--spark-wash)}.pet-stage__step.is-selected .pet-stage__dot{border-color:var(--spark-deep);background:var(--spark);color:var(--on-brand);box-shadow:0 0 0 4px var(--spark-wash)}.pet-stage__step.is-pending .pet-stage__choice{border-color:var(--good-deep);background:var(--good-wash);color:var(--ink)}.pet-stage__step.is-locked .pet-stage__choice{opacity:.68}.pet-stage__selection-help,.pet-stage__selection-error{margin:0 0 var(--gap-sm);font-size:var(--fs-xs);line-height:1.4;text-align:center}.pet-stage__selection-help{color:var(--muted)}.pet-stage__selection-error{color:var(--again-deep);font-weight:700}.pet-stage__track{height:14px;overflow:hidden;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:inset 0 2px 0 var(--hairline)}.pet-stage__fill{display:block;height:100%;border-radius:inherit;background:var(--spark);box-shadow:inset 0 3px 0 var(--spark-wash);transition:width .35s cubic-bezier(.34,1.3,.64,1)}.pet-stage__hint{margin:var(--gap-xs) 0 0;color:var(--muted);font-size:var(--fs-sm);line-height:1.45}.pet-stage__hint strong{color:var(--ink)}.pet-stage--compact{padding:var(--gap-sm) var(--gap-md)}.pet-stage--compact .pet-stage__name{font-size:var(--fs-lg)}.pet-home-status,.pet-reward-summary{width:100%;display:grid;justify-items:center;gap:var(--gap-sm)}.pet-home-status{margin-top:var(--gap-md);padding-top:var(--gap-md);border-top:2px dashed var(--hairline)}.pet-home-status>.pet-stage,.pet-home-status>.pet-care,.pet-reward-summary>.pet-stage,.pet-reward-summary>.pet-care{width:100%;max-width:520px}.pet-home-status>.pet-stage{background:var(--surface-sunken)}.pet-reward-summary{max-width:520px;margin-inline:auto;padding:var(--gap-sm) 0}.pet-reward-summary>p,.pet-reward-summary .status{margin-block:0;text-align:center}.pet-reward-summary>div{max-width:100%}@media (max-width: 420px){.pet-care__button{grid-template-columns:62px minmax(0,1fr) auto;min-height:84px;padding-inline:var(--gap-sm)}.pet-care__item{width:60px;height:60px}.pet-care__item svg{width:52px;height:50px}.pet-stage__heading{align-items:flex-start;flex-direction:column}.pet-stage__rail{gap:2px}.pet-stage__step{font-size:10px}.pet-growth-celebration{padding:var(--gap-sm)}.pet-growth-celebration__stage{min-width:78px;padding:var(--gap-xs)}.pet-home-status,.pet-reward-summary{gap:var(--gap-xs)}.pet-reward-summary{padding-block:var(--gap-xs)}}@media (prefers-reduced-motion: reduce){.pet-mascot *,.pet-mascot *:before,.pet-mascot *:after{animation:none!important;transition:none!important}.pet-growth-celebration__stage{animation:none}.pet-stage__fill{transition-duration:.01ms}}.calendar-month-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm);margin-bottom:var(--gap-sm)}.calendar-month-title{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap-xs);margin-bottom:var(--gap-xs)}.calendar-weekday{text-align:center;font-size:var(--fs-xs);font-weight:700;color:var(--muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap-xs)}.calendar-cell{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:60px;padding:var(--gap-xs);border:none;border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;text-align:center;min-width:0}.calendar-cell.is-hole{visibility:hidden}.calendar-cell.is-today{outline:2px solid var(--action);outline-offset:-2px}.calendar-cell.is-selected{background:var(--action-wash)}.calendar-cell-day{font-size:var(--fs-sm);font-weight:800}.calendar-cell-badges{display:flex;flex-direction:column;align-items:center;gap:2px;max-width:100%}.calendar-badge{font-size:var(--fs-xs);font-weight:700;line-height:1.4;padding:0 6px;border-radius:var(--radius-pill);white-space:nowrap;box-sizing:border-box;max-width:100%;overflow:hidden;text-overflow:ellipsis}.calendar-badge--added{color:var(--good-deep);background:var(--good-wash)}.calendar-badge--due{color:var(--again-deep);background:var(--again-wash)}.calendar-badge--energy{color:var(--action-deep);background:var(--action-wash)}@media (max-width: 359px){.calendar-badge{padding-inline:3px}.calendar-badge-label{display:none}}.calendar-studied{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--track-word)}.calendar-day-panel{margin-top:var(--gap-lg);display:flex;flex-direction:column;gap:var(--gap-md)}.calendar-day-head{display:flex;align-items:baseline;gap:var(--gap-sm)}.calendar-day-head h3{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.calendar-group{display:flex;flex-direction:column;gap:var(--gap-sm)}.calendar-group-title{display:flex;align-items:center;gap:var(--gap-xs);margin:0;font-size:var(--fs-md);font-weight:800;color:var(--ink)}.calendar-group-empty{font-size:var(--fs-sm);line-height:1.6}.calendar-growth{display:flex;flex-direction:column;gap:var(--gap-sm);padding:var(--gap-md);border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.calendar-growth-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm)}.calendar-growth-head p{margin:2px 0 0}.calendar-growth-energy{color:var(--action-deep);font-size:var(--fs-lg);white-space:nowrap}.calendar-growth-track{position:relative;height:8px;margin:24px 8px 38px;border-radius:var(--radius-pill);background:var(--track-word)}.calendar-growth-track-fill{display:block;height:100%;border-radius:inherit;background:var(--action);transition:width .18s ease}.calendar-growth-milestones{position:absolute;top:-14px;right:0;bottom:-38px;left:0;display:flex;justify-content:space-between}.calendar-growth-milestone{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;color:var(--muted);font-size:var(--fs-xs);text-align:center;white-space:nowrap}.calendar-growth-milestone small{overflow:hidden;max-width:72px;text-overflow:ellipsis}.calendar-growth-milestone.is-reached{color:var(--action-deep);font-weight:700}.calendar-growth-dot{display:grid;place-items:center;width:24px;height:24px;border:2px solid var(--track-word);border-radius:50%;background:var(--surface);font-size:var(--fs-xs);line-height:1}.calendar-growth-milestone.is-reached .calendar-growth-dot{border-color:var(--action);background:var(--action-wash)}.calendar-growth-rule{margin:0;line-height:1.5}.calendar-growth-ledger{display:flex;flex-direction:column;gap:var(--gap-xs)}.calendar-growth-ledger-title{margin:0;font-size:var(--fs-sm);font-weight:800}.calendar-growth-tasks{display:flex;flex-direction:column;gap:var(--gap-xs);margin:0;padding:0;list-style:none}.calendar-growth-task{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm);padding:var(--gap-xs) 0;border-top:1px solid var(--hairline)}.calendar-growth-task-main,.calendar-growth-task-reward{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-xs)}.calendar-growth-task-main{min-width:0}.calendar-growth-task-main>.muted{flex-basis:100%}.calendar-growth-task-reward{justify-content:flex-end;text-align:right}.calendar-growth-task-energy{color:var(--action-deep);font-weight:800;white-space:nowrap}@media (max-width: 359px){.calendar-growth{padding:var(--gap-sm)}.calendar-growth-track{margin-inline:4px}.calendar-growth-milestone small{max-width:48px}.calendar-growth-task{align-items:flex-start;flex-direction:column}.calendar-growth-task-reward{justify-content:flex-start;text-align:left}}.screen--adult .calendar-day-panel .lib-item.is-open .cd{margin-left:0}.screen--kid{--kid-track: var(--track-word);--kid-track-deep: var(--track-word-deep);--kid-track-wash: var(--track-word-wash)}.screen--pattern{--kid-track: var(--track-pattern);--kid-track-deep: var(--track-pattern-deep);--kid-track-wash: var(--track-pattern-wash);--mascot-body: var(--track-pattern)}.screen--kid .review-top{gap:var(--gap-xs)}.kid-hud-mid{display:flex;align-items:center;gap:6px;min-width:0}.kid-hud-mascot{flex-shrink:0}.kid-hud-mascot.cheer{animation:kid-hop .42s cubic-bezier(.3,1.4,.5,1)}.kid-hud-mascot.oops{animation:kid-tilt .38s ease-in-out}.screen--kid .progress{font-family:var(--font-display);font-size:var(--fs-md)}.screen--kid .level-chip{background:var(--kid-track-wash);color:var(--ink);font-size:var(--fs-xs)}.screen--kid .practice-banner{border-radius:var(--radius-sm);font-size:var(--fs-xs)}.kid-steps{display:flex;gap:5px;margin-top:var(--gap-sm)}.kid-step{flex:1 1 0;min-width:0;height:12px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:inset 0 2px 0 var(--hairline);transition:background-color .3s ease,box-shadow .3s ease}.kid-step.done{background:var(--kid-track);box-shadow:inset 0 3px #ffffff52}.kid-step.now{background:var(--spark);box-shadow:inset 0 3px #ffffff59}.screen--kid .progress-fill{background:var(--kid-track);border-radius:var(--radius-pill)}.flip-scene{position:relative;flex:1;min-width:0;min-height:300px;perspective:1400px}.flip-card{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.3,.9,.35,1.05)}.flip-scene.is-flipped .flip-card{transform:rotateY(180deg)}.flip-face{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border-radius:var(--radius-lg);border-top:6px solid var(--kid-track, var(--track-word));background:var(--surface);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.flip-face--front{transform:rotateY(0) translateZ(1px)}.flip-face--back{transform:rotateY(180deg) translateZ(1px)}.flip-scene:not(.is-flipped) .flip-face--front,.flip-scene.is-flipped .flip-face--back{pointer-events:auto}.flip-face>.flash{height:100%;border-radius:0;background:none;box-shadow:none;padding:var(--gap-xl) var(--gap-lg);gap:var(--gap-md);overflow:hidden auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.flip-face>.flash-front{min-height:0}.flip-face--front>.flash{overflow:hidden}.flip-face--back>.flash{padding:var(--gap-lg) var(--gap-md)}.screen--kid .flash-area{align-items:stretch;min-height:320px;padding:var(--gap-md) 0 calc(var(--gap-md) + var(--chunk-depth))}.screen--kid .flash-word{font-size:var(--fs-display)}.screen--kid .flash-phonetic{font-size:var(--fs-lg)}.screen--kid .flash-word-sm{font-size:var(--fs-xl)}.screen--kid .flash-cn{font-size:var(--fs-2xl)}.screen--kid .flash-ex-en{font-size:var(--fs-md)}.screen--kid .pattern-structure{font-size:var(--fs-3xl)}.screen--kid .pattern-structure.sm{font-size:var(--fs-xl)}.screen--kid .pattern-day{background:var(--kid-track-wash);color:var(--ink)}.screen--kid .pattern-title-sm{color:var(--ink)}.screen--kid .speak-btn{box-shadow:0 var(--chunk-depth) 0 var(--action-deep);transition:transform .1s ease,box-shadow .1s ease}.screen--kid .speak-btn:active{transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--action-deep)}.flash-ex-swap{align-self:flex-end;margin-top:2px;padding:2px 4px;background:none;border:none;color:var(--action);font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:700;cursor:pointer;white-space:nowrap}.flash-ex-swap:active{opacity:.6}.flash-ex-swap:focus-visible{outline:3px solid var(--action);outline-offset:2px;border-radius:var(--radius-sm)}.flash-area.fb-good .flip-scene{animation:kid-pop .42s cubic-bezier(.3,1.25,.5,1)}.flash-area.fb-again .flip-scene{animation:kid-shake .38s ease-in-out}@keyframes kid-pop{0%{transform:scale(1)}30%{transform:scale(1.05) translateY(-8px)}60%{transform:scale(.99) translateY(2px)}to{transform:scale(1)}}@keyframes kid-shake{0%,to{transform:translate(0)}15%{transform:translate(-8px)}35%{transform:translate(7px)}55%{transform:translate(-5px)}75%{transform:translate(3px)}}@keyframes kid-hop{0%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-7px) scale(1.12)}}@keyframes kid-tilt{0%,to{transform:rotate(0)}30%{transform:rotate(-11deg)}70%{transform:rotate(8deg)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;overflow:hidden;pointer-events:none}.confetti-bit{position:absolute;left:50%;top:40%;width:9px;height:14px;border-radius:2px;animation:kid-confetti 1.05s cubic-bezier(.25,.55,.4,1) var(--d, 0ms) both}.confetti-bit:nth-child(6n+1){background:var(--good)}.confetti-bit:nth-child(6n+2){background:var(--spark)}.confetti-bit:nth-child(6n+3){background:var(--action)}.confetti-bit:nth-child(6n+4){background:var(--track-word)}.confetti-bit:nth-child(6n+5){background:var(--track-pattern)}.confetti-bit:nth-child(6n){background:var(--again)}.confetti-bit:nth-child(3n){width:11px;height:11px;border-radius:50%}@keyframes kid-confetti{0%{opacity:0;transform:translateZ(0) rotate(0) scale(.6)}10%{opacity:1}45%{transform:translate3d(calc(var(--dx, 0px) * .55),var(--dy, -20vh),0) rotate(calc(var(--rot, 360deg) * .45)) scale(1)}to{opacity:0;transform:translate3d(var(--dx, 0px),62vh,0) rotate(var(--rot, 360deg)) scale(1)}}.celebrate{display:flex;flex-direction:column;align-items:center;gap:var(--gap-sm);width:100%}.celebrate>*{margin:0;animation:kid-rise .5s cubic-bezier(.2,.85,.3,1.15) both}.celebrate>:nth-child(2){animation-delay:.09s}.celebrate>:nth-child(3){animation-delay:.18s}.celebrate>:nth-child(4){animation-delay:.27s}.celebrate>:nth-child(5){animation-delay:.36s}.celebrate-title{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:800}.mascot-bob{animation:kid-bob 1.8s ease-in-out .5s infinite}.celebrate-stats{display:flex;gap:var(--gap-sm);width:100%;max-width:340px}.stat-box{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--gap-sm) var(--gap-xs);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral)}.stat-box b{font-family:var(--font-display);font-size:var(--fs-2xl);line-height:1.1}.stat-box span{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}@keyframes kid-rise{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:none}}@keyframes kid-bob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-7px) rotate(2deg)}}.screen--kid .flip-btn{margin-top:var(--gap-sm)}.screen--kid .btn-solid{border-radius:var(--radius-md);font-size:var(--fs-lg);font-weight:800;box-shadow:0 var(--chunk-depth) 0 var(--action-deep);transition:transform .1s ease,box-shadow .1s ease}.screen--kid .btn-solid:active:not(:disabled){transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--action-deep)}.screen--kid .btn-ghost{border-radius:var(--radius-md);border:2px solid var(--hairline);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);transition:transform .1s ease,box-shadow .1s ease}.screen--kid .btn-ghost:active:not(:disabled){transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--shade-neutral)}.screen--kid .grade-row{gap:var(--gap-md)}.screen--kid .grade{border-radius:var(--radius-lg);padding:var(--gap-lg) var(--gap-xs);font-size:var(--fs-xl);transition:transform .1s ease,box-shadow .1s ease}.screen--kid .grade.know{box-shadow:0 var(--chunk-depth) 0 var(--good-deep)}.screen--kid .grade.dont{box-shadow:0 var(--chunk-depth) 0 var(--again-deep)}.screen--kid .grade.know:active:not(:disabled){transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--good-deep)}.screen--kid .grade.dont:active:not(:disabled){transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--again-deep)}.screen--kid .supervisor-grade{display:flex;flex-direction:column}.screen--kid .supervisor-skip{align-self:center;margin-top:var(--gap-xs);color:var(--muted);font-size:var(--fs-sm)}.screen--kid .grade span{font-size:clamp(14px,4.6vw,17px);white-space:nowrap}.produce{flex:1;display:flex;flex-direction:column;min-height:0}.screen--kid .produce-area{flex:1 1 auto;min-height:0;padding-top:var(--gap-sm)}.produce-area .flip-scene{min-height:170px}.flip-face>.produce-cue{justify-content:center;gap:var(--gap-md)}.screen--kid .produce-hint{margin:0;font-size:var(--fs-2xl);font-weight:800;color:var(--ink);line-height:1.35}.screen--kid .produce-hint--none{font-size:var(--fs-lg);font-weight:700;color:var(--muted)}.flip-face>.produce-answer{justify-content:center;gap:var(--gap-sm);text-align:center}.screen--kid .produce-en{margin:0;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;color:var(--ink);line-height:1.3;word-break:break-word}.screen--kid .produce-cn{margin:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--gap-xs);font-size:var(--fs-md);color:var(--muted)}.screen--kid .produce-bar{display:flex;flex-direction:column;align-items:stretch;gap:var(--gap-xs);min-height:84px;margin-top:var(--gap-xs)}.screen--kid .produce-swap{align-self:center;font-size:var(--fs-sm)}.screen--kid .pattern-learn-head{border-top:6px solid var(--kid-track);border-radius:var(--radius-lg);padding:var(--gap-xl) var(--gap-lg);gap:var(--gap-sm);margin-bottom:var(--gap-md)}.screen--kid .pattern-notes{margin:var(--gap-xs) 0 0;padding:var(--gap-sm) var(--gap-md);border-radius:var(--radius-sm);background:var(--kid-track-wash);color:var(--ink);font-size:var(--fs-sm);line-height:1.5;text-align:left}.slot-table{display:flex;align-items:stretch;gap:var(--gap-sm);padding:var(--gap-md) var(--gap-sm);border-radius:var(--radius-lg);background:var(--surface);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral)}.slot-stem{display:flex;align-items:center;flex-shrink:0;max-width:42%;padding-right:var(--gap-sm);border-right:3px solid var(--kid-track)}.slot-stem-txt{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink);line-height:1.25;word-break:break-word}.slot-rows{list-style:none;margin:0;padding:0;flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--gap-xs)}.slot-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-xs);padding:var(--gap-xs) var(--gap-sm);border-radius:var(--radius-sm);background:var(--surface-sunken)}.slot-word{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--kid-track-deep);word-break:break-word}.slot-tail{font-size:var(--fs-md);font-weight:700;color:var(--muted)}.slot-cn{width:100%;font-size:var(--fs-xs);color:var(--muted)}.screen--kid .sentence-list{gap:var(--gap-sm)}.screen--kid .sentence-item{border:2px solid var(--hairline-soft);border-radius:var(--radius-md);padding:var(--gap-md);box-shadow:0 3px 0 var(--hairline)}.screen--kid .sentence-en{font-size:var(--fs-md)}@media (prefers-reduced-motion: reduce){.flip-card{transition-duration:.01ms}.confetti{display:none}.kid-step{transition-duration:.01ms}.flash-area.fb-good .flip-scene,.flash-area.fb-again .flip-scene,.kid-hud-mascot.cheer,.kid-hud-mascot.oops,.mascot-bob,.celebrate>*{animation:none}}@media (max-width: 360px){.screen--kid .flash-area{min-height:264px}.flip-scene{min-height:244px}.flip-face>.flash{padding:var(--gap-lg) var(--gap-md)}.screen--kid .flash-word{font-size:var(--fs-3xl)}.screen--kid .pattern-structure{font-size:var(--fs-xl)}.screen--kid .grade{padding:var(--gap-md) 4px}.celebrate-stats{gap:var(--gap-xs)}.stat-box{padding:var(--gap-xs) 2px}.screen--kid .produce-area{min-height:0}.produce-area .flip-scene{min-height:120px}.screen--kid .produce-hint{font-size:var(--fs-xl)}.screen--kid .produce-en{font-size:var(--fs-lg)}.slot-table{flex-direction:column;gap:var(--gap-xs);padding:var(--gap-sm)}.slot-stem{max-width:100%;padding:0 0 var(--gap-xs);border-right:none;border-bottom:3px solid var(--kid-track)}}.screen--adult .topbar{margin-bottom:var(--gap-md)}.screen--adult .topbar-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800}.screen--adult .btn{--btn-pad: 11px 16px}.screen--adult .seg-btn{border-width:2px;padding:7px 14px;font-size:var(--fs-sm);font-weight:800}.screen--adult .empty{color:var(--muted);text-align:center;padding:var(--gap-xl) var(--gap-lg);font-size:var(--fs-sm);line-height:1.6}.screen--adult .status{font-size:var(--fs-sm)}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap-sm)}.field-row{display:flex;gap:var(--gap-sm)}.field-row>.field{flex:1;min-width:0}.btn--inline{width:auto}.screen--adult .card-form{display:flex;flex-direction:column;gap:var(--gap-sm);background:var(--surface);border-radius:var(--radius-lg);padding:var(--gap-md);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);margin-bottom:var(--gap-md)}.screen--adult .field--sm{font-size:max(16px,var(--fs-sm));padding:8px 11px}.screen--adult .field.phonetic{font-family:var(--font-phonetic)}.screen--adult .card-row{display:flex;align-items:center;gap:var(--gap-sm);background:var(--surface);border-radius:var(--radius-md);padding:var(--gap-sm) var(--gap-md);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral)}.screen--adult .card-row-main{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.screen--adult .card-row-word{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink);word-break:break-word}.screen--adult .card-row-cn{font-size:var(--fs-sm);color:var(--muted)}.screen--adult .card-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}.screen--adult .card-row-meta .chip{padding:2px 8px;font-size:var(--fs-xs);font-weight:700}.screen--adult .del-btn{--icon-btn-size: 30px;border:none;background:none;color:var(--muted);font-size:var(--fs-md);cursor:pointer;flex-shrink:0}.screen--adult .del-btn:active{color:var(--again)}.screen--adult .pattern-row{cursor:pointer}.screen--adult .pattern-row .card-row-word{font-size:var(--fs-md);display:flex;align-items:center;gap:var(--gap-xs);flex-wrap:wrap}.screen--adult .pattern-day-inline{padding:1px 7px;font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:800}.screen--adult .filter-bar{display:flex;flex-direction:column;gap:var(--gap-sm);margin-bottom:var(--gap-md)}.screen--adult .level-actions{display:flex;flex-direction:column;gap:var(--gap-xs)}.screen--adult .lib-search{display:flex;align-items:center;gap:var(--gap-sm)}.screen--adult .lib-search .field{flex:1;min-width:0}.screen--adult .lib-total{flex-shrink:0}.screen--adult .lib-narrow{display:flex;gap:var(--gap-sm)}.screen--adult .lib-book,.screen--adult .lib-page{flex:1;min-width:0}.screen--adult .lib-review-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-sm)}.screen--adult .lib-review-controls .field{min-width:0;font-family:var(--font-ui)}.screen--adult .lib-review-controls .field:last-child{grid-column:1 / -1}.screen--adult .lib-book{font-family:var(--font-ui);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px) center,calc(100% - 10px) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:26px}.screen--adult .lib-list-tools{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--gap-sm);margin-bottom:var(--gap-sm);padding:var(--gap-sm);border-radius:var(--radius-md);background:var(--surface-sunken)}.screen--adult .lib-page-select-all{color:var(--ink);font-size:var(--fs-sm);font-weight:800}.screen--adult .lib-page-select-all input{accent-color:var(--track-word)}.screen--adult .lib-page-select-all span{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap}.screen--adult .lib-page-select-all small{color:var(--muted);font-size:var(--fs-xs);font-weight:700}.screen--adult .lib-page-size{display:flex;align-items:center;gap:var(--gap-xs);margin-left:auto;color:var(--muted);font-size:var(--fs-sm);font-weight:700}.screen--adult .lib-page-size-preset{width:92px;font-family:var(--font-ui)}.screen--adult .lib-page-size-form{display:flex;align-items:center;gap:var(--gap-xs)}.screen--adult .lib-page-size-input{width:68px;min-width:0;text-align:center}.screen--adult .lib-page-size-form .btn{--btn-pad: 8px 10px;font-size:var(--fs-sm)}.screen--adult .lib-item{display:flex;flex-direction:column}.screen--adult .lib-line{display:flex;align-items:stretch;gap:var(--gap-xs)}.screen--adult .lib-select{display:flex;align-items:center;justify-content:center;flex:0 0 28px;cursor:pointer}.screen--adult .lib-select input{width:24px;height:24px;margin:0;accent-color:var(--track-word);cursor:pointer}.screen--adult .lib-row{cursor:pointer;flex:1;min-width:0;text-align:left;border:2px solid transparent}.screen--adult .lib-item.is-selected .lib-row{border-color:var(--track-word);background:var(--track-word-wash)}.screen--adult .lib-review-meta{display:flex;flex-wrap:wrap;align-items:center;gap:3px var(--gap-xs);margin-top:3px;font-size:var(--fs-xs);line-height:1.4;color:var(--muted)}.screen--adult .lib-review-meta span{padding:1px 6px;border-radius:var(--radius-sm);background:var(--surface-sunken)}.screen--adult .lib-review-meta .is-due{background:var(--again-wash);color:var(--ink)}.screen--adult .lib-review-meta .has-lapses{background:var(--spark-wash);color:var(--ink)}.screen--adult .lib-row .card-row-meta .chip{max-width:150px;overflow:hidden;text-overflow:ellipsis}.screen--adult .lib-item.is-open .lib-row{border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:none}.screen--adult .lib-item.is-open .cd{margin-left:calc(28px + var(--gap-xs))}.screen--adult .lib-caret{flex-shrink:0;color:var(--muted);font-size:var(--fs-sm);line-height:1}.screen--adult .lib-pager{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm);margin-top:var(--gap-md);padding-top:var(--gap-sm)}.screen--adult .lib-pager .btn{--btn-pad: 8px 12px;font-size:var(--fs-sm)}.screen--adult .lib-selection-bar{position:sticky;z-index:4;bottom:calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:var(--gap-xs);margin-top:var(--gap-md);padding:var(--gap-sm);border:2px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);font-size:var(--fs-sm);color:var(--ink)}.screen--adult .lib-selection-bar .btn{--btn-pad: 9px 12px;font-size:var(--fs-sm)}.screen--adult .lib-selection-bar .btn-text{font-size:var(--fs-sm)}.screen--adult .cd{display:flex;flex-direction:column;gap:var(--gap-sm);background:var(--surface);border-top:1px dashed var(--hairline);border-radius:0 0 var(--radius-md) var(--radius-md);padding:var(--gap-md);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral)}.screen--adult .cd-word-row{display:flex;align-items:center;gap:var(--gap-sm);flex-wrap:wrap}.screen--adult .cd-word{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;color:var(--ink);word-break:break-word}.screen--adult .cd-ph{font-size:var(--fs-sm);color:var(--muted)}.screen--adult .cd-img-row{display:flex;align-items:center;gap:var(--gap-sm);flex-wrap:wrap}.screen--adult .cd-img{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);background:var(--surface-sunken);flex-shrink:0}.screen--adult .cd-img--empty{display:inline-flex;align-items:center;justify-content:center;font-size:26px;opacity:.4}.screen--adult .cd-img-row .btn{--btn-pad: 7px 11px;font-size:var(--fs-sm)}.screen--adult .cd-options{display:flex;gap:var(--gap-sm);overflow-x:auto;margin:0 calc(-1 * var(--gap-md));padding:2px var(--gap-md) var(--gap-xs);-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}.screen--adult .cd-option{--chunk-shade: var(--shade-neutral);flex:0 0 auto;padding:0;border:2px solid var(--hairline);border-radius:var(--radius-sm);background:var(--surface-sunken);cursor:pointer;scroll-snap-align:start;line-height:0;overflow:hidden}.screen--adult .cd-option img{width:84px;height:84px;object-fit:cover}.screen--adult .cd-fields{display:flex;flex-direction:column;gap:var(--gap-sm)}.screen--adult .cd-field{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.screen--adult .cd-label{font-size:var(--fs-xs);font-weight:700;color:var(--muted)}.screen--adult .cd-area{resize:vertical;min-height:44px;line-height:1.45;font-family:var(--font-ui)}.screen--adult .cd-fields .field-row>.cd-field{flex:1;min-width:0}.screen--adult .cd-sec{display:flex;flex-direction:column;gap:var(--gap-xs);padding-top:var(--gap-sm);border-top:1px solid var(--hairline-soft)}.screen--adult .cd-sec-title{font-size:var(--fs-sm);font-weight:800;color:var(--ink)}.screen--adult .cd-src{display:flex;flex-direction:column;gap:3px;background:var(--surface-sunken);border-radius:var(--radius-sm);padding:var(--gap-xs) var(--gap-sm)}.screen--adult .cd-src-head{display:flex;flex-wrap:wrap;gap:4px}.screen--adult .cd-src-head .chip{padding:2px 8px;font-size:var(--fs-xs);font-weight:700;white-space:normal;border-radius:var(--radius-sm)}.screen--adult .cd-src-ex{font-size:var(--fs-sm);color:var(--muted);line-height:1.5;word-break:break-word}.screen--adult .cd-sent{display:flex;align-items:flex-start;gap:var(--gap-xs);background:var(--surface-sunken);border-radius:var(--radius-sm);padding:var(--gap-xs) var(--gap-sm)}.screen--adult .cd-sent-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.screen--adult .cd-sent-en{font-size:var(--fs-sm);color:var(--ink);line-height:1.5;word-break:break-word}.screen--adult .cd-sent-cn{font-size:var(--fs-xs);color:var(--muted);word-break:break-word}.screen--adult .cd-sent-src{padding:2px 8px;font-size:var(--fs-xs);font-weight:700;flex-shrink:0}.screen--adult .cd-sent-del{--btn-bg: transparent;--btn-ink: var(--muted);width:auto;flex-shrink:0;padding:2px 6px;font-size:var(--fs-sm)}.screen--adult .cd-sent-actions{display:flex;align-items:center;gap:var(--gap-xs);flex-wrap:wrap}.screen--adult .cd-srs{display:flex;flex-wrap:wrap;gap:4px}.screen--adult .cd-srs .chip{padding:2px 8px;font-size:var(--fs-xs);font-weight:700}.screen--adult .cd-actions{display:flex;gap:var(--gap-sm);padding-top:var(--gap-sm);border-top:1px solid var(--hairline-soft)}.screen--adult .cd-actions .btn{--btn-pad: 10px 14px}.screen--adult .cd-actions .btn--action{flex:1}.screen--adult .cd-del{--btn-bg: transparent;--btn-ink: var(--muted);width:auto;flex-shrink:0}.screen--adult .cd-del:active:not(:disabled){color:var(--again)}.screen--adult .mode-pick{display:flex;flex-direction:column;gap:var(--gap-xs)}.screen--adult .file-pick{display:flex;gap:var(--gap-sm)}.screen--adult .file-pick .file-drop{flex:1 1 0;min-width:0}.screen--adult .file-drop{display:flex;flex-direction:column;align-items:center;gap:var(--gap-xs);padding:var(--gap-md) var(--gap-sm);border:2px dashed var(--hairline);border-radius:var(--radius-lg);background:var(--surface-sunken);color:var(--muted);font-size:var(--fs-sm);font-weight:700;text-align:center;cursor:pointer}.screen--adult .file-drop input{display:none}.screen--adult .file-drop-emoji{font-size:28px;line-height:1}.screen--adult .photo-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:var(--gap-sm)}.screen--adult .photo-thumb{position:relative;min-width:0;aspect-ratio:3 / 4;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-sunken);border:1px solid var(--hairline-soft)}.screen--adult .photo-thumb img{display:block;width:100%;height:100%;object-fit:cover}.screen--adult .photo-del{position:absolute;top:var(--gap-xs);right:var(--gap-xs);background:var(--surface);color:var(--ink)}.screen--adult .cand-list{list-style:none;margin:var(--gap-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--gap-sm)}.screen--adult .cand{display:flex;flex-direction:column;gap:var(--gap-xs);background:var(--surface);border:2px solid transparent;border-radius:var(--radius-md);padding:var(--gap-sm) var(--gap-md);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);transition:background-color var(--dur-state) ease,border-color var(--dur-state) ease}.screen--adult .cand.off{opacity:1;background:var(--surface-sunken);border-color:var(--hairline-soft);box-shadow:none}.screen--adult .cand-head{display:flex;align-items:center;gap:var(--gap-sm)}.screen--adult .cand-head>input[type=checkbox]{width:26px;height:26px;flex-shrink:0;accent-color:var(--action)}.screen--adult .cand-word{flex:1;min-width:0;border:none;border-bottom:2px solid transparent;background:transparent;padding:2px 0;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;color:var(--ink)}.screen--adult .cand-word:focus{outline:none;border-bottom-color:var(--action)}.screen--adult .cand-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-xs) var(--gap-sm);padding-left:calc(26px + var(--gap-sm))}.screen--adult .cand-ph{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}.screen--adult .cand-concrete{display:flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;cursor:pointer}.screen--adult .cand-concrete input{width:18px;height:18px;accent-color:var(--action)}.screen--adult .cand-known{align-self:flex-start;max-width:100%;white-space:normal;border-radius:var(--radius-sm);padding:3px 9px;font-size:var(--fs-xs);font-weight:700;line-height:1.5}.screen--adult .cand-img-row{display:flex;align-items:center;gap:var(--gap-sm)}.screen--adult .cand-img{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);background:var(--surface-sunken);flex-shrink:0}.screen--adult .cand-img-row .btn{--btn-pad: 7px 11px;font-size:var(--fs-sm)}.screen--adult .cand-confirm{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom));margin-top:var(--gap-md);--btn-pad: 14px 18px;font-size:var(--fs-lg)}.screen--adult .finish-emoji{font-size:56px;line-height:1}.screen--adult .finish-actions{width:min(100%,300px);margin-top:var(--gap-lg);display:flex;flex-direction:column;gap:var(--gap-sm)}.screen--adult .login-box{width:100%;max-width:340px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral);padding:var(--gap-xl) var(--gap-lg);text-align:center}.screen--adult .login-box .logo{font-size:40px;line-height:1;margin:0}.screen--adult .login-box h2{margin:var(--gap-xs) 0 2px;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800}.screen--adult .login-form{display:flex;flex-direction:column;gap:var(--gap-sm);margin-top:var(--gap-lg)}.gop{display:flex;flex-direction:column;align-items:flex-start;gap:var(--gap-xs);width:100%}.gop-btn{align-self:flex-start;--chunk-shade: var(--shade-neutral);display:inline-flex;align-items:center;gap:6px;border:2px solid var(--hairline);border-radius:var(--radius-pill);background:var(--surface);color:var(--action);padding:6px 14px;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:800;cursor:pointer}.gop-btn--rec{--chunk-shade: var(--again-deep);background:var(--again);border-color:var(--again);color:var(--on-brand)}.gop-tip{font-size:var(--fs-sm);color:var(--muted)}.gop-tip--bad{color:var(--again);font-weight:700}.gop-quota{align-self:stretch}.gop-primary{align-self:stretch;justify-content:center;box-sizing:border-box;height:52px;padding:0 14px;font-size:var(--fs-md);line-height:1.2}.gop-primary--tip{display:flex;align-items:center;justify-content:center}.gop-btn--main{background:var(--action);border-color:var(--action);color:var(--on-brand);--chunk-shade: var(--action-deep)}.gop-result{display:flex;flex-direction:column;gap:var(--gap-xs);width:100%}.gop-verdict{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;line-height:1.2}.gop-verdict--good{color:var(--good)}.gop-verdict--diff{color:var(--ink);font-size:var(--fs-md)}.gop-verdict--unclear{color:var(--muted);font-size:var(--fs-md)}.gop-said{margin:0;font-family:var(--font-display);font-size:var(--fs-md);font-weight:800;color:var(--ink);line-height:1.35}.gop-ref{margin:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gap-xs);font-size:var(--fs-sm);color:var(--muted);line-height:1.35}.gop-ref-tag{flex-shrink:0;padding:1px 8px;border-radius:var(--radius-pill);background:var(--good-wash);color:var(--ink);font-size:var(--fs-xs);font-weight:800}.gop-stars{display:flex;gap:2px;font-size:var(--fs-lg);line-height:1}.gop-star{color:var(--shade-neutral)}.gop-star.on{color:var(--spark)}.gop-details{width:100%}.gop-details>summary{cursor:pointer;color:var(--muted);font-size:var(--fs-xs);font-weight:700;list-style-position:inside}.gop-details[open]>summary{margin-bottom:var(--gap-xs)}.gop-scores{display:flex;flex-direction:column;gap:3px;width:100%}.gop-score{display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--fs-xs)}.gop-label{color:var(--muted);flex-shrink:0}.gop-pct{color:var(--ink);flex-shrink:0;min-width:34px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.gop-bar{flex:1;min-width:0;height:7px;background:var(--surface-sunken);border-radius:var(--radius-pill);overflow:hidden;box-shadow:inset 0 1px 0 var(--hairline)}.gop-bar-fill{height:100%;border-radius:var(--radius-pill);background:var(--fill, var(--good));transition:width var(--dur-state) ease}.gop-bar-fill--good{--fill: var(--good)}.gop-bar-fill--mid{--fill: var(--spark)}.gop-bar-fill--low{--fill: var(--again)}.gop-words{display:flex;flex-wrap:wrap;gap:3px 8px}.gop-word{font-size:var(--fs-sm);font-weight:700;color:var(--good)}.gop-word--wrong{color:var(--again);text-decoration:underline wavy var(--again)}@media (prefers-reduced-motion: reduce){.gop-bar-fill{transition-duration:.01s}}.capture-ocr{margin-block:1rem}.capture-ocr summary{cursor:pointer}.capture-ocr pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}.archive-image{display:block;max-width:100%;max-height:60vh;height:auto;border-radius:var(--radius-md)}.capture-example{border-top:1px solid var(--hairline);padding-top:.6rem}.capture-example p{margin-block:.4rem}.home{gap:var(--gap-lg)}.today{--chunk-shade: var(--shade-neutral);display:flex;flex-direction:column;gap:var(--gap-md)}.today-hello{display:flex;align-items:center;gap:var(--gap-sm)}.today-hello-text{flex:1;min-width:0}.today-greet{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;line-height:1.15}.today-streak{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 4px;margin:4px 0 0;font-size:var(--fs-sm);font-weight:700;color:var(--muted)}.today-streak strong{font-size:var(--fs-lg);color:var(--ink);font-variant-numeric:tabular-nums}.today-best{color:var(--muted);font-weight:700}.pet-playground{display:flex;flex-direction:column;gap:var(--gap-xs);min-width:0}.pet-playground__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm)}.pet-playground__heading>div{min-width:0;display:flex;flex-direction:column;gap:1px}.pet-playground__heading strong{font-family:var(--font-display);font-size:var(--fs-lg);line-height:1.15}.pet-playground__heading span{color:var(--muted);font-size:var(--fs-xs);line-height:1.35}.pet-playground__call{flex:0 0 auto;min-height:38px;border:2px solid var(--track-word-deep);border-radius:var(--radius-pill);padding:6px 12px;background:var(--track-word-wash);color:var(--ink);font:inherit;font-size:var(--fs-xs);font-weight:800;cursor:pointer}.pet-playground__call:focus-visible,.pet-playground__pet-button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.pet-playground__call:disabled{cursor:wait;opacity:.62}.pet-playground__scene{position:relative;height:230px;min-width:0;overflow:hidden;border:2px solid var(--track-word-deep);border-radius:var(--radius-lg);background:radial-gradient(circle at 82% 20%,var(--spark-wash) 0 28px,transparent 29px),linear-gradient(180deg,var(--track-word-wash) 0 63%,var(--good-wash) 64% 100%);box-shadow:inset 0 -6px 0 var(--good-wash);cursor:crosshair;touch-action:manipulation}.pet-playground__scene:before,.pet-playground__scene:after{position:absolute;content:"";pointer-events:none}.pet-playground__scene:before{right:-6%;bottom:22%;width:38%;height:27%;border-radius:50% 50% 0 0;background:var(--good);opacity:.28}.pet-playground__scene:after{left:0;right:0;bottom:0;height:20%;border-top:3px dashed var(--good-deep);background:var(--good-wash);opacity:.72}.pet-playground__cloud{position:absolute;width:58px;height:18px;border-radius:var(--radius-pill);background:var(--surface);opacity:.8;pointer-events:none}.pet-playground__cloud:before,.pet-playground__cloud:after{position:absolute;bottom:4px;border-radius:50%;background:inherit;content:""}.pet-playground__cloud:before{left:9px;width:24px;height:24px}.pet-playground__cloud:after{right:7px;width:18px;height:18px}.pet-playground__cloud--one{top:23px;left:9%}.pet-playground__cloud--two{top:58px;right:27%;transform:scale(.72);opacity:.62}.pet-playground__pet{position:absolute;z-index:2;left:var(--pet-x);top:var(--pet-y);width:116px;height:116px;transform:translate(-50%,-50%);transition:left var(--pet-move-duration) linear,top var(--pet-move-duration) ease-in-out;will-change:left,top}.pet-playground__turn{width:100%;height:100%;transition:transform var(--dur-state) ease}.pet-playground__pet[data-facing=left] .pet-playground__turn{transform:scaleX(-1)}.pet-playground__pet-button{width:100%;height:100%;display:grid;place-items:center;border:0;border-radius:46%;padding:0;background:transparent;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.pet-playground__pet-button:disabled{cursor:default}.pet-playground__bubble{position:absolute;z-index:4;top:-39px;width:max-content;max-width:min(230px,calc(100vw - 74px));border:2px solid var(--hairline);border-radius:var(--radius-md);padding:6px 10px;background:var(--surface);box-shadow:0 3px 0 var(--shade-neutral);color:var(--ink);font-size:var(--fs-xs);font-weight:800;line-height:1.3;text-align:center;pointer-events:none}.pet-playground__pet[data-zone=left] .pet-playground__bubble{left:16%}.pet-playground__pet[data-zone=right] .pet-playground__bubble{right:16%}.pet-playground__bubble:after{position:absolute;bottom:-7px;width:10px;height:10px;border-right:2px solid var(--hairline);border-bottom:2px solid var(--hairline);background:var(--surface);content:"";transform:rotate(45deg)}.pet-playground__pet[data-zone=left] .pet-playground__bubble:after{left:22px}.pet-playground__pet[data-zone=right] .pet-playground__bubble:after{right:22px}.pet-playground__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.flame{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em;border-radius:50%;background:var(--spark-wash);box-shadow:0 0 0 2px var(--spark-wash);font-size:var(--fs-sm);line-height:1}.ring{--ring-size: 62px;position:relative;width:var(--ring-size);height:var(--ring-size);flex-shrink:0;border-radius:50%;background:conic-gradient(var(--good) calc(var(--pct, 0) * 1%),var(--surface-sunken) 0);display:grid;place-items:center;transition:background .4s ease}.ring-hole{width:calc(var(--ring-size) - 14px);height:calc(var(--ring-size) - 14px);border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.ring-num{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;font-variant-numeric:tabular-nums}.ring-den{font-size:10px;font-weight:700;color:var(--muted)}.week{display:flex;justify-content:space-between;gap:var(--gap-xs);margin:0;padding:0;list-style:none}.week-day{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px}.week-dot{width:100%;max-width:26px;height:8px;border-radius:var(--radius-pill);background:var(--surface-sunken);box-shadow:inset 0 1px 0 var(--hairline)}.week-day.on .week-dot{background:var(--spark);box-shadow:none}.week-label{font-size:10px;font-weight:700;color:var(--muted)}.week-day.is-today .week-label{color:var(--ink)}.week-day.is-today .week-dot{outline:2px solid var(--action);outline-offset:2px}.tracks{display:flex;flex-direction:column;gap:var(--gap-sm)}.subtrack{align-self:stretch;padding:9px 14px;border:2px dashed var(--hairline);border-radius:var(--radius-md);background:none;color:var(--muted);font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:700;text-align:left;cursor:pointer}.subtrack:active{background:var(--surface-sunken)}.subtrack--missed{border-style:solid;border-color:var(--again-wash);background:var(--again-wash);color:var(--again-deep)}.subtrack--missed:active{background:var(--again);color:var(--on-brand)}.parent-entries{display:flex;flex-wrap:wrap;gap:var(--gap-xs)}.entry{display:inline-flex;align-items:center;gap:6px;flex:1 1 auto;justify-content:center;padding:10px 12px;border:2px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);color:var(--muted);font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:700;white-space:nowrap;cursor:pointer}.entry:active{background:var(--surface-sunken)}.entry-chip{padding:2px 8px;font-size:var(--fs-xs);background:var(--surface-sunken)}.pet-sound-setting{cursor:default}.pet-sound-setting:active{background:var(--surface)}.pet-sound-setting__copy{flex:1}.pet-sound-switch{min-width:48px;min-height:30px;border:2px solid var(--hairline);border-radius:var(--radius-pill);padding:2px 9px;background:var(--surface-sunken);color:var(--muted);font:inherit;font-size:var(--fs-xs);cursor:pointer}.pet-sound-switch.is-on{border-color:var(--good-deep);background:var(--good);color:var(--on-brand)}.pet-sound-switch:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.account-entry{cursor:default}.account-entry:active{background:var(--surface)}.account-entry__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.pet-sound-switch:disabled{cursor:wait;opacity:.65}.pet-sound-error{margin:calc(-1 * var(--gap-sm)) 0 0;text-align:center}.home-foot{margin-top:auto;padding-top:var(--gap-md);text-align:center}.screen--adult .src-level{margin-bottom:var(--gap-lg)}.screen--adult .src-level-title{margin:0 0 var(--gap-sm);font-family:var(--font-display);font-size:var(--fs-md);font-weight:800;color:var(--muted)}.screen--adult .src-book{--card-pad: var(--gap-md);display:flex;flex-direction:column;gap:var(--gap-sm);box-shadow:0 var(--chunk-depth) 0 var(--shade-neutral)}.screen--adult .src-book-head{display:flex;align-items:baseline;gap:var(--gap-sm)}.screen--adult .src-book-name{flex:1;min-width:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink);word-break:break-word}.screen--adult .src-book-name.is-unclassified{color:var(--muted);font-style:italic;font-weight:700}.screen--adult .src-book-count{flex-shrink:0;padding:2px 9px;font-size:var(--fs-xs);font-weight:700}.screen--adult .src-row{display:flex;align-items:flex-start;gap:var(--gap-sm)}.screen--adult .src-row-label{flex-shrink:0;width:2.4em;padding-top:5px;font-size:var(--fs-xs);font-weight:800;color:var(--muted)}.screen--adult .src-pages{display:flex;flex-wrap:wrap;gap:var(--gap-xs);min-width:0}.screen--adult .src-page{--chunk-shade: var(--track-word-deep);display:inline-flex;align-items:baseline;gap:4px;border:none;border-radius:var(--radius-sm);background:var(--track-word-wash);color:var(--ink);min-width:38px;padding:6px 9px;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:800;font-variant-numeric:tabular-nums;justify-content:center;cursor:pointer}.screen--adult .src-page-n{font-size:10px;font-weight:700;color:var(--muted)}.screen--adult .src-range-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm);color:var(--muted);font-size:var(--fs-xs);font-weight:700}.screen--adult .src-range-editor{display:flex;align-items:end;flex-wrap:wrap;gap:var(--gap-sm);padding:var(--gap-sm);border-radius:var(--radius-sm);background:var(--surface-sunken)}.screen--adult .src-range-editor label,.screen--adult .capture-range-prompt label{display:grid;gap:3px;color:var(--muted);font-size:var(--fs-xs);font-weight:800}.screen--adult .src-range-editor .field{width:92px}.screen--adult .src-legend{display:flex;flex-wrap:wrap;gap:4px var(--gap-sm);color:var(--muted);font-size:var(--fs-xs)}.screen--adult .src-legend span{display:inline-flex;align-items:center;gap:4px}.screen--adult .src-legend-dot{display:inline-block;width:10px;height:10px;border:2px solid var(--hairline);border-radius:3px}.screen--adult .src-legend-dot.words{background:var(--track-word-wash);border-color:var(--track-word-deep)}.screen--adult .src-legend-dot.no-new-words{background:var(--surface-sunken);border-style:solid}.screen--adult .src-legend-dot.unprocessed{border-style:dashed}.screen--adult .src-pages--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px;width:100%}.screen--adult .src-page{min-width:0;width:100%;min-height:42px;flex-direction:column;align-items:center;gap:1px;padding:5px 4px}.screen--adult .src-page--words{background:var(--track-word-wash);border:2px solid var(--track-word-deep)}.screen--adult .src-page--no_new_words{background:var(--surface-sunken);border:2px solid var(--hairline)}.screen--adult .src-page--unprocessed{background:transparent;border:2px dashed var(--hairline);color:var(--muted)}.screen--adult .src-page-state{font-size:10px;line-height:1;color:var(--muted)}.screen--adult .src-outside{padding:5px 8px;border-radius:var(--radius-sm);background:var(--spark-wash);color:var(--ink);font-size:var(--fs-xs);line-height:1.4}.screen--adult .src-admin-pages,.screen--adult .src-assign-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-xs) var(--gap-sm)}.screen--adult .src-unclassified-tools{display:flex;flex-direction:column;gap:var(--gap-xs);padding-top:var(--gap-xs);border-top:1px dashed var(--hairline)}.screen--adult .src-unclassified-page{display:inline-flex;align-items:center;gap:4px;min-height:38px;padding:5px 8px;border:1px dashed var(--hairline);border-radius:var(--radius-sm);color:var(--muted);font-size:var(--fs-xs)}.screen--adult .src-assign-row .field{min-width:150px;flex:1 1 150px}.screen--adult .capture-range-prompt,.screen--adult .capture-no-words{display:flex;flex-direction:column;gap:var(--gap-sm);width:100%;max-width:520px;margin:var(--gap-md) auto;padding:var(--gap-md);border:2px solid var(--track-word-deep);border-radius:var(--radius-md);background:var(--track-word-wash);text-align:left}.screen--adult .capture-range-prompt p,.screen--adult .capture-no-words p{margin:0}.screen--adult .src-gaps{padding:5px 0;font-size:var(--fs-sm);font-weight:800;color:var(--again-deep);font-variant-numeric:tabular-nums;word-break:break-word}.screen--adult .src-book-foot{font-size:var(--fs-xs);color:var(--muted);text-align:right}.screen--adult .src-foot{margin:0;padding-top:var(--gap-sm);border-top:1px dashed var(--hairline)}.screen--adult .dup{display:flex;flex-direction:column;gap:3px;border-radius:var(--radius-md);padding:var(--gap-sm) var(--gap-md);font-size:var(--fs-sm);line-height:1.5}.screen--adult .dup--warn{background:var(--spark-wash);color:var(--ink)}.screen--adult .dup--heavy{background:var(--again-wash);color:var(--ink)}.screen--adult .dup--quiet{background:var(--surface-sunken);color:var(--muted)}.screen--adult .dup-main{font-weight:800}.screen--adult .dup-sub{color:var(--muted);font-size:var(--fs-xs)}.screen--adult .dup-link{align-self:flex-start;padding:2px 0;font-size:var(--fs-sm)}.stagger{animation:home-rise .36s cubic-bezier(.22,1,.36,1) backwards;animation-delay:calc(var(--i, 0) * 55ms)}@keyframes home-rise{0%{opacity:0;transform:translateY(10px)}}@media (max-width: 359px){.ring{--ring-size: 54px}.entry{flex-basis:100%}}@media (max-width: 420px){.pet-playground__heading{align-items:flex-start}.pet-playground__heading span{display:none}.pet-playground__call{min-height:36px;padding-inline:10px}.pet-playground__scene{height:205px}.pet-playground__bubble{top:-34px;max-width:min(190px,calc(100vw - 70px));padding:5px 8px}}@media (prefers-reduced-motion: reduce){.stagger{animation:none}.ring,.pet-playground__pet,.pet-playground__turn{transition:none}}:root{--card: var(--surface);--primary: var(--action);--primary-ink: var(--on-brand);--bad: var(--again);--radius: var(--radius-lg);--shadow: 0 var(--chunk-depth) 0 var(--shade-neutral)}.pattern-row:active,.grade:active,.speak-btn:active{transform:translateY(calc(var(--chunk-depth) - 1px));box-shadow:0 1px 0 var(--shade-neutral)}.flash-word,.flash-word-sm,.pattern-structure,.card-row-word,.cand-word,.topbar-title,.logo{font-family:var(--font-display)}.logo{font-size:40px;margin:0}.home-foot{margin-top:32px;text-align:center;min-height:20px}.status{font-size:13px;color:var(--muted)}.status.bad{color:var(--bad)}.link-btn{background:none;border:none;color:var(--primary);font-size:17px;padding:6px 4px;cursor:pointer;white-space:nowrap}.muted{color:var(--muted)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}.topbar-title{margin:0;font-size:20px}.card-form{display:flex;flex-direction:column;gap:12px;background:var(--card);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);margin-bottom:18px}.fld{flex:1;width:100%;padding:14px 16px;border:2px solid var(--hairline);border-radius:14px;font-size:17px;background:var(--surface-sunken);color:var(--ink)}.fld:focus{outline:none;border-color:var(--primary)}.check{display:flex;align-items:center;gap:10px;font-size:16px;color:var(--muted)}.check input{width:22px;height:22px}.btn-solid{padding:16px;border:none;border-radius:14px;background:var(--primary);color:var(--on-brand);font-size:18px;font-weight:700;cursor:pointer}.btn-solid:disabled{opacity:.6}.card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.empty{color:var(--muted);text-align:center;padding:40px 20px;line-height:1.6}.card-row{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:16px;padding:14px 16px;box-shadow:var(--shadow)}.card-row-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.card-row-word{font-size:19px;font-weight:700}.card-row-cn{font-size:14px;color:var(--muted)}.card-row-meta{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.del-btn{border:none;background:none;color:var(--muted);font-size:18px;padding:8px;cursor:pointer}.screen.center{align-items:center;justify-content:center;text-align:center;gap:8px}.finish-emoji{font-size:72px}.finish-actions{margin-top:24px;display:flex;flex-direction:column;gap:14px;align-items:center}.finish-actions .btn-solid{padding:16px 40px}.finish-actions .btn-ghost{padding:14px 34px}.review-top{display:flex;align-items:center;justify-content:space-between}.progress{font-size:16px;font-weight:700;color:var(--muted)}.progress-bar{height:8px;background:var(--hairline);border-radius:4px;overflow:hidden;margin:10px 0 4px}.progress-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .25s ease}.flash-area{flex:1;display:flex;align-items:center;justify-content:center;padding:16px 0;min-height:0}.flash{width:100%;background:var(--card);border-radius:28px;box-shadow:var(--shadow);padding:32px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;position:relative}.flash-front{min-height:320px;justify-content:center}.flash-word{font-family:var(--font-display);font-size:52px;font-weight:800;color:var(--ink);text-align:center;word-break:break-word}.flash-phonetic,.cand-ph{font-family:var(--font-phonetic);font-variant-ligatures:none;letter-spacing:.01em}.flash-phonetic{font-size:22px;color:var(--muted)}.speak-btn{margin-top:12px;width:64px;height:64px;border-radius:50%;border:none;background:var(--action-wash);font-size:28px;cursor:pointer}.speak-btn:active{transform:scale(.94)}.speak-btn-sm{border:none;background:var(--action-wash);border-radius:50%;width:34px;height:34px;font-size:16px;cursor:pointer;vertical-align:middle}.flash-back{align-items:stretch;text-align:center}.flash-word-sm{font-size:24px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px}.flash-img{width:100%;max-height:220px;object-fit:contain;border-radius:18px;background:var(--surface-sunken)}.flash-cn{font-size:30px;font-weight:800;color:var(--ink)}.flash-en{font-size:17px;color:var(--muted);line-height:1.5}.flash-ex{margin-top:6px;padding-top:14px;border-top:1px dashed var(--hairline);display:flex;flex-direction:column;gap:6px}.flash-ex-en{font-size:18px;color:var(--ink);line-height:1.5;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.flash-ex-cn{font-size:15px;color:var(--muted)}.flip-btn{margin-top:8px}.grade-row{display:flex;gap:14px;margin-top:8px}.grade{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:20px 6px;border:none;border-radius:20px;font-size:20px;font-weight:800;color:var(--on-brand);cursor:pointer}.grade span{font-size:17px;white-space:nowrap}.grade.know{background:var(--good)}.grade.dont{background:var(--bad)}.grade:active{transform:scale(.97)}.grade:disabled{opacity:.6}.small{font-size:13px}.spinner{width:48px;height:48px;border:5px solid var(--hairline);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.mode-pick{display:flex;flex-direction:column;gap:6px}.mode-pick .seg{flex-wrap:nowrap;gap:6px}.mode-pick .seg-btn{flex:1 1 auto;min-width:0;padding:8px 6px;font-size:clamp(12px,3.3vw,15px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-pick{display:flex;gap:8px}.file-pick .file-drop{flex:1 1 0;min-width:0}.file-drop{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;border:2px dashed var(--hairline);border-radius:16px;background:var(--surface-sunken);color:var(--muted);font-size:14px;text-align:center;cursor:pointer}.file-drop input{display:none}.file-drop-emoji{font-size:28px}.cand-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.cand{background:var(--card);border-radius:16px;padding:12px 14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px}.cand.off{opacity:.45}.cand-head{display:flex;align-items:center;gap:8px}.cand-head>input[type=checkbox]{width:22px;height:22px;flex-shrink:0}.cand-word{flex:1;min-width:0;border:none;font-size:19px;font-weight:800;color:var(--ink);background:transparent;padding:4px 2px}.cand-word:focus{outline:none;border-bottom:2px solid var(--primary)}.cand-ph{font-size:13px;color:var(--muted);white-space:nowrap}.cand-concrete{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);white-space:nowrap}.cand-concrete input{width:18px;height:18px}.cand-known{font-size:12px;color:var(--muted);padding:2px 0 4px}.fld.sm{padding:9px 12px;font-size:15px;border-width:1px}.sticky-confirm{position:sticky;bottom:12px;margin-top:16px;box-shadow:var(--shadow)}.filter-bar{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.seg{display:flex;flex-wrap:wrap;gap:8px}.seg-btn{border:1px solid var(--hairline);background:var(--surface);color:var(--muted);border-radius:999px;padding:8px 16px;font-size:15px;font-weight:600;cursor:pointer}.seg-btn.on{background:var(--primary);border-color:var(--primary);color:var(--on-brand)}.level-chip{background:var(--action-wash);color:var(--primary);border-radius:999px;padding:4px 12px;font-size:14px;font-weight:700}.level-actions{display:flex;flex-direction:column;gap:8px}.btn-ghost{padding:12px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface);color:var(--muted);font-size:15px;font-weight:600;cursor:pointer}.practice-banner{background:var(--spark-wash);color:var(--ink);border-radius:12px;padding:8px 14px;font-size:13px;font-weight:600;text-align:center;margin-bottom:10px}.login-box{width:100%;max-width:340px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:36px 28px;text-align:center}.login-box .logo{font-size:48px}.login-box h2{margin:8px 0 4px}.login-form{display:flex;flex-direction:column;gap:14px;margin-top:20px}.cand-img-row{display:flex;align-items:center;gap:10px}.cand-img{width:72px;height:72px;object-fit:cover;border-radius:12px;background:var(--surface-sunken)}.pattern-structure{font-size:40px;font-weight:800;color:var(--ink);text-align:center;word-break:break-word;line-height:1.2}.pattern-structure.sm{font-size:26px}.pattern-title-sm{font-size:20px;font-weight:700;color:var(--primary)}.pattern-gloss{font-size:18px;color:var(--muted)}.pattern-day{font-size:13px;font-weight:700;color:var(--muted);background:var(--action-wash);border-radius:999px;padding:3px 12px}.pattern-learn-head{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 18px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;margin-bottom:14px}.pattern-row{cursor:pointer}.pattern-row:active{transform:scale(.99)}.pattern-day-inline{font-size:13px;font-weight:700;color:var(--muted);margin-right:8px}.badge.sm{min-width:0;height:auto;padding:3px 8px;border-radius:8px;font-size:12px;font-weight:600}.pattern-row .card-row-word{font-size:17px;word-break:break-word}.pattern-row .card-row-meta{flex-shrink:0}.sentence-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;width:100%;text-align:left}.sentence-list.learn{flex:1}.sentence-item{background:var(--surface-sunken);border:1px solid var(--surface-sunken);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.sentence-en{font-size:18px;color:var(--ink);line-height:1.5;display:flex;align-items:flex-start;gap:8px}.sentence-cn{font-size:14px;color:var(--muted)}.gen-btn{margin-top:14px}
