:root{color-scheme:dark;--gold:#e9cd9d;--ink:#f5ecdf;--muted:#b4a8bd;--bg:#151025}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg)}body{height:100svh;overflow:hidden;font:14px/1.9 'Microsoft YaHei','PingFang SC',sans-serif;color:var(--ink)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}a{color:inherit;text-decoration:none}.ambient{position:fixed;inset:0;background:radial-gradient(ellipse at 80% 30%,#5b366655,transparent 60%),radial-gradient(ellipse at 20% 100%,#29435850,transparent 50%);pointer-events:none}#particles{position:fixed;inset:0;pointer-events:none;z-index:5;width:100%;height:100%}header{height:86px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;position:absolute;top:0;left:0;right:0;z-index:10;border-bottom:1px solid #dbc49b16}header a{color:var(--gold);display:flex;align-items:center;gap:12px;font-size:25px}header a span{font-size:12px;letter-spacing:3px}.dedication{font-size:9px;letter-spacing:3px;color:#b5a7bb}header button{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1px;color:var(--gold);background:none;border:1px solid #e9cd9d40;padding:8px 15px}#music-icon{font-size:18px}#music.playing #music-icon{animation:pulse 2s infinite}main{height:100svh;position:relative}.scene{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity 1.1s,visibility 1.1s;overflow:hidden;padding:110px 9% 170px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:7%}.scene.active{opacity:1;visibility:visible;z-index:2}.scene-copy{position:relative;z-index:3}.date{font:11px/2 sans-serif;letter-spacing:4px;color:var(--gold);margin:0 0 24px}h1{font-family:'Songti SC',SimSun,serif;font-weight:400;font-size:clamp(36px,4.3vw,65px);line-height:1.55;letter-spacing:3px;margin:0 0 25px}h1 span{color:var(--gold)}.body-copy{font-size:13px;line-height:2.3;color:#d6ccdb;letter-spacing:1px}.scene-copy>small{display:block;font-size:9px;color:#a49bab;letter-spacing:1px;margin-top:25px}.scene.active .scene-copy{animation:rise 1.1s both}.scene-art{position:relative;display:flex;justify-content:center;align-items:center;max-height:100%;min-width:0;z-index:3}.snapshot{position:relative;display:block;padding:10px;border:1px solid #ecd4ae44;background:#efe6d808;box-shadow:0 20px 80px #0005;transform:rotate(2deg);width:min(100%,310px);color:var(--muted)}.photo-crop{position:relative;overflow:hidden;width:100%;background:#211b2a}.photo-crop img{position:absolute;left:0;max-width:none;height:auto;display:block}.photo-zoom{font-size:8px;display:block;text-align:center;padding:8px 0 0;letter-spacing:2px}.scene.active .snapshot{animation:photo-in 1.3s both}.paired{display:flex;gap:16px;width:100%;align-items:center}.paired .snapshot{width:50%;transform:rotate(-3deg)}.paired .snapshot:nth-child(2){transform:rotate(4deg);margin-top:50px}.paired .photo-zoom{font-size:7px;letter-spacing:0}.paired-scene{grid-template-columns:.85fr 1.15fr}.anniversary .snapshot{width:min(100%,450px)}.gift{display:flex}.gift .scene-copy{width:48%;text-shadow:0 2px 25px #0b0619}.gift-bg{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.03);z-index:0}.gift-bg:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#100b22ee 0%,#140d28c4 25%,#170f2655 55%,#1b10210a 80%),linear-gradient(0deg,#151025c0,transparent 30%)}.gift.active .gift-bg{animation:slow-zoom 12s linear both}.gift-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 75% 60%,#e1a4fc18,transparent 45%);mix-blend-mode:screen;animation:pulse 4s infinite}.light-sweep{position:absolute;top:0;bottom:0;width:35%;background:linear-gradient(110deg,transparent,#ffebc008,transparent);transform:skewX(-20deg);left:-50%;pointer-events:none}.scene.active .light-sweep{animation:sweep 8s ease-in-out infinite}.begin-art{position:relative;width:min(34vw,400px);height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center}.heart-mark{font:140px/1 Georgia,serif;color:#edc3d7;text-shadow:0 0 65px #d89cd488;animation:float 5s ease-in-out infinite}.begin-art>span{font-size:10px;letter-spacing:5px;color:#d9c1cb;margin-top:20px}.begin-art>strong{font:italic 44px/1.8 Georgia,serif;color:var(--gold);font-weight:400}.orbit{position:absolute;border:1px solid #e9cd9d40;border-radius:50%;inset:20px}.orbit.one{transform:rotate(-30deg) scaleY(.6)}.orbit.two{transform:rotate(45deg) scaleY(.5)}.orbit:after{content:'✦';position:absolute;top:10%;left:10%;color:var(--gold);text-shadow:0 0 20px gold}.end-art{text-align:center}.end-art>span{font-size:9px;letter-spacing:5px;color:#d3bac8}.end-art strong{display:block;font:italic clamp(130px,20vw,280px)/1.1 Georgia,serif;color:var(--gold);text-shadow:0 0 100px #e8b7aa33;font-weight:400}.end-art i{font-style:normal;font-size:35px;color:#fff1cc}.end-art p{font-family:SimSun,serif;font-size:18px;letter-spacing:5px;color:#e1c8d2}.end{background:radial-gradient(ellipse at 70% 50%,#8b566b30,transparent 65%)}.scene-count{position:absolute;left:5%;bottom:170px;z-index:7;display:flex;align-items:center;gap:12px;font:10px sans-serif;color:var(--muted)}.scene-count #index{color:var(--gold);font-size:15px}.scene-count i{width:38px;height:1px;background:#d5c2a255}.story-controls{position:absolute;right:5%;bottom:165px;z-index:7;display:flex;gap:13px}.story-controls button{border:1px solid #e9cd9d33;background:#22192a44;color:var(--gold);height:35px;width:40px;font-size:17px}footer{position:absolute;bottom:0;left:5%;right:5%;height:140px;z-index:8;border-top:1px solid #e9cd9d26;padding-top:15px}.footer-top{display:flex;justify-content:space-between;color:#d6c9d6;font-size:10px;letter-spacing:2px}.footer-top #track{color:#baabbe;font-size:9px;letter-spacing:1px}#timeline{display:flex;gap:10px;margin-top:15px}.tick{flex:1;min-width:0;border:0;background:none;color:#9b8fa4;padding:0;text-align:left}.tick>span{display:block;position:relative;height:2px;background:#e9cd9d26;overflow:hidden}.tick>span:after{content:'';display:block;height:100%;width:0;background:var(--gold)}.tick.active>span:after{width:var(--progress,0%)}.tick.done>span:after{width:100%;opacity:.5}.tick small{font-size:8px;display:block;margin-top:7px;letter-spacing:1px}.tick.active{color:var(--gold)}.footer-bottom{display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;color:#988b9f;margin-top:13px}.footer-bottom button{background:none;border:0;padding:0;color:#ad9db4;font-size:8px;letter-spacing:1px}#sound-gate{position:fixed;z-index:15;bottom:155px;left:50%;transform:translateX(-50%);background:#302238ed;border:1px solid #f1cfa06b;backdrop-filter:blur(15px);padding:11px 20px;display:flex;gap:20px;align-items:center;box-shadow:0 10px 40px #0005}#sound-gate[hidden]{display:none}#sound-gate>span{font-size:10px;color:#d8c7dc;white-space:nowrap}#sound-gate button{background:#e9cd9d;color:#251a2d;border:0;padding:6px 12px;font-size:10px;white-space:nowrap}dialog{max-width:min(600px,92vw);max-height:85svh;overflow:auto;background:#21192e;color:#e6d9e9;border:1px solid #e9cd9d66;padding:40px;box-shadow:0 0 100px #0009}dialog::backdrop{background:#090612db;backdrop-filter:blur(10px)}.close{position:absolute;top:8px;right:12px;background:none;border:0;color:var(--gold);font-size:27px}dialog h2{font-family:SimSun,serif;font-weight:400;font-size:24px;color:var(--gold)}dialog p{font-size:12px;line-height:2.2;color:#bfb1ca}#photo-dialog{width:min(650px,92vw);padding:35px 20px 20px}#large-photo .snapshot{transform:none;width:100%;max-width:500px;margin:auto;padding:0;border:0;box-shadow:none;opacity:1}#large-photo .photo-zoom{display:none}#large-caption{text-align:center;font-size:11px}.paused .gift-bg,.paused .heart-mark,.paused .light-sweep,.paused .gift-glow{animation-play-state:paused!important}@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes photo-in{from{opacity:0;filter:blur(5px)}to{opacity:1;filter:blur(0)}}@keyframes slow-zoom{from{transform:scale(1.02)}to{transform:scale(1.1)}}@keyframes float{50%{transform:translateY(-12px)}}@keyframes pulse{50%{opacity:.55}}@keyframes sweep{to{left:140%}}@media(max-width:700px){header{height:65px;padding:0 6%}header a{gap:7px;font-size:21px}header a span{font-size:10px;letter-spacing:1px}.dedication{display:none}header button{padding:5px 9px;font-size:8px;gap:7px}#music-icon{font-size:15px}.scene{padding:88px 7% 155px;display:flex;flex-direction:column;justify-content:center;gap:22px}.scene-copy{align-self:flex-start;width:100%}.date{font-size:9px;letter-spacing:2px;margin-bottom:10px}h1{font-size:31px;line-height:1.4;margin-bottom:12px;letter-spacing:1px}.body-copy{font-size:11px;line-height:1.9;letter-spacing:0;margin:8px 0}.scene-copy>small{font-size:7px;margin-top:9px;letter-spacing:0}.scene-art{width:100%;min-height:0;flex:1;max-height:44svh}.snapshot{height:100%;width:auto;max-width:68%;padding:6px;display:flex;flex-direction:column;max-height:36svh}.snapshot .photo-crop{height:100%;width:auto;max-width:100%;flex:1}.photo-crop img{width:100%}.scene-art>.snapshot{width:190px;height:auto}.photo-zoom{font-size:7px;letter-spacing:1px;padding-top:5px}.paired{justify-content:center;height:100%;gap:12px}.paired .snapshot{height:auto;max-width:45%;width:150px}.paired .photo-zoom{display:none}.paired .snapshot:nth-child(2){margin-top:20px}.anniversary .scene-art{max-height:30svh}.anniversary .snapshot{width:100%;max-width:100%}.gift{display:flex;justify-content:flex-start;padding-top:100px}.gift .scene-copy{width:100%}.gift h1{font-size:34px}.gift-bg{background-size:cover;background-position:65% center}.gift-bg:after{background:linear-gradient(180deg,#100b22df 0%,#140d28ac 27%,#170f260a 60%,#151025b0 95%),linear-gradient(90deg,#15102544,transparent)}.gift .body-copy{max-width:90%}.gift .scene-copy>small{margin-top:15px}.begin,.end{gap:5px;justify-content:center}.begin .scene-art,.end .scene-art{max-height:32svh;flex:0 1 300px}.begin-art{width:280px;height:270px}.heart-mark{font-size:90px}.begin-art>strong{font-size:29px}.begin-art>span{font-size:8px;letter-spacing:3px}.end-art strong{font-size:140px}.end-art>span{font-size:8px}.end-art i{font-size:22px}.end-art p{font-size:14px;margin:5px 0}.scene-count{left:7%;bottom:135px;font-size:8px;gap:8px}.scene-count #index{font-size:12px}.scene-count i{width:25px}.story-controls{right:7%;bottom:130px;gap:8px}.story-controls button{width:33px;height:28px;font-size:14px}footer{left:7%;right:7%;height:112px;padding-top:10px}.footer-top{font-size:8px;letter-spacing:0}.footer-top #track{font-size:7px}#timeline{gap:6px;margin-top:12px}.tick small{font-size:6px;letter-spacing:0;margin-top:5px}.footer-bottom{font-size:6px;letter-spacing:0;margin-top:10px}.footer-bottom>span:nth-child(2){display:none}.footer-bottom button{font-size:7px}#sound-gate{bottom:170px;max-width:88%;gap:10px;padding:9px 12px;flex-direction:column}#sound-gate>span{font-size:9px}#sound-gate button{width:100%}dialog{padding:32px 22px}dialog p{font-size:11px}#photo-dialog .photo-crop{height:auto;width:100%}#large-photo .snapshot{display:block;max-width:100%;max-height:none;height:auto}#large-photo .photo-crop{width:100%;height:auto;flex:none}}
@media(max-height:700px) and (min-width:701px){.scene{padding-top:100px;padding-bottom:150px}h1{font-size:40px}.scene-art>.snapshot{max-width:230px}.begin-art{height:280px}.heart-mark{font-size:100px}.end-art strong{font-size:170px}.body-copy{font-size:11px}.date{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.scene:not(.active) .scene-copy{opacity:0!important}@media(max-width:700px){.gift-bg{background-position:75% center}}@media(max-height:720px) and (max-width:700px){.scene{padding-top:80px;gap:10px}.scene h1{font-size:27px}.scene .body-copy{font-size:10px}.scene-art{max-height:32svh}.scene-copy>small{font-size:6px}.gift{padding-top:85px}.gift h1{font-size:30px}.begin-art{height:210px}.begin-art .heart-mark{font-size:70px}.end-art strong{font-size:110px}}
.journey-scene .snapshot{width:min(100%,470px)}.illustration .gift-bg:after{background:linear-gradient(90deg,#100d22f5,#140d28c9 30%,#170f2655 58%,#1b102115 85%),linear-gradient(0deg,#151025c0,transparent 40%)}#timeline{gap:8px}.tick small{font-size:8px;letter-spacing:0}.illustration .gift-bg{background-position:65% center}@media(max-width:700px){#timeline{gap:4px}.tick small{font-size:6px}.journey-scene .scene-art{max-height:32svh}.journey-scene .snapshot{width:100%;max-width:100%;height:auto}.journey-scene .photo-crop{width:100%;height:auto;flex:none}.illustration .gift-bg:after{background:linear-gradient(180deg,#100b22ef 0%,#140d28b5 29%,#170f2615 62%,#151025c5 95%)}.illustration .gift-bg{background-position:65% center}}
.header-actions{display:flex;gap:12px;align-items:center}.header-actions #record-open{color:#f0c1c5;border-color:#e5a9bd55}.scene-copy{grid-area:1/1}.scene-art{grid-area:1/2}.frame:not(.current-frame){opacity:0;visibility:hidden;pointer-events:none}.scene-art.frame:not(.current-frame){display:none}.gift-bg.frame{transition:opacity 1.2s}.gift-bg.current-frame{opacity:1;visibility:visible}.scene.active .gift-bg.current-frame{animation:slow-zoom 48s linear both}.chapter-dots{display:flex;gap:9px;margin-top:22px}.chapter-dots button{height:4px;width:25px;border:0;padding:0;background:#e9cd9d44}.chapter-dots .selected{background:var(--gold)}.tick small{font-size:10px;letter-spacing:3px}.record-primary{display:inline-block;border:1px solid #ecd0a0!important;background:#e9cd9d!important;color:#2a1a31!important;padding:11px 20px;font-size:12px;text-align:center}.recorder-eyebrow{color:var(--gold);font-size:10px;letter-spacing:2px}.record-privacy{font-size:10px!important;color:#b2a2bf!important}.record-status{display:flex;align-items:center;gap:12px;background:#ffffff06;padding:15px;margin:20px 0}.record-status strong{font:24px/1 Georgia,serif;color:var(--gold)}#record-status{font-size:11px;line-height:1.6;color:#cbbbd2}#record-dot{width:9px;height:9px;flex-shrink:0;border-radius:50%;background:#887c94}#record-dot.recording{background:#ef8c9d;animation:pulse 1s infinite}.record-buttons{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}.record-buttons button{background:#ffffff06;color:var(--gold);border:1px solid #e9cd9d44;padding:10px 16px;font-size:11px}.record-buttons button:disabled{opacity:.4;cursor:default}#record-result{margin-top:23px;border-top:1px solid #e9cd9d33;padding-top:20px}#record-result[hidden]{display:none}#record-result label{font-size:11px;color:var(--gold)}#record-preview{display:block;width:100%;margin:12px 0}.record-hint{font-size:10px!important;line-height:1.9!important;color:#a995b6!important}#record-error{font-size:11px;color:#ffc3c3}#record-download{width:100%}#voice-preview-banner{position:fixed;z-index:20;bottom:155px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:15px;padding:12px 18px;background:#33223eee;border:1px solid #e9cd9d55;backdrop-filter:blur(10px);font-size:11px;white-space:nowrap}#voice-preview-banner[hidden]{display:none}#voice-preview-banner button{background:none;color:var(--gold);border:1px solid #e9cd9d66;padding:5px 10px;font-size:10px}#recorder-dialog{width:min(600px,93vw)}@media(max-width:700px){.scene-copy{order:0}.scene-art{order:1}.header-actions{gap:6px}.header-actions #record-open{font-size:8px;padding:6px 8px}.header-actions #music{padding:5px 8px}.header-actions #music-state{display:none}.header-actions #music-icon{font-size:15px}.chapter-dots{margin-top:15px}.tick small{font-size:8px;letter-spacing:1px}#voice-preview-banner{bottom:165px;max-width:90%;flex-direction:column;gap:6px;font-size:10px}.record-status{gap:8px;padding:12px}#record-status{font-size:10px}.record-buttons button{font-size:10px;padding:10px 12px}#recorder-dialog h2{font-size:23px}.scene.anniversary h1{font-size:29px}} 
.published-voice{margin-top:24px}.published-voice button{color:var(--gold);border:1px solid #e9cd9d66;background:#e9cd9d10;padding:10px 18px;font-size:11px;letter-spacing:1px}.published-voice span{display:block;font-size:9px;color:#c7b5cf;margin-top:10px}@media(max-width:700px){.published-voice{margin-top:15px}.published-voice button{padding:8px 13px;font-size:10px}.published-voice span{font-size:8px}.end .scene-art{max-height:25svh}.end .end-art strong{font-size:120px}}
.ending-duo .scene-copy{width:52%}.ending-duo .gift-bg:after{background:linear-gradient(90deg,#100d22ef,#140d28c9 30%,#170f2645 60%,#1b102110 90%),linear-gradient(0deg,#151025cc,transparent 40%)}.ending-duo h1{font-size:clamp(40px,4.5vw,68px)}.ending-duo .published-voice{margin-top:30px}.anniversary .gift-bg:after{background:linear-gradient(90deg,#100d22f5,#140d28cc 30%,#170f2655 58%,#1b102115 90%),linear-gradient(0deg,#151025c0,transparent 40%)}@media(max-width:700px){.ending-duo .scene-copy{width:100%}.ending-duo h1{font-size:36px}.ending-duo .gift-bg:after{background:linear-gradient(180deg,#100b22f2,#140d28b5 40%,#170f2620 68%,#151025ce 96%)}.ending-duo .gift-bg{background-position:78% center}.ending-duo .published-voice{margin-top:25px}.anniversary .gift-bg:after{background:linear-gradient(180deg,#100b22ef,#140d28b5 29%,#170f2615 62%,#151025c5 95%)}}
@media(max-width:700px){.together-scene .gift-bg,.ending-duo .gift-bg,.anniversary .gift-bg{background-repeat:no-repeat;background-size:auto 66%;background-position:78% bottom}.together-scene .gift-bg:after,.ending-duo .gift-bg:after,.anniversary .gift-bg:after{background:linear-gradient(180deg,#151025 0%,#151025ee 25%,#15102570 44%,#1510250a 65%,#151025b0 96%)}.together-scene .scene-copy{padding-bottom:30px}.ending-duo .scene-copy{padding-top:0}.ending-duo .published-voice{margin-top:18px}}
@media(max-width:700px) and (max-height:720px){.together-scene .gift-bg,.ending-duo .gift-bg,.anniversary .gift-bg{background-size:auto 58%}}
@media(max-width:700px){.ending-duo .gift-bg{background-size:auto 54%}}@media(max-width:700px) and (max-height:720px){.ending-duo .gift-bg{background-size:auto 48%}}

#opening{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:linear-gradient(120deg,rgba(15,13,30,.94),rgba(24,21,47,.87)),url(assets/together-stars.webp) center/cover;text-align:center;padding:24px}#opening .opening-card{max-width:560px}#opening p{color:#d9c9a7;letter-spacing:.15em;font-size:12px}#opening h2{font-size:clamp(30px,6vw,48px);font-weight:400;line-height:1.6;color:#fff2db;margin:26px 0 36px}#begin{border:1px solid #ddc391!important;border-radius:40px;background:rgba(234,206,155,.12)!important;color:#fff0d2!important;padding:18px 30px;font-size:17px;cursor:pointer;box-shadow:0 0 45px #d9b77318}#begin:hover{background:rgba(234,206,155,.23)!important}#opening small{display:block;color:#bcb3c9;margin-top:24px;font-size:12px}

/* Solo illustrations retain their full composition beside the text. */
.solo-bg{inset:95px 30px 150px 47%;background-size:contain!important;background-position:center!important;background-repeat:no-repeat!important}.solo-bg:after{background:none!important}@media(max-width:700px){.solo-bg{inset:42% 12px 145px 12px;background-size:contain!important;background-position:center bottom!important}}
