:root{
  --page:#F7EBD6; --ink:#2B2A4C; --ink-soft:#5A587A; --saffron:#E8871E; --leaf:#3E7C4A;
  --card:#FFFDF8; --line:#E3D3B6; --sky2:#FFF3E0;
  color-scheme: light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--page);color:var(--ink);font-family:"Atkinson Hyperlegible",system-ui,sans-serif;font-size:16px;line-height:1.5;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.wrap{max-width:880px;margin:0 auto;padding-inline:16px;padding-block:20px 32px;display:flex;flex-direction:column;gap:16px}
header{display:flex;justify-content:space-between;align-items:center;gap:12px}
.date{font-family:"Baloo 2",sans-serif;font-weight:700;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.preview-flag{font-size:13px;font-weight:700;background:var(--ink);color:#fff;border-radius:999px;padding:3px 12px}
.stage{position:relative;background:var(--sky2);border-radius:22px;overflow:hidden;box-shadow:0 2px 0 var(--line),0 10px 30px rgba(43,42,76,.08)}
.stage svg{display:block;width:100%;height:auto}
.caption{font-family:"Baloo 2",sans-serif;font-weight:600;font-size:clamp(20px,3.4vw,28px);line-height:1.3;text-align:center;min-height:2.7em;text-wrap:balance;margin:0;padding-inline:8px}
.controls{display:flex;justify-content:space-between;align-items:center;gap:12px}
.btn{font-family:"Baloo 2",sans-serif;font-weight:700;font-size:20px;border:none;border-radius:999px;padding:12px 28px;cursor:pointer;min-width:120px}
.btn.next{background:var(--saffron);color:#fff}
.btn.back{background:transparent;color:var(--ink-soft);border:2px solid var(--line)}
.btn:disabled{opacity:.35;cursor:default}
.btn[hidden]{display:none}
.btn:focus-visible,.small-btn:focus-visible,.grownups-btn:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.dots{display:flex;gap:8px}
.dots span{width:10px;height:10px;border-radius:50%;background:var(--line)}
.dots span.on{background:var(--ink)}
details.grown{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:14px 18px;-webkit-user-select:text;user-select:text}
details.grown summary{cursor:pointer;font-weight:700;font-size:16px}
details.grown h3{font-size:15px;margin:16px 0 4px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}
details.grown p,details.grown li{max-width:65ch;margin:4px 0}
details.grown ul{padding-left:20px;margin:4px 0}
footer{display:flex;justify-content:center;padding-top:8px}
.grownups-btn{font:inherit;font-size:13px;color:var(--ink-soft);background:none;border:1px dashed var(--line);border-radius:999px;padding:6px 14px;cursor:pointer;position:relative;overflow:hidden}
.grownups-btn .fill{position:absolute;inset:0;background:var(--line);transform-origin:left;transform:scaleX(0);z-index:-1}

/* scene helpers */
.scene{display:none}
.scene.on{display:inline}
.wheel-hit{cursor:pointer;outline:none}
.wheel-hit:focus-visible{outline:none;stroke:#2B2A4C;stroke-width:4;stroke-dasharray:8 6}
.pulse2{animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:0}50%{opacity:.55}}
.sunrise{animation:rise 3s ease-out forwards}
@keyframes rise{from{transform:translateY(120px)}to{transform:translateY(0)}}
.fade-in{animation:fade 1.2s ease-out both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.flag-rise{animation:rise 2.6s ease-out .3s both}
.marcher{transition:opacity .6s}
.twinkle{animation:tw 2.5s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:.3}50%{opacity:1}}
.tara-float{animation:float 3.2s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.t-eyes{animation:blink 4.6s infinite;transform-box:fill-box;transform-origin:center}
@keyframes blink{0%,94%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.tara-wave .t-arm-right{animation:wave 2.4s ease-in-out .4s 2;transform-origin:54px 30px}
@keyframes wave{0%,100%{transform:rotate(0)}20%{transform:rotate(-85deg)}40%{transform:rotate(-55deg)}60%{transform:rotate(-85deg)}80%{transform:rotate(-55deg)}}
.art-in{animation:pop .9s cubic-bezier(.3,1.4,.5,1) .3s both;transform-box:fill-box;transform-origin:center}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.idle-bob{animation:float 4s ease-in-out infinite}

/* grown-ups panel */
.panel{position:fixed;inset:0;background:rgba(43,42,76,.45);display:flex;align-items:flex-end;justify-content:center;padding:16px;z-index:10}
.panel[hidden]{display:none}
.panel-inner{background:var(--card);border-radius:20px;max-width:560px;width:100%;max-height:88vh;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:10px;-webkit-user-select:text;user-select:text}
.panel h2{margin:0;font-family:"Baloo 2",sans-serif;font-size:24px}
.panel h3{margin:10px 0 0;font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}
.field{display:flex;flex-direction:column;gap:6px;font-weight:700}
.field input{font:inherit;padding:10px;border:1.5px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.row{display:flex;gap:8px;flex-wrap:wrap}
.small-btn{font:inherit;font-weight:700;background:var(--ink);color:#fff;border:none;border-radius:999px;padding:9px 18px;cursor:pointer}
.small-btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}
.check{display:flex;gap:10px;align-items:center}
.check input{width:20px;height:20px}
.upcoming{margin:0;padding-left:20px;font-size:14px;max-height:220px;overflow:auto}
.upcoming li{margin:2px 0}
.badge{font-size:11px;font-weight:700;border-radius:6px;padding:1px 6px;margin-left:6px;background:#F3E3C3}
.badge.ready{background:#D6ECD2}

@media (prefers-reduced-motion: reduce){
  .sunrise,.fade-in,.flag-rise,.twinkle,.pulse2,.tara-float,.t-eyes,.tara-wave .t-arm-right,.art-in,.idle-bob{animation:none}
  .marcher{transition:none}
}
