@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:500;src:url(./fredoka-latin-500-normal-B0JifZgm.woff2)format("woff2"),url(./fredoka-latin-500-normal-BL692wg7.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:700;src:url(./fredoka-latin-700-normal-BOIZVyIN.woff2)format("woff2"),url(./fredoka-latin-700-normal-C8FeHd3X.woff)format("woff")}:root{--purple-900:#2a0a4a;--purple-800:#3a0f5c;--purple-700:#5b1a8f;--purple-600:#7b2cbf;--purple-400:#a85cf0;--purple-200:#d9b8ff;--pink-500:#ff5fa8;--pink-300:#ff9ccf;--yellow:#ffd93d;--coral:#ff7a6b;--mint:#7ef0c4;--white:#fff;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--font:"Fredoka", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;--radius:18px;--transition-fast:.2s;--scene-width:480px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--white);background:var(--purple-800);margin:0;font-weight:500}button{font:inherit}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{background:radial-gradient(circle at 20% 15%, #ff5fa88c 0 120px, transparent 121px), radial-gradient(circle at 85% 70%, #ffd93d59 0 160px, transparent 161px), radial-gradient(circle at 10% 90%, #7ef0c44d 0 100px, transparent 101px), linear-gradient(160deg, var(--purple-700), var(--purple-900));min-height:100dvh;overflow-x:clip}.scene{width:min(100%, var(--scene-width));min-height:100dvh;padding:max(var(--space-4), env(safe-area-inset-top)) max(var(--space-3), env(safe-area-inset-right)) max(var(--space-5), env(safe-area-inset-bottom)) max(var(--space-3), env(safe-area-inset-left));background:linear-gradient(180deg, var(--purple-600) 0%, #9a3fd0 55%, #c23fa8 100%);flex-direction:column;margin:0 auto;display:flex;position:relative;box-shadow:0 0 0 4px #ffffff26,0 0 60px #00000073}.screen{align-items:center;gap:var(--space-4);text-align:center;flex-direction:column;flex:1;padding-top:56px;display:flex;position:relative}.screen>*{z-index:1;position:relative}.screen__title{overflow-wrap:break-word;max-width:100%;color:var(--white);text-shadow:0 3px 0 var(--purple-700), 0 0 14px #ff5fa8cc;margin:0;font-size:clamp(1.7rem,8vw,2.3rem);font-weight:700;line-height:1.1}.screen__title:focus{outline:none}.screen__kicker{color:var(--yellow);margin:0;font-size:1.2rem}.screen__spacer{flex:1;min-height:180px}.screen__actions{padding-top:var(--space-3);justify-content:center;width:100%;margin-top:auto;display:flex}.screen__actions--inline{margin-top:0;padding-top:0}.result{min-height:2.4em;color:var(--yellow);text-shadow:0 2px 0 var(--purple-800);justify-content:center;align-items:center;margin:0;font-size:clamp(1.3rem,6vw,1.7rem);font-weight:700;line-height:1.2;display:flex}.btn{min-width:44px;max-width:100%;min-height:56px;padding:var(--space-3) var(--space-5);border:3px solid var(--white);cursor:pointer;touch-action:manipulation;transition:transform var(--transition-fast), filter var(--transition-fast);border-radius:999px;font-size:1.25rem;font-weight:700;line-height:1.15}.btn--primary{color:var(--white);background:linear-gradient(180deg, #ff7cbc, var(--pink-500));text-shadow:0 2px #78145080;box-shadow:0 5px #b12a74,0 10px 18px #00000059}.btn--secondary{color:var(--purple-700);background:var(--white);box-shadow:0 4px 0 var(--purple-200), 0 8px 14px #00000040}.btn--big{min-height:64px;padding-inline:var(--space-6);font-size:1.45rem}.btn:active:not(:disabled){transform:translateY(3px)}.btn:disabled{cursor:default;filter:grayscale(.4)brightness(.9);opacity:.75}:focus-visible{outline:4px solid var(--yellow);outline-offset:3px}.sound-button{top:max(var(--space-3), env(safe-area-inset-top));right:max(var(--space-3), env(safe-area-inset-right));z-index:10;width:48px;height:48px;color:var(--purple-700);background:var(--white);border:3px solid var(--purple-700);cursor:pointer;box-shadow:0 3px 0 var(--purple-700);border-radius:50%;place-items:center;padding:0;display:grid;position:absolute}.party{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.balloon{animation:linear infinite balloon-float;position:absolute;bottom:-130px}.balloon svg{filter:drop-shadow(0 4px #3a0f5c40);width:100%;height:auto;display:block}@keyframes balloon-float{0%{transform:translate(0)rotate(-4deg)}25%{transform:translate(14px,-30dvh)rotate(4deg)}50%{transform:translate(-10px,-60dvh)rotate(-4deg)}75%{transform:translate(12px,-90dvh)rotate(4deg)}to{transform:translateY(-125dvh)rotate(-4deg)}}.party__bunting{position:absolute;inset:0}.screen--birthday{padding-top:116px}.party__bunting:before{content:"";background:var(--white);height:3px;position:absolute;top:6px;left:0;right:0}.party__flag{transform-origin:50% 0;width:18%;animation:2.4s ease-in-out infinite alternate flag-wave;position:absolute}.party__flag svg{filter:drop-shadow(0 3px #3a0f5c4d);width:100%;display:block}@keyframes flag-wave{0%{transform:rotate(-8deg)}to{transform:rotate(8deg)}}.wheel{aspect-ratio:1;width:min(84vw,340px);margin-top:var(--space-4);background:radial-gradient(circle, var(--yellow), #ffb800);border:4px solid var(--purple-700);box-shadow:0 8px 0 var(--purple-700), 0 14px 26px #0006;border-radius:50%;padding:10px;position:relative}.wheel__disc{border:3px solid var(--purple-700);will-change:transform;border-radius:50%;width:100%;height:100%;overflow:hidden}.wheel__disc svg{width:100%;height:100%;display:block}.wheel__label{font-family:var(--font);fill:var(--purple-800);font-size:11px;font-weight:700}.wheel__pointer{z-index:3;border-left:17px solid #0000;border-right:17px solid #0000;border-top:36px solid var(--pink-500);width:0;height:0;filter:drop-shadow(0 0 0 var(--white)) drop-shadow(0 3px 0 var(--purple-700));margin-left:-17px;position:absolute;top:-22px;left:50%}.wheel__pointer:after{content:"";background:var(--white);border-radius:50%;width:10px;height:10px;position:absolute;top:-34px;left:-5px}.board{gap:var(--space-3) var(--space-2);width:100%;padding:var(--space-4) var(--space-3);border-radius:var(--radius);background:#d99a5b radial-gradient(#78461e59 1.5px,#0000 2px) 0 0/14px 14px;border:6px solid #8a4b1f;grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:relative;box-shadow:inset 0 0 0 3px #ffffff40,0 6px #00000040}@media (width<=359px){.board{grid-template-columns:repeat(2,minmax(0,1fr))}}.poster{justify-content:center;align-items:center;gap:var(--space-1);min-height:92px;padding:var(--space-4) var(--space-2) var(--space-3);color:var(--purple-800);border:3px solid var(--purple-700);border-radius:8px;flex-direction:column;display:flex;position:relative;box-shadow:3px 4px #3a0f5c59}.poster--winner{box-shadow:0 0 0 4px var(--pink-500), 0 0 24px 6px #ffd93de6;z-index:2}.poster__pin{background:var(--coral);border:2px solid var(--purple-700);border-radius:50%;width:14px;height:14px;margin-left:-7px;position:absolute;top:-9px;left:50%}.poster__star{color:var(--pink-500);font-size:1.1rem;line-height:1}.poster__name{overflow-wrap:anywhere;max-width:100%;font-size:clamp(.9rem,3.9vw,1.15rem);font-weight:700;line-height:1.1}.calendar-scene{width:100%;position:relative}.calendar{table-layout:fixed;border-collapse:separate;border-spacing:3px;width:100%;padding:var(--space-2) var(--space-2) var(--space-3);color:var(--purple-800);background:var(--white);border:4px solid var(--purple-700);border-radius:var(--radius);box-shadow:0 6px 0 var(--purple-700)}.calendar__title{caption-side:top;padding:var(--space-2) 0;color:var(--pink-500);text-shadow:0 2px 0 var(--purple-200);font-size:1.5rem;font-weight:700}.calendar th{padding:var(--space-1) 0;color:var(--purple-600);font-size:.85rem;font-weight:700}.calendar td{text-align:center;vertical-align:middle;height:46px;padding:0;font-size:1.05rem;font-weight:700}.calendar__day{background:#f3e8ff;border-radius:10px}.calendar__day--target{color:var(--purple-900);background:var(--yellow);box-shadow:0 0 0 3px var(--pink-500), 0 0 0 6px var(--white), 0 0 16px 6px #ff5fa8b3;animation:1.2s ease-in-out infinite alternate target-pulse;position:relative}@keyframes target-pulse{0%{box-shadow:0 0 0 3px var(--pink-500), 0 0 0 6px var(--white), 0 0 8px 2px #ff5fa880}to{box-shadow:0 0 0 3px var(--pink-500), 0 0 0 6px var(--white), 0 0 20px 8px #ff5fa8e6}}.ring{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.calendar__day--trip{background:#ffe97a}.calendar__day--return{box-shadow:0 0 0 3px var(--mint), 0 0 0 5px var(--white)}.plane{z-index:4;pointer-events:none;filter:drop-shadow(0 3px #3a0f5c59);position:absolute;top:0;left:0}.plane svg{width:100%;height:100%;display:block}.finale{align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.finale__banner{padding:var(--space-2) var(--space-6);color:var(--purple-800);background:linear-gradient(180deg, #ffe97a, var(--yellow));border:4px solid var(--purple-700);box-shadow:0 5px 0 var(--purple-700);border-radius:12px;margin:0;font-size:2.2rem;font-weight:700;animation:.6s cubic-bezier(.3,1.6,.5,1) both banner-pop;transform:rotate(-2deg)}@keyframes banner-pop{0%{opacity:0;transform:rotate(-2deg)scale(.3)}to{opacity:1;transform:rotate(-2deg)scale(1)}}.finale__date{color:var(--yellow);text-shadow:0 2px 0 var(--purple-800);margin:0;font-size:1.8rem;font-weight:700}.finale__return{color:var(--mint);text-shadow:0 2px 0 var(--purple-800);margin:-4px 0 0;font-size:1.2rem;font-weight:700}.finale__title{margin:0 0 var(--space-2)}.finale__list{gap:4px var(--space-3);text-align:left;grid-template-columns:auto 1fr;margin:0;font-size:1.05rem;display:grid}.finale__list dt{color:var(--mint)}.finale__list dd{color:var(--yellow);margin:0}.finale__gift{padding:var(--space-3) var(--space-4);border:3px solid var(--white);border-radius:var(--radius);overflow-wrap:break-word;background:#3a0f5ca6;margin:0;font-size:1.3rem;font-weight:700;line-height:1.3}.fireworks{z-index:30;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fireworks__spark{border-radius:50%;width:10px;height:10px;margin:-5px 0 0 -5px;position:absolute}.fireworks__glow{background:radial-gradient(circle at 50% 40%,#ffd93db3,#0000 60%);position:absolute;inset:0}@media (width>=520px){.app{place-items:stretch center;display:grid}.scene{border-radius:0}}@media (height<=520px) and (orientation:landscape){.screen,.screen--birthday{padding-top:52px}.screen--birthday{padding-top:100px}.screen__spacer{min-height:60px}}@media (prefers-reduced-motion:reduce){.balloon{animation:none;bottom:14%}.balloon:nth-child(2n){bottom:32%}.party__flag,.calendar__day--target,.finale__banner{animation:none}.btn{transition:none}}
