.celestial-effects{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none;isolation:isolate}.ambient-stars,.starfall-trails,.starlight-motes{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ambient-stars>span{position:absolute;display:block;background:#e2e4fa;border-radius:50%;opacity:.3;animation:celestial-twinkle 7s ease-in-out infinite}.celestial-pinpoint{width:2px;height:2px;box-shadow:0 0 7px #ccd1f580}.celestial-spark{width:3px;height:3px;box-shadow:0 0 10px #e6d7b680}.celestial-spark:before,.celestial-spark:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,#efe5d3b0,transparent);width:15px;height:1px}.celestial-spark:after{width:1px;height:15px;background:linear-gradient(transparent,#efe5d3b0,transparent)}.shooting-star{position:absolute;width:clamp(80px,11vw,160px);height:1px;border-radius:100%;background:linear-gradient(90deg,#fff0d8,#d4d9f8aa 12%,#b2c0ed44 45%,transparent);opacity:0;transform-origin:0 50%;animation:starfall-flight var(--flight-time) var(--flight-delay) linear infinite}.shooting-star:before{content:"";position:absolute;left:0;top:-1px;width:3px;height:3px;border-radius:50%;background:#fff4de;box-shadow:0 0 8px #e3d9ff,0 0 16px #c6cced66}.starlight-motes>span{position:absolute;width:2px;height:2px;background:#dcc9a3;border-radius:50%;box-shadow:0 0 8px #dcc9a355;opacity:0;animation:mote-drift var(--mote-time) var(--mote-delay) ease-in-out infinite}.effects-sky{opacity:.8}.effects-window{clip-path:polygon(31% 0,78% 0,78% 55%,31% 55%);opacity:.75}.effects-window .starlight-motes{display:none}.effects-window .ambient-stars>span{width:2px;height:2px}.effects-window .celestial-spark:before{width:10px}.effects-window .celestial-spark:after{height:10px}.effects-window .shooting-star{width:100px}.celestial-effects[data-paused] *,.celestial-effects[data-paused] *:before,.celestial-effects[data-paused] *:after{animation-play-state:paused!important}@keyframes celestial-twinkle{0%,to{opacity:.18;transform:scale(.8)}35%{opacity:.45}55%{opacity:.85;transform:scale(1.13)}75%{opacity:.35}}@keyframes starfall-flight{0%,1%{opacity:0;transform:translate(0) rotate(-29deg) scaleX(.35)}3%{opacity:.85;transform:translate(-32px,18px) rotate(-29deg) scaleX(1)}9%{opacity:.65;transform:translate(-190px,105px) rotate(-29deg) scaleX(.9)}14%,to{opacity:0;transform:translate(-350px,194px) rotate(-29deg) scaleX(.35)}}@keyframes mote-drift{0%,to{opacity:0;transform:translateY(25px)}25%{opacity:.4}70%{opacity:.26}95%{opacity:0;transform:translate(var(--mote-drift),-70px)}}@media(max-width:700px){.ambient-stars>span:nth-child(n+23),.shooting-star:nth-child(n+3),.starlight-motes>span:nth-child(n+9){display:none}.celestial-spark:before{width:11px}.celestial-spark:after{height:11px}.effects-sky{opacity:.7}}@media(prefers-reduced-motion:reduce){.celestial-effects .shooting-star,.celestial-effects .starlight-motes{display:none}.celestial-effects .ambient-stars>span{animation:none;opacity:.32;transform:none}}.chapter-4 .sky{opacity:.23}.chapter-4 .scene-container{padding:32px 0 35px}.scene.scene-finale{max-width:1800px;overflow:hidden}.finale-heading{padding:0 24px 28px}.finale-heading .eyebrow{margin-bottom:18px;color:#cdbd9f;font-size:12px;letter-spacing:.2em}.finale-heading h2{font-size:clamp(43px,4.7vw,70px);line-height:1.04}.finale-invitation{font-family:Cormorant Garamond,Georgia,serif;font-size:23px;line-height:1.5;color:#cdc6d2;margin:23px auto 0;max-width:660px}.riverhouse-figure{position:relative;margin:0 22px;border:1px solid #c8b1855c;background:#111827;box-shadow:0 25px 100px #02061080}.riverhouse-figure:before{content:"";position:absolute;top:7px;right:7px;bottom:7px;left:7px;border:1px solid #e1cfb326;pointer-events:none;z-index:6}.panorama-window{position:relative;width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#a2927166 #0e1628;touch-action:pan-x pan-y}.panorama-window:focus-visible{outline:2px solid #d6bb8c;outline-offset:4px}.riverhouse-tableau{position:relative;width:100%;min-width:960px;aspect-ratio:16/10;overflow:hidden;isolation:isolate;container-type:inline-size}.riverhouse-room{position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;object-fit:cover;object-position:50% 50%;animation:none;transform:none}.riverhouse-atmosphere{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(#080d1e0d,#080d1e05 35%,#080d1e45),radial-gradient(ellipse at center,transparent 45%,#070d2066);pointer-events:none}.party-foreground{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity 1.5s ease}.tableau-ready .party-foreground{opacity:1}.party-guests{position:absolute;bottom:1%;width:34%;aspect-ratio:1;transform-origin:50% 95%;z-index:1;filter:drop-shadow(0 6px 8px #080b1855)}.party-guests img,.birthday-couple>img{display:block;width:100%;height:auto}.party-guests-left{left:0;animation:guests-breathe 9s ease-in-out -3s infinite alternate}.party-guests-right{right:0;animation:guests-breathe 11s ease-in-out -7s infinite alternate-reverse}.birthday-couple{position:absolute;bottom:0;left:28%;width:44%;aspect-ratio:1;transform-origin:50% 95%;z-index:3;filter:drop-shadow(0 9px 12px #070c2266);animation:couple-breathe 8s ease-in-out infinite alternate}.party-floor-shade{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;background:linear-gradient(transparent 79%,#080e2055 94%,#080e20b0);pointer-events:none}.candle-position{position:absolute;left:var(--candle-x);top:var(--candle-y);width:0;height:0;z-index:5}.candle-touch{position:absolute;left:-24px;bottom:-12px;width:48px;height:56px;display:block;padding:0;border:0;background:transparent;border-radius:50%;color:#ffdf9e}.candle-touch:focus-visible{outline:1px solid #ffe6ad;outline-offset:3px}.candle-touch:disabled{cursor:default}.candle-flame{position:absolute;bottom:12px;left:calc(50% - 6px);width:12px;height:25px;width:clamp(8px,1cqw,14px);height:clamp(18px,2cqw,28px);background:radial-gradient(ellipse at 50% 75%,#fff9db 0,#fff9db 20%,#ffe7a5 38%,#ffbd5e 65%,#f78b39 85%);border-radius:60% 40% 55% 45%/70% 65% 35% 30%;transform-origin:50% 95%;box-shadow:0 0 10px #ffdf8ed0,0 0 24px #ffa64588,0 0 45px #edac4c33;animation:flame-flicker 1.8s ease-in-out infinite alternate;transition:opacity .45s,scale .45s}.candle-flame>span{position:absolute;left:35%;bottom:1px;width:30%;height:35%;border-radius:50%;background:#fffaf0}.candle-aura{position:absolute;left:var(--candle-x);top:var(--candle-y);width:32%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;background:radial-gradient(ellipse,#ffc37724,transparent 67%);mix-blend-mode:screen;animation:candle-glow 3s ease-in-out infinite alternate;transition:opacity .7s}.wish-made .candle-flame{opacity:0;scale:.15}.wish-made .candle-aura{opacity:0;animation:none}.candle-smoke{position:absolute;bottom:0;left:0;pointer-events:none}.candle-smoke span{position:absolute;left:-3px;bottom:0;width:6px;height:18px;border:1px solid #dedde0;border-right:0;border-bottom:0;border-radius:50%;opacity:0;animation:smoke-rise 3.2s ease-out both}.candle-smoke span:nth-child(2){animation-delay:.3s}.candle-smoke span:nth-child(3){animation-delay:.65s}.tableau-caption{position:absolute;z-index:5;bottom:22px;left:18px;right:18px;font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(18px,1.6vw,24px);font-style:italic;color:#e4d5bd;text-shadow:0 2px 9px #040814;pointer-events:none}.panorama-hint{display:none;font-size:12px;color:#c5b5a2;padding:0 24px;line-height:1.6}.panorama-hint span{margin-left:7px;color:#e6d0ac}.finale-actions{padding:22px 24px 0;max-width:730px;margin:auto}.finale-wish-status p{font-family:Cormorant Garamond,Georgia,serif;font-size:23px;line-height:1.45;margin:0 0 21px;color:#ccc3d2}.finale-wish-status h3{font-family:Cormorant Garamond,Georgia,serif;color:#ead0a7;font-size:clamp(32px,4vw,47px);font-weight:400;margin:0 0 12px;line-height:1.15}.final-wish-button{font-size:14px;min-height:50px}.relight-candle{font-size:13px}.finale-error{color:#eed5ae;line-height:1.5;padding:0 24px}.birthday-blessing{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.birthday-blessing span{position:absolute;font-size:clamp(15px,1.7cqw,25px);color:#f1d5a4;text-shadow:0 0 10px #d3beef77;opacity:0;animation:party-starlight 4s calc(var(--i) * .07s) var(--ease) both}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.celebration-entry{margin:24px auto 0}.continue-to-finale{margin:20px auto 5px;font-size:14px}.love-letter-dialog .continue-to-finale{display:flex;width:fit-content;max-width:100%;line-height:1.5;text-align:center}@keyframes guests-breathe{0%{transform:translateY(1px) rotate(-.08deg)}to{transform:translateY(-2px) rotate(.08deg)}}@keyframes couple-breathe{0%{transform:translateY(0) scale(1)}to{transform:translateY(-1.5px) scale(1.002)}}@keyframes flame-flicker{0%{transform:rotate(-4deg) scaleY(.93)}40%{transform:rotate(2deg) scaleY(1.05)}70%{transform:rotate(-1deg) scaleY(.97)}to{transform:rotate(3deg) scaleY(1.02)}}@keyframes candle-glow{0%{opacity:.6}to{opacity:1}}@keyframes smoke-rise{0%{opacity:0;transform:translate(0) scale(.5)}15%{opacity:.45}to{opacity:0;transform:translate(15px,-75px) scale(2.2)}}@keyframes party-starlight{0%{opacity:0;transform:translateY(15px) scale(.7)}25%{opacity:.75}to{opacity:0;transform:translateY(-110px) scale(1.1)}}@media(max-width:1000px){.panorama-hint{display:block}}@media(max-width:700px){.chapter-4 .scene-container{padding:32px 0 25px}.finale-heading{padding:0 23px 25px}.finale-heading .eyebrow{font-size:11px;letter-spacing:.13em}.finale-heading h2{font-size:clamp(39px,10vw,56px)}.finale-invitation{font-size:22px;margin-top:20px}.riverhouse-figure{margin:0 10px}.riverhouse-tableau{min-width:920px;aspect-ratio:16/11}.tableau-caption{display:none}.finale-actions{padding:14px 22px 0}.finale-wish-status p{font-size:22px}.finale-heading .eyebrow{line-height:1.7}.continue-to-finale{font-size:13px}.party-guests{bottom:3%}.birthday-couple{bottom:2%}.riverhouse-room{object-position:50% 50%}}@media(prefers-reduced-motion:reduce){.party-foreground{transition:none}.party-guests,.birthday-couple,.candle-flame,.candle-aura{animation:none}.candle-smoke,.birthday-blessing{display:none}.wish-made .candle-flame{opacity:0}.candle-flame{transform:none}}.party-friends{position:absolute;left:34.5%;bottom:41%;width:31%;aspect-ratio:1;z-index:0;transform-origin:50% 95%;filter:drop-shadow(0 5px 8px #080b1844);animation:guests-breathe 10s ease-in-out -4s infinite alternate}.party-friends img{display:block;width:100%;height:auto}@media(max-width:700px){.party-friends{bottom:39%;left:34%;width:32%}}@media(prefers-reduced-motion:reduce){.party-friends{animation:none}}.riverhouse-tableau.selected-variant{aspect-ratio:1672/941}.selected-variant .riverhouse-room{object-fit:fill;opacity:0;transition:opacity .8s ease}.tableau-ready .selected-variant .riverhouse-room{opacity:1}.painted-flame-patch{position:absolute;display:block;-webkit-mask-image:radial-gradient(ellipse,black 50%,transparent 95%);mask-image:radial-gradient(ellipse,black 50%,transparent 95%);pointer-events:none}.finale-candle-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none}.finale-candle-layer .candle-touch{pointer-events:auto}.selected-variant .candle-aura{width:16%}.selected-variant .candle-flame{width:clamp(7px,.6cqw,11px);height:clamp(15px,1.45cqw,24px);left:calc(50% - 4px)}.selected-variant .effects-window{clip-path:polygon(36% 0,66% 0,66% 28%,36% 28%)}.selected-variant .riverhouse-atmosphere{background:radial-gradient(ellipse at center,transparent 65%,#070d2020)}@media(prefers-reduced-motion:reduce){.selected-variant .riverhouse-room{transition:none}}.finale-original-katie-face{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;pointer-events:none;opacity:0;transition:opacity .8s ease;-webkit-mask-image:radial-gradient(ellipse 3.6% 8% at 54.67% 43.04%,#000 85%,transparent 100%);mask-image:radial-gradient(ellipse 3.6% 8% at 54.67% 43.04%,#000 85%,transparent 100%)}.tableau-ready .finale-original-katie-face{opacity:1}@media(prefers-reduced-motion:reduce){.finale-original-katie-face{transition:none}}.gift-entry{margin:38px auto 8px;text-align:center}.gift-entry p{color:#c5bfd5;font-size:16px;margin:22px 0}.gift-entry-button{max-width:100%;white-space:normal;justify-content:center}.scene.scene-gift-quiz{max-width:760px;margin:auto}.quiz-introduction{max-width:500px;margin:22px auto;color:#c9c7da;font-size:17px;line-height:1.8}.quiz-progress{display:flex;justify-content:center;gap:18px;margin:30px auto}.quiz-progress span{display:grid;place-items:center;width:32px;height:32px;border:1px solid #8d8ba644;border-radius:50%;font-size:13px;color:#aaa7c0}.quiz-progress .quiz-current{border-color:#d7bd85;color:#f1dbb0;box-shadow:0 0 22px #d7bd851a}.quiz-progress .quiz-done{color:#b2d8d2;border-color:#97c7bc77}.quiz-paper{position:relative;padding:36px 42px;border:1px solid #a79ac440;border-radius:5px;background:linear-gradient(140deg,#20203ee8,#101426ed);box-shadow:0 28px 90px #0005;animation:gift-reveal .6s ease both}.quiz-paper h3{font-family:Georgia,Times New Roman,serif;font-weight:400;font-size:clamp(23px,3vw,30px);line-height:1.45;margin:22px 0 28px;color:#f2ecdf}.quiz-answers{display:grid;gap:12px}.quiz-answer{display:flex;align-items:center;gap:16px;width:100%;text-align:left;padding:16px 18px;background:#ffffff04;border:1px solid #aaa0c536;border-radius:3px;color:#e1dfed;font:inherit;font-size:17px;cursor:pointer;transition:background .25s,border-color .25s}.quiz-answer:hover:not([aria-disabled=true]){border-color:#c8b184;background:#c8b1840d}.answer-letter{font-size:12px;color:#b8abc8;border-right:1px solid #ffffff20;padding-right:16px}.quiz-answer>svg{margin-left:auto;flex-shrink:0}.quiz-answer.answer-selected{background:#bb9cd31a;border-color:#ad93c4}.quiz-answer.answer-correct{border-color:#9fc5b2;background:#9fc5b211;color:#d4efdf}.quiz-answer[aria-disabled=true]{cursor:default}.quiz-feedback{min-height:106px;text-align:left;padding:22px 0 14px;font-size:14px;line-height:1.7;color:#b9b8cb}.quiz-feedback strong{font-weight:500;color:#dfd4b6}.quiz-feedback p{margin:8px 0 0}.quiz-next{margin:0 auto;justify-content:center}.quiz-paper h3:focus{outline:none}.quiz-paper h3:focus-visible{outline:1px solid #d7bd85;outline-offset:8px}.scene.scene-gift-arrival{max-width:1080px;margin:auto}.bryce-delivery{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:44px;margin:28px auto 0;text-align:left}.portal-portrait{position:relative;min-width:0;isolation:isolate}.wyrd-portal{position:absolute;top:2%;right:7%;bottom:1%;left:7%;z-index:-1}.portal-depth{position:absolute;top:4%;right:4%;bottom:4%;left:4%;border-radius:50%;background:radial-gradient(ellipse,#8999c733,#4c5c9d20 40%,#13162c 66%,transparent 72%);box-shadow:inset 0 0 70px #94d4e155,0 0 70px #8770ce22}.portal-ring{position:absolute;top:3%;right:3%;bottom:3%;left:3%;border:2px solid #c8eeef99;border-radius:50%;box-shadow:0 0 15px #b4d9ff99,inset 0 0 18px #a5a3ef88;animation:portal-breathe 5s ease-in-out infinite}.portal-ring:after{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border:1px dashed #a9b9df88;border-radius:50%;animation:portal-orbit 80s linear infinite}.portal-runes{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;stroke:#d5d1fa;stroke-width:1;opacity:.7}.portal-runes ellipse{stroke:#9abfd655;stroke-dasharray:2 17}.portal-dust{position:absolute;top:0;right:0;bottom:0;left:0}.portal-dust i{position:absolute;width:3px;height:3px;border-radius:50%;background:#e3efff;box-shadow:0 0 8px #ccd8ff;animation:portal-star 4s ease-in-out infinite;animation-delay:calc(var(--i)*-.43s)}.bryce-portrait{display:block;width:100%;height:auto;position:relative;z-index:1;-webkit-mask-image:linear-gradient(#000 82%,transparent 99%);mask-image:linear-gradient(#000 82%,transparent 99%);filter:drop-shadow(0 0 20px #abbbdc22);opacity:0;transform:translateY(20px) scale(.97);transition:opacity 1.7s ease,transform 2s cubic-bezier(.16,1,.3,1)}.bryce-message{opacity:0;transform:translateY(14px);transition:opacity 1.3s ease .2s,transform 1.3s ease .2s;padding:15px 0}.bryce-arrived .bryce-portrait,.bryce-arrived .bryce-message{opacity:1;transform:none}.bryce-message .eyebrow{line-height:1.8}.bryce-message h3{font-family:Georgia,Times New Roman,serif;font-size:clamp(32px,4vw,48px);font-weight:400;color:#f2e8d5;margin:20px 0}.bryce-message .fine-rule{margin-left:0}.bryce-message blockquote{margin:26px 0 32px;font-family:Georgia,Times New Roman,serif;font-size:clamp(23px,2.4vw,29px);line-height:1.65;color:#d9d6e7}.portal-arrival-status{font-size:14px;letter-spacing:.08em;color:#a8adc5;margin:20px auto}.open-gift-voucher{justify-content:center}.gift-voucher-dialog{padding:0;border:1px solid #cbbd9155;border-radius:6px;width:min(650px,calc(100vw - 28px));max-width:none;max-height:calc(100dvh - 28px);overflow:auto;color:#e5dfef;background:linear-gradient(145deg,#21203a,#101528);box-shadow:0 35px 100px #0009}.gift-voucher-dialog::backdrop{background:#050815d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.voucher-content{position:relative;padding:46px 42px 30px;text-align:center;animation:gift-reveal .6s ease both}.voucher-emblem{width:58px;height:58px;margin:0 auto 24px;display:grid;place-items:center;border:1px solid #c9b88a66;border-radius:50%;color:#d9c59b}.voucher-emblem svg{width:29px;height:29px}.voucher-content h2{font-family:Georgia,Times New Roman,serif;font-weight:400;font-size:clamp(29px,5vw,40px);line-height:1.2;color:#f3ead8;margin:20px 0}.voucher-introduction{color:#bdb9cd;font-size:16px;line-height:1.8;margin:0 auto 26px}.voucher-card{display:flex;flex-direction:column;gap:18px;align-items:center;padding:30px 20px;background:radial-gradient(ellipse at 30% 10%,#9281ac25,transparent 70%),#0a1328;border:1px solid #cebd8c88;outline:1px solid #cebd8c22;outline-offset:-7px;border-radius:4px;color:#d2c4a5;font-size:14px}.voucher-brand{font-family:Georgia,serif;font-size:39px;color:#eee9dc;letter-spacing:.02em}.voucher-card>div{font-size:22px;color:#cdb58d}.voucher-preview{display:block;width:100%;height:auto;margin:24px auto;border-radius:3px}.voucher-placeholder{padding:18px;background:#ffffff04;border:1px dashed #b1a6c333;margin:24px 0;color:#c7c1d5;font-size:15px;line-height:1.7}.voucher-placeholder p{margin:0 0 6px}.voucher-placeholder span{font-size:13px;color:#a6a0b8}.voucher-return{margin:24px auto 0}.voucher-code{margin:24px 0;padding:18px;background:#ffffff05;display:grid;gap:12px;justify-items:center}.voucher-code>span{font-size:13px;color:#bfb7cf}.voucher-code code{font-size:21px;overflow-wrap:anywhere;max-width:100%;-webkit-user-select:all;user-select:all;color:#ede1c7}.voucher-code p{margin:0;font-size:13px;color:#b9ccbd}.voucher-file-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:20px;margin-top:24px}.voucher-content a{text-decoration:none}.voucher-external{margin:24px auto 0}.voucher-content .primary{display:inline-flex;justify-content:center}.gift-voucher-dialog button:focus-visible,.gift-voucher-dialog a:focus-visible,.quiz-answer:focus-visible{outline:2px solid #dac99f;outline-offset:4px}@keyframes gift-reveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes portal-breathe{50%{opacity:.55;transform:scale(.98)}}@keyframes portal-orbit{to{transform:rotate(360deg)}}@keyframes portal-star{50%{opacity:.2;transform:translateY(-9px)}}@media(max-width:700px){.quiz-paper{padding:27px 22px}.quiz-introduction{font-size:16px}.bryce-delivery{grid-template-columns:1fr;gap:0;max-width:480px}.portal-portrait{width:min(100%,360px);margin:auto}.bryce-message{text-align:center;padding:0 4px}.bryce-message .fine-rule{margin-left:auto}.bryce-message blockquote{font-size:24px;margin:24px 0}.bryce-message h3{margin:12px 0}.voucher-content{padding:44px 23px 26px}.gift-entry-button{font-size:13px;padding-left:18px;padding-right:18px}.scene.scene-gift-arrival{padding-bottom:20px}.portal-arrival-status{font-size:12px;line-height:1.8}.quiz-progress{gap:14px}}@media(prefers-reduced-motion:reduce){.quiz-paper,.voucher-content,.portal-ring,.portal-ring:after,.portal-dust i{animation:none!important}.bryce-portrait,.bryce-message,.quiz-answer{transition:none!important}.bryce-portrait,.bryce-message{transform:none}}.voucher-lock{display:grid;justify-items:center;gap:14px;margin:26px auto 0;max-width:420px;color:#c9c0d5}.voucher-lock>svg{color:#d7c399}.voucher-lock>p{font-size:15px;line-height:1.8;margin:0}.voucher-lock>label{font-size:14px;color:#e6d5b4;margin-top:6px}.voucher-lock>input{display:block;width:100%;min-height:48px;border:1px solid #b8a4c26b;border-radius:3px;background:#080e20b3;color:#f1e9dc;padding:12px 16px;font:inherit;font-size:18px;text-align:center;letter-spacing:.08em}.voucher-lock>input:focus-visible{outline:2px solid #dbc39a;outline-offset:3px}.voucher-lock>input[aria-invalid=true]{border-color:#dc9da4}.voucher-lock>.voucher-unlock-error{min-height:1.8em;color:#efb3bc;font-size:14px}.voucher-lock>.primary{width:100%;max-width:100%;white-space:normal;justify-content:center}.voucher-unlocked{font-size:15px;line-height:1.7;color:#c8dcc9;margin:24px 0 0}.voucher-pdf-preview{margin-top:24px;padding-top:22px;border-top:1px solid #ccb68c44}.voucher-pdf-preview h3{font-family:Georgia,serif;font-size:25px;line-height:1.3;font-weight:400;color:#e8d5b1;margin:0 0 18px}.voucher-pdf-preview h3:focus{outline:none}.voucher-pdf-preview figure{margin:18px 0 0}.voucher-pdf-preview img{display:block;width:100%;height:auto;border-radius:3px;background:#fff;-webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default}.voucher-save-hint,.voucher-save-status{font-size:14px;line-height:1.8;color:#c7bfd5}.voucher-save-status:empty{display:none}.voucher-pdf-preview>p{line-height:1.8;font-size:15px}.voucher-open{white-space:normal;max-width:100%;justify-content:center}.chapter-3 .scene-container{padding:45px 26px 65px}.chapter-3 .scene-shade{background:#080e20;opacity:.52}.scene-letters{max-width:1130px}.scene-letters>.eyebrow{margin-bottom:16px}.scene-letters>h2{font-size:clamp(49px,5.4vw,76px)}.letters-introduction{font-family:Cormorant Garamond,Georgia,serif;font-size:22px;line-height:1.5;color:#bfc1d2;margin:23px 0}.discovery-progress{display:grid;justify-items:center;gap:15px;margin:28px 0 32px;font-size:13px;letter-spacing:.12em;color:#d1c0a7}.discovery-marks{display:flex;gap:11px}.discovery-marks i{width:5px;height:5px;transform:rotate(45deg);border:1px solid #c1b2cd66;transition:background .5s,box-shadow .5s}.discovery-marks i.discovered{background:#dec9a0;border-color:#dec9a0;box-shadow:0 0 9px #dec9a066}.letters-desk{position:relative;padding:32px 25px 24px;border-top:1px solid #d0ba8b38;border-bottom:1px solid #d0ba8b38;background:radial-gradient(ellipse at 50% 0,#7e698c10,transparent 65%),linear-gradient(135deg,#11192c90,#17203675);box-shadow:0 20px 75px #050a1630}.letters-desk:before,.letters-desk:after{content:"";position:absolute;top:7px;bottom:7px;width:15px;border-top:1px solid #c7b08450;border-bottom:1px solid #c7b08450;pointer-events:none}.letters-desk:before{left:7px;border-left:1px solid #c7b08450}.letters-desk:after{right:7px;border-right:1px solid #c7b08450}.desk-ornament{position:absolute;left:50%;top:0;transform:translate(-50%,-50%);padding:0 18px;background:#121b2d;color:#d8c197;font-size:19px}.letters-collection{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:26px 20px}.court-letter{--letter-color:#c4abde;min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;padding:16px 2px 10px;background:none;border:0;color:#eee4db;transition:transform .45s var(--ease)}.court-letter:hover{transform:translateY(-5px)}.court-letter:focus-visible{outline-color:var(--letter-color);outline-offset:3px;border-radius:2px}.mini-envelope{position:relative;display:grid;place-items:center;width:100%;max-width:175px;aspect-ratio:1.65;background:linear-gradient(135deg,#2b3149,#182137);border:1px solid color-mix(in srgb,var(--letter-color) 42%,transparent);border-radius:2px;box-shadow:0 9px 20px #03071155,inset 0 0 25px #ffffff03;perspective:600px;transition:box-shadow .5s}.mini-envelope:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(30deg,transparent 49.5%,#a8a3c017 50%,transparent 50.5%),linear-gradient(-30deg,transparent 49.5%,#a8a3c017 50%,transparent 50.5%)}.mini-flap{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(155deg,#53516a55,#20283f);clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;transition:transform .6s var(--ease)}.mini-seal{position:relative;display:grid;place-items:center;transform:translateY(4px);width:39px;height:39px;border:1px solid color-mix(in srgb,var(--letter-color) 55%,transparent);border-radius:50%;background:radial-gradient(circle at 30% 15%,color-mix(in srgb,var(--letter-color) 30%,#23283b),#192139);box-shadow:0 3px 9px #03071166,inset 0 0 0 3px #ffffff06;color:var(--letter-color);transition:box-shadow .4s}.mini-seal>svg{width:21px;height:21px;color:inherit}.mini-seal>.court-emblem{width:30px;height:30px}.envelope-corner{position:absolute;bottom:8px;width:12px;height:12px;border-bottom:1px solid color-mix(in srgb,var(--letter-color) 35%,transparent)}.corner-left{left:8px;border-left:1px solid color-mix(in srgb,var(--letter-color) 35%,transparent)}.corner-right{right:8px;border-right:1px solid color-mix(in srgb,var(--letter-color) 35%,transparent)}.court-letter:hover .mini-envelope{box-shadow:0 10px 25px #03071155,0 0 25px color-mix(in srgb,var(--letter-color) 12%,transparent)}.court-letter:hover .mini-seal{box-shadow:0 0 22px color-mix(in srgb,var(--letter-color) 22%,transparent)}.sender-name{font-family:Cormorant Garamond,Georgia,serif;font-size:25px;line-height:1.15;margin-top:16px}.sender-title{font-size:12px;line-height:1.65;color:#b4b6c7;margin-top:7px;min-height:27px}.letter-status{display:flex;align-items:center;gap:5px;font-size:12px;letter-spacing:.06em;color:var(--letter-color);margin-top:11px;min-height:16px}.is-discovered .mini-flap{transform:rotateX(18deg)}.is-discovered .mini-envelope{border-style:dashed}.letter-paint .mini-envelope{background:radial-gradient(ellipse at 15% 35%,#779fc32a,transparent 65%),radial-gradient(ellipse at 90% 70%,#c49bc826,transparent 65%),#1e2840}.letter-crimson .mini-envelope{background:linear-gradient(135deg,#413044,#241e32)}.letter-flame .mini-seal{box-shadow:0 0 15px #d9deed18}.letter-shadow .mini-envelope{background:linear-gradient(130deg,#101c32,#0c1529)}.letter-petals .mini-envelope{background:radial-gradient(ellipse at 90% 90%,#b9a75c20,transparent 70%),#222b3d}.letter-ruby .mini-seal{border-radius:3px;outline:1px solid #dc8b9c44;outline-offset:3px}.letter-music .mini-envelope:after{content:"";position:absolute;left:9px;right:9px;bottom:14px;height:8px;border-top:1px solid #95d5cd22;border-bottom:1px solid #95d5cd22;border-radius:50%}.letter-mountain .mini-envelope{background:linear-gradient(145deg,#33303d,#1b2336)}.final-letter-status{margin:28px 0 0;font-family:Cormorant Garamond,Georgia,serif;font-size:19px;font-style:italic;color:#bcb1c5;line-height:1.5}.final-letter-reveal{margin:44px auto 0;padding:0 15px 22px;max-width:660px;animation:final-reveal 1.7s var(--ease) both}.love-constellation{width:min(300px,90%);height:85px;color:#dfc393;filter:drop-shadow(0 0 6px #b7b9df55);margin-bottom:12px}.final-letter-reveal .eyebrow{font-size:12px;letter-spacing:.18em;margin-bottom:15px}.final-letter-reveal h3{font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(35px,4vw,51px);font-weight:400;line-height:1.1;color:#eddbbd;margin:0}.final-letter-reveal>p{font-family:Cormorant Garamond,Georgia,serif;color:#bcc0d2;font-size:21px}.husband-envelope{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;width:min(310px,90%);height:187px;margin:35px auto 0;background:linear-gradient(130deg,#142849,#101c35 70%);border:1px solid #c4b08199;border-radius:2px;box-shadow:0 15px 40px #02081760,0 0 55px #b6a1d61a;color:#e4cea8;transition:transform .5s,box-shadow .5s;overflow:hidden}.husband-envelope:before{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border:1px solid #c6cbd640}.husband-envelope-flap{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(160deg,#384663aa,#15253c);clip-path:polygon(0 0,100% 0,50% 58%);border-top:1px solid #d0c1a6}.husband-envelope>.court-emblem{position:relative;width:66px;height:66px;margin-top:16px;color:#e4cea8}.husband-envelope>span:last-child{position:relative;font-family:Cormorant Garamond,Georgia,serif;font-size:19px;font-style:italic;margin-top:5px}.husband-envelope:hover{transform:translateY(-4px);box-shadow:0 20px 40px #02081760,0 0 60px #b6a1d633}.letters-entry{margin-top:16px}.letters-entry .text-link{font-size:14px;color:#c5b6d9}.letter-dialog{--letter-color:#c4abde;border:0;padding:20px;margin:auto;background:transparent;color:#eeebef;width:min(760px,100%);max-width:100%;max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#756d85 #111a2c;animation:dialog-arrive .55s var(--ease) both;color-scheme:dark}.letter-dialog::backdrop{background:#030817d9;animation:sky-reveal .5s ease both}.open-letter{isolation:isolate;position:relative;padding:45px clamp(24px,6vw,65px) 25px;text-align:center;background:radial-gradient(ellipse at 50% 0,color-mix(in srgb,var(--letter-color) 10%,transparent),transparent 65%),linear-gradient(140deg,#1b253bfa,#101a2cfc);border:1px solid color-mix(in srgb,var(--letter-color) 45%,transparent);box-shadow:0 20px 80px #0007;overflow:hidden}.open-letter:before{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border:1px solid #d2c0d01a;pointer-events:none}.letter-close{position:absolute;z-index:3;right:13px;top:13px;display:grid;place-items:center;width:44px;height:44px;border:1px solid #d3c6db25;background:#0d1729aa;border-radius:50%;color:#ddd2df;transition:background .3s}.letter-close:hover{background:#3b354a}.opening-seal{position:relative;display:grid;place-items:center;width:70px;height:70px;margin:0 auto 26px;border:1px solid color-mix(in srgb,var(--letter-color) 50%,transparent);border-radius:50%;color:var(--letter-color);box-shadow:0 0 35px color-mix(in srgb,var(--letter-color) 15%,transparent);animation:seal-unfold .9s var(--ease) both}.opening-seal>svg{width:34px;height:34px;color:inherit}.opening-seal>.court-emblem{width:55px;height:55px}.open-letter>.eyebrow{position:relative;font-size:12px;letter-spacing:.2em;line-height:1.8;margin:0 0 15px;color:#c7bccd}.open-letter>h2{position:relative;font-size:clamp(41px,6vw,65px);color:#f0e4dc;line-height:1.04}.letter-subtitle{font-size:13px;letter-spacing:.08em;color:var(--letter-color);margin:15px 0 0;line-height:1.8}.open-letter .fine-rule{margin:28px auto}.letter-message{position:relative;min-height:140px}.letter-message p{font-family:Cormorant Garamond,Georgia,serif;text-align:left;font-size:clamp(22px,2.8vw,26px);line-height:1.55;margin:0 0 19px;color:#e4dfe8;animation:content-reveal .8s var(--ease) both}.letter-signoff{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--letter-color);margin:25px 0 12px;font-family:Cormorant Garamond,Georgia,serif;font-size:22px;font-style:italic;opacity:0;transition:opacity .6s}.message-revealed .letter-signoff{opacity:1}.return-to-letters{position:relative;margin-top:8px;font-size:13px}.love-letter-dialog{width:min(790px,100%)}.love-letter-dialog .open-letter{padding-top:48px;background:radial-gradient(ellipse at 50% 10%,#7c6b9e24,transparent 65%),linear-gradient(140deg,#1c2941f5,#0e192df5)}.love-letter-dialog .open-letter>h2{font-size:clamp(37px,5.7vw,59px);color:#e8d4b4}.love-letter-dialog .letter-message p{font-size:clamp(22px,2.7vw,25px)}.love-letter-dialog .letter-message p:last-child{color:#e5ccaa;font-style:italic;font-size:30px}.dialog-closing{animation:dialog-depart .28s ease both}.dialog-closing::backdrop{animation:backdrop-depart .28s ease both}.character-magic{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none;color:var(--letter-color)}.character-magic span{--x:calc(8% + var(--i) * 10.5%);position:absolute;left:var(--x);top:110px;width:3px;height:3px;border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor;opacity:0;animation:seal-magic 2s calc(var(--i) * .06s) ease-out both}.magic-paint span{width:40px;height:5px;border-radius:80% 10%;box-shadow:0 0 16px #c2b5e688;transform:rotate(-25deg);background:linear-gradient(90deg,#a2cde966,#cfaccb99);animation-name:brush-magic}.magic-crimson span{width:3px;height:13px;background:#e5a09a;animation-duration:1.3s}.magic-flame span{width:11px;height:36px;border-radius:80% 15% 80% 25%;background:linear-gradient(0deg,#e4e8f355,transparent);box-shadow:0 0 15px #d9deed33;animation-name:flame-magic}.magic-shadow span{width:100px;height:75px;border-radius:50%;background:radial-gradient(ellipse,#42639166,transparent 70%);box-shadow:none;animation-name:shadow-magic;animation-duration:1.8s}.magic-petals span{width:10px;height:17px;border-radius:90% 10% 80% 20%;background:#dbc79f;animation-name:petal-magic;box-shadow:0 0 15px #e1c99d33}.magic-gold span{width:5px;height:5px;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);box-shadow:none}.magic-ruby span{width:35px;height:35px;border:1px solid #dc8b9c;background:none;border-radius:0;animation-name:rune-magic;box-shadow:0 0 18px #dc8b9c15}.magic-music span{width:55px;height:12px;background:none;box-shadow:none;border-top:1px solid #95d5cd;border-bottom:1px solid #95d5cd;border-radius:50%;animation-name:brush-magic}.magic-mountain span{background:none;box-shadow:none;width:22px;height:28px;animation-name:petal-magic}.magic-mountain svg{width:100%;height:100%}@keyframes seal-unfold{0%{opacity:.3;transform:translateY(15px) scale(.85)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes seal-magic{0%{opacity:0;transform:translateY(10px) scale(.5)}25%{opacity:.6}to{opacity:0;transform:translateY(-100px) scale(.7)}}@keyframes brush-magic{0%{opacity:0;transform:translate(-20px,20px) rotate(-20deg)}30%{opacity:.4}to{opacity:0;transform:translate(25px,-75px) rotate(-10deg)}}@keyframes flame-magic{0%{opacity:0;transform:translateY(30px) scaleY(.5)}30%{opacity:.5}to{opacity:0;transform:translateY(-95px) scaleY(1.3)}}@keyframes shadow-magic{0%{opacity:.8;transform:translate(-25px,30px) scale(.6)}to{opacity:0;transform:translate(10px,-100px) scale(1.8)}}@keyframes petal-magic{0%{opacity:0;transform:translateY(-60px) rotate(-15deg)}30%{opacity:.45}to{opacity:0;transform:translate(25px,100px) rotate(35deg)}}@keyframes rune-magic{0%{opacity:0;transform:translateY(0) rotate(45deg) scale(.4)}30%{opacity:.3}to{opacity:0;transform:translateY(-70px) rotate(45deg) scale(1.5)}}@keyframes final-reveal{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes dialog-arrive{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dialog-depart{to{opacity:0;transform:translateY(8px)}}@keyframes backdrop-depart{to{opacity:0}}@media(min-width:701px)and (max-width:1050px){.letters-collection{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.court-letter:last-child{grid-column:2}.sender-title{font-size:12px}.mini-envelope{max-width:190px}}@media(max-width:700px){.chapter-3 .scene-container{padding:36px 18px 40px}.scene-letters>h2{font-size:clamp(43px,10vw,65px)}.letters-introduction{font-size:20px}.letters-desk{padding:20px 14px}.letters-collection{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 17px}.mini-envelope{max-width:190px}.sender-name{font-size:24px}.sender-title{font-size:12px;min-height:28px;max-width:150px}.letter-status{font-size:12px}.final-letter-status{font-size:18px;padding:0 8px}.letter-dialog{padding:9px;max-height:calc(100dvh - 16px)}.open-letter{padding:50px 24px 22px}.open-letter>.eyebrow{font-size:11px;letter-spacing:.12em}.letter-message p{font-size:23px;line-height:1.5}.letter-close{right:13px;top:13px}.opening-seal{width:59px;height:59px;margin-bottom:23px}.final-letter-reveal{padding:0 0 20px}.love-letter-dialog .open-letter{padding-top:52px}.letter-dialog .character-magic span{animation-duration:1.7s}}@media(prefers-reduced-motion:reduce){.character-magic{display:none}.letter-dialog,.letter-dialog::backdrop,.dialog-closing,.dialog-closing::backdrop{animation:none}.court-letter:hover,.husband-envelope:hover{transform:none}.letter-signoff{transition:none}}.opening-seal:before{content:"";position:absolute;z-index:-1;top:-7px;right:-45px;bottom:-7px;left:-45px;border:1px solid color-mix(in srgb,var(--letter-color) 50%,transparent);background:#1b2840;border-radius:2px;animation:opening-envelope-fade .8s ease both}.opening-seal:after{content:"";position:absolute;z-index:-1;top:-7px;right:-45px;bottom:-7px;left:-45px;background:linear-gradient(#41455c,#25314a);clip-path:polygon(0 0,100% 0,50% 66%);transform-origin:top;animation:opening-envelope-flap .8s var(--ease) both}.love-letter-dialog .opening-seal:before{background:#142849;border-color:#dfcba2}.letter-dialog:has(.magic-crimson) .opening-seal{animation-timing-function:cubic-bezier(.16,1.15,.4,1)}@keyframes opening-envelope-flap{0%{opacity:1;transform:perspective(500px) rotateX(0)}75%{opacity:.6;transform:perspective(500px) rotateX(165deg)}to{opacity:0;transform:perspective(500px) rotateX(165deg)}}@keyframes opening-envelope-fade{0%,40%{opacity:1}to{opacity:0}}.character-portrait{position:relative;display:inline-block;isolation:isolate;border:1px solid color-mix(in srgb,var(--letter-color) 65%,transparent);background:#152139;box-shadow:0 5px 18px #050a1780,0 0 22px color-mix(in srgb,var(--letter-color) 12%,transparent);overflow:hidden;flex-shrink:0}.character-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%}.character-portrait:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px solid #e9d7b82a;border-radius:inherit;pointer-events:none}.portrait-miniature{position:absolute;z-index:1;top:50%;left:50%;width:70px;height:70px;transform:translate(-50%,-50%);border-radius:50%}.court-letter .mini-seal{position:absolute;z-index:2;bottom:-7px;right:7px;width:27px;height:27px;transform:none;background:#1b2238}.court-letter .mini-seal>svg{width:15px;height:15px}.court-letter .mini-seal>.court-emblem{width:23px;height:23px}.portrait-portrait{width:152px;height:176px;border-radius:50% 50% 4px 4px;margin:0 auto 23px;animation:content-reveal .9s var(--ease) both}.letter-dialog:not(.love-letter-dialog) .opening-seal{width:34px;height:34px;margin-bottom:18px}.letter-dialog:not(.love-letter-dialog) .opening-seal>svg{width:20px;height:20px}.letter-dialog:not(.love-letter-dialog) .opening-seal>.court-emblem{width:29px;height:29px}.letter-dialog:not(.love-letter-dialog) .open-letter{padding-top:35px}.mini-envelope{min-height:85px}@media(max-width:700px){.portrait-portrait{width:120px;height:142px;margin-bottom:20px}.portrait-miniature{width:62px;height:62px}.letter-dialog:not(.love-letter-dialog) .open-letter{padding-top:29px}.letter-dialog:not(.love-letter-dialog) .opening-seal{margin-bottom:17px}}.husband-envelope .portrait-miniature{position:relative;top:auto;left:auto;transform:none;width:78px;height:78px;margin-top:12px;--letter-color:#e3c897}.husband-envelope>.court-emblem{width:35px;height:30px;margin-top:3px}.love-letter-dialog .portrait-portrait{--letter-color:#e3c897;width:160px;height:185px}.love-letter-dialog .opening-seal{width:40px;height:40px;margin-bottom:20px}.love-letter-dialog .opening-seal>.court-emblem{width:34px;height:34px}@media(max-width:700px){.love-letter-dialog .portrait-portrait{width:126px;height:148px}}.sender-title{line-height:1.6;min-height:3.2em;overflow-wrap:anywhere}.letter-status{line-height:1.5;min-height:3em;flex-wrap:wrap;justify-content:center;text-align:center}.discovery-progress{line-height:1.6}.letter-subtitle{line-height:1.7}.open-letter>.eyebrow,.final-letter-reveal .eyebrow{letter-spacing:.12em}@media(max-width:700px){.sender-title{min-height:4.8em}.letters-collection{row-gap:26px}}.birthday-portrait{--letter-color:#d6c1a0;display:flex;flex-direction:column;align-items:center;margin:0 auto 17px;position:relative}.birthday-portrait .portrait-portrait{width:160px;height:182px;margin-bottom:12px;border-radius:50% 50% 5px 5px;box-shadow:0 9px 28px #03091866,0 0 32px #bea7da15}.birthday-portrait figcaption{font-family:Cormorant Garamond,Georgia,serif;color:#e6d0aa;font-size:24px;letter-spacing:.06em;line-height:1.3}.birthday-portrait+.paper-emblem{height:32px;width:42px;margin-bottom:13px}@media(max-width:700px){.birthday-portrait .portrait-portrait{width:132px;height:152px}.birthday-portrait figcaption{font-size:23px}.birthday-portrait{margin-bottom:14px}}.friends-letters{margin:38px auto 0;padding:28px 20px 20px;max-width:620px;border-top:1px solid #d1bb8d38;background:radial-gradient(ellipse at 50% 0,#8e709d12,transparent 75%)}.friends-letters>h3{font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(29px,4vw,39px);font-weight:400;color:#e6d0ae;line-height:1.2;margin:0 0 20px}.friends-collection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;max-width:480px;margin:auto}.friends-collection .sender-title{min-height:0;margin-bottom:4px}.placeholder-badge{color:#c2b3ca;font-size:12px;line-height:1.5;margin-top:8px}.placeholder-note{font-family:Manrope,Segoe UI,Arial,sans-serif;font-size:13px;line-height:1.6;color:#d7c3a5;padding:10px 14px;border:1px solid #cab48d33;background:#c4a5d40a;margin:0 0 22px}.friends-collection .court-letter:last-child{grid-column:auto}.discovery-marks{flex-wrap:wrap;justify-content:center;max-width:280px}@media(max-width:700px){.friends-letters{padding:25px 8px 12px}.friends-collection{gap:18px}.friends-collection .sender-title{min-height:3.2em}.placeholder-badge{font-size:12px}}@media(min-width:701px){.scene.scene-letters{max-width:1320px}.letters-desk{padding:38px 30px 30px}.letters-collection{gap:34px 26px}.court-letter{padding:20px 4px 14px}.mini-envelope{max-width:220px;min-height:120px}.court-letter .portrait-miniature{width:104px;height:104px}.court-letter .mini-seal{width:33px;height:33px}.court-letter .mini-seal>svg{width:20px;height:20px}.sender-name{font-size:32px;margin-top:22px}.sender-title{font-size:15px;line-height:1.65;min-height:3.3em}.letter-status{font-size:14px;letter-spacing:.03em;min-height:2.8em}.letters-introduction{font-size:26px}.discovery-progress{font-size:15px}.scene-letters>.eyebrow{font-size:14px}.final-letter-status{font-size:24px}.friends-letters{max-width:700px}.friends-collection{max-width:570px;gap:34px}.placeholder-badge{font-size:14px}.letter-dialog{width:min(840px,100%)}.letter-message p,.love-letter-dialog .letter-message p{font-size:28px;line-height:1.6}.letter-subtitle,.return-to-letters,.placeholder-note{font-size:15px}}@media(min-width:1051px)and (max-width:1200px){.letters-collection{gap:28px 18px}.letters-desk{padding-left:22px;padding-right:22px}.court-letter .portrait-miniature{width:94px;height:94px}.sender-name{font-size:30px}}.letter-message p{white-space:pre-wrap}:root{font-family:Manrope,Segoe UI,Arial,sans-serif;color:#eeeaf0;background:#080e20;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color-scheme:dark;--gold:#d2b98c;--ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}body{margin:0;min-width:320px}button{font:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible{outline:2px solid #e4c89a;outline-offset:7px}h1:focus,h2:focus{outline:none}button{-webkit-tap-highlight-color:transparent}.app{position:relative;isolation:isolate;min-height:100svh;display:flex;flex-direction:column;overflow:hidden;background:#080e20}.sky{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none;--pan-x:0px;--pan-y:0px}.sky-wash{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 72% 15%,#47476940,transparent 40%),radial-gradient(ellipse at 20% 35%,#41395f50,transparent 50%),linear-gradient(#080e20,#18243e 65%,#0a1326)}.starfield,.landscape{position:absolute;top:-2%;right:-2%;bottom:-2%;left:-2%;width:104%;height:104%}.starfield{opacity:1;animation:sky-reveal 4s ease both}.landscape{min-height:760px;top:auto;bottom:-2%;height:100%;transition:opacity 1.8s}.parallax-stars{transform:translate(calc(var(--pan-x) * .25),calc(var(--pan-y) * .25))}.parallax-distant{transform:translate(calc(var(--pan-x) * .35),calc(var(--pan-y) * .3))}.parallax-near{transform:translate(calc(var(--pan-x) * .6),calc(var(--pan-y) * .45))}.parallax-city{transform:translate(calc(var(--pan-x) * .8),calc(var(--pan-y) * .6))}.parallax-foreground{transform:translate(var(--pan-x),var(--pan-y))}.city-windows{animation:lights-reveal 5s ease both}.twinkling{animation:twinkle 6s ease-in-out infinite alternate}.river-shimmer{animation:shimmer 9s ease-in-out infinite alternate}.fog{animation:fog-drift 24s ease-in-out infinite alternate}.scene-shade{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 35%,#080e2080,transparent 60%);transition:background 1.5s,opacity 1.5s;opacity:.65}.chapter-1 .scene-shade,.chapter-2 .scene-shade{background:#080e20;opacity:.48}.chapter-2 .scene-shade{opacity:.65}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(#050a1660,transparent 20%,transparent 75%,#050a16a0),radial-gradient(ellipse,transparent 35%,#04091790);box-shadow:inset 0 0 160px #03071255}.topbar,.footer{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:32px clamp(24px,5vw,80px);gap:16px}.topbar:after{content:"";position:absolute;left:5vw;right:5vw;bottom:0;height:1px;background:linear-gradient(90deg,#c1b7d225,transparent 60%,#c1b7d215)}.brand,.chapter,.eyebrow,.whisper{font-size:13px;letter-spacing:.27em}.brand{color:#d7c6a7}.chapter{color:#a6acc0;font-variant-numeric:tabular-nums;letter-spacing:.2em}.scene-container{position:relative;flex:1;display:grid;place-items:center;padding:46px 24px 125px;opacity:1;transition:opacity .55s ease,transform .55s ease}.scene-container.scene-leaving{opacity:0;transform:translateY(-10px);pointer-events:none}.scene-frame{width:100%;display:grid;place-items:center;animation:scene-reveal 1.3s var(--ease) both}.scene{width:100%;max-width:850px;text-align:center}.scene-intro{padding-bottom:3vh}.eyebrow{color:#bdb4c7;font-size:12px;line-height:2;letter-spacing:.3em;margin-bottom:26px}.court-emblem{width:72px;height:62px;color:var(--gold)}.intro-emblem{width:86px;height:76px;margin-bottom:22px;opacity:.85}.scene-intro>*{animation:content-reveal 1.5s var(--ease) both}.scene-intro>:nth-child(2){animation-delay:.2s}.scene-intro>:nth-child(3){animation-delay:.4s}.scene-intro>:nth-child(n+4){animation-delay:.65s}h1,h2{font-family:Cormorant Garamond,Georgia,Times New Roman,serif;font-weight:400;letter-spacing:-.035em;line-height:1.02;margin:0;color:#f4f0ed;text-shadow:0 4px 35px #03091680}h1{font-size:clamp(66px,7.9vw,112px)}h2{font-size:clamp(43px,5.6vw,76px)}h1 em,h2 em{font-weight:400;color:#d8c09d}.fine-rule{width:125px;height:1px;margin:27px auto;background:linear-gradient(90deg,transparent,#c5ae8360,transparent);position:relative}.fine-rule:after{content:"✧";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#d1bb94;font-size:13px;background:#121b30;padding:0 10px}.lead{font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(21px,2vw,27px);line-height:1.5;color:#cfceda;margin:0 auto 29px;max-width:530px}.lead.small{margin-top:23px}.primary{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:50px;padding:16px 26px;border:1px solid #c9ad7870;border-radius:2px;background:linear-gradient(115deg,#bfa47520,#e7d2a60c);color:#ecdbc0;font-size:14px;font-weight:500;letter-spacing:.09em;box-shadow:inset 0 0 20px #dec79604,0 0 28px #cdb78b08;transition:background .4s,border-color .4s,box-shadow .4s,transform .4s}.primary:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border:1px solid #d5bb8012;pointer-events:none}.primary:hover:enabled{background:#d6ba8c22;border-color:#dcc496;box-shadow:0 0 32px #d8c29b1c;transform:translateY(-2px)}.primary svg,.text-link svg{transition:transform .4s}.primary:hover:enabled svg,.text-link:hover:enabled svg{transform:translate(3px)}.primary:disabled{opacity:.6}.whisper{margin-top:22px;font-size:12px;letter-spacing:.12em;color:#a4a5b8}.footer{padding-top:20px;padding-bottom:25px;min-height:68px}.nav-button{min-height:40px;display:flex;align-items:center;gap:9px;background:none;border:0;color:#b7b7c7;font-size:13px;letter-spacing:.07em;padding:8px 0;transition:color .3s}.nav-button:hover:enabled{color:#ecd5af}.nav-button:disabled{opacity:.3}.progress{display:flex;gap:13px;align-items:center}.progress span{width:5px;height:5px;transform:rotate(45deg);border:1px solid #b2a9c45c;transition:background .6s,box-shadow .6s}.progress span.active{background:#d9bf94;border-color:#d9bf94;box-shadow:0 0 12px #d9bf9460}.scene-letter h2{font-size:clamp(42px,5.2vw,69px)}.scene-letter{max-width:800px}.envelope{position:relative;display:block;margin:54px auto 24px;width:min(300px,76vw);height:183px;border:1px solid #bba68b60;border-radius:3px;background:linear-gradient(135deg,#283047,#171e33);filter:drop-shadow(0 20px 25px #0006);perspective:900px;transition:transform .7s var(--ease)}.envelope:hover:enabled{transform:translateY(-6px)}.envelope-body{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:linear-gradient(145deg,#30364e,#1d253b);clip-path:polygon(0 0,50% 57%,100% 0,100% 100%,0 100%)}.envelope-body:after{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border:1px solid #d3bb8a32}.envelope-flap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;background:linear-gradient(160deg,#42445b,#282d45);clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;backface-visibility:hidden;transition:transform 1.15s var(--ease),opacity .8s}.envelope-letter{position:absolute;top:12px;right:17px;bottom:12px;left:17px;background:linear-gradient(140deg,#e1d6c4,#c6b8a3);border:1px solid #e4d6ba;display:grid;place-items:center;z-index:1;transition:transform 1.3s var(--ease) .25s}.envelope-letter .court-emblem{color:#716781}.wax-seal{position:absolute;z-index:5;top:54%;left:50%;transform:translate(-50%,-50%);display:grid;place-items:center;background:radial-gradient(circle at 35% 25%,#8b7792,#51425f 65%,#332e47);color:#e3c99e;width:57px;height:57px;border-radius:50%;border:1px solid #b1979870;box-shadow:0 4px 10px #0005,inset 0 0 0 4px #b5a0a51a;transition:opacity .45s,transform .8s}.wax-seal .court-emblem{width:37px;height:37px}.envelope-light{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:-1;background:radial-gradient(ellipse,#b3a0dc35,transparent 60%);opacity:0;transition:opacity .8s}.envelope-opening .envelope-flap{transform:rotateX(180deg);opacity:.5}.envelope-opening .wax-seal{opacity:0;transform:translate(-50%,-70%) scale(.8)}.envelope-opening .envelope-letter{transform:translateY(-65px)}.envelope-opening .envelope-light{opacity:1}.text-link{background:transparent;border:0;color:#d6bf9a;display:inline-flex;align-items:center;gap:12px;font-size:14px;letter-spacing:.07em;padding:14px;min-height:44px}.text-link:disabled{opacity:.5}.scene-wish{max-width:650px}.chapter-2 .scene-container{padding-top:25px;padding-bottom:35px}.scene-wish .eyebrow{margin-bottom:21px}.letter-paper{position:relative;padding:30px clamp(23px,4vw,52px) 35px;background:linear-gradient(140deg,#1d273ddd,#121b30ee);color:#dfdce5;border:1px solid #b7a1bd40;box-shadow:0 20px 80px #02051260,0 0 70px #9380b60a;transition:box-shadow 1.5s,border-color 1.5s}.letter-paper:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid #c2acc018;pointer-events:none}.letter-paper:after{content:"✧";position:absolute;bottom:-9px;left:calc(50% - 9px);color:#ceb78f;background:#172137;padding:0 4px;font-size:17px}.paper-emblem{height:49px;width:61px;margin-bottom:12px}.letter-paper h2{font-size:clamp(37px,4.5vw,57px);line-height:1.07}.letter-paper .fine-rule{margin:23px auto}.letter-paper p{font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(20px,2vw,22px);line-height:1.48;margin:0 auto 15px;max-width:535px;animation:content-reveal 1.4s var(--ease) both}.letter-paper p:nth-of-type(2){animation-delay:.13s}.letter-paper p:nth-of-type(3){animation-delay:.26s}.letter-paper p:nth-of-type(4){animation-delay:.39s;color:#e5ceaa;font-style:italic}.signature{margin-top:23px;font-family:Cormorant Garamond,Georgia,serif;font-size:24px;font-style:italic;color:#c2adc5;display:flex;align-items:center;justify-content:center;gap:10px}.signature svg{width:13px;opacity:.7}.wish-button{margin-top:28px}.is-blessed .letter-paper{box-shadow:0 0 75px #b6a0dc30,0 20px 80px #02051260;border-color:#d7c19a80}.celebration{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10;overflow:hidden}.celebration span{position:absolute;bottom:5%;color:#e8d3ad;font-size:14px;opacity:0;animation:blessing 3.2s ease-in-out forwards;text-shadow:0 0 12px #e3d1ff90}.celebration:after{content:"";position:absolute;left:50%;top:48%;width:min(65vw,650px);aspect-ratio:1;border:1px solid #dfc9a64a;border-radius:50%;animation:halo 3.4s ease-out both;box-shadow:0 0 40px #b9a1dd0d,inset 0 0 40px #b9a1dd0d}@keyframes scene-reveal{0%{opacity:0;transform:translateY(13px)}to{opacity:1;transform:translateY(0)}}@keyframes content-reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes sky-reveal{0%{opacity:0}to{opacity:1}}@keyframes lights-reveal{0%{opacity:0}}@keyframes twinkle{0%{opacity:.2}to{opacity:.8}}@keyframes shimmer{0%{opacity:.13}to{opacity:.32}}@keyframes fog-drift{0%{transform:translate(-20px)}to{transform:translate(20px)}}@keyframes blessing{0%{opacity:0;transform:translate(0) scale(.5)}20%{opacity:.7}80%{opacity:.45}to{opacity:0;transform:translate(var(--drift),-75vh) scale(.7)}}@keyframes halo{0%{opacity:0;transform:translate(-50%,-50%) scale(.65)}25%{opacity:.6}to{opacity:0;transform:translate(-50%,-50%) scale(1.6)}}@media(hover:none)and (prefers-reduced-motion:no-preference){.parallax-distant{animation:mobile-drift 27s ease-in-out infinite alternate}.parallax-city{animation:mobile-drift 21s ease-in-out -7s infinite alternate}.parallax-foreground{animation:mobile-drift 18s ease-in-out -5s infinite alternate}}@keyframes mobile-drift{0%{transform:translate(-4px)}to{transform:translate(4px)}}@media(min-width:1500px){.scene-container{padding-bottom:160px}.landscape{height:108%}}@media(max-width:700px){.topbar{padding:24px}.brand{font-size:12px;letter-spacing:.18em}.chapter{font-size:12px}.scene-container{padding:42px 23px 125px}.scene-intro{padding:0}.eyebrow{font-size:12px;letter-spacing:.17em;margin-bottom:24px}.intro-emblem{width:70px;height:60px;margin-bottom:20px}h1{font-size:clamp(61px,12.5vw,88px)}.lead{font-size:22px;max-width:390px}.desktop-break{display:none}.landscape{width:180%;left:-40%;min-height:700px}.starfield{width:140%;left:-20%}.footer{padding:18px 24px}.scene-letter h2{font-size:clamp(39px,8vw,57px)}.envelope{margin-top:45px}.scene-wish .eyebrow{line-height:1.7}.letter-paper{padding:23px 23px 30px}.letter-paper p{font-size:20px;line-height:1.45}.signature{font-size:22px}.chapter-2 .scene-container{padding:30px 18px}.whisper{font-size:12px;line-height:1.7}.scene-wish .wish-button{font-size:13px}.scene-letter .lead{font-size:21px}}@media(max-height:750px)and (min-width:701px){.scene-container{padding:25px 24px 70px}.intro-emblem{height:50px;margin-bottom:14px}h1{font-size:85px}.eyebrow{margin-bottom:18px}.scene-intro .fine-rule{margin:20px auto}.chapter-2 .scene-container{padding-top:20px}.topbar{padding-top:24px;padding-bottom:24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.scene-container.scene-leaving{transform:none}.sky svg,.sky g{transform:none!important}.celebration{display:none}.city-windows{opacity:.7}.starfield,.scene-frame,.scene-intro>*{opacity:1}}.scene-wish{position:relative}.floating-starlight{position:absolute;top:-30px;right:-25px;bottom:-30px;left:-25px;pointer-events:none}.floating-starlight span{position:absolute;width:2px;height:2px;background:#ead5b4;border-radius:50%;box-shadow:0 0 8px #c9b5f3;opacity:.45;animation:starlight-float 8s ease-in-out infinite alternate}@keyframes starlight-float{0%{opacity:.1;transform:translateY(12px)}to{opacity:.6;transform:translateY(-18px)}}.birthday-brand{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;min-width:0;line-height:1.8}.birthday-date{white-space:nowrap}.birthday-date>span{margin-right:8px}.topbar>.chapter{flex-shrink:0}.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:20px}.topbar>.brand{justify-self:start}.topbar>.chapter{justify-self:end}.birthday-brand{justify-content:center;text-align:center;color:#e4cfaa;font-size:13px;letter-spacing:.13em;max-width:580px}@media(max-width:1100px){.topbar{grid-template-columns:minmax(0,1fr) auto;gap:18px}.topbar>.brand{grid-column:1;grid-row:1}.topbar>.chapter{grid-column:2;grid-row:1}.birthday-brand{grid-column:1 / -1;grid-row:2;justify-self:center;max-width:100%;font-size:13px;gap:4px 12px}}
