:root{color-scheme:dark;--bg:#070a10;--ivory:#f5ede0;--muted:#aaa49c;--gold:#c69a63;--rose:#a94f55;--glass:rgba(28,25,30,.58);--line:rgba(255,255,255,.18);--shadow:0 30px 80px rgba(0,0,0,.45);--serif:"Playfair Display",Georgia,serif;--sans:"DM Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{width:100%;min-height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--ivory);font-family:var(--sans)}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}
#particle-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:0}.ambient{position:fixed;width:42vw;height:42vw;border-radius:50%;filter:blur(100px);opacity:.12;pointer-events:none;z-index:1}.ambient-one{left:-20vw;top:-18vw;background:var(--rose)}.ambient-two{right:-18vw;bottom:-22vw;background:var(--gold)}
.topbar{position:fixed;inset:0 0 auto;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:max(22px,env(safe-area-inset-top)) clamp(20px,4vw,64px) 0;color:rgba(245,237,224,.78)}.private-label,.language-switch{font-size:.7rem;letter-spacing:.18em}.lock-dot{display:inline-block;width:6px;height:6px;margin-right:8px;border:1px solid var(--gold);border-radius:50%}.topbar-actions,.language-switch{display:flex;align-items:center;gap:10px}.language,.icon-button{border:0;background:transparent;color:rgba(245,237,224,.5);cursor:pointer}.language{padding:4px 2px;font-size:.72rem}.language.active{color:var(--ivory);border-bottom:1px solid var(--gold)}.icon-button{width:36px;height:36px;border:1px solid rgba(255,255,255,.12);border-radius:50%}.icon-button[aria-pressed=true]{color:var(--gold);border-color:rgba(198,154,99,.5)}
.sound-status{position:fixed;z-index:60;left:50%;bottom:max(24px,env(safe-area-inset-bottom));max-width:min(88vw,520px);margin:0;padding:11px 18px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(18,19,24,.84);box-shadow:0 16px 45px rgba(0,0,0,.38);color:var(--ivory);font-size:.78rem;text-align:center;opacity:0;pointer-events:none;transform:translate(-50%,12px);transition:opacity .3s,transform .3s;backdrop-filter:blur(18px)}.sound-status.visible{opacity:1;transform:translate(-50%,0)}
.music-credit{position:fixed;z-index:20;right:18px;bottom:14px;max-width:45vw;color:rgba(245,237,224,.42);font-size:.62rem;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-credit:hover{color:var(--gold)}
#experience{position:relative;z-index:5;width:100%;height:100svh}.screen{position:absolute;inset:0;display:grid;place-items:center;padding:86px 24px 30px;opacity:0;visibility:hidden;pointer-events:none}.screen.active{opacity:1;visibility:visible;pointer-events:auto}.content{width:min(900px,100%);text-align:center}.eyebrow{margin:0 0 14px;color:var(--gold);font-size:clamp(.64rem,1vw,.78rem);font-weight:600;letter-spacing:.2em}h1,h2,h3{margin:0;font-family:var(--serif);font-weight:500}h1{font-size:clamp(2rem,4.5vw,4.25rem);line-height:1.04}h2{font-size:clamp(2.2rem,5vw,4.8rem);line-height:1.04}.supporting{width:min(650px,100%);margin:18px auto 28px;color:var(--muted);font-size:clamp(.94rem,1.5vw,1.08rem);line-height:1.7}.microcopy{color:var(--muted);font-size:.82rem;letter-spacing:.08em}
.glass-panel{position:relative;width:min(620px,94vw);padding:clamp(28px,5vw,54px);overflow:hidden;border:1px solid var(--line);border-radius:32px;background:var(--glass);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.2);backdrop-filter:blur(28px) saturate(135%);-webkit-backdrop-filter:blur(28px) saturate(135%);text-align:center}.glass-panel:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.08),transparent 45%);pointer-events:none}.lock-panel h1{font-size:clamp(2rem,4vw,3.6rem)}
.envelope-icon{position:relative;width:58px;height:42px;margin:0 auto 22px;border:1px solid rgba(245,237,224,.5);border-radius:8px}.envelope-icon:before,.envelope-icon:after{content:"";position:absolute;top:7px;width:34px;height:1px;background:rgba(245,237,224,.55)}.envelope-icon:before{left:0;transform:rotate(34deg)}.envelope-icon:after{right:0;transform:rotate(-34deg)}.envelope-icon span{position:absolute;left:50%;top:16px;width:12px;height:12px;transform:translateX(-50%) rotate(45deg);border-radius:50% 50% 45% 50%;background:var(--rose)}
.pin-inputs{display:flex;justify-content:center;gap:clamp(8px,2vw,16px);margin:24px 0 16px}.pin-inputs input{width:clamp(54px,11vw,76px);height:clamp(62px,12vw,84px);border:1px solid rgba(255,255,255,.24);border-radius:18px;outline:none;background:rgba(255,255,255,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.12);color:var(--ivory);font-family:var(--serif);font-size:clamp(1.8rem,4vw,2.5rem);text-align:center;transition:border-color .25s,background .25s,transform .25s}.pin-inputs input:focus{border-color:var(--gold);background:rgba(198,154,99,.1);transform:translateY(-2px)}.pin-inputs.success input{color:var(--gold);border-color:var(--gold);box-shadow:0 0 24px rgba(198,154,99,.2)}.hint{margin:0 0 8px;color:var(--muted);font-size:.82rem}.form-message{min-height:1.3em;margin:0 0 12px;color:#d6a3a3;font-size:.82rem}
.primary-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:30px;min-width:min(360px,100%);padding:16px 26px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:linear-gradient(135deg,rgba(198,154,99,.9),rgba(169,79,85,.65));box-shadow:0 14px 38px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.3);color:#fff9ee;cursor:pointer;transition:transform .3s,box-shadow .3s}.primary-button:hover{transform:translateY(-2px);box-shadow:0 18px 48px rgba(0,0,0,.36),0 0 30px rgba(198,154,99,.12)}.primary-button:focus-visible,.choice:focus-visible,.memory-card:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:min(860px,100%);margin:40px auto 24px}.choice{display:grid;justify-items:center;gap:8px;min-height:190px;padding:26px 16px;border:1px solid rgba(255,255,255,.12);border-radius:24px;background:rgba(14,18,26,.5);color:var(--ivory);backdrop-filter:blur(18px);cursor:pointer;transition:border-color .3s,transform .3s,background .3s}.choice:hover:not(:disabled){transform:translateY(-6px);border-color:rgba(198,154,99,.55);background:rgba(198,154,99,.07)}.choice:disabled{cursor:default;opacity:.38}.choice-symbol{display:grid;place-items:center;height:76px;font-size:4rem;color:var(--gold);text-shadow:0 0 30px rgba(198,154,99,.25)}.particle-heart-symbol{color:var(--rose)}.choice-name{font-family:var(--serif);font-size:1.25rem}.choice-status{color:var(--muted);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase}
.ticket-symbol{font-size:3.25rem;transform:rotate(-7deg);color:#d6b57f}
.release-content{pointer-events:none}.release-content .primary-button{margin-top:28vh;pointer-events:auto}.memory-heading{position:absolute;top:92px;left:50%;width:min(800px,88vw);transform:translateX(-50%);text-align:center;z-index:4}.memory-heading h2{font-size:clamp(1.75rem,4vw,3.5rem)}.memory-field{position:absolute;inset:170px 0 70px}.memory-card{position:absolute;width:clamp(112px,15vw,190px);padding:8px 8px 12px;border:1px solid rgba(255,255,255,.16);border-radius:16px;background:rgba(18,19,24,.7);box-shadow:0 18px 50px rgba(0,0,0,.35);color:var(--ivory);text-align:left;cursor:pointer;backdrop-filter:blur(12px);transition:transform .35s,border-color .35s}.memory-card:hover{transform:translateY(-8px) rotate(0)!important;border-color:rgba(198,154,99,.5);z-index:5}.memory-art{display:block;aspect-ratio:4/3;border-radius:11px;background-size:cover}.memory-art-1{background:radial-gradient(circle at 35% 30%,#f0b7a4 0 8%,transparent 9%),linear-gradient(145deg,#603b42,#172438 60%,#c08a62)}.memory-art-2{background:radial-gradient(ellipse at center,#9d343d 0 8%,#211821 48%,#050609 49%)}.memory-art-3{background:linear-gradient(115deg,rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(145deg,#1c3545,#77818a 55%,#d0a47c);background-size:15px 15px,cover}.memory-art-4{background:linear-gradient(155deg,#d8b99a,#8b5b4d 50%,#2c1b20)}.memory-art-5{background:radial-gradient(circle at 70% 28%,#f5e5bf 0 5%,transparent 6%),linear-gradient(#101a2e,#553a52 55%,#d48763)}.memory-art-6{background:linear-gradient(140deg,#2f1622,#9e4e50 48%,#d2a669)}.memory-label{display:block;margin-top:10px;font-family:var(--serif);font-size:.9rem}.memory-1{left:8%;top:18%;transform:rotate(-5deg)}.memory-2{left:28%;bottom:3%;transform:rotate(3deg)}.memory-3{left:45%;top:14%;transform:rotate(-2deg)}.memory-4{right:27%;bottom:5%;transform:rotate(-4deg)}.memory-5{right:7%;top:18%;transform:rotate(5deg)}.memory-6{left:50%;top:49%;transform:translate(-50%,-50%) rotate(2deg)}.finale-trigger{position:absolute;left:50%;bottom:26px;transform:translateX(-50%)}.text-button{border:0;background:transparent;color:var(--gold);cursor:pointer;letter-spacing:.06em}#finale-screen{overflow-y:auto}.finale-panel{width:min(720px,94vw)}.finale-panel h2{font-size:clamp(2.2rem,5vw,4.5rem)}.signature{margin:30px 0;font-family:var(--serif);font-size:1.35rem;letter-spacing:.08em}.signature span{color:var(--rose)}
.memory-dialog{width:min(440px,90vw);padding:10px 10px 28px;border:1px solid rgba(255,255,255,.18);border-radius:24px;background:rgba(18,19,24,.88);color:var(--ivory);box-shadow:var(--shadow);backdrop-filter:blur(24px);text-align:center}.memory-dialog::backdrop{background:rgba(0,0,0,.65);backdrop-filter:blur(6px)}.dialog-art{aspect-ratio:4/3;border-radius:16px;background:linear-gradient(145deg,#2b1a27,#a14f51,#cf9f68)}.memory-dialog h3{font-size:2rem}.memory-dialog>p:last-child{color:var(--muted)}.dialog-close{position:absolute;top:18px;right:18px;width:34px;height:34px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(0,0,0,.3);color:#fff;cursor:pointer;z-index:2}
.voice-message-card{position:relative;width:min(470px,100%);margin:18px auto 20px;padding:14px 16px;border:1px solid rgba(255,255,255,.13);border-radius:20px;background:rgba(255,255,255,.045);text-align:left}.voice-message-card>p{margin:0 0 10px;color:var(--muted);font-size:.76rem;letter-spacing:.04em}.voice-message-button{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;width:100%;padding:0;border:0;background:transparent;color:var(--ivory);text-align:left;cursor:pointer}.voice-play-icon{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(214,181,127,.42);border-radius:50%;background:rgba(214,181,127,.1);color:var(--gold);font-size:.72rem}.voice-time{color:var(--muted);font-size:.68rem;font-variant-numeric:tabular-nums}.voice-progress{height:2px;margin:12px 2px 0;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.1)}.voice-progress span{display:block;width:100%;height:100%;background:linear-gradient(90deg,var(--gold),var(--rose));transform:scaleX(var(--voice-progress,0));transform-origin:left;transition:transform .12s linear}
.date-response{display:none;margin:4px auto 10px;padding:13px 24px;border:1px solid rgba(198,154,99,.52);border-radius:999px;background:rgba(198,154,99,.1);color:var(--ivory);cursor:pointer;transition:background .3s,transform .3s}.date-response:hover{transform:translateY(-2px);background:rgba(198,154,99,.2)}.date-response.accepted{border-color:rgba(169,79,85,.65);background:rgba(169,79,85,.2)}.date-confirmation{min-height:1.5em;margin:0;color:var(--gold);font-family:var(--serif)}body[data-journey="date"] .date-response{display:block}
#date-details-screen{overflow-y:auto}.date-ticket-card{width:min(760px,94vw);padding:clamp(26px,4vw,46px);text-align:left}.ticket-glow{position:absolute;top:-20%;right:-12%;width:48%;aspect-ratio:1;border-radius:50%;background:rgba(214,181,127,.13);filter:blur(60px);pointer-events:none}.ticket-header{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.ticket-header .eyebrow{margin:0}.ticket-number{color:rgba(245,237,224,.55);font-family:monospace;font-size:.72rem;letter-spacing:.12em;white-space:nowrap}.date-ticket-card h2{position:relative;margin-top:16px;font-size:clamp(2.2rem,5vw,4rem)}.ticket-for{position:relative;margin:12px 0 25px;color:var(--muted);font-size:.88rem}.ticket-for strong{color:var(--ivory);font-weight:500}.ticket-perforation{position:relative;height:25px;margin-inline:calc(clamp(26px,4vw,46px) * -1);overflow:hidden}.ticket-perforation:before{content:"";position:absolute;top:50%;left:0;right:0;border-top:1px dashed rgba(255,255,255,.2)}.ticket-perforation:after,.ticket-perforation span:after{content:"";position:absolute;top:50%;width:24px;height:24px;border-radius:50%;background:var(--bg)}.ticket-perforation:after{left:0;transform:translate(-50%,-50%)}.ticket-perforation span:after{right:0;transform:translate(50%,-50%)}.invitation-details{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 32px;margin:20px 0 26px}.invitation-details div{min-width:0}.invitation-details dt{margin-bottom:5px;color:var(--gold);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase}.invitation-details dd{margin:0;color:var(--ivory);font-family:var(--serif);font-size:clamp(1.05rem,2vw,1.35rem);overflow-wrap:anywhere}.ticket-barcode{position:relative;width:130px;height:26px;margin:4px 0 24px;background:repeating-linear-gradient(90deg,rgba(245,237,224,.65) 0 1px,transparent 1px 3px,rgba(245,237,224,.42) 3px 5px,transparent 5px 8px);opacity:.55}.invitation-actions{position:relative;display:flex;flex-wrap:wrap;gap:10px}.ticket-action{display:inline-flex;align-items:center;justify-content:space-between;gap:20px;min-height:46px;padding:12px 17px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:rgba(255,255,255,.04);color:var(--ivory);font-size:.78rem;text-decoration:none;cursor:pointer;transition:transform .25s,border-color .25s,background .25s}.ticket-action:hover{transform:translateY(-2px);border-color:rgba(214,181,127,.5);background:rgba(214,181,127,.09)}.ticket-action-primary{border-color:rgba(214,181,127,.45);background:linear-gradient(135deg,rgba(214,181,127,.22),rgba(158,83,97,.16))}.ticket-replay{display:block;margin:22px auto 0;font-size:.76rem}
.loading-screen{position:fixed;inset:0;z-index:100;display:grid;place-content:center;gap:16px;background:var(--bg);text-align:center;transition:opacity .7s,visibility .7s}.loading-screen.hidden{opacity:0;visibility:hidden}.loading-mark{color:var(--rose);font-size:2.5rem;animation:pulse 1.5s ease-in-out infinite}.loading-screen p{color:var(--muted);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase}@keyframes pulse{50%{opacity:.45;transform:scale(.9)}}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.birthday-transition-screen{padding:0;background:radial-gradient(circle at center,rgba(84,43,47,.08),rgba(2,3,5,.38) 70%)}.birthday-transition-stage{position:relative;width:100%;height:100%;text-align:center}.birthday-transition-stage>.eyebrow{position:absolute;z-index:7;top:max(92px,12svh);left:0;width:100%}.birthday-transition-copy{position:absolute;z-index:9;left:50%;bottom:150px;width:min(88vw,620px);margin:0;transform:translateX(-50%);color:var(--ivory);font-family:var(--serif);font-size:clamp(1.35rem,3vw,2.25rem);text-shadow:0 6px 28px rgba(0,0,0,.8)}.birthday-mic-button{position:absolute;z-index:10;left:50%;bottom:82px;transform:translateX(-50%)}.birthday-mic-button:hover{transform:translateX(-50%) translateY(-2px)}.birthday-mic-button:disabled{cursor:wait;opacity:.58}.birthday-privacy{position:absolute;z-index:9;left:50%;bottom:42px;width:min(88vw,560px);margin:0;transform:translateX(-50%);color:var(--muted);font-size:.7rem;letter-spacing:.04em}.birthday-fallback{position:absolute;z-index:11;left:50%;bottom:92px;transform:translateX(-50%);padding:12px 18px}.birthday-flame-wrap{position:absolute;z-index:8;left:50%;top:calc(50% - min(32vw,32vh));width:34px;height:56px;transform:translate(-50%,-50%)}.birthday-flame{position:absolute;left:50%;bottom:5px;width:20px;height:30px;border-radius:55% 45% 55% 45%;background:radial-gradient(circle at 52% 70%,#fff9ca 0 14%,#ffd26a 15% 37%,#ff7b3d 48%,rgba(255,85,45,.12) 72%);box-shadow:0 0 16px #ffd26a,0 0 38px rgba(255,119,58,.7),0 0 72px rgba(255,105,45,.35);transform:translateX(-50%) rotate(4deg);transform-origin:50% 100%;animation:birthday-flame-flicker .16s ease-in-out infinite alternate}.birthday-smoke{position:absolute;left:50%;bottom:18px;width:12px;height:28px;border:2px solid rgba(220,219,215,.5);border-color:rgba(220,219,215,.46) transparent transparent rgba(220,219,215,.25);border-radius:50%;opacity:0;filter:blur(1px)}.birthday-smoke-2{margin-left:5px;transform:scale(.75)}.birthday-wind{position:absolute;z-index:10;inset:0;pointer-events:none;overflow:hidden}.birthday-wind span{position:absolute;right:-35vw;width:32vw;height:1px;background:linear-gradient(90deg,transparent,rgba(245,237,224,.7),transparent);opacity:0}.birthday-wind span:nth-child(1){top:35%}.birthday-wind span:nth-child(2){top:40%;width:42vw}.birthday-wind span:nth-child(3){top:45%;width:26vw}.birthday-photo-burst{position:absolute;z-index:12;inset:0;pointer-events:none}.birthday-burst-photo{position:absolute;left:50%;top:calc(50% - min(32vw,32vh));width:clamp(92px,14vw,165px);aspect-ratio:4/3;margin:0;padding:6px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:linear-gradient(145deg,#5b3341,#c79b70);box-shadow:0 22px 60px rgba(0,0,0,.5);opacity:0;overflow:hidden}.birthday-burst-photo img{width:100%;height:100%;border-radius:8px;object-fit:cover}.birthday-burst-1{--tx:-30vw;--ty:2vh;--rot:-10deg}.birthday-burst-2{--tx:-13vw;--ty:25vh;--rot:7deg}.birthday-burst-3{--tx:15vw;--ty:23vh;--rot:-5deg}.birthday-burst-4{--tx:31vw;--ty:3vh;--rot:9deg}.birthday-celebrating #particle-canvas{transform:scale(1.2);transition:transform 1.1s cubic-bezier(.22,1,.36,1),opacity .8s}.birthday-listening .birthday-flame{animation-duration:.1s}.birthday-listening .birthday-mic-button{opacity:.4}.birthday-blown .birthday-flame{animation:flame-out .38s ease-out forwards}.birthday-blown .birthday-smoke-1{animation:smoke-rise 1.8s .24s ease-out forwards}.birthday-blown .birthday-smoke-2{animation:smoke-rise 1.9s .48s ease-out forwards}.birthday-blown .birthday-wind span:nth-child(1){animation:wind-pass .6s ease-out forwards}.birthday-blown .birthday-wind span:nth-child(2){animation:wind-pass .7s .08s ease-out forwards}.birthday-blown .birthday-wind span:nth-child(3){animation:wind-pass .55s .14s ease-out forwards}.birthday-blown .birthday-burst-1{animation:birthday-photo-out 1.15s 1.05s cubic-bezier(.2,.9,.2,1) forwards}.birthday-blown .birthday-burst-2{animation:birthday-photo-out 1.15s 1.17s cubic-bezier(.2,.9,.2,1) forwards}.birthday-blown .birthday-burst-3{animation:birthday-photo-out 1.15s 1.29s cubic-bezier(.2,.9,.2,1) forwards}.birthday-blown .birthday-burst-4{animation:birthday-photo-out 1.15s 1.41s cubic-bezier(.2,.9,.2,1) forwards}.birthday-blown #particle-canvas{opacity:.32;transform:scale(1.38)}
@keyframes birthday-flame-flicker{from{transform:translateX(-50%) rotate(-5deg) scale(.94,1.04)}to{transform:translateX(-50%) rotate(7deg) scale(1.07,.95)}}@keyframes flame-out{0%{opacity:1;transform:translateX(-50%) scale(1)}65%{opacity:.75;transform:translateX(-70%) skewX(-28deg) scale(.7,.5)}100%{opacity:0;transform:translateX(-100%) scale(.1)}}@keyframes smoke-rise{0%{opacity:0;transform:translate(-50%,0) scale(.5)}20%{opacity:.55}100%{opacity:0;transform:translate(-50%,-70px) scale(1.7) rotate(25deg)}}@keyframes wind-pass{0%{opacity:0;transform:translateX(0)}30%{opacity:.65}100%{opacity:0;transform:translateX(-145vw)}}@keyframes birthday-photo-out{0%{opacity:0;transform:translate(-50%,-50%) scale(.08)}20%{opacity:1}100%{opacity:1;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) rotate(var(--rot)) scale(1)}}
.cinema-screen{padding:0;background:#020303}.cinema-shell{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;transition:width 1.35s cubic-bezier(.22,1,.36,1)}.cinema-kicker{margin-bottom:14px;opacity:0;transition:opacity .6s 1s}.cinema-frame{position:relative;width:100%;height:100svh;overflow:hidden;border:0 solid rgba(214,181,127,.22);border-radius:0;background:#050505;box-shadow:none;transition:height 1.35s cubic-bezier(.22,1,.36,1),border-width 1.1s,border-radius 1.1s,box-shadow 1.1s}.cinema-opening,.cinema-end-card,.cinema-slide{position:absolute;inset:0}.cinema-opening{z-index:4;display:grid;place-content:center;gap:16px;background:radial-gradient(circle at center,#17130f,#030303 68%);text-align:center;transition:opacity .65s 1.15s}.cinema-opening p{margin:0;color:rgba(245,237,224,.68);font-size:clamp(.72rem,1.25vw,.9rem);letter-spacing:.15em;text-transform:uppercase}.cinema-mark{color:var(--gold);font-family:var(--serif);font-size:clamp(2rem,5vw,4.5rem);letter-spacing:.18em}.cinema-slide{z-index:3;margin:0;opacity:0;background-position:center;background-size:cover;transform:scale(1.06)}.cinema-slide img{width:100%;height:100%;object-fit:cover}.cinema-slide:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.28),transparent 22% 78%,rgba(0,0,0,.28)),linear-gradient(0deg,rgba(0,0,0,.22),transparent 30%)}.cinema-slide-1{background:linear-gradient(135deg,#442b35,#bd806e)}.cinema-slide-2{background:linear-gradient(135deg,#172238,#95545c)}.cinema-slide-3{background:linear-gradient(135deg,#1e3741,#cfaa80)}.cinema-slide-4{background:linear-gradient(135deg,#4f2834,#b27865)}.cinema-slide-5{background:linear-gradient(135deg,#101c31,#72516a)}.cinema-slide-6{background:linear-gradient(135deg,#43202e,#c89d68)}.projector-beam{position:absolute;z-index:7;inset:-20%;pointer-events:none;background:linear-gradient(108deg,transparent 34%,rgba(255,240,207,.045) 46%,transparent 58%);transform:translateX(-80%)}.film-grain{position:absolute;z-index:8;inset:0;pointer-events:none;opacity:.15;background-image:repeating-radial-gradient(circle at 17% 23%,rgba(255,255,255,.2) 0 1px,transparent 1px 4px);mix-blend-mode:screen}.cinema-end-card{z-index:2;display:flex;align-items:center;justify-content:center;gap:18px;background:radial-gradient(circle at center,#261a1d,#030303 70%);color:var(--ivory);font-family:var(--serif);font-size:clamp(1.5rem,4vw,3.4rem);letter-spacing:.08em;opacity:0}.cinema-heart{color:var(--rose)}.cinema-status{margin:16px 0 12px;color:var(--muted);font-size:.78rem;letter-spacing:.08em;opacity:0;transition:opacity .6s 1.1s}.cinema-continue{min-width:min(330px,86vw);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .5s,transform .5s}.cinema-playing .topbar{opacity:0;pointer-events:none}.topbar{transition:opacity .45s}.cinema-playing .ambient{opacity:0}.ambient{transition:opacity .5s}.cinema-playing .cinema-shell{width:min(92vw,1200px)}.cinema-playing .cinema-frame{height:min(58svh,38.5vw,500px);border-width:1px;border-radius:7px;box-shadow:0 0 90px rgba(214,181,127,.12),0 35px 90px rgba(0,0,0,.7)}.cinema-playing .cinema-kicker,.cinema-playing .cinema-status{opacity:1}.cinema-playing .cinema-opening{opacity:0}.cinema-playing .projector-beam{animation:projector-sweep 6.8s 1s ease-in-out both}.cinema-playing .cinema-slide-1{animation:cinema-slide 1.3s 1.25s ease both}.cinema-playing .cinema-slide-2{animation:cinema-slide 1.3s 2.2s ease both}.cinema-playing .cinema-slide-3{animation:cinema-slide 1.3s 3.15s ease both}.cinema-playing .cinema-slide-4{animation:cinema-slide 1.3s 4.1s ease both}.cinema-playing .cinema-slide-5{animation:cinema-slide 1.3s 5.05s ease both}.cinema-playing .cinema-slide-6{animation:cinema-slide 1.3s 6s ease both}.cinema-playing .cinema-end-card{animation:end-card-in .65s 7s ease forwards}.cinema-ready .cinema-continue{opacity:1;pointer-events:auto;transform:translateY(0)}
@keyframes cinema-slide{0%{opacity:0;transform:scale(1.07)}12%,78%{opacity:1}100%{opacity:0;transform:scale(1)}}@keyframes end-card-in{to{opacity:1}}@keyframes projector-sweep{0%{transform:translateX(-80%)}50%{transform:translateX(40%)}100%{transform:translateX(80%)}}
@media(max-width:720px){.topbar{padding-inline:18px}.private-label{font-size:.58rem}.screen{padding-inline:16px}.cinema-screen{padding-inline:0}.glass-panel{border-radius:26px}.choice-grid{grid-template-columns:1fr;width:min(340px,100%);gap:10px}.choice{grid-template-columns:68px 1fr auto;align-items:center;justify-items:start;min-height:86px;padding:12px 16px;text-align:left}.choice-symbol{height:auto;font-size:2.4rem}.choice-status{justify-self:end}.release-content .primary-button{margin-top:35vh}.memory-field{inset:190px 0 80px}.memory-card{width:105px}.memory-1{left:4%;top:8%}.memory-2{left:8%;bottom:5%}.memory-3{left:38%;top:6%}.memory-4{right:7%;bottom:7%}.memory-5{right:4%;top:12%}.memory-6{left:50%;top:53%}.cinema-playing .cinema-shell{width:92vw}.cinema-playing .cinema-frame{height:calc(92vw / 1.78);max-height:44svh}.cinema-status{max-width:86vw;text-align:center}.cinema-kicker{margin-top:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Flat-file motion system: no external animation library required. */
.screen{
  transform:translateY(20px) scale(.99);
  transition:opacity .65s ease,transform .75s cubic-bezier(.22,1,.36,1),visibility .65s;
}
.screen.active{transform:translateY(0) scale(1)}
.pin-inputs.shake{animation:shake .36s ease}
.lock-panel.unlocking{animation:unlock .7s cubic-bezier(.7,0,.84,0) forwards}
.memory-card{opacity:0}
.memory-card.revealed{animation:card-in .75s var(--card-delay,0ms) cubic-bezier(.34,1.56,.64,1) forwards}
.choice.active-choice{border-color:rgba(198,154,99,.58);background:rgba(198,154,99,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 18px 48px rgba(0,0,0,.18)}
.memory-art{position:relative;overflow:hidden}
.memory-photo,.dialog-photo{display:block;width:100%;height:100%;object-fit:cover}
.memory-photo[hidden],.dialog-photo[hidden]{display:none}
.dialog-art{overflow:hidden}
body[data-journey="birthday"] .memory-5,body[data-journey="birthday"] .memory-6{display:none}
body[data-journey="birthday"] .memory-1{left:11%;top:17%;transform:rotate(-5deg)}
body[data-journey="birthday"] .memory-2{left:32%;bottom:4%;transform:rotate(3deg)}
body[data-journey="birthday"] .memory-3{left:auto;right:32%;top:15%;transform:rotate(-2deg)}
body[data-journey="birthday"] .memory-4{right:10%;bottom:5%;transform:rotate(4deg)}
body[data-journey="date"]{--gold:#d6b57f;--rose:#9e5361}

@media(max-width:720px){
  #finale-screen{padding:82px 12px 24px;place-items:start center}
  .finale-panel{width:100%;padding:27px 22px}
  .music-credit{right:12px;bottom:8px;max-width:70vw}
  #date-details-screen{padding:82px 12px 24px;place-items:start center}
  .date-ticket-card{width:100%;padding:26px 22px;border-radius:24px}
  .ticket-header{display:block}
  .ticket-number{display:block;margin-top:8px}
  .invitation-details{grid-template-columns:1fr;gap:15px}
  .invitation-actions{display:grid;grid-template-columns:1fr}
  .ticket-action{width:100%}
  .ticket-perforation{margin-inline:-22px}
  body[data-journey="birthday"] .memory-1{left:7%;top:8%}
  body[data-journey="birthday"] .memory-2{left:12%;bottom:5%}
  body[data-journey="birthday"] .memory-3{right:12%;top:8%}
  body[data-journey="birthday"] .memory-4{right:7%;bottom:5%}
}

@keyframes shake{
  20%,60%{transform:translateX(-7px)}
  40%,80%{transform:translateX(7px)}
}
@keyframes unlock{
  55%{box-shadow:0 0 95px rgba(198,154,99,.42);transform:scale(1.025)}
  100%{opacity:0;filter:blur(12px);transform:scale(1.05)}
}
@keyframes card-in{
  from{opacity:0;filter:blur(8px);scale:.55}
  to{opacity:1;filter:blur(0);scale:1}
}
