@import "https://fonts.googleapis.com/css2?family=Dancing+Script:wght@400..700&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--pink:#f472b6;--blue:#60a5fa;--purple:#a78bfa;--white:#f1f0f5;--pink-dim:#f472b62e;--blue-dim:#60a5fa2e;--purple-dim:#a78bfa2e}body{color:var(--white);-webkit-user-select:none;user-select:none;background:#09080f;margin:0}#root{text-align:center;box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}#root:has(.passphrase-root){width:100%}.starfield{pointer-events:none;z-index:1;position:fixed;inset:0}.star{width:var(--s-size);height:var(--s-size);background:var(--s-color);opacity:var(--s-opacity);animation:twinkle var(--s-dur) ease-in-out infinite;animation-delay:var(--s-delay);box-shadow:0 0 calc(var(--s-size) * 2) var(--s-color);border-radius:50%;position:absolute}@keyframes twinkle{0%,to{opacity:var(--s-opacity);transform:scale(1)}50%{opacity:.04;transform:scale(.4)}}.swipe-hint{z-index:15;pointer-events:none;opacity:0;flex-direction:column;align-items:center;gap:5px;font-family:Space Mono,ui-monospace,monospace;animation:1s 1s forwards swipeHintFade;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}.swipe-arrow{color:var(--purple);font-size:18px;animation:1.6s ease-in-out infinite swipeBounce;display:block}.swipe-label{letter-spacing:.3em;text-transform:uppercase;color:#f1f0f54d;font-size:9px}@keyframes swipeHintFade{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes swipeBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.orient-overlay{z-index:1000;background:#09080f;flex-direction:column;justify-content:center;align-items:center;gap:28px;font-family:Space Mono,ui-monospace,monospace;display:flex;position:fixed;inset:0}.orient-phone{width:56px;color:var(--purple);filter:drop-shadow(0 0 12px #a78bfa80)}.orient-phone--portrait{animation:2.8s ease-in-out infinite hint-to-portrait}.orient-phone--landscape{animation:2.8s ease-in-out infinite hint-to-landscape}@keyframes hint-to-portrait{0%,10%{color:var(--purple);transform:rotate(90deg)}50%,80%{color:var(--pink);filter:drop-shadow(0 0 16px #f472b699);transform:rotate(0)}to{color:var(--purple);transform:rotate(90deg)}}@keyframes hint-to-landscape{0%,10%{color:var(--purple);transform:rotate(0)}50%,80%{color:var(--pink);filter:drop-shadow(0 0 16px #f472b699);transform:rotate(90deg)}to{color:var(--purple);transform:rotate(0)}}.orient-label{letter-spacing:.3em;background:linear-gradient(90deg, var(--pink) 0%, var(--purple) 55%, var(--blue) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:13px;font-weight:700}.orient-sub{letter-spacing:.18em;color:var(--white);opacity:.45;margin:0;font-size:11px}.orient-dim{opacity:.5}.passphrase-root{color:var(--white);background:#09080f;justify-content:center;align-items:center;font-family:Space Mono,ui-monospace,monospace;display:flex;position:fixed;inset:0;overflow:hidden}.passphrase-root:before{content:"";pointer-events:none;background:radial-gradient(60% 40% at 20% 60%,#a78bfa12 0%,#0000 70%),radial-gradient(50% 35% at 80% 30%,#60a5fa0f 0%,#0000 70%),radial-gradient(40% 30% at 55% 80%,#f472b60d 0%,#0000 70%);position:absolute;inset:0}.passphrase-container{z-index:1;background:#0c0818cc;border:1px solid #a78bfa40;flex-direction:column;align-items:center;gap:32px;width:min(560px,90vw);padding:56px 52px;display:flex;position:relative;box-shadow:0 0 80px #a78bfa14,0 0 24px #60a5fa0d,inset 0 0 60px #0006}.passphrase-container:before,.passphrase-container:after{content:"";border-style:solid;width:14px;height:14px;position:absolute}.passphrase-container:before{border-color:var(--pink);border-width:1px 0 0 1px;top:-1px;left:-1px}.passphrase-container:after{border-color:var(--blue);border-width:0 1px 1px 0;bottom:-1px;right:-1px}.sigil{letter-spacing:0;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg, var(--pink) 0%, var(--purple) 50%, var(--blue) 100%);-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 18px #a78bfa80);-webkit-background-clip:text;background-clip:text;font-size:52px;line-height:1}.terminal-header{letter-spacing:.22em;text-transform:uppercase;background:linear-gradient(90deg, var(--pink) 0%, var(--purple) 55%, var(--blue) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:14px;font-weight:700}.dim{opacity:.35}.blink-cursor:after{content:"_";-webkit-text-fill-color:var(--purple);animation:1.1s step-end infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.passphrase-form{flex-direction:column;align-items:stretch;gap:16px;width:100%;display:flex}.input-wrapper{border-bottom:1px solid #a78bfa4d;align-items:center;gap:10px;padding-bottom:6px;display:flex}.prompt{color:var(--purple);opacity:.6;-webkit-user-select:none;user-select:none;flex-shrink:0;font-size:18px}.passphrase-input{color:var(--white);letter-spacing:.12em;caret-color:var(--pink);background:0 0;border:none;outline:none;flex:1;width:100%;padding:0;font-family:inherit;font-size:22px}.passphrase-input::placeholder{color:#f1f0f526}.passphrase-input::-webkit-credentials-auto-fill-button{display:none}.submit-btn{color:#f1f0f5b3;letter-spacing:.35em;cursor:pointer;text-transform:uppercase;background:0 0;border:1px solid #a78bfa59;margin-top:8px;padding:14px 0;font-family:inherit;font-size:14px;transition:all .25s;position:relative;overflow:hidden}.submit-btn:before{content:"";background:linear-gradient(90deg, var(--pink-dim), var(--purple-dim), var(--blue-dim));opacity:0;transition:opacity .25s;position:absolute;inset:0}.submit-btn:hover:not(:disabled):before{opacity:1}.submit-btn:hover:not(:disabled){color:var(--white);border-color:#a78bfaa6;box-shadow:0 0 24px #a78bfa26}.submit-btn:disabled{opacity:.35;cursor:default}.cooldown-text{font-variant-numeric:tabular-nums}.loading-dots{letter-spacing:.2em;font-size:24px}.loading-dots span{animation:1.2s ease-in-out infinite dotpulse;display:inline-block}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotpulse{0%,80%,to{opacity:.2}40%{opacity:1}}.error-msg{letter-spacing:.2em;color:var(--pink);margin:0;font-size:13px;animation:.15s fadeIn}.early-msg{color:var(--blue)}.server-msg{color:#f1f0f573}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.footer-noise{flex-direction:column;gap:4px;width:100%;display:flex;overflow:hidden}.noise-line{letter-spacing:.05em;white-space:nowrap;-webkit-user-select:none;user-select:none;background:linear-gradient(90deg,#f472b612,#a78bfa12,#60a5fa12);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:9px}.glitch .passphrase-container{animation:.6s step-end forwards glitch}@keyframes glitch{0%{transform:translate(0)}10%{filter:hue-rotate(90deg);transform:translate(-3px,1px)}20%{transform:translate(3px,-1px)}30%{filter:hue-rotate(-90deg);transform:translate(-2px,2px)}40%{transform:translate(2px,-2px)}50%{filter:hue-rotate(180deg);transform:translate(-1px,1px)}60%{transform:translate(1px)}70%{filter:none;transform:translate(-2px,-1px)}to{transform:translate(0)}}.shake{animation:.4s forwards shake}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.prelanding-root{color:var(--white);background:#09080f;justify-content:center;align-items:center;font-family:Space Mono,ui-monospace,monospace;animation:.8s forwards prelandingFadeIn;display:flex;position:fixed;inset:0;overflow:hidden}.prelanding-root.prelanding-leaving{animation:.6s forwards prelandingFadeOut}@keyframes prelandingFadeIn{0%{opacity:0}to{opacity:1}}@keyframes prelandingFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.06)}}.prelanding-root:before{content:"";pointer-events:none;background:radial-gradient(60% 40% at 20% 60%,#a78bfa12 0%,#0000 70%),radial-gradient(50% 35% at 80% 30%,#60a5fa0f 0%,#0000 70%),radial-gradient(40% 30% at 55% 80%,#f472b60d 0%,#0000 70%);position:absolute;inset:0}.prelanding-container{z-index:1;opacity:0;flex-direction:column;align-items:center;gap:28px;animation:.9s cubic-bezier(.22,1,.36,1) .2s forwards containerRise;display:flex;position:relative}@keyframes containerRise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.prelanding-sigil{background:linear-gradient(135deg, var(--pink) 0%, var(--purple) 50%, var(--blue) 100%);-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 20px #a78bfa99);-webkit-background-clip:text;background-clip:text;font-size:56px;line-height:1;animation:3s ease-in-out infinite sigilPulse}@keyframes sigilPulse{0%,to{filter:drop-shadow(0 0 16px #a78bfa80)}50%{filter:drop-shadow(0 0 32px #a78bfad9)}}.prelanding-volume-hint{letter-spacing:.3em;text-transform:uppercase;color:#f1f0f566;margin:0;font-size:11px}.prelanding-btn{color:#f1f0f5b3;letter-spacing:.45em;cursor:pointer;text-transform:uppercase;background:0 0;border:1px solid #a78bfa59;padding:16px 52px;font-family:inherit;font-size:13px;transition:all .25s;position:relative;overflow:hidden}.prelanding-btn:before{content:"";background:linear-gradient(90deg, var(--pink-dim), var(--purple-dim), var(--blue-dim));opacity:0;transition:opacity .25s;position:absolute;inset:0}.prelanding-btn:hover:before{opacity:1}.prelanding-btn:hover{color:var(--white);border-color:#a78bfaa6;box-shadow:0 0 28px #a78bfa2e}.prelanding-btn:active{transform:scale(.97)}.audio-btn{z-index:20;color:#f1f0f58c;cursor:pointer;-webkit-backdrop-filter:blur(8px);background:#0c0818bf;border:1px solid #a78bfa4d;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-family:Space Mono,ui-monospace,monospace;font-size:18px;transition:border-color .2s,color .2s,box-shadow .2s;display:flex;position:fixed;bottom:28px;right:28px}.audio-btn:hover{color:var(--white);border-color:#a78bfaa6;box-shadow:0 0 18px #a78bfa33}.audio-btn.paused{color:#f472b673;border-color:#f472b640}.music-icon{transform-origin:bottom;animation:.8s ease-in-out infinite alternate musicBounce;display:inline-block}@keyframes musicBounce{0%{opacity:.55;transform:translateY(0)rotate(-8deg)scale(1)}to{opacity:1;transform:translateY(-3px)rotate(8deg)scale(1.15)}}.main-root{color:var(--white);background:#09080f;justify-content:center;align-items:center;font-family:Space Mono,ui-monospace,monospace;display:flex;position:fixed;inset:0;overflow:hidden}.scanlines{pointer-events:none;z-index:10;background:repeating-linear-gradient(#0000 0 3px,#00000012 3px 4px);position:absolute;inset:0}.ambient-glow{pointer-events:none;background:radial-gradient(70% 50% at 15%,#a78bfa17 0%,#0000 65%),radial-gradient(60% 45% at 85% 40%,#60a5fa14 0%,#0000 65%),radial-gradient(55% 40% at 50% 85%,#f472b612 0%,#0000 65%),radial-gradient(80% 60%,#a78bfa0a 0%,#0000 80%);animation:12s ease-in-out infinite alternate ambientShift;position:absolute;inset:0}@keyframes ambientShift{0%{opacity:1;transform:scale(1)}to{opacity:.75;transform:scale(1.04)}}.main-content{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:clamp(20px,4vw,40px);padding:0 clamp(16px,5vw,48px);display:flex;position:relative}.birthday-title{letter-spacing:.06em;filter:drop-shadow(0 0 24px #f472b68c)drop-shadow(0 0 60px #a78bfa4d)drop-shadow(0 0 100px #60a5fa2e);flex-wrap:wrap;justify-content:center;gap:.25em;margin:0;font-size:clamp(36px,11vw,96px);font-weight:700;line-height:1.3;display:flex}@keyframes shimmer{0%{background-position:0}to{background-position:200%}}.birthday-title:after{content:none}.main-content:before{content:"";pointer-events:none;background:radial-gradient(#a78bfa14 0%,#0000 70%);border-radius:50%;animation:3s ease-in-out infinite alternate titleGlow;position:absolute;inset:-40px -60px}@keyframes titleGlow{0%{opacity:.6;transform:scale(.96)}to{opacity:1;transform:scale(1.04)}}.title-word{white-space:nowrap;display:inline-flex}.title-char{opacity:0;filter:blur(8px);background:linear-gradient(90deg, var(--pink) 0%, var(--purple) 35%, var(--blue) 60%, var(--purple) 80%, var(--pink) 100%);-webkit-text-fill-color:transparent;animation:.45s cubic-bezier(.22,1.2,.36,1) forwards letterReveal,4s linear infinite shimmer;animation-delay:calc(var(--i) * 60ms + .1s), 0s;background-size:200%;-webkit-background-clip:text;background-clip:text;display:inline-block;transform:scale(.4)translateY(12px)}@keyframes letterReveal{0%{opacity:0;filter:blur(8px);transform:scale(.4)translateY(12px)}60%{opacity:1;filter:blur();transform:scale(1.12)translateY(-4px)}to{opacity:1;filter:blur();transform:scale(1)translateY(0)}}.birthday-subtitle{letter-spacing:.28em;text-transform:uppercase;color:#f1f0f58c;opacity:0;margin:0;font-size:clamp(12px,3.5vw,16px);animation:1s 2.11s forwards subtitleFade}@keyframes subtitleFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.balloons{pointer-events:none;z-index:5;position:fixed;inset:0;overflow:hidden}.balloon-wrap{bottom:-15%;left:var(--b-left);opacity:0;animation:floatUp var(--b-dur) linear forwards;animation-delay:var(--b-delay);position:absolute}.balloon-inner{animation:3.5s ease-in-out infinite alternate sway;animation-delay:var(--b-delay)}.balloon-body{width:var(--b-w);height:var(--b-h);background:radial-gradient(circle at 35% 32%, #ffffff47, var(--b-color) 58%, #0000001f 100%);border-radius:50%/40% 40% 60% 60%;animation:3s ease-in-out infinite wobble;position:relative}.balloon-body:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:6px solid var(--b-color);width:0;height:0;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)}.balloon-string{background:linear-gradient(to bottom, var(--b-color), transparent);opacity:.45;width:1px;height:125px;margin:5px auto 0}@keyframes floatUp{0%{opacity:0;transform:translateY(0)}6%{opacity:1}92%{opacity:1}to{opacity:0;transform:translateY(-115vh)}}@keyframes sway{0%{transform:translate(-14px)rotate(-4deg)}to{transform:translate(14px)rotate(4deg)}}@keyframes wobble{0%,to{border-radius:50%/40% 40% 60% 60%}50%{border-radius:48% 52% 52% 48%/42% 38% 62% 58%}}.slideshow-root{color:var(--white);background:#09080f;flex-direction:column;justify-content:center;align-items:center;font-family:Space Mono,ui-monospace,monospace;display:flex;position:fixed;inset:0;overflow:hidden}.slide{width:100%;animation:slideEnter var(--enter-ms) cubic-bezier(.22, 1, .36, 1) forwards, slideGrow var(--show-ms) ease-in-out forwards, slideExit var(--exit-ms) cubic-bezier(.55, 0, 1, .45) forwards;animation-delay:0s, var(--enter-ms), calc(var(--enter-ms) + var(--show-ms));flex-direction:column;align-items:center;gap:clamp(14px,3vw,24px);padding:0 clamp(16px,5vw,40px);display:flex}@keyframes slideEnter{0%{opacity:0;filter:blur(6px);transform:translate(110vw)rotate(-8deg)scale(.85)}70%{opacity:1;filter:blur();animation-timing-function:ease-in-out;transform:translate(-10px)rotate(1deg)scale(1.01)}to{opacity:1;transform:translate(0)rotate(0)scale(1)}}@keyframes slideGrow{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes slideExit{0%{opacity:1;filter:blur();transform:translate(0)rotate(0)scale(1)}20%{transform:translate(24px)rotate(2deg)scale(1.01)}to{opacity:0;filter:blur(4px);transform:translate(-115vw)rotate(-6deg)scale(.88)}}.slide-frame{width:min(460px,88vw);height:min(400px,52vh);animation:3s ease-in-out infinite alternate frameGlow;animation-delay:var(--enter-ms);background:#ffffff05;border:1px solid #a78bfa33;border-radius:4px;position:relative;overflow:hidden}@keyframes frameGlow{0%{box-shadow:0 0 30px #a78bfa14,0 0 60px #f472b60a}to{box-shadow:0 0 60px #a78bfa47,0 0 110px #f472b624,0 0 160px #60a5fa14}}.slide-img{object-fit:contain;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.slide-meta{flex-direction:column;align-items:center;gap:6px;display:flex}.slide-age{letter-spacing:.18em;text-transform:uppercase;background:linear-gradient(90deg, var(--pink), var(--purple));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(16px,4.5vw,26px);font-weight:700}.slide-date{letter-spacing:.2em;color:#f1f0f566;font-size:clamp(10px,2.5vw,13px)}.slide-tags{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:4px;display:flex}.slide-tag{letter-spacing:.12em;text-transform:uppercase;border:1px solid;border-radius:999px;padding:3px 10px;font-size:clamp(9px,2vw,11px)}.slide-tag[data-color-index="0"]{color:var(--pink);border-color:var(--pink);background:var(--pink-dim)}.slide-tag[data-color-index="1"]{color:var(--blue);border-color:var(--blue);background:var(--blue-dim)}.slide-tag[data-color-index="2"]{color:var(--purple);border-color:var(--purple);background:var(--purple-dim)}.slide-progress-track{background:#a78bfa26;width:min(460px,88vw);height:1px;position:relative;overflow:hidden}.slide-progress-fill{inset-block:0;background:linear-gradient(90deg, var(--pink), var(--purple));width:0;animation:progressFill var(--show-ms) linear forwards;animation-delay:var(--enter-ms);position:absolute;left:0}@keyframes progressFill{0%{width:0}to{width:100%}}.slide-dots{flex-direction:column;gap:10px;display:flex;position:absolute;top:50%;right:24px;transform:translateY(-50%)}@media (width<=768px){.slide-dots{right:unset;flex-direction:row;top:24px;left:50%;transform:translate(-50%)}}.dot{background:#a78bfa40;border-radius:50%;width:6px;height:6px;transition:background .3s,transform .3s}.dot--active{background:var(--purple);box-shadow:0 0 6px var(--purple);transform:scale(1.5)}.view-wrapper{position:fixed;inset:0}.view-wrapper.leaving-up{animation:.5s ease-in forwards wrapperSlideOutUp}.view-wrapper.leaving-down{animation:.5s ease-in forwards wrapperSlideOutDown}@keyframes wrapperSlideOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100vh)}}@keyframes wrapperSlideOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100vh)}}.fw-container{pointer-events:none;z-index:10;position:fixed;inset:0;overflow:hidden}.fw-canvas{mix-blend-mode:lighten;width:100%;height:100%;position:absolute;inset:0;transform:translateZ(0)}.fw-tap-hint{text-align:center;letter-spacing:.2em;color:var(--white);pointer-events:none;font-family:Space Mono,ui-monospace,monospace;font-size:11px;animation:2s ease-in-out infinite fw-pulse;position:absolute;bottom:32px;left:0;right:0}@keyframes fw-pulse{0%,to{opacity:.2}50%{opacity:.8}}.prank-root{perspective:900px;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.prank-back{z-index:20;color:#f1f0f580;letter-spacing:.25em;cursor:pointer;background:0 0;border:1px solid #a78bfa4d;align-items:center;gap:8px;padding:10px 16px;font-family:Space Mono,ui-monospace,monospace;font-size:11px;transition:color .2s,border-color .2s,box-shadow .2s;display:flex;position:fixed;bottom:24px;left:24px}.prank-back:hover{color:var(--purple);border-color:#a78bfa99;box-shadow:0 0 16px #a78bfa26}.prank-back-arrow{font-size:14px;line-height:1}
