:root{--ink: #2a1f3d;--ink-soft: #6d6280;--paper: #fdf0f2;--paper-2: #fff8ee;--pink: #ec4f86;--pink-deep: #c42a63;--pink-soft: #ffd6e4;--lav: #7b61ff;--lav-soft: #e6e0ff;--mint: #3fbf8f;--mint-soft: #d6f5e8;--sky: #4fb3ea;--butter: #ffd24a;--butter-soft: #fff1c2;--coral: #ff7a6b;--orange: #f5a524;--surface: #ffffff;--surface-solid: #ffffff;--border: rgba(42, 31, 61, .16);--border-strong: rgba(42, 31, 61, .8);--line: 2.5px solid var(--ink);--font: "Quicksand Variable", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;--display: "Fredoka Variable", "Quicksand Variable", system-ui, sans-serif;--hand: "Caveat", "Segoe Print", cursive;--shadow-sm: 3px 3px 0 var(--ink);--shadow: 5px 5px 0 var(--ink);--shadow-lg: 7px 7px 0 var(--ink);--shadow-soft: 0 18px 40px -18px rgba(42, 31, 61, .35);--ease: cubic-bezier(.22, 1, .36, 1);--spring: cubic-bezier(.34, 1.56, .64, 1);--r-sm: 12px;--r: 16px;--r-lg: 22px;--r-xl: 26px;--gold: var(--pink);--glass: var(--surface);--glass-border: var(--border-strong);--cute-ink: var(--ink);--cute-ink-soft: var(--ink-soft);--cute-pink: var(--pink);--cute-lav: var(--lav);--cute-font: var(--font);--cute-hand: var(--hand);--cute-shadow: var(--shadow);--cute-ease: var(--ease);--cute-spring: var(--spring)}*{margin:0;padding:0;box-sizing:border-box}[hidden]{display:none!important}html,body{font-family:var(--font);color:var(--ink);font-synthesis-weight:none;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--display);font-weight:600;letter-spacing:-.01em}.app-bg{min-height:100dvh;background-color:var(--paper);background-image:radial-gradient(rgba(42,31,61,.13) 1.1px,transparent 1.3px);background-size:22px 22px;background-attachment:fixed}[data-icon]{display:inline-flex;align-items:center;justify-content:center;vertical-align:-.18em}.ico{display:block;flex:none;stroke-width:2.1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border:2px solid var(--ink);border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-family:var(--display);font-weight:600;cursor:pointer;text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .16s var(--ease),box-shadow .16s var(--ease),background .2s}.btn:hover:not(:disabled){transform:translate(-1px,-2px);box-shadow:4px 5px 0 var(--ink)}.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible{outline:3px solid var(--lav);outline-offset:3px}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:#3a2c52}.btn-pink{background:var(--pink);color:#fff}.btn-yellow{background:var(--butter);color:var(--ink)}.btn-lg{padding:14px 28px;font-size:17px}.card{background:#fff;border:var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow)}.field{display:grid;gap:6px}.field label{font-size:12px;font-weight:700;color:var(--ink-soft)}.input{width:100%;padding:11px 14px;border:2px solid var(--ink);border-radius:var(--r-sm);background:#fff;color:var(--ink);font:inherit;font-weight:600;outline:none;transition:box-shadow .2s}.input:focus{box-shadow:3px 3px 0 var(--pink)}.input::placeholder{color:var(--ink-soft);font-weight:500}.muted{color:var(--ink-soft)}.hand{font-family:var(--hand)}.page-head{position:relative;z-index:50;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px clamp(16px,4vw,40px)}.page-head h1{font-size:clamp(20px,3vw,28px)}.page-head .spacer{flex:1}.back-link{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;background:#fff;border:2px solid var(--ink);box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none;font-family:var(--display);font-weight:600;font-size:14px;transition:transform .16s var(--ease),box-shadow .16s}.back-link:hover{transform:translate(-3px,-1px);box-shadow:4px 4px 0 var(--ink)}.site-logo{display:inline-flex;align-items:center;gap:8px;font-family:var(--display);font-size:22px;font-weight:600;color:var(--ink);text-decoration:none}.site-logo .mark{position:relative;width:30px;height:20px}.site-logo .mark i{position:absolute;top:0;width:20px;height:20px;border-radius:50%;border:2.5px solid var(--ink)}.site-logo .mark i:first-child{left:0;background:var(--pink)}.site-logo .mark i:last-child{left:10px;background:var(--lav);mix-blend-mode:multiply}.site-logo:hover .mark i:first-child{animation:fp-orbit-l .6s var(--spring)}.site-logo:hover .mark i:last-child{animation:fp-orbit-r .6s var(--spring)}@keyframes fp-orbit-l{50%{transform:translate(10px)}}@keyframes fp-orbit-r{50%{transform:translate(-10px)}}.join-box{display:inline-flex;align-items:stretch;border:2px solid var(--ink);border-radius:999px;background:#fff;overflow:hidden;box-shadow:var(--shadow-sm)}.join-box input{width:88px;padding:7px 4px 7px 14px;border:none;outline:none;background:none;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:14px;font-weight:600;letter-spacing:3px;text-transform:uppercase;color:var(--ink)}.join-box input::placeholder{letter-spacing:1px;text-transform:lowercase;color:var(--ink-soft)}.join-box button{padding:0 14px;border:none;border-left:2px solid var(--ink);background:var(--butter-soft);font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-weight:700;font-size:13px;color:var(--ink);cursor:pointer}.join-box button:hover{background:var(--butter)}.join-box.bad{animation:fp-shake .35s}.head-create{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px;padding:9px 16px}.join-tip{position:absolute;top:calc(100% - 6px);right:clamp(16px,4vw,40px);padding:6px 12px;border-radius:10px;border:2px solid var(--ink);background:#fff;font-size:12.5px;font-weight:700;box-shadow:var(--shadow-sm)}@keyframes fp-pop{0%{opacity:0;transform:translateY(14px) scale(.96) rotate(var(--tilt, 0deg))}}@keyframes fp-rise{0%{opacity:0;transform:translateY(22px)}}@keyframes fp-wiggle{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes fp-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes fp-twinkle{0%,to{transform:scale(1) rotate(0);opacity:1}50%{transform:scale(.6) rotate(45deg);opacity:.6}}@keyframes fp-shake{20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}@keyframes fp-pulse{0%{box-shadow:0 0 #3fbf8f99}70%,to{box-shadow:0 0 0 7px #3fbf8f00}}@keyframes fp-draw{to{stroke-dashoffset:0}}@keyframes fp-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}.reveal{opacity:0}.reveal.in{opacity:1;animation:fp-pop .6s var(--spring) both;animation-delay:var(--delay, 0ms)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1}}.head-tools{display:flex;align-items:center;gap:10px;margin-left:auto}.back-link.quiet{box-shadow:none;border-width:1.5px;padding:6px 12px;font-size:13px}@media(max-width:560px){.site-logo{font-size:19px}.head-tools{width:100%;justify-content:flex-end}}.sound-btn{display:grid;place-items:center;width:38px;height:38px;border:2px solid var(--ink);border-radius:50%;background:#fff;color:var(--ink);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .16s var(--ease),box-shadow .16s}.sound-btn:hover{transform:translate(-1px,-2px) rotate(-6deg);box-shadow:4px 5px 0 var(--ink)}.sound-btn.off{background:var(--pink-soft);color:var(--ink-soft)}body.bday-locked{overflow:hidden}.bday{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 30%,#2b1d3f,#0d0714 70%);opacity:0;transition:opacity .5s var(--ease)}.bday.show{opacity:1}.bday-confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.bday-stage{position:relative;display:grid;place-items:center;width:min(1100px,94vw)}.bday-hello{display:grid;justify-items:center;gap:4px;text-align:center;animation:bday-in .9s var(--spring) both}.bday-hello.out{animation:bday-out .5s var(--ease) both}@keyframes bday-in{0%{transform:translateY(18px) scale(.94);opacity:0}}@keyframes bday-out{to{transform:translateY(-14px) scale(.96);opacity:0}}.bday-kicker{font-size:13px;font-weight:700;letter-spacing:.32em;text-transform:uppercase;color:var(--butter);margin:0}.bday-name{font-family:var(--display);font-size:clamp(44px,11vw,104px);line-height:1;margin:2px 0 0;color:#fff;text-shadow:0 0 40px rgba(236,79,134,.55)}.bday-sub{font-size:clamp(17px,3.4vw,24px);color:var(--pink-soft);margin:6px 0 0}.bday-count{position:absolute;display:grid;place-items:center}.bday-count[hidden]{display:none}.bday-count span{font-family:var(--display);font-size:clamp(90px,26vw,220px);line-height:1;color:#fff;text-shadow:0 0 60px rgba(255,210,74,.6)}.bday-count.pop span{animation:bday-pop .85s var(--spring) both}@keyframes bday-pop{0%{transform:scale(2.1);opacity:0}60%{transform:scale(1);opacity:1}to{transform:scale(.82);opacity:.15}}.bday-film{width:100%;display:grid;place-items:center}.bday-film[hidden]{display:none}.bday-video{width:100%;max-height:82vh;border-radius:var(--r-lg);background:#000;box-shadow:0 30px 90px -30px #000000e6;animation:bday-in .7s var(--spring) both}.bday-tap{position:absolute;bottom:18px;color:#fff;font-size:20px}.bday-skip{position:absolute;right:18px;bottom:18px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:999px;cursor:pointer;border:2px solid rgba(255,255,255,.5);background:#00000059;color:#fff;font:inherit;font-size:14px;font-weight:700;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background .2s,transform .2s}.bday-skip:hover{background:#0009;transform:translateY(-1px)}.bday-skip span{font-size:18px;line-height:1}.bday-prize{position:fixed;inset:0;z-index:210;display:grid;place-items:center;padding:20px;background:#0e09169e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .35s var(--ease)}.bday-prize.show{opacity:1}.bday-prize-confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.prize-card{position:relative;width:min(440px,100%);display:grid;gap:12px;justify-items:center;text-align:center;padding:18px 18px 16px;border-radius:var(--r-xl);background:var(--paper-2);border:var(--line);box-shadow:var(--shadow-lg);animation:prize-in .5s var(--spring);max-height:94vh;overflow:auto}@keyframes prize-in{0%{transform:translateY(20px) scale(.93) rotate(-2deg);opacity:0}}.prize-card.won{animation:prize-won .6s var(--spring)}@keyframes prize-won{40%{transform:scale(1.03) rotate(1deg)}}.prize-kicker{margin:0;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--pink-deep)}.prize-well{position:relative;width:100%;min-height:128px;display:grid;gap:10px;place-content:center;justify-items:center;padding:16px 14px;border-radius:16px;background:linear-gradient(140deg,var(--butter-soft),var(--pink-soft));border:2.5px dashed var(--ink);overflow:hidden}.prize-text{margin:0;font-family:var(--display);font-size:18px;line-height:1.35}.prize-ticket{margin:0;display:grid;gap:5px;justify-items:center}.prize-ticket img{width:min(170px,52%);max-height:26vh;object-fit:contain;border-radius:10px;border:2px solid var(--ink);box-shadow:var(--shadow-sm)}.prize-ticket figcaption{font-size:11px;color:var(--ink-soft);line-height:1.35;max-width:30ch}.prize-foil{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none;transition:opacity .6s var(--ease)}.prize-foil.gone{opacity:0;pointer-events:none}.prize-foil[hidden]{display:none}.prize-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-5deg);font-size:23px;color:var(--ink);pointer-events:none}.prize-hint[hidden]{display:none}.prize-done{width:100%}.prize-done:disabled{opacity:.45}.lineup{margin-bottom:8px}.lineup-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.lineup-step{position:relative;display:grid;gap:4px;align-content:start;padding:14px 14px 13px;border-radius:var(--r);background:var(--surface);border:var(--line);box-shadow:var(--shadow-sm);text-decoration:none;color:var(--ink);transition:transform .18s var(--spring),box-shadow .18s}.lineup-step:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow)}.lineup-step b{font-family:var(--display);font-size:16px}.lineup-step small{font-size:12px;color:var(--ink-soft)}.lineup-no{position:absolute;right:10px;top:9px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--pink-soft);border:2px solid var(--ink);font-size:11px;font-weight:700}.lineup-step.won{background:var(--mint-soft)}.lineup-step.won .lineup-no{background:var(--mint);color:#fff}.lineup-prize{margin-top:6px;justify-self:start;padding:3px 9px;border-radius:999px;border:2px solid var(--ink);background:var(--butter);font-size:11px;font-weight:700;cursor:pointer}@media(max-width:720px){.lineup-steps{grid-template-columns:1fr}.bday-skip{right:12px;bottom:12px}}
