.birthday{background:var(--night-deep);justify-content:flex-start;align-items:center}.bday-scene{width:100%;height:100%;position:absolute;inset:0}.b-star{animation:2.2s ease-in-out infinite glow-pulse}.b-fade{transition:opacity 1s .5s}.b-curtain-l,.b-curtain-r{transition:transform 1.2s cubic-bezier(.7,0,.3,1)}.b-curtains.open .b-curtain-l{transform:translate(-108%)}.b-curtains.open .b-curtain-r{transform:translate(108%)}.b-cake{opacity:0;transform-box:fill-box;transform-origin:bottom;transform:translateY(160px)scale(.7)}.b-cake.up{opacity:1;transition:opacity .5s .7s,transform 1s cubic-bezier(.34,1.5,.5,1) .7s;transform:translateY(0)scale(1)}.b-flame{opacity:0;animation:.3s forwards flame-in,.35s steps(2,end) .3s infinite flame-flicker}@keyframes flame-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes flame-flicker{0%{transform:scale(1)translate(0)}50%{transform:scale(.9,1.12)translate(.6px)}to{transform:scale(1.05,.94)translate(-.6px)}}.b-balloon{transform-box:fill-box;transform-origin:50%;animation:4s ease-in-out infinite balloon-float}@keyframes balloon-float{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-16px)rotate(2deg)}}.gift-gate{z-index:5;background:0 0;flex-direction:column;align-items:center;gap:18px;margin-top:18dvh;animation:.6s cubic-bezier(.34,1.56,.64,1) both gift-appear;display:flex;position:relative}@keyframes gift-appear{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.gift-box{filter:drop-shadow(0 10px 24px #0a051a99)}.gift-hint{font-family:var(--font-display);color:var(--gold-strong);text-shadow:0 2px 14px #0a051ae6;font-size:clamp(1.1rem,5vw,1.5rem);font-style:italic;animation:1.8s ease-in-out infinite glow-pulse}.bday-overlay{z-index:5;text-align:center;flex-direction:column;align-items:center;gap:22px;margin-top:5dvh;padding:0 24px;display:flex;position:relative}.bday-title{font-family:var(--font-display);color:var(--pearl);text-shadow:0 3px 18px #0a051ae6;font-size:clamp(1.8rem,8vw,3rem);line-height:1.1;animation:.7s cubic-bezier(.34,1.56,.64,1) both toon-pop}.bday-name{color:var(--gold-strong);text-shadow:0 0 20px #e8c87880;transform-origin:bottom;margin-top:6px;font-size:1.35em;animation:1.6s ease-in-out .7s infinite toon-bounce;display:block}.bday-actions{flex-wrap:wrap;justify-content:center;gap:12px;animation:.6s both caption-in;display:flex}@keyframes caption-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.bday-skip{bottom:calc(24px + env(safe-area-inset-bottom));z-index:6;position:absolute;right:20px}.letter-modal{background:linear-gradient(160deg,#fff8f0,#f3e6d8);border:1px solid #e8c87899;max-height:82dvh;overflow-y:auto}.letter-seal{margin-bottom:6px;font-size:2.4rem}.letter-body{font-family:var(--font-display);color:#5a3a48;margin:0 0 20px;font-size:1.15rem;line-height:1.7}@media (prefers-reduced-motion:reduce){.b-cake,.b-cake.up{opacity:1;transform:none}.b-curtains.open .b-curtain-l,.b-curtains.open .b-curtain-r{opacity:0;transform:translate(0)}}.intro{background:var(--night-deep);justify-content:center;align-items:center}.intro-scene{width:100%;height:100%;position:absolute;inset:0}.i-star{animation:2.4s ease-in-out infinite glow-pulse}.i-door-scene{transition:opacity .8s,transform .8s}.i-door-scene.gone{opacity:0;transform:scale(1.6)}.i-door{transform-box:fill-box;transform-origin:0;transition:transform 1.2s cubic-bezier(.4,0,.2,1)}.i-door.open{transform:perspective(600px)rotateY(-70deg)scaleX(.55)}.i-door-light{opacity:0;transition:opacity 1.4s .3s}.i-door-light.on{opacity:.75}.i-stairs{opacity:0;transition:opacity .9s,transform .9s;transform:translateY(40px)}.i-stairs.show{opacity:1;transform:translateY(0)}.i-stairs ellipse{animation:3s ease-in-out infinite stair-drift}@keyframes stair-drift{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.i-pavilion{opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity 1s,transform 1s cubic-bezier(.34,1.3,.64,1);transform:translateY(40px)scale(.9)}.i-pavilion.show{opacity:1;transform:translateY(0)scale(1)}.i-dome-star{animation:1.6s ease-in-out infinite glow-pulse}.intro-caption{z-index:2;font-family:var(--font-display);color:var(--pearl);text-shadow:0 2px 16px #0a051ae6;text-align:center;margin-top:60dvh;padding:0 24px;font-size:clamp(1.1rem,4.5vw,1.5rem);font-style:italic;animation:.7s both caption-in;position:relative}.intro-skip{bottom:calc(24px + env(safe-area-inset-bottom));z-index:3;position:absolute;right:20px}.princess{display:block;overflow:visible}.princess .p-figure,.princess .p-head,.princess .p-skirt,.princess .p-arm,.princess .p-hair-back{transform-box:fill-box;will-change:transform}.princess .p-figure{transform-origin:50% 90%}.princess .p-head{transform-origin:50% 85%}.princess .p-skirt{transform-origin:50% 8%}.princess .p-arm-l{transform-origin:85% 8%}.princess .p-arm-r{transform-origin:15% 8%}.princess .p-hair-back{transform-origin:50% 15%}.pose-idle .p-figure{animation:3.6s ease-in-out infinite p-sway}.pose-idle .p-head{animation:3.6s ease-in-out infinite p-head-bob}.pose-idle .p-hair-back{animation:3.6s ease-in-out infinite p-hair-sway}@keyframes p-sway{0%,to{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}@keyframes p-head-bob{0%,to{transform:rotate(1.5deg)}50%{transform:rotate(-1.5deg)}}@keyframes p-hair-sway{0%,to{transform:rotate(1deg)}50%{transform:rotate(-1deg)}}.pose-dance .p-figure{animation:2.4s ease-in-out infinite p-waltz}.pose-dance .p-skirt{animation:2.4s ease-in-out infinite p-skirt-swish}.pose-dance .p-arm-l{animation:2.4s ease-in-out infinite p-arm-waltz-l}.pose-dance .p-arm-r{animation:2.4s ease-in-out infinite p-arm-waltz-r}.pose-dance .p-head{animation:2.4s ease-in-out infinite p-head-bob}@keyframes p-waltz{0%,to{transform:translate(-7px)rotate(-2deg)}50%{transform:translate(7px)rotate(2deg)}}@keyframes p-skirt-swish{0%,to{transform:rotate(2.4deg)}50%{transform:rotate(-2.4deg)}}@keyframes p-arm-waltz-l{0%,to{transform:rotate(-14deg)}50%{transform:rotate(10deg)}}@keyframes p-arm-waltz-r{0%,to{transform:rotate(14deg)}50%{transform:rotate(-10deg)}}.pose-curtsy .p-figure{animation:1.1s both p-curtsy}.pose-curtsy .p-skirt{animation:1.1s both p-curtsy-skirt}.pose-curtsy .p-arm-l{animation:1.1s both p-curtsy-arm-l}.pose-curtsy .p-arm-r{animation:1.1s both p-curtsy-arm-r}.pose-curtsy .p-head{animation:1.1s both p-curtsy-head}@keyframes p-curtsy{0%,to{transform:translateY(0)}40%,60%{transform:translateY(14px)}}@keyframes p-curtsy-skirt{0%,to{transform:scaleY(1)scaleX(1)}40%,60%{transform:scaleY(.88)scaleX(1.08)}}@keyframes p-curtsy-arm-l{0%,to{transform:rotate(0)}40%,60%{transform:rotate(-38deg)}}@keyframes p-curtsy-arm-r{0%,to{transform:rotate(0)}40%,60%{transform:rotate(38deg)}}@keyframes p-curtsy-head{0%,to{transform:rotate(0)}40%,60%{transform:rotate(4deg)translateY(2px)}}.princess .p-view{transform-box:fill-box}.pose-spin .p-view-side,.pose-spin .p-view-back{opacity:0}.pose-spin .p-figure{animation:1.1s linear both p-spin-width}.pose-spin .p-view-front{animation:1.1s linear both p-spin-vfront}.pose-spin .p-view-side{animation:1.1s linear both p-spin-vside}.pose-spin .p-view-back{animation:1.1s linear both p-spin-vback}.pose-spin .p-skirt{animation:1.1s ease-in-out both p-spin-flare}.pose-spin .p-shadow{animation:1.1s linear both p-spin-shadow}@keyframes p-spin-width{0%{transform:scaleX(1)}12%{transform:scaleX(.04)}25%{transform:scaleX(.88)}38%{transform:scaleX(.04)}50%{transform:scaleX(1)}62%{transform:scaleX(.04)}75%{transform:scaleX(-.88)}88%{transform:scaleX(-.04)}to{transform:scaleX(1)}}@keyframes p-spin-vfront{0%,11.9%{opacity:1}12%,87.9%{opacity:0}88%,to{opacity:1}}@keyframes p-spin-vside{0%,11.9%{opacity:0}12%,37.9%{opacity:1}38%,61.9%{opacity:0}62%,87.9%{opacity:1}88%,to{opacity:0}}@keyframes p-spin-vback{0%,37.9%{opacity:0}38%,61.9%{opacity:1}62%,to{opacity:0}}@keyframes p-spin-flare{0%,to{transform:scaleX(1)scaleY(1)}20%,80%{transform:scaleX(1.14)scaleY(.96)}50%{transform:scaleX(1.2)scaleY(.95)}}@keyframes p-spin-shadow{0%,50%,to{opacity:.35;transform:scaleX(1)}12%,38%,62%,88%{opacity:.28;transform:scaleX(.55)}}.p-spin-trail{transform-box:fill-box;transform-origin:50%;animation:1.1s linear both p-trail-orbit}.p-spin-trail circle{animation:1.1s both p-trail-fade}@keyframes p-trail-orbit{0%{transform:rotate(0)}to{transform:rotate(300deg)}}@keyframes p-trail-fade{0%,to{opacity:0}20%,75%{opacity:.9}}.pose-wave .p-arm-l{animation:1.1s both p-wave-l}.pose-wave .p-arm-r{animation:1.1s both p-wave-r}.pose-wave .p-figure{animation:1.1s both p-wave-body}@keyframes p-wave-l{0%,to{transform:rotate(0)}35%{transform:rotate(-130deg)}65%{transform:rotate(-110deg)}}@keyframes p-wave-r{0%,to{transform:rotate(0)}45%{transform:rotate(130deg)}75%{transform:rotate(110deg)}}@keyframes p-wave-body{0%,to{transform:rotate(0)}50%{transform:rotate(-2.4deg)}}.pose-stepL .p-figure{animation:.85s cubic-bezier(.34,1.35,.64,1) both p-stepL}.pose-stepR .p-figure{animation:.85s cubic-bezier(.34,1.35,.64,1) both p-stepR}.pose-stepL .p-skirt,.pose-stepR .p-skirt{animation:.85s both p-skirt-swish}.pose-stepL .p-hair-back{animation:.85s both p-hair-lag-l}.pose-stepR .p-hair-back{animation:.85s both p-hair-lag-r}.pose-stepL .p-shadow{animation:.85s both p-shadow-l}.pose-stepR .p-shadow{animation:.85s both p-shadow-r}@keyframes p-stepL{0%,to{transform:translate(0)rotate(0)}40%,65%{transform:translate(-20px)rotate(-4deg)}}@keyframes p-stepR{0%,to{transform:translate(0)rotate(0)}40%,65%{transform:translate(20px)rotate(4deg)}}@keyframes p-hair-lag-l{0%,to{transform:translate(0)rotate(0)}30%{transform:translate(4px)rotate(2.5deg)}60%{transform:translate(-3px)rotate(-2deg)}}@keyframes p-hair-lag-r{0%,to{transform:translate(0)rotate(0)}30%{transform:translate(-4px)rotate(-2.5deg)}60%{transform:translate(3px)rotate(2deg)}}@keyframes p-shadow-l{0%,to{transform:translate(0)}40%,65%{transform:translate(-16px)}}@keyframes p-shadow-r{0%,to{transform:translate(0)}40%,65%{transform:translate(16px)}}.pose-jump .p-figure{animation:.85s cubic-bezier(.34,1.3,.64,1) both p-jump}.pose-jump .p-skirt{animation:.85s both p-jump-skirt}.pose-jump .p-hair-back{animation:.85s both p-jump-hair}@keyframes p-jump{0%,to{transform:translateY(0)scaleY(1)}15%{transform:translateY(4px)scaleY(.94)}50%{transform:translateY(-26px)scaleY(1.04)}85%{transform:translateY(2px)scaleY(.97)}}@keyframes p-jump-skirt{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.06)scaleX(1.06)}}@keyframes p-jump-hair{0%,to{transform:translateY(0)}55%{transform:translateY(5px)}}.pose-celebrate .p-figure{animation:.9s ease-in-out infinite p-celebrate}.pose-celebrate .p-arm-l{animation:.9s ease-in-out infinite p-cele-arm-l}.pose-celebrate .p-arm-r{animation:.9s ease-in-out infinite p-cele-arm-r}.pose-celebrate .p-skirt{animation:.9s ease-in-out infinite p-skirt-swish}@keyframes p-celebrate{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-14px)rotate(2deg)}}@keyframes p-cele-arm-l{0%,to{transform:rotate(-150deg)}50%{transform:rotate(-120deg)}}@keyframes p-cele-arm-r{0%,to{transform:rotate(150deg)}50%{transform:rotate(120deg)}}.princess.pose-dance{animation:2.4s ease-in-out infinite svg-dance-3d}.princess.pose-jump{animation:.85s both svg-jump-3d}.princess.pose-curtsy{animation:1.1s both svg-curtsy-3d}.princess.pose-stepL{animation:.85s both svg-stepL-3d}.princess.pose-stepR{animation:.85s both svg-stepR-3d}.princess.pose-celebrate{animation:.9s ease-in-out infinite svg-cele-3d}@keyframes svg-dance-3d{0%,to{transform:perspective(700px)rotateY(-7deg)}50%{transform:perspective(700px)rotateY(7deg)}}@keyframes svg-jump-3d{0%,to{transform:perspective(700px)rotateX(0)}45%{transform:perspective(700px)rotateX(9deg)}}@keyframes svg-curtsy-3d{0%,to{transform:perspective(700px)rotateX(0)}40%,60%{transform:perspective(700px)rotateX(7deg)}}@keyframes svg-stepL-3d{0%,to{transform:perspective(700px)rotateY(0)}40%,65%{transform:perspective(700px)rotateY(13deg)}}@keyframes svg-stepR-3d{0%,to{transform:perspective(700px)rotateY(0)}40%,65%{transform:perspective(700px)rotateY(-13deg)}}@keyframes svg-cele-3d{0%,to{transform:perspective(700px)rotateY(-8deg)}50%{transform:perspective(700px)rotateY(8deg)}}.pose-jump .p-shadow{animation:.85s both p-shadow-jump}.pose-celebrate .p-shadow{animation:.9s ease-in-out infinite p-shadow-cele}.princess .p-shadow{transform-box:fill-box;transform-origin:50%}@keyframes p-shadow-jump{0%,to{opacity:.35;transform:scale(1)}50%{opacity:.18;transform:scale(.62)}}@keyframes p-shadow-cele{0%,to{opacity:.35;transform:scale(1)}50%{opacity:.22;transform:scale(.75)}}.princess .p-blink .p-lid{transform-box:fill-box;transform-origin:50%;animation:4.8s ease-in-out infinite p-blink}@keyframes p-blink{0%,93%,to{transform:scaleY(0)}96%,98%{transform:scaleY(1)}}.p-spark{opacity:0;animation:2.6s ease-in-out infinite p-spark}.p-spark.s2{animation-delay:.9s}.p-spark.s3{animation-delay:1.7s}@keyframes p-spark{0%,to{opacity:0;transform:translateY(0)scale(.6)}50%{opacity:.9;transform:translateY(-10px)scale(1.15)}}.menu{padding-bottom:calc(28px + env(safe-area-inset-bottom));align-items:center}.menu-backdrop{z-index:0;width:100%;height:100%;transform:translate3d(calc(var(--par-x,0) * -12px), calc(var(--par-y,0) * -8px), 0) scale(1.05);will-change:transform;position:absolute;inset:0}.m-candle{animation:1.8s ease-in-out infinite glow-pulse}.menu-top{z-index:2;width:100%;padding:calc(12px + env(safe-area-inset-top)) 16px 0;justify-content:space-between;align-items:center;display:flex;position:relative}.menu-stars{color:var(--gold-strong);min-height:var(--tap-min);background:#1a103599;border:1px solid #e8c87859;border-radius:999px;align-items:center;padding:8px 16px;font-weight:700;display:inline-flex}.menu-hero{z-index:1;text-align:center;margin-top:4px;position:relative}.menu-title{color:var(--gold-strong);text-shadow:0 0 30px #e8c87873;letter-spacing:.02em;font-size:clamp(1.9rem,7vw,2.8rem)}.menu-welcome{font-family:var(--font-display);color:var(--pink);margin:6px 0 0;font-size:1.1rem;font-style:italic}.menu-princess{transform:translate3d(calc(var(--par-x,0) * 10px), calc(var(--par-y,0) * 6px), 0);will-change:transform;justify-content:center;align-items:flex-end;margin-top:-6px;display:flex;position:relative}.menu-prince{margin-left:-26px;animation:.9s cubic-bezier(.34,1.56,.64,1) both prince-appear;transform:scaleX(-1)}@keyframes prince-appear{0%{opacity:0;transform:scaleX(-1)translateY(20px)scale(.6)}to{opacity:1;transform:scaleX(-1)translateY(0)scale(1)}}.menu-nights{color:var(--gold-strong);margin:4px 0 0;font-size:.9rem;font-style:italic;animation:.8s both fade-in}.menu-anniversary{color:var(--pink);margin:2px 0 0;font-size:1rem;font-weight:700;animation:.6s cubic-bezier(.34,1.56,.64,1) both pop-in}.daily-toast{top:calc(14px + env(safe-area-inset-top));max-width:min(92vw,420px);box-shadow:var(--shadow-card), var(--shadow-glow);z-index:60;background:linear-gradient(160deg,#3a2a66f7,#251845f7);border:1px solid #e8c8788c;border-radius:999px;align-items:center;gap:10px;padding:10px 18px;font-size:.9rem;animation:.5s cubic-bezier(.34,1.56,.64,1) both toast-in;display:flex;position:fixed;left:50%;transform:translate(-50%)}.daily-toast .daily-star{font-size:1.3rem;animation:.6s cubic-bezier(.34,1.56,.64,1) .3s both star-pop}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.moon-hotspot{z-index:3;cursor:default;background:0 0;border:none;width:26%;max-width:280px;height:34%;max-height:320px;position:absolute;top:7%;right:3%}.moon-hotspot:focus-visible{outline:none}.chatter-bubble{color:#3a2a56;max-width:min(78vw,300px);box-shadow:var(--shadow-card);z-index:2;white-space:normal;text-align:center;background:#fff8f0f5;border-radius:16px;padding:8px 14px;font-size:.85rem;font-weight:600;animation:.4s cubic-bezier(.34,1.56,.64,1) both bubble-in;position:absolute;top:-34px;left:50%;transform:translate(-50%)}.chatter-bubble:after{content:"";border:8px solid #0000;border-top-color:#fff8f0f5;border-bottom:none;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}@keyframes bubble-in{0%{opacity:0;transform:translate(-50%)translateY(8px)scale(.85)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.chatter-prince{color:#263a66;background:#d2e0f8f5;max-width:min(62vw,240px);animation:.4s cubic-bezier(.34,1.56,.64,1) both bubble-in-prince;top:14px;left:auto;right:0}.chatter-prince:after{border-top-color:#d2e0f8f5}@keyframes bubble-in-prince{0%{opacity:0;transform:translateY(8px)scale(.85)}to{opacity:1;transform:none}}.secret-modal h2{margin-bottom:4px;font-size:2.2rem}.secret-input{width:100%;min-height:var(--tap-min);border-radius:var(--radius-sm);color:var(--pearl);font-family:var(--font-body);text-align:center;letter-spacing:.2em;background:#0d072299;border:1.5px solid #b8a0e880;margin:10px 0;padding:10px 14px;font-size:1.1rem}.secret-input:focus{border-color:var(--gold);outline:none;box-shadow:0 0 14px #e8c8784d}.secret-input.wrong{border-color:#c25570;animation:.45s tile-err}.secret-wrong-msg{color:var(--lavender);margin:0 0 8px;font-size:.85rem;font-style:italic}.menu-doors{z-index:2;flex-direction:column;gap:12px;width:100%;max-width:560px;padding:6px 16px 0;display:flex;position:relative}.door-card{border-radius:var(--radius);width:100%;min-height:72px;box-shadow:var(--shadow-card);text-align:left;color:var(--pearl);background:linear-gradient(150deg,#3a2a66d9,#251845eb);border:1px solid #b8a0e84d;align-items:center;gap:14px;padding:10px 16px;transition:transform .18s,border-color .18s,box-shadow .18s;animation:.5s cubic-bezier(.34,1.5,.64,1) both door-in;display:flex}@keyframes door-in{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0}}.menu-doors .door-card:nth-child(2){animation-delay:50ms}.menu-doors .door-card:nth-child(3){animation-delay:.1s}.menu-doors .door-card:nth-child(4){animation-delay:.15s}.menu-doors .door-card:nth-child(5){animation-delay:.2s}.menu-doors .door-card:nth-child(6){animation-delay:.25s}.menu-doors .door-card:nth-child(7){animation-delay:.3s}.menu-doors .door-card:nth-child(8){animation-delay:.35s}.door-card:hover{box-shadow:var(--shadow-card), var(--shadow-glow);border-color:#e8c87899;transform:translateY(-2px)}.door-card:active{transform:scale(.98)}.door-icon{flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.door-icon svg{width:100%;height:100%}.door-icon-emoji{font-size:2rem}.door-text{flex-direction:column;flex:1;gap:2px;display:flex}.door-text strong{font-family:var(--font-display);color:var(--pearl);font-size:1.12rem}.door-text small{color:var(--lavender);font-size:.85rem}.door-stars{color:var(--gold);letter-spacing:-2px;font-size:.8rem}.door-memories{border-color:#f5b8d080}.door-tale{background:linear-gradient(150deg,#b84a788c,#3a2a66eb);border-color:#f5b8d099}.door-tale:hover{border-color:#f5d898cc}.door-tale .door-stars{color:var(--pink);font-size:1rem}.door-love{background:linear-gradient(150deg,#ee8fb880,#3a2a66eb);border-color:#f5b8d099}.door-love .door-stars{color:var(--gold-strong)}.door-card:hover .door-icon{animation:.5s door-icon-wiggle}@keyframes door-icon-wiggle{0%,to{transform:rotate(0)scale(1)}30%{transform:rotate(-9deg)scale(1.14)}60%{transform:rotate(6deg)scale(1.08)}}.menu-joke{z-index:1;color:var(--lavender);text-align:center;margin:16px 20px 0;font-size:.9rem;font-style:italic;position:relative}.menu-footer{z-index:1;opacity:.75;justify-content:center;gap:14px;margin-top:18px;display:flex;position:relative}.footer-btn{min-height:var(--tap-min);color:var(--lavender);cursor:pointer;background:#fff8f00d;border:1px solid #b8a0e840;border-radius:999px;align-items:center;gap:4px;padding:8px 14px;font-size:.8rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.footer-btn:hover{color:var(--pearl);background:#fff8f01a}.photo-modal{max-height:80dvh;overflow-y:auto}.photo-modal figure{margin:0 0 16px}.photo-modal img{border-radius:var(--radius-sm);border:2px solid #e8c87866;width:100%}.photo-modal figcaption{color:var(--pink);margin-top:6px;font-style:italic}@media (width>=720px){.menu-doors{grid-template-columns:1fr 1fr;max-width:760px;display:grid}}.ambient-backdrop{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0}.amb-twinkle{animation:2.8s ease-in-out infinite glow-pulse}.amb-drift{animation-name:amb-drift;animation-timing-function:ease-in-out;animation-iteration-count:infinite}@keyframes amb-drift{0%{opacity:0;transform:translateY(0)}15%{opacity:.85}85%{opacity:.2}to{opacity:0;transform:translateY(-90px)}}.tale{background:var(--night-deep);justify-content:flex-start;align-items:center;overflow:hidden}.tale-top{z-index:3;width:100%;padding:calc(12px + env(safe-area-inset-top)) 16px 0;justify-content:flex-end;display:flex;position:relative}.tale-stage{z-index:2;justify-content:center;align-items:flex-end;min-height:46dvh;margin-top:6dvh;display:flex;position:relative}.tale-glints{pointer-events:none;position:absolute;inset:-10% 0 0}.tale-glint{color:var(--gold-strong);opacity:0;text-shadow:0 0 8px #f5d898cc;font-size:1rem;animation:2.6s ease-in-out infinite tale-glint;position:absolute}.tale-glint.g0{animation-delay:0s;top:8%;left:24%}.tale-glint.g1{color:var(--pink);animation-delay:.6s;top:22%;right:20%}.tale-glint.g2{color:var(--lavender);animation-delay:1.1s;top:46%;left:16%}.tale-glint.g3{font-size:.8rem;animation-delay:1.7s;top:60%;right:18%}.tale-glint.g4{color:var(--pink);animation-delay:2.1s;top:34%;left:50%}@keyframes tale-glint{0%,to{opacity:0;transform:scale(.6)rotate(0)}50%{opacity:1;transform:scale(1.2)rotate(90deg)}}.tale-caption-wrap{z-index:3;text-align:center;flex:1;width:100%;max-width:560px;margin-top:2dvh;padding:0 24px;position:relative}.tale-caption{font-family:var(--font-display);color:var(--pearl);text-shadow:0 2px 16px #0a051ae6;font-size:clamp(1.15rem,4.8vw,1.6rem);font-style:italic;line-height:1.5;animation:.7s both tale-caption-in}@keyframes tale-caption-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.tale-finale{flex-direction:column;align-items:center;gap:14px;animation:.7s both tale-caption-in;display:flex}.tale-caption-final{margin:0}.tale-closing{font-family:var(--font-display);color:var(--gold-strong);text-shadow:0 0 22px #e8c87880;margin:4px 0 0;font-size:clamp(1.5rem,6.5vw,2.2rem);animation:.6s cubic-bezier(.34,1.56,.64,1) .3s both closing-pop}@keyframes closing-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.tale-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;display:flex}.tale-skip{bottom:calc(24px + env(safe-area-inset-bottom));z-index:4;position:absolute;right:20px}.love{background:var(--night-deep);justify-content:flex-start;align-items:center;overflow:hidden}.love-top{z-index:3;width:100%;padding:calc(12px + env(safe-area-inset-top)) 16px 0;justify-content:space-between;align-items:center;display:flex;position:relative}.love-back{padding:8px 16px;font-size:.95rem}.love-title{z-index:2;color:var(--pink);text-shadow:0 0 22px #f5b8d066;text-align:center;margin-top:2dvh;padding:0 20px;font-size:clamp(1.5rem,6vw,2.1rem);position:relative}.love-jar-btn{z-index:2;background:0 0;flex-direction:column;align-items:center;gap:10px;margin-top:3dvh;display:flex;position:relative}.love-jar{filter:drop-shadow(0 8px 22px #0a051a80);transition:transform .2s}.love-jar-btn:hover .love-jar{transform:translateY(-4px)scale(1.03)}.love-jar-btn:active .love-jar{transform:scale(.96)}.love-jar-heart{transform-box:fill-box;transform-origin:50%;animation:3s ease-in-out infinite jar-heart-bob}@keyframes jar-heart-bob{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-3px)rotate(4deg)}}.love-jar-hint{font-family:var(--font-display);color:var(--gold-strong);text-shadow:0 2px 12px #0a051ae6;font-size:1rem;font-style:italic;animation:2s ease-in-out infinite glow-pulse}.love-card{z-index:2;text-align:center;width:min(90vw,460px);box-shadow:var(--shadow-card);background:linear-gradient(160deg,#fff8f0,#f6e6ee);border:2px solid #ee8fb880;border-radius:20px 22px 20px 24px;margin-top:3dvh;padding:22px 24px 18px;animation:.55s cubic-bezier(.34,1.56,.64,1) both love-card-in;position:relative}@keyframes love-card-in{0%{opacity:0;transform:translateY(16px)scale(.9)rotate(-1.5deg)}to{opacity:1;transform:none}}.love-card-heart{margin-bottom:6px;font-size:1.8rem;animation:.6s cubic-bezier(.34,1.7,.5,1) .1s both heart-pop;display:block}@keyframes heart-pop{0%{transform:scale(0)}to{transform:scale(1)}}.love-reason{font-family:var(--font-display);color:#6b2848;margin:0 0 12px;font-size:clamp(1.15rem,4.5vw,1.45rem);line-height:1.55}.love-count{color:var(--pink-strong);letter-spacing:.08em;font-size:.85rem;font-weight:700}.love-hearts{pointer-events:none;position:absolute;inset:0;overflow:visible}.love-float{opacity:0;font-size:1.2rem;animation:1.6s ease-out both love-float;position:absolute;bottom:40%}.love-float.h0{animation-delay:50ms;left:18%}.love-float.h1{font-size:.9rem;animation-delay:.2s;left:40%}.love-float.h2{animation-delay:.12s;left:62%}.love-float.h3{font-size:1rem;animation-delay:.28s;left:80%}@keyframes love-float{0%{opacity:0;transform:translateY(0)scale(.6)}30%{opacity:1}to{opacity:0;transform:translateY(-90px)scale(1.1)rotate(12deg)}}.rhythm{align-items:center}.rhythm.theme-silver{background:linear-gradient(#10142a,#232c48)}.rhythm.theme-gold{background:linear-gradient(#1a1226,#3a2c14)}.rhythm.theme-diamond{background:linear-gradient(#0c1a26,#1c3a46)}.rhythm.theme-ball{background:linear-gradient(#120a26,#2a1d4f)}.rhythm-backdrop{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.rhythm-pick{z-index:1;flex:1;max-width:480px;margin:0 auto;padding:12px 24px 40px;position:relative}.level-list{flex-direction:column;gap:10px;width:100%;display:flex}.level-btn{width:100%;font-family:var(--font-display);justify-content:flex-start;font-size:1.1rem}.theme-chip-silver{color:#26324a;background:linear-gradient(135deg,#dce4f0,#9fb0c8)}.theme-chip-gold{color:#4a3410;background:linear-gradient(135deg,#f5e3b0,#e8c878)}.theme-chip-diamond{color:#0e3a42;background:linear-gradient(135deg,#d8f4f8,#8fd0d8)}.theme-chip-ball{color:#2e1d5a;background:linear-gradient(135deg,#d4c4f4,#b8a0e8)}.level-btn.locked{filter:grayscale(.8)brightness(.6)}.rhythm-hint{font-size:.88rem}.rhythm-hud{z-index:2;flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:relative}.hud-chip{background:#1a1035a6;border:1px solid #b8a0e859;border-radius:999px;padding:6px 14px;font-size:.9rem;font-weight:700}.hud-chip.combo.hot{border-color:var(--gold);color:var(--gold-strong);animation:.8s ease-in-out infinite glow-pulse}.rhythm-stage{z-index:1;flex:1;justify-content:center;align-items:center;width:100%;min-height:250px;display:flex;position:relative}.duet-prince{margin-left:-34px;animation:.8s both fade-in;transform:scaleX(-1)}.stage-floor{transform-origin:bottom;pointer-events:none;background:radial-gradient(#fff8f038,#f5b8d014 55%,#0000 75%),repeating-conic-gradient(#f0d89829 0deg 22.5deg,#f5b8d021 22.5deg 45deg,#b8a0e821 45deg 67.5deg,#fff8f01a 67.5deg 90deg);border-radius:50%;width:min(94vw,460px);height:150px;position:absolute;bottom:6%;left:50%;transform:translate(-50%)perspective(420px)rotateX(58deg);box-shadow:0 0 64px #f5b8d033,inset 0 0 40px #f0d89824}.stage-floor:after{content:"";background:linear-gradient(100deg,#0000 28%,#fff8f047 48%,#f5b8d01f 55%,#0000 72%) 0 0/250% 100%;border-radius:50%;animation:5s ease-in-out infinite floor-sheen;position:absolute;inset:0}@keyframes floor-sheen{0%,to{background-position:120% 0}50%{background-position:-20% 0}}.stage-spotlight{pointer-events:none;z-index:0;filter:blur(2px);background:radial-gradient(60% 70% at 50% 82%,#f5b8d033,#0000 70%),conic-gradient(from 180deg at 50% 6%,#0000 78deg,#fff8f029 90deg,#f0d8981a 96deg,#0000 108deg);width:min(72vw,340px);height:78%;animation:6s ease-in-out infinite spotlight-breathe;position:absolute;bottom:8%;left:50%;transform:translate(-50%)}@keyframes spotlight-breathe{0%,to{opacity:.7;transform:translate(-50%)scale(1)}50%{opacity:1;transform:translate(-50%)scale(1.04)}}.stage-glints{pointer-events:none;z-index:2;position:absolute;inset:0}.glint{opacity:0;background:radial-gradient(circle,#fff8f0f2 0%,#fff8f000 60%);width:14px;height:14px;animation:2.4s ease-in-out infinite glint-twinkle;position:absolute}.glint:before,.glint:after{content:"";clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);color:var(--pearl);background:linear-gradient(currentColor,currentColor);position:absolute;inset:0}.glint:after{color:var(--gold-strong);transform:scale(.6)rotate(45deg)}.glint.g1{color:var(--pink);animation-delay:0s;top:30%;left:30%}.glint.g2{color:var(--gold-strong);animation-delay:.7s;top:26%;left:66%}.glint.g3{color:var(--lavender);animation-delay:1.3s;top:58%;left:24%}.glint.g4{color:var(--pink);animation-delay:1.9s;top:62%;left:72%}.glint.g5{color:var(--gold-strong);animation-delay:1s;top:18%;left:50%;transform:scale(1.2)}@keyframes glint-twinkle{0%,to{opacity:0;transform:scale(.5)rotate(0)}50%{opacity:.9;transform:scale(1)rotate(35deg)}}.bg-note{transform-box:view-box;will-change:transform, opacity;animation:9s ease-in-out infinite note-drift}@keyframes note-drift{0%{opacity:0;transform:translateY(10px)}20%{opacity:.75}80%{opacity:.6}to{opacity:0;transform:translateY(-46px)}}.bg-layer-far,.bg-layer-near{transform-box:fill-box;transform-origin:bottom;will-change:transform}.bg-layer-far{animation:11s ease-in-out infinite bg-drift}.bg-layer-near{animation:7s ease-in-out infinite bg-drift}@keyframes bg-drift{0%,to{transform:translate(-5px)}50%{transform:translate(5px)}}.firefly{opacity:0;animation:5.5s ease-in-out infinite firefly}@keyframes firefly{0%,to{opacity:0;transform:translate(0)}25%{opacity:.9}50%{opacity:.3;transform:translate(14px,-36px)}75%{opacity:.8;transform:translate(-6px,-60px)}}.mist{transform-box:fill-box;transform-origin:50%}.mist.m1{animation:13s ease-in-out infinite mist-drift}.mist.m2{animation:17s ease-in-out infinite reverse mist-drift}@keyframes mist-drift{0%,to{transform:translate(-24px)}50%{transform:translate(24px)}}.phase-label{font-family:var(--font-display);color:var(--gold-strong);text-shadow:0 2px 12px #0009;white-space:nowrap;font-size:1.2rem;font-style:italic;position:absolute;top:4px;left:50%;transform:translate(-50%)}.rhythm-feedback{font-family:var(--font-display);white-space:nowrap;pointer-events:none;font-size:1.5rem;font-weight:700;animation:1.1s both fb-float;position:absolute;top:18%;left:50%}@keyframes fb-float{0%{opacity:0;transform:translate(-50%,12px)scale(.8)}25%{opacity:1;transform:translate(-50%)scale(1.08)}75%{opacity:1;transform:translate(-50%,-10px)scale(1)}to{opacity:0;transform:translate(-50%,-22px)scale(.95)}}.fb-perfect{color:var(--gold-strong);text-shadow:0 0 18px #f0d898cc}.fb-good{color:var(--pink);text-shadow:0 0 14px #f5b8d0b3}.fb-neutral{color:var(--lavender)}.fb-miss{color:var(--pearl);font-size:1.15rem}.fb-perfect:before,.fb-perfect:after,.fb-good:before,.fb-good:after{content:"✦";color:currentColor;pointer-events:none;font-size:.7em;animation:.75s ease-out both sparkle-burst;position:absolute;top:50%;left:50%}.fb-perfect:before,.fb-good:before{--bx:-1;--by:-1}.fb-perfect:after,.fb-good:after{--bx:1;--by:1;animation-delay:60ms}@keyframes sparkle-burst{0%{opacity:0;transform:translate(-50%,-50%)scale(.2)}40%{opacity:1;transform:translate(calc(-50% + var(--bx) * 34px), calc(-50% + var(--by) * 26px)) scale(1.2) rotate(90deg)}to{opacity:0;transform:translate(calc(-50% + var(--bx) * 52px), calc(-50% + var(--by) * 40px)) scale(.4) rotate(180deg)}}.seq-dots{z-index:2;justify-content:center;gap:8px;min-height:22px;padding:4px 0 10px;display:flex;position:relative}.seq-dot{background:#fff8f040;border-radius:50%;width:10px;height:10px;transition:background .2s,transform .2s}.seq-dot:after{content:"";background:#ffffffd9;border-radius:50%;width:34%;height:34%;position:absolute;top:18%;left:24%}.seq-dot{position:relative}.seq-dot.done{background:radial-gradient(circle at 35% 30%, var(--gold-strong), var(--gold));box-shadow:0 0 8px #f0d89899}.seq-dot.now{background:radial-gradient(circle at 35% 30%, #fff, var(--pink));animation:.6s ease-in-out infinite glow-pulse;transform:scale(1.45);box-shadow:0 0 12px #f5b8d0bf}.move-buttons{z-index:2;width:100%;max-width:560px;padding:0 10px calc(20px + env(safe-area-inset-bottom));justify-content:center;gap:8px;display:flex;position:relative}.move-btn{border-radius:var(--radius);max-width:96px;min-height:76px;color:var(--pearl);touch-action:manipulation;background:linear-gradient(160deg,#f5b8d038,#b8a0e824 45%,#251845f2),linear-gradient(160deg,#3a2a66eb,#251845f5);border:2px solid #b8a0e873;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;transition:transform .12s,border-color .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #fff8f040,inset 0 -6px 14px #25184599}.move-sheen{pointer-events:none;background:linear-gradient(140deg,#fff8f0b3,#fff8f000 70%);border-radius:50% 50% 60% 60%;width:60%;height:62%;position:absolute;top:0;left:-20%;transform:skew(-14deg)}.move-btn:active:not(:disabled){border-color:var(--pink);transform:scale(.93)}.move-btn:disabled{opacity:.75}.move-btn.lit{border-color:var(--gold-strong);background:linear-gradient(160deg,#f5b8d066,#f0d8984d 50%,#3a2a66f2),linear-gradient(160deg,#3a2a66eb,#251845f5);transform:scale(1.07);box-shadow:0 0 26px #f0d898a6,inset 0 1px #fff8f080}.move-btn.lit:after{content:"✦";color:var(--pearl);text-shadow:0 0 6px var(--gold-strong);font-size:.9rem;animation:.9s ease-in-out infinite lit-sparkle;position:absolute;top:6px;right:8px}@keyframes lit-sparkle{0%,to{opacity:.3;transform:scale(.7)rotate(0)}50%{opacity:1;transform:scale(1.15)rotate(90deg)}}.move-emoji{filter:drop-shadow(0 1px 3px #25184580);font-size:1.7rem;position:relative}.move-label{font-size:.78rem;font-weight:700;position:relative}@media (width<=380px){.move-btn{min-height:68px}.move-emoji{font-size:1.4rem}.move-label{font-size:.7rem}}.memory{background:linear-gradient(#160d2e,#2a1d4f);align-items:center}.memory>:not(.ambient-backdrop):not(.modal-backdrop):not(canvas){z-index:1;position:relative}.memory-pick{flex:1;max-width:460px;margin:0 auto;padding:10px 24px 40px}.night-count{color:var(--lavender);margin:0}.diff-btn small{opacity:.8;margin-left:4px;font-weight:500}.memory-grid{width:100%;max-width:560px;padding:10px 12px calc(24px + env(safe-area-inset-bottom));flex:1;align-content:start;gap:8px;margin:0 auto;display:grid}.memory-grid.cols-3{grid-template-columns:repeat(3,1fr);max-width:380px}.memory-grid.cols-4{grid-template-columns:repeat(4,1fr);max-width:440px}.memory-grid.cols-5{grid-template-columns:repeat(5,1fr);max-width:520px}.mem-card{aspect-ratio:3/3.6;min-height:var(--tap-min);perspective:500px;border-radius:10px;position:relative}.mem-face{backface-visibility:hidden;border-radius:10px;justify-content:center;align-items:center;transition:transform .4s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;inset:0;overflow:hidden}.mem-face svg{width:100%;height:100%}.mem-back{border:1.5px solid #b8a0e899;transform:rotateY(0);box-shadow:0 2px 8px #00000047,inset 0 1px 2px #b8a0e859}.mem-front{border:1.6px solid var(--gold);background:linear-gradient(155deg,#fff8f0 0%,#ffeef6 46%,#f5e2d0 100%);padding:8%;transform:rotateY(180deg);box-shadow:inset 0 1px 3px #ffffffd9,inset 0 -3px 8px #ee8fb829}.mem-card.open .mem-back{transform:rotateY(-180deg)}.mem-card.open .mem-front{transform:rotateY(0)}.mem-card.matched .mem-front{border-color:#f0d898;animation:.55s cubic-bezier(.34,1.56,.64,1) match-pop;box-shadow:0 0 20px 2px #f5b8d0b8,0 0 9px #e8c878d9,inset 0 1px 3px #ffffffd9}@keyframes match-pop{0%{transform:rotateY(0)scale(1)rotate(0)}40%{transform:rotateY(0)scale(1.14)rotate(-2deg)}70%{transform:rotateY(0)scale(.98)rotate(1.5deg)}to{transform:rotateY(0)scale(1)rotate(0)}}.mem-spark{transform-box:fill-box;transform-origin:50%;opacity:0;pointer-events:none}.mem-card.matched .mem-spark{animation:.75s ease-out both mem-spark-burst}@keyframes mem-spark-burst{0%{opacity:0;transform:scale(0)rotate(-40deg)}35%{opacity:1;transform:scale(1.45)rotate(0)}to{opacity:0;transform:scale(.5)rotate(40deg)}}.cabinet-hero{filter:drop-shadow(0 6px 16px #f5b8d047);margin:0 auto;display:block}.twelve-nights{flex-wrap:wrap;justify-content:center;gap:4px;margin:10px 0;font-size:1.6rem;display:flex}.tn-shoe{opacity:.4;animation:1.4s ease-in-out infinite tn-glow}@keyframes tn-glow{0%,to{opacity:.4;filter:drop-shadow(0 0 2px #e8c87866);transform:scale(1)rotate(0)}50%{opacity:1;filter:drop-shadow(0 0 9px #f5b8d0)drop-shadow(0 0 5px #f0d898);transform:scale(1.28)rotate(-8deg)}}.dressup{background:linear-gradient(#160d2e,#2a1d4f);align-items:center}.dressup>:not(.ambient-backdrop):not(.modal-backdrop):not(canvas){z-index:1;position:relative}.dress-stage{justify-content:center;align-items:center;padding:8px 0 4px;display:flex;position:relative}.stage-prince{margin-left:-28px;animation:.7s both fade-in;transform:scaleX(-1)}.dress-stage.duo .mirror-frame{inset:-6px -44px}.mirror-halo{pointer-events:none;background:radial-gradient(at 50% 42%,#f5b8d052,#b8a0e826 55%,#0000 72%);border-radius:50%;animation:4.6s ease-in-out infinite mirror-halo-pulse;position:absolute;inset:-30px -52px}@keyframes mirror-halo-pulse{0%,to{opacity:.55;transform:scale(.98)}50%{opacity:1;transform:scale(1.04)}}.mirror-frame{box-shadow:inset 0 0 34px #8fb8d82e, inset 0 2px 12px #fff8f047, 0 0 22px #f5b8d059, 0 0 42px #e8c87838, var(--shadow-glow);pointer-events:none;background:radial-gradient(at 50% 28%,#f5b8d02e,#b8a0e821 55%,#1a10352e) padding-box padding-box,linear-gradient(150deg,#f0d898 0%,#e8c878 22%,#fff8f0 42%,#e8c878 58%,#b98a3e 78%,#f0d898 100%) border-box;border:4px solid #0000;border-radius:50% 50% 42% 42%/44% 44% 50% 50%;position:absolute;inset:-6px -30px}.mirror-glass{border-radius:inherit;pointer-events:none;position:absolute;inset:5px;overflow:hidden}.mirror-glass:before{content:"";background:linear-gradient(90deg,#0000,#fff8f080,#f5b8d052,#0000);width:55%;height:170%;animation:5.5s ease-in-out infinite mirror-sheen-sweep;position:absolute;top:-35%;left:-70%;transform:translate(0)rotate(16deg)}@keyframes mirror-sheen-sweep{0%{opacity:0;transform:translate(0)rotate(16deg)}12%{opacity:.9}45%{opacity:.9}60%,to{opacity:0;transform:translate(360%)rotate(16deg)}}.mirror-twinkle{width:13px;height:13px;color:var(--pearl,#fff8f0);pointer-events:none;animation:1.9s steps(6,end) infinite toon-twinkle;position:absolute}.mirror-twinkle:before{content:"✦";text-align:center;text-shadow:0 0 6px #f5b8d0e6,0 0 11px #e8c878b3;font-size:13px;line-height:13px;position:absolute;inset:0}.mirror-twinkle.mt1{animation-delay:0s;top:6%;left:12%}.mirror-twinkle.mt2{width:16px;height:16px;font-size:0;animation-delay:.7s;top:2%;right:16%}.mirror-twinkle.mt2:before{font-size:16px;line-height:16px}.mirror-twinkle.mt3{animation-delay:1.2s;top:40%;left:3%}.mirror-twinkle.mt4{animation-delay:.4s;bottom:12%;right:8%}.mirror-twinkle.mt5{width:10px;height:10px;animation-delay:1.6s;bottom:26%;left:9%}.mirror-twinkle.mt5:before{font-size:10px;line-height:10px}.dress-actions{z-index:2;flex-wrap:wrap;justify-content:center;gap:10px;padding:10px 16px 4px;display:flex;position:relative}.cat-tabs{justify-content:center;gap:6px;width:100%;max-width:480px;padding:8px 10px 0;display:flex}.cat-tab{border-radius:var(--radius-sm) var(--radius-sm) 0 0;min-height:56px;color:var(--pearl-dim);background:#251845b3;border:1px solid #b8a0e840;border-bottom:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1px;font-size:1.15rem;transition:background .15s,color .15s;display:flex}.cat-tab small{font-size:.68rem;font-weight:700}.cat-tab.active{color:var(--pearl);background:linear-gradient(#f5b8d052,#b8a0e840);border-color:#e8c87899;box-shadow:0 0 14px #e8c87859,inset 0 1px #fff8f066}.option-area{border-radius:0 0 var(--radius) var(--radius);width:100%;max-width:480px;padding:14px 12px calc(16px + env(safe-area-inset-bottom));background:#251845b3;border:1px solid #b8a0e840;margin-bottom:16px}.option-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.option-chip{min-height:var(--tap-min);color:var(--pearl);background:#fff8f014;border:1.5px solid #b8a0e859;border-radius:999px;padding:8px 16px;font-size:.9rem;font-weight:600;transition:border-color .15s,background .15s,transform .15s,box-shadow .15s;position:relative;overflow:hidden}.option-chip:active:not(:disabled){transform:scale(.95)}.option-chip.active{background:linear-gradient(135deg, #fff0f6, #fbd3e3 40%, var(--pink));border-color:var(--pink-strong);color:#6b2848;box-shadow:0 0 12px #ee8fb866}.option-chip.active:before{content:"";pointer-events:none;background:linear-gradient(#ffffffa6,#fff0);border-radius:999px 999px 40% 40%;height:48%;position:absolute;inset:0 0 auto}.option-chip.locked{opacity:.5}.color-row{justify-content:center;gap:10px;margin-top:12px;display:flex}.color-swatch{border:2.5px solid #fff8f04d;border-radius:50%;width:38px;min-width:38px;height:38px;transition:transform .15s,border-color .15s,box-shadow .15s;position:relative;overflow:hidden}.color-swatch:after{content:"";pointer-events:none;background:linear-gradient(155deg,#ffffffe6,#fff0);border-radius:50%;width:44%;height:36%;position:absolute;top:5px;left:7px}.color-swatch.active{border-color:var(--pearl);transform:scale(1.18);box-shadow:0 0 14px #f5b8d099,0 0 6px #fff8f080}.unlock-hint{text-align:center;margin:12px 0 0;font-size:.8rem}.adventure{background:linear-gradient(#120a26,#241640);align-items:center}.adventure>:not(.ambient-backdrop):not(.adv-hint):not(canvas){z-index:1;position:relative}.adv-stage{width:100%;max-width:680px;padding:4px 12px calc(20px + env(safe-area-inset-bottom));flex-direction:column;flex:1;align-items:center;gap:10px;display:flex}.clue-chip{color:var(--gold-strong);background:#1a1035b3;border:1px solid #e8c87873;border-radius:999px;align-items:center;gap:6px;padding:6px 16px;font-size:.9rem;font-weight:700;display:inline-flex;box-shadow:0 0 14px #f0d89847}.adv-narration{font-family:var(--font-display);text-align:center;color:var(--pearl);margin:0;font-size:1.02rem;font-style:italic;line-height:1.55}.adv-scene{border-radius:var(--radius);width:100%;min-height:0;box-shadow:var(--shadow-card), 0 0 22px #f5b8d029, inset 0 0 26px #b8a0e81f;border:1px solid #f5b8d061;animation:.7s cubic-bezier(.34,1.56,.64,1) both adv-scene-in}@keyframes adv-scene-in{0%{opacity:0;filter:brightness(1.55)saturate(1.25);transform:scale(.94)}55%{filter:brightness(1.18)saturate(1.1)}to{opacity:1;filter:brightness();transform:scale(1)}}.lantern{cursor:pointer}.lantern-lit{filter:drop-shadow(0 0 8px #fff3d6)}.adv-hot{cursor:pointer}.adv-hot:hover{filter:brightness(1.15)}.adv-glimmer{animation:1.4s ease-in-out infinite glow-pulse}.adv-glow-branch{filter:drop-shadow(0 0 6px #fff8f0);animation:1.4s ease-in-out infinite glow-pulse}.adv-action{margin-top:4px}.adv-hint{left:50%;bottom:calc(18px + env(safe-area-inset-bottom));border-radius:var(--radius);max-width:min(92vw,440px);box-shadow:var(--shadow-card);z-index:50;background:#2a1d4ff2;border:1px solid #f5b8d073;align-items:center;gap:8px;padding:8px 14px 8px 6px;animation:.35s cubic-bezier(.34,1.56,.64,1) both pop-in;display:flex;position:fixed;transform:translate(-50%)}.adv-hint p{color:var(--pink);margin:0;font-size:.92rem}.pavilion-puzzle{flex-direction:column;align-items:center;gap:16px;width:100%;display:flex}.stained-row{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;display:flex}.sg-pane{background:linear-gradient(170deg,#8fb8d833,#3a2a66cc);border:2px solid #e8c87880;border-radius:40px 40px 10px 10px;flex-direction:column;align-items:center;gap:6px;min-width:62px;padding:12px 10px 10px;transition:box-shadow .25s,border-color .25s;display:flex;position:relative;overflow:hidden}.sg-pane:before{content:"";pointer-events:none;opacity:.5;background:linear-gradient(150deg,#fff8f08c,#0000 55%);animation:3.4s ease-in-out infinite toon-sheen;position:absolute;inset:0}.sg-pane.sg-done{border-color:var(--gold-strong);box-shadow:0 0 18px #f0d89899,inset 0 0 12px #f5b8d066}.sg-symbol{font-size:1.7rem}.sg-gems{flex-wrap:wrap;justify-content:center;gap:3px;max-width:46px;display:flex}.sg-gem{background:linear-gradient(135deg,#fff8f0,#f5b8d0 45%,#ee8fb8);border-radius:2px;width:9px;height:9px;position:relative;transform:rotate(45deg);box-shadow:0 0 6px #f5b8d0cc,inset 0 0 3px #ffffffb3}.sg-gem:after{content:"";background:#fffffff2;border-radius:50%;width:3px;height:3px;position:absolute;top:1px;left:1.5px}.door-symbols{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.symbol-btn{background:radial-gradient(circle at 34% 28%,#f5b8d052,#3a2a66eb 62%,#251845f5);border:2px solid #f5b8d08c;border-radius:50%;width:80px;height:80px;font-size:2.1rem;transition:transform .12s,box-shadow .12s,border-color .12s;position:relative;overflow:hidden;box-shadow:0 0 12px #b8a0e840,inset 0 2px 8px #fff8f024}.symbol-btn:before{content:"";pointer-events:none;background:linear-gradient(#fff8f080,#0000);border-radius:50%;width:42px;height:24px;position:absolute;top:6px;left:14px}.symbol-btn:hover{border-color:var(--gold-strong);box-shadow:0 0 18px #f0d89873,inset 0 2px 8px #fff8f033}@media (width<=420px){.symbol-btn{width:64px;height:64px;font-size:1.7rem}}.symbol-btn:active{transform:scale(.92);box-shadow:0 0 18px #f0d89880}.door-progress{gap:8px;display:flex}.adv-end{flex:1;justify-content:center;padding:10px}.adv-duo{align-items:flex-end;display:flex}.adv-duo-prince{margin-left:-30px;transform:scaleX(-1)}.adv-romantic-line{color:var(--pink);font-style:italic;animation:1.2s both fade-in}.adv-end p{max-width:400px}.adv-end .text-gold{text-shadow:0 0 18px #f0d8988c,0 0 6px #f5b8d080}.envelope-btn{animation:2.4s ease-in-out infinite toon-bounce;box-shadow:0 0 20px #f5b8d080}.surprise-note{color:#4a3410;border-radius:var(--radius-sm);font-family:var(--font-display);box-shadow:var(--shadow-glow);white-space:pre-line;background:linear-gradient(160deg,#fff8f0,#f5e8d8);padding:18px 20px;font-size:1.05rem;font-style:italic;animation:.5s cubic-bezier(.34,1.56,.64,1) both pop-in}.flight{background:linear-gradient(#0d0722,#1a1035 60%,#2a1d4f)}.flight-hud{padding-bottom:6px}.flight-area{margin:0 10px calc(14px + env(safe-area-inset-bottom));border-radius:var(--radius);touch-action:none;cursor:pointer;border:1px solid #b8a0e84d;flex:1;position:relative;overflow:hidden}.flight-canvas{width:100%;height:100%;position:absolute;inset:0}.flight-princess{pointer-events:none;will-change:transform;filter:drop-shadow(0 0 14px #f5b8d08c);flex-direction:column;align-items:center;width:110px;transition:none;display:flex;position:absolute;top:0;left:0}.flight-carpet{filter:drop-shadow(0 5px 12px #b8a0e899);margin-top:-26px;animation:1.6s ease-in-out infinite float-soft}.flight-overlay{text-align:center;z-index:5;background:radial-gradient(#0d072200 40%,#0d07228c);flex-direction:column;justify-content:flex-end;align-items:center;gap:14px;padding-bottom:15%;display:flex;position:absolute;inset:0}.flight-overlay p{color:var(--pearl);text-shadow:0 2px 10px #000000b3;margin:0;font-weight:600}.carpet{background:linear-gradient(#160d2e,#241640);align-items:center}.carpet>:not(.pavilion-floor):not(.modal-backdrop):not(canvas){z-index:1;position:relative}.pavilion-floor{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0}.carpet:after{content:"";z-index:0;pointer-events:none;background:radial-gradient(at 50% 38%,#0d071a14 30%,#0d071a80 100%);position:absolute;inset:0}.floor-glow{opacity:0;transition:opacity .5s}.floor-glow.on{opacity:.2;transition:opacity 80ms}.note-guide{flex-wrap:wrap;justify-content:center;gap:5px;max-width:min(94vw,480px);padding:2px 8px 6px;display:flex}.guide-note{text-align:center;color:#1a1035d9;background:var(--tile);opacity:.55;border:1.5px solid #0000;border-radius:999px;min-width:34px;padding:3px 7px;font-size:.74rem;font-weight:700;transition:opacity .15s,transform .15s}.guide-note.done{opacity:.28}.guide-note.now{opacity:1;box-shadow:0 0 12px var(--tile);border-color:#fff8f0;animation:.9s ease-in-out infinite glow-pulse;transform:scale(1.12)}.dancer-row{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:2px;max-width:600px;min-height:74px;padding:0 12px;display:flex}.dancer{animation:.6s cubic-bezier(.34,1.56,.64,1) both dancer-join}@keyframes dancer-join{0%{opacity:0;transform:translateY(16px)scale(.5)}to{opacity:1;transform:none}}.dancer-empty{align-self:center;margin:0;font-size:.9rem;font-style:italic}.carpet-status{font-family:var(--font-display);color:var(--gold-strong);text-align:center;min-height:1.5em;margin:4px 16px;font-size:1.02rem;font-style:italic}.magic-carpet{width:min(94vw,480px);box-shadow:inset 0 1px 0 1px #fff8f040, inset 0 0 0 6px #5a1d38, inset 0 0 0 8px #e8c878a6, inset 0 0 22px #f0d8982e, 0 0 24px #b8a0e840, var(--shadow-card);background:radial-gradient(120% 60% at 50% -10%,#fff8f029,#0000 60%),linear-gradient(160deg,#7a2848,#5a1d38 60%,#4a1830);border:3px solid #e8c878;border-radius:14px;margin:6px 0 10px;padding:16px;position:relative}@keyframes carpet-float{0%,to{transform:translateY(0)rotate(-.5deg)}50%{transform:translateY(-7px)rotate(.5deg)}}.carpet-float{will-change:transform;animation:5.5s ease-in-out infinite carpet-float}.carpet-sheen{pointer-events:none;z-index:3;border-radius:11px;position:absolute;inset:6px;overflow:hidden}.carpet-sheen:before{content:"";background:linear-gradient(100deg,#0000,#fff8f06b 50%,#0000);width:40%;height:140%;animation:6s ease-in-out infinite carpet-shimmer;position:absolute;top:-20%;left:-40%;transform:skew(-16deg)}@keyframes carpet-shimmer{0%{opacity:0;left:-45%}35%{opacity:.9}60%{opacity:.9}to{opacity:0;left:115%}}.tassel{clip-path:polygon(20% 0,80% 0,100% 100%,50% 82%,0 100%);opacity:.95;filter:drop-shadow(0 0 5px #e8c87899);transform-origin:top;background:linear-gradient(#f0d898,#e8c878 45%,#c9a855);width:14px;height:26px;animation:3.6s ease-in-out infinite tassel-sway;position:absolute}@keyframes tassel-sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes tassel-sway-b{0%,to{transform:scaleY(-1)rotate(-4deg)}50%{transform:scaleY(-1)rotate(4deg)}}.tassel.t1{top:-20px;left:14px}.tassel.t2{animation-delay:.5s;top:-20px;right:14px}.tassel.t3{transform-origin:bottom;animation:3.6s ease-in-out 1s infinite tassel-sway-b;bottom:-20px;left:14px}.tassel.t4{transform-origin:bottom;animation:3.6s ease-in-out 1.5s infinite tassel-sway-b;bottom:-20px;right:14px}.carpet-inner{background:radial-gradient(circle at 50% 30%,#fff8f024,#0000 55%),repeating-linear-gradient(45deg,#e8c87817 0 2px,#0000 2px 22px),repeating-linear-gradient(-45deg,#e8c87817 0 2px,#0000 2px 22px),linear-gradient(160deg,#8d3055,#6a2244);border:1.5px dashed #e8c87880;border-radius:8px;grid-template-columns:repeat(4,1fr);gap:10px;padding:12px;display:grid}.note-tile{aspect-ratio:1;min-height:var(--tap-min);background:var(--tile);background:radial-gradient(circle at 35% 30%, #fff8f0cc, var(--tile) 55%, color-mix(in srgb, var(--tile) 60%, #1a1035) 100%);touch-action:manipulation;border:2.5px solid #fff8f08c;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:0;transition:transform .12s,box-shadow .12s,filter .12s;display:flex;box-shadow:0 3px 10px #0a051a73}.note-tile svg{opacity:.8;width:58%;height:58%}.note-tile small{color:#1a1035bf;margin-top:-4px;font-size:.66rem;font-weight:700}.note-tile:active{transform:scale(.92)}.tile-gloss{opacity:.85;pointer-events:none}.tile-spark{opacity:0;transform-box:fill-box;transform-origin:50%;pointer-events:none}.note-tile.lit .tile-spark{opacity:1;animation:.7s steps(6,end) 2 toon-twinkle}.note-tile.lit{box-shadow:0 0 22px var(--tile), 0 0 44px color-mix(in srgb, var(--tile) 60%, transparent);filter:brightness(1.25);transform:scale(1.12)}.note-tile.hint{animation:1.1s ease-in-out infinite tile-hint}@keyframes tile-hint{0%,to{transform:scale(1);box-shadow:0 3px 10px #0a051a73}50%{box-shadow:0 0 18px var(--tile), 0 0 34px color-mix(in srgb, var(--tile) 50%, transparent);transform:scale(1.07)}}.note-tile.err{animation:.45s tile-err}@keyframes tile-err{0%,to{transform:translate(0)}25%{transform:translate(-5px)rotate(-3deg)}50%{transform:translate(5px)rotate(3deg)}75%{transform:translate(-3px)}}.night-chips{padding:4px 14px calc(22px + env(safe-area-inset-bottom));flex-wrap:wrap;justify-content:center;gap:8px;max-width:520px;display:flex}.night-chip{min-width:var(--tap-min);min-height:var(--tap-min);color:var(--pearl);background:#fff8f014;border:1.5px solid #b8a0e859;border-radius:999px;padding:6px 12px;font-size:.88rem;font-weight:700;transition:border-color .15s,background .15s,transform .12s}.night-chip:active:not(:disabled){transform:scale(.94)}.night-chip:disabled{opacity:.4}.night-chip.done{color:var(--gold-strong);border-color:#e8c87899}.night-chip.active{background:linear-gradient(135deg, #fbd3e3, var(--pink));border-color:var(--pink-strong);color:#6b2848}.night-chip.free{border-style:dashed}.compose-bar{justify-content:center;padding:0 14px 8px;display:flex}.rec-btn{font-size:.95rem}.rec-btn.recording{animation:1s ease-in-out infinite glow-pulse}.rec-dot{background:#e84860;border-radius:50%;width:10px;height:10px;animation:.8s ease-in-out infinite glow-pulse;display:inline-block}.comp-list{padding:0 14px calc(20px + env(safe-area-inset-bottom));flex-wrap:wrap;justify-content:center;gap:8px;max-width:520px;display:flex}.comp-chip{background:#fff8f014;border:1.5px solid #e8c87866;border-radius:999px;align-items:center;display:inline-flex;overflow:hidden}.comp-chip.playing{border-color:var(--gold-strong);box-shadow:0 0 14px #f0d89859}.comp-play{min-height:var(--tap-min);color:var(--pearl);padding:6px 6px 6px 14px;font-size:.85rem;font-weight:700}.comp-play small{color:var(--lavender);font-weight:500}.comp-play:disabled{opacity:.6}.comp-del{min-height:var(--tap-min);min-width:36px;color:var(--lavender);padding-right:10px;font-size:.85rem}.comp-del:hover{color:var(--pink)}.toon-defs{pointer-events:none;width:0;height:0;position:absolute}.toon-vignette{z-index:60;pointer-events:none;background:radial-gradient(78% 78% at 50% 46%,#0000 58%,#0a051a8c 100%);position:fixed;inset:0}.toon-grain{z-index:61;pointer-events:none;opacity:.05;mix-blend-mode:overlay;will-change:transform;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");width:220%;height:220%;animation:.5s steps(5,end) infinite toon-grain-shift;position:fixed;inset:-60%}.toon-grain.is-static{animation:none}@keyframes toon-grain-shift{0%{transform:translate(0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,2%)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.toon-grain{animation:none}}:root{--night:#1a1035;--night-deep:#120a26;--night-soft:#2a1d4f;--night-card:#251845;--pink:#f5b8d0;--pink-strong:#ee8fb8;--lavender:#b8a0e8;--lavender-dim:#8d76c4;--gold:#e8c878;--gold-strong:#f0d898;--pearl:#fff8f0;--pearl-dim:#e8ddd0;--font-display:"Playfair Display", "Georgia", serif;--font-body:"Quicksand", "Trebuchet MS", sans-serif;--radius:18px;--radius-sm:12px;--shadow-glow:0 0 24px #e8c87840;--shadow-card:0 8px 32px #0a051e8c;--ink:#3a2418;--tap-min:44px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;height:100%;margin:0;padding:0}body{background:var(--night);color:var(--pearl);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}#root{flex-direction:column;min-height:100dvh;display:flex}h1,h2,h3{font-family:var(--font-display);color:var(--pearl);margin:0;font-weight:700}button{font-family:var(--font-body);cursor:pointer;color:inherit;font-size:inherit;background:0 0;border:none}.btn{min-height:var(--tap-min);min-width:var(--tap-min);letter-spacing:.02em;-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 26px;font-size:1.05rem;font-weight:700;transition:transform .18s cubic-bezier(.34,1.6,.5,1),box-shadow .15s,filter .15s;display:inline-flex}.btn:active{transform:scale(.9)}.btn-gold{background:linear-gradient(135deg, var(--gold-strong), var(--gold) 60%, #cfa855);color:#4a3410;box-shadow:var(--shadow-glow)}.btn-gold:hover{filter:brightness(1.07)}.btn-pink{background:linear-gradient(135deg, #fbd3e3, var(--pink) 60%, var(--pink-strong));color:#6b2848;box-shadow:0 0 20px #f5b8d04d}.btn-ghost{color:var(--pearl);background:#fff8f014;border:1px solid #fff8f040}.btn-ghost:hover{background:#fff8f024}.btn:disabled{opacity:.45;cursor:default;transform:none}.screen{flex-direction:column;flex:1;min-height:100dvh;animation:.5s both screen-in;display:flex;position:relative;overflow:hidden}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.game-header{padding:calc(10px + env(safe-area-inset-top)) 14px 10px;z-index:20;justify-content:space-between;align-items:center;gap:10px;display:flex;position:relative}.game-header h2{text-align:center;color:var(--gold-strong);text-shadow:0 0 14px #e8c87866;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:1.15rem;overflow:hidden}.icon-btn{width:var(--tap-min);height:var(--tap-min);color:var(--pearl);background:#fff8f01a;border:1px solid #fff8f038;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.25rem;transition:background .15s,transform .15s;display:inline-flex}.icon-btn:hover{background:#fff8f02e}.icon-btn:active{transform:scale(.92)}.panel{border-radius:var(--radius);box-shadow:var(--shadow-card);background:linear-gradient(160deg,#2a1d4feb,#1a1035f2);border:1px solid #b8a0e847;padding:22px}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0a051ab3;justify-content:center;align-items:center;padding:20px;animation:.25s both fade-in;display:flex;position:fixed;inset:0}.modal{text-align:center;width:100%;max-width:420px;animation:.35s cubic-bezier(.34,1.56,.64,1) both pop-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.stars-row{gap:6px;font-size:1.8rem;display:inline-flex}.stars-row .star{filter:grayscale()opacity(.35)}.stars-row .star.earned{filter:none;animation:.5s cubic-bezier(.34,1.56,.64,1) both star-pop}.stars-row .star.earned:nth-child(2){animation-delay:.15s}.stars-row .star.earned:nth-child(3){animation-delay:.3s}@keyframes star-pop{0%{transform:scale(0)rotate(-30deg)}70%{transform:scale(1.3)rotate(8deg)}to{transform:scale(1)rotate(0)}}.text-gold{color:var(--gold-strong)}.text-pink{color:var(--pink)}.text-lavender{color:var(--lavender)}.text-dim{color:var(--pearl-dim);opacity:.8}.center-col{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.float-soft{animation:3.5s ease-in-out infinite float-soft}@keyframes glow-pulse{0%,to{opacity:.7}50%{opacity:1}}.toon-boil{filter:url(#toon-boil)}.toon-ink{filter:url(#toon-ink)}.toon-outline{filter:drop-shadow(1.2px 0 0 var(--ink)) drop-shadow(-1.2px 0 0 var(--ink)) drop-shadow(0 1.2px 0 var(--ink)) drop-shadow(0 -1.2px 0 var(--ink))}.door-icon svg{filter:url(#toon-ink);overflow:visible}@keyframes toon-pop{0%{opacity:0;transform:scale(0)rotate(-8deg)}55%{opacity:1;transform:scale(1.18,.86)rotate(3deg)}72%{transform:scale(.92,1.08)rotate(-2deg)}86%{transform:scale(1.04,.97)}to{opacity:1;transform:scale(1)rotate(0)}}.toon-pop{animation:.6s cubic-bezier(.34,1.56,.64,1) both toon-pop}@keyframes toon-bounce{0%,to{transform:translateY(0)scale(1)}15%{transform:translateY(0)scale(1.08,.9)}40%{transform:translateY(-14px)scale(.94,1.08)}70%{transform:translateY(0)scale(1.06,.94)}}.toon-bounce{transform-origin:bottom;animation:1.4s ease-in-out infinite toon-bounce}@keyframes toon-wobble{0%,to{transform:rotate(0)}25%{transform:rotate(-3.5deg)}75%{transform:rotate(3.5deg)}}.toon-wobble{transform-origin:bottom;animation:2s ease-in-out infinite toon-wobble}@keyframes toon-bob-2s{0%{transform:translateY(0)}50%{transform:translateY(-7px)}to{transform:translateY(0)}}.toon-bob{animation:.9s steps(6,end) infinite toon-bob-2s}.toon-twinkle{transform-box:fill-box;transform-origin:50%;animation:1.8s steps(6,end) infinite toon-twinkle}@keyframes toon-twinkle{0%,to{opacity:.25;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}.toon-glow-soft{filter:drop-shadow(0 0 6px #f5b8d099)}.toon-glow-gold{filter:drop-shadow(0 0 6px #e8c87899)}.toon-sheen{animation:3.2s ease-in-out infinite toon-sheen}@keyframes toon-sheen{0%,to{opacity:0}50%{opacity:.85}}.toon-sparkle-spin{transform-box:fill-box;transform-origin:50%;animation:6s linear infinite toon-spin}@keyframes toon-spin{to{transform:rotate(360deg)}}.iris{width:300vmax;height:300vmax;box-shadow:0 0 0 100vmax var(--night-deep);pointer-events:none;z-index:200;border-radius:50%;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.iris.out{animation:.8s forwards iris-out}@keyframes iris-out{0%{width:300vmax;height:300vmax}to{width:0;height:0}}.iris.in{animation:.7s both iris-in}@keyframes iris-in{0%{width:0;height:0}to{width:300vmax;height:300vmax}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
