:root{color:#4f2850;font-synthesis:none;--berry:#a92f71;--pink:#e94f9b;--rose:#ff86b8;--cream:#fff8ea;--gold:#ffd45a;--ink:#4f2850;--lavender:#8e71cf;font-family:Georgia,Times New Roman,serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;touch-action:none;background:#f9d8e9}button{font:inherit}button:focus-visible{outline-offset:4px;outline:5px solid #fff}[hidden]{display:none!important}.storybook,.ending{isolation:isolate;place-items:end center;display:grid;position:fixed;inset:0}.storybook__art,.ending__art{z-index:-3;background:url(/assets/storybook-key-art.png) 50% 42%/cover no-repeat;animation:18s ease-in-out infinite alternate story-drift;position:absolute;inset:-3%}.storybook__shade{z-index:-2;background:linear-gradient(#3f1f5405 20%,#3c153d2e 58%,#361237b8 100%),linear-gradient(90deg,#3612373d,#0000 48%);position:absolute;inset:0}.storybook__card,.ending__card{width:min(940px,100vw - 40px);color:var(--ink);text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fff8eaf0;border:3px solid #ffffffd1;border-radius:36px;margin:0 20px max(5vh,24px);padding:clamp(24px,3.5vw,46px) clamp(24px,5vw,64px);box-shadow:0 20px 70px #4f28505c,inset 0 0 0 2px #e94f9b24}.eyebrow{color:var(--berry);letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px;font:800 clamp(12px,1.5vw,17px)/1.2 ui-rounded,Arial Rounded MT Bold,sans-serif}h1,h2,p{text-wrap:balance}h1{color:var(--berry);letter-spacing:-.045em;margin:0;font-size:clamp(35px,6vw,70px);line-height:.94}h1 span{color:var(--lavender);letter-spacing:-.02em;margin-top:10px;font-size:.54em;line-height:1.04;display:block}#story-copy{max-width:760px;min-height:2.8em;margin:16px auto 18px;font-size:clamp(17px,2.2vw,24px);line-height:1.4}.storybook__actions,.ending__actions{justify-content:center;align-items:center;gap:14px;display:flex}.storybook-button{color:#fff;cursor:pointer;background:linear-gradient(145deg,#f35da5,#be347b);border:0;border-radius:999px;justify-content:center;align-items:center;gap:15px;min-height:58px;padding:14px 28px;font:800 clamp(16px,2vw,21px)/1 ui-rounded,Arial Rounded MT Bold,sans-serif;transition:transform .15s,box-shadow .15s;display:inline-flex;transform:translateY(0);box-shadow:0 9px #8f245f,0 16px 26px #a92f7140}.storybook-button:hover{transform:translateY(-2px);box-shadow:0 11px #8f245f,0 18px 30px #a92f714d}.storybook-button:active{transform:translateY(6px);box-shadow:0 3px #8f245f}.storybook-button b{color:var(--gold);font-size:1.3em}.round-button{width:58px;height:58px;color:var(--berry);background:var(--cream);cursor:pointer;border:3px solid #a92f7133;border-radius:50%;font:900 25px/1 ui-rounded,sans-serif;box-shadow:0 6px 15px #4f285024}.round-button[aria-pressed=false]{color:#9c8d9c}.round-button--small{width:44px;height:44px;font-size:19px}.page-dots{justify-content:center;gap:7px;margin-top:19px;display:flex}.page-dots span{background:#a92f7138;border-radius:50%;width:8px;height:8px}.page-dots .active{background:var(--pink);border-radius:8px;width:24px}.game-shell,.game{background:#8bd9f4;width:100%;height:100%;position:fixed;inset:0}.game canvas{object-fit:contain;display:block;width:100%!important;height:100%!important}.game-hud{top:max(16px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));z-index:5;pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:fixed}.logo-small{color:#fff;letter-spacing:.02em;text-shadow:0 2px 8px #4f285080;justify-self:start;padding:8px 14px;font:900 16px/1 ui-rounded,Arial Rounded MT Bold,sans-serif}.star-tracker{background:#fff8eaed;border:2px solid #fff;border-radius:999px;gap:clamp(3px,.7vw,9px);padding:8px 14px;display:flex;box-shadow:0 8px 24px #4f28502b}.star{color:#d9cbd5;text-shadow:0 2px #fff;font-size:clamp(20px,3vw,31px);line-height:1;transition:color .25s,transform .25s}.star.is-lit{color:var(--gold);text-shadow:0 0 12px #fff,0 2px #d69027;transform:scale(1.08)rotate(8deg)}.game-hud .round-button{pointer-events:auto;justify-self:end}.flight-hint{z-index:4;left:50%;bottom:max(24px, env(safe-area-inset-bottom));color:#744068;pointer-events:none;background:#fff8eae6;border-radius:999px;padding:10px 18px;font:800 clamp(13px,1.5vw,17px)/1 ui-rounded,Arial Rounded MT Bold,sans-serif;animation:8s 2s both hint-fade;position:fixed;transform:translate(-50%);box-shadow:0 7px 20px #4f28501f}.flight-hint span{color:#fff;background:var(--pink);border-radius:50%;place-items:center;width:28px;height:28px;margin-right:5px;display:inline-grid}.touch-control{z-index:4;right:max(25px, env(safe-area-inset-right));bottom:max(24px, env(safe-area-inset-bottom));color:#fff;cursor:pointer;background:#e94f9be0;border:4px solid #ffffffe0;border-radius:50%;place-items:center;width:90px;height:90px;display:none;position:fixed;box-shadow:0 10px #982b68,0 15px 30px #4f285047}.touch-control span{font-size:25px;line-height:.7}.touch-control b{font:900 14px/1 ui-rounded,sans-serif}.touch-control:active{transform:translateY(6px);box-shadow:0 4px #982b68}.moment{z-index:20;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#3e1e485c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.moment__card{text-align:center;background:#fff8eafa;border:4px solid #fff;border-radius:38px;width:min(650px,100%);padding:clamp(28px,5vw,50px);animation:.35s cubic-bezier(.2,.9,.3,1.2) both card-in;box-shadow:0 22px 70px #4f285057}.moment__icon{color:#fff9c9;background:radial-gradient(circle,#ffd861,#efa42e);border:6px solid #fff;border-radius:50%;place-items:center;width:88px;height:88px;margin:-6px auto 18px;font-size:58px;animation:2.8s ease-in-out infinite star-spin;display:grid;box-shadow:0 5px #cb7d26,0 0 35px #ffd45ad9}.moment__icon--cloud{background:#a4dcf4;animation:2s ease-in-out infinite cloud-bob;box-shadow:0 5px #6aaecb}.moment h2{color:var(--berry);margin:8px auto 12px;font-size:clamp(27px,4.5vw,42px);line-height:1.08}.moment__card>p:not(.eyebrow){margin:8px auto 24px;font-size:clamp(18px,2.5vw,24px)}#moment-path{color:var(--lavender);font-weight:700}.ending{align-items:center}.ending__art{background-image:url(/assets/celebration-art.png)}.ending-character{z-index:-1;pointer-events:none;background:url(/assets/celebration-art.png) 50% 42%/cover no-repeat;position:absolute;inset:-3%}.ending-character--rosi{clip-path:polygon(10% 42%,40% 42%,40% 100%,8% 100%);transform-origin:25% 76%}.ending-character--stella{clip-path:polygon(18% 12%,48% 12%,48% 66%,18% 66%);transform-origin:33% 40%}.ending-character--gigi{clip-path:polygon(0 8%,27% 8%,27% 100%,0 100%);transform-origin:12% 72%}.ending-character--guests{clip-path:polygon(40% 15%,100% 15%,100% 100%,40% 100%);transform-origin:72% 68%}.ending:before{content:"";z-index:-2;background:#44184040;position:absolute;inset:0}.ending__card{max-width:780px;margin:20px}.ending h2{color:var(--berry);margin:6px 0 14px;font-size:clamp(45px,7vw,82px);line-height:.95}.ending h2 span{color:var(--lavender)}.ending__card>p:not(.eyebrow){font-size:clamp(18px,2.3vw,24px)}.party-dancers{justify-content:center;align-items:center;gap:clamp(7px,1.5vw,16px);margin:10px auto 18px;display:flex}.party-dancers span{background:#fff;border:2px solid #f3cadd;border-radius:999px;place-items:center;min-width:48px;height:48px;padding:0 8px;font-size:31px;display:inline-grid;box-shadow:0 5px 12px #4f28501f}.party-dancers__guests{font-size:24px!important}.ending.is-dancing .ending__art{animation:.72s ease-in-out 4 party-dance}.ending.is-dancing .ending__card{animation:.72s ease-in-out 4 card-dance}.ending.is-dancing .party-dancers__rosi{animation:.7s ease-in-out 4 rosi-twirl}.ending.is-dancing .party-dancers__stella{animation:.35s ease-in-out 8 alternate stella-prance}.ending.is-dancing .party-dancers__gigi{animation:.46s ease-in-out 6 alternate gigi-dance}.ending.is-dancing .party-dancers__guests{animation:.25s ease-in-out 12 alternate guests-clap}.ending.is-dancing .ending-character--rosi{animation:.7s ease-in-out 4 illustrated-rosi-twirl}.ending.is-dancing .ending-character--stella{animation:.35s ease-in-out 8 alternate illustrated-stella-prance}.ending.is-dancing .ending-character--gigi{animation:.46s ease-in-out 6 alternate illustrated-gigi-dance}.ending.is-dancing .ending-character--guests{animation:.25s ease-in-out 12 alternate illustrated-guests-clap}.text-button{color:var(--berry);cursor:pointer;background:0 0;border:0;padding:16px;font-weight:700;text-decoration:underline}#confetti{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}@keyframes story-drift{0%{transform:scale(1.03)translate(-.5%)}to{transform:scale(1.08)translate(.8%,-1.2%)}}@keyframes card-in{0%{opacity:0;transform:translateY(20px)scale(.94)}to{opacity:1;transform:none}}@keyframes star-spin{0%,to{transform:rotate(-5deg)scale(1)}50%{transform:rotate(7deg)scale(1.08)}}@keyframes cloud-bob{50%{transform:translateY(-8px)}}@keyframes hint-fade{0%,70%{opacity:1}to{opacity:0;visibility:hidden}}@keyframes party-dance{0%,to{transform:scale(1.04)rotate(0)}30%{transform:scale(1.06)rotate(-.7deg)}70%{transform:scale(1.06)rotate(.7deg)}}@keyframes card-dance{0%,to{transform:translateY(0)rotate(0)}30%{transform:translateY(-8px)rotate(-.4deg)}70%{transform:translateY(-8px)rotate(.4deg)}}@keyframes rosi-twirl{to{transform:rotate(360deg)scale(1.12)}}@keyframes stella-prance{to{transform:translateY(-10px)rotate(8deg)}}@keyframes gigi-dance{to{transform:rotate(-12deg)translateY(-5px)}}@keyframes guests-clap{to{transform:scale(.86)}}@keyframes illustrated-rosi-twirl{50%{transform:rotate(3deg)translateY(-7px)scale(1.015)}}@keyframes illustrated-stella-prance{to{transform:translateY(-9px)rotate(-1.5deg)}}@keyframes illustrated-gigi-dance{to{transform:rotate(-1.8deg)translateY(-5px)}}@keyframes illustrated-guests-clap{to{transform:scale(1.012)translateY(-3px)}}@media (pointer:coarse){.touch-control{display:grid}.flight-hint{left:24px;transform:none}}@media (height<=650px){.storybook__card{margin-bottom:14px;padding-block:18px}#story-copy{min-height:2.2em;margin-block:9px 10px}.page-dots{margin-top:12px}.storyboard-button{min-height:50px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
