.entry-gate{z-index:60;background:var(--bg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:3rem;transition:opacity 1.4s;display:flex;position:fixed;inset:0}.entry-gate--hidden{opacity:0;pointer-events:none}.entry-gate__eyebrow{letter-spacing:.35em;text-indent:.35em;color:var(--ink-muted);flex-direction:column;gap:.4rem;font-size:1rem;display:flex}.entry-gate__eyebrow .en{letter-spacing:.2em;font-size:.85rem}.entry-gate__button{width:9.5rem;height:9.5rem;color:var(--accent);letter-spacing:.3em;text-indent:.3em;border:1px solid #e6c58480;border-radius:50%;font-size:1.05rem;transition:border-color .4s,background .4s;position:relative}.entry-gate__button:hover{border-color:var(--accent);background:#e6c5840f}.entry-gate__ring{pointer-events:none;border:1px solid #e6c58459;border-radius:50%;animation:2.6s ease-out infinite gate-pulse;position:absolute;inset:-1px}@keyframes gate-pulse{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.55)}}.entry-gate__hint{letter-spacing:.2em;color:#f3eee566;flex-direction:column;gap:.2rem;font-size:.8rem;display:flex}.finale__shade{background:radial-gradient(60% 45%,#0b0b0d99,#0000 75%),linear-gradient(#0b0b0d59,#0b0b0dad 78%,#0b0b0dd9);position:absolute;inset:0}.finale__content{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.4rem;padding:0 1.75rem;display:flex;position:absolute;inset:0}.finale__line{letter-spacing:.14em;text-shadow:0 2px 18px #00000080;font-size:clamp(1.1rem,3.4vw,1.5rem);line-height:1.9}.finale__line--title{letter-spacing:.16em;margin-top:1.4rem;font-size:clamp(2rem,6.5vw,3.4rem);font-weight:600}.finale__line--verse{color:var(--accent);font-size:clamp(1.2rem,3.8vw,1.7rem)}.finale__sign{flex-direction:column;gap:.5rem;margin-top:2.2rem;display:flex}.finale__sign-name{letter-spacing:.2em;font-size:1.25rem}.finale__sign-date{letter-spacing:.4em;text-indent:.4em;color:var(--ink);opacity:.85;font-size:.95rem}.gratitude{text-align:center;padding:10rem 1.5rem}.gratitude__head{flex-direction:column;gap:1.1rem;margin-bottom:6rem;display:flex}.gratitude__title{letter-spacing:.3em;text-indent:.3em;font-size:clamp(2rem,6vw,3.2rem);font-weight:600}.gratitude__sub{letter-spacing:.24em;text-indent:.24em;color:var(--accent);font-size:clamp(1.15rem,3.4vw,1.6rem)}.gratitude__en{color:var(--ink-muted);letter-spacing:.08em;margin-top:.4rem;font-size:1rem}.gratitude__video{flex-direction:column;align-items:center;gap:1.2rem;width:min(80vw,420px);margin:0 auto;display:flex}.gratitude__video-frame{aspect-ratio:478/850;background:#000;border-radius:6px;width:100%;overflow:hidden;box-shadow:0 28px 70px #0000008c}.gratitude__video-frame video{object-fit:cover;width:100%;height:100%}.gratitude__video-caption{flex-direction:column;gap:.3rem;display:flex}.hero__img{animation:22s ease-out forwards hero-kenburns}@keyframes hero-kenburns{0%{transform:scale(1.12)}to{transform:scale(1)}}.hero__shade{background:radial-gradient(70% 50%,#0b0b0d8c,#0000 75%),linear-gradient(#0b0b0d99,#0b0b0d4d 40%,#0b0b0dbf 100%);position:absolute;inset:0}.hero__content{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.2rem;padding:0 1.5rem;display:flex;position:absolute;inset:0}.hero__eyebrow{letter-spacing:.3em;color:var(--accent);text-shadow:0 1px 14px #000000e6,0 0 4px #0009;opacity:0;font-size:1.05rem;transition:opacity 1.4s .9s,transform 1.4s .9s;transform:translateY(24px)}.hero__title{letter-spacing:.12em;text-shadow:0 2px 24px #00000073;opacity:0;font-size:clamp(2.2rem,7vw,4.2rem);font-weight:600;transition:opacity 1.6s 1.3s,transform 1.6s 1.3s;transform:translateY(28px)}.hero__date{font-family:var(--font-en);letter-spacing:.5em;text-indent:.5em;color:var(--ink);text-shadow:0 1px 14px #000000e6,0 0 4px #0009;opacity:0;font-size:1.1rem;transition:opacity 1.6s 1.9s,transform 1.6s 1.9s;transform:translateY(20px)}.hero--in .hero__eyebrow,.hero--in .hero__title,.hero--in .hero__date{opacity:1;transform:translateY(0)}.hero__cue{opacity:0;flex-direction:column;align-items:center;gap:.6rem;animation:1.5s 3s forwards cue-appear;display:flex;position:absolute;bottom:5.5rem;left:50%;transform:translate(-50%)}.hero__cue-text{letter-spacing:.4em;text-indent:.4em;color:var(--ink-muted);font-size:.8rem}.hero__cue-arrow{background:linear-gradient(to bottom, transparent, var(--accent));width:1px;height:2.6rem;animation:2s ease-in-out infinite cue-drop}@keyframes cue-appear{to{opacity:1}}@keyframes cue-drop{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(8px)}}.song-progress{z-index:40;padding-bottom:env(safe-area-inset-bottom);background:linear-gradient(#0000,#0b0b0db8);position:fixed;bottom:0;left:0;right:0}.song-progress__meta{letter-spacing:.08em;color:var(--ink-muted);justify-content:space-between;align-items:center;padding:.4rem 1rem .45rem;font-size:.75rem;display:flex}.song-progress__replay{color:var(--accent);letter-spacing:.15em;padding:.1rem .3rem;font-size:.85rem}.song-progress__track{background:#f3eee524;height:3px}.song-progress__fill{background:linear-gradient(to right, #b98f4e, var(--accent));width:0%;height:100%}.quote{height:var(--app-h);background:radial-gradient(ellipse at center, #e6c5840f, transparent 65%), var(--bg);justify-content:center;align-items:center;display:flex;position:relative}.quote__inner{text-align:center;flex-direction:column;gap:1.1rem;max-width:40rem;padding:0 2rem;display:flex}.quote__line{letter-spacing:.1em;text-align:justify;text-align-last:center;font-size:clamp(1.05rem,3vw,1.5rem);font-weight:400;line-height:2}.quote__accent{color:var(--accent);font-weight:600}.quote__line--en{color:var(--ink-muted);letter-spacing:.04em;text-align:center;margin-bottom:1.6rem;font-size:clamp(.85rem,2.2vw,1rem);line-height:1.7}.quote__line--en:last-child{margin-bottom:0}@media (width<=480px){.quote__inner{gap:.8rem;padding:0 1.5rem}.quote__line{letter-spacing:.06em;line-height:1.9}.quote__line--en{margin-bottom:1.2rem;line-height:1.6}}.timeline{padding:8rem 0 6rem;position:relative}.timeline__intro{text-align:center;margin-bottom:7rem;padding:0 1.5rem}.timeline__intro-zh{letter-spacing:.2em;text-indent:.2em;font-size:clamp(1.8rem,5vw,2.8rem);font-weight:600}.timeline__intro-en{color:var(--accent);letter-spacing:.25em;margin-top:.8rem;font-size:1rem}.chapter{margin-bottom:9rem}.chapter__head{text-align:center;margin-bottom:4.5rem;padding:0 1.5rem}.chapter__title{letter-spacing:.3em;text-indent:.3em;font-size:clamp(1.3rem,3.6vw,1.9rem);font-weight:400}.chapter__subtitle{letter-spacing:.2em;color:var(--ink-muted);margin-top:.5rem;font-size:.95rem}.photo-full{margin:5rem 0}.photo-full__caption{text-align:center;background:linear-gradient(#0000,#0b0b0dd1);flex-direction:column;gap:.35rem;padding:7rem 2rem 5.5rem;display:flex;position:absolute;bottom:0;left:0;right:0}.photo-card{flex-direction:column;gap:1.1rem;width:min(76vw,460px);margin:6.5rem auto;padding:0 1.25rem;display:flex}.photo-card--left{margin-left:max(6vw,1rem)}.photo-card--right{text-align:right;align-items:flex-end;margin-right:max(6vw,1rem)}.photo-card--center{text-align:center;align-items:center;width:min(88vw,620px)}.photo-card__frame{border-radius:4px;width:100%;overflow:hidden;box-shadow:0 24px 60px #00000080}.photo-card__frame img{object-fit:cover;width:100%;height:100%}.photo-card__caption{flex-direction:column;gap:.3rem;display:flex}.caption-zh{letter-spacing:.12em;font-size:1.05rem}.caption-en{color:var(--ink-muted);letter-spacing:.08em;font-size:.9rem}@media (width<=640px){.photo-card{width:min(84vw,460px)}}:root{--bg:#0b0b0d;--ink:#f3eee5;--ink-muted:#f3eee59e;--accent:#e6c584;--font-zh:"Noto Serif TC", "Songti TC", serif;--font-en:"Cormorant Garamond", "Georgia", serif;--app-h:100svh}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:auto;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-zh);-webkit-font-smoothing:antialiased;font-weight:300;line-height:1.8}body.is-locked{overflow:hidden}img,video{max-width:100%;display:block}button{color:inherit;cursor:pointer;background:0 0;border:none;font-family:inherit}main{position:relative}.en{font-family:var(--font-en);font-style:italic}.bleed{height:var(--app-h);position:relative;overflow:hidden}.bleed__img{object-fit:cover;width:100%;height:112%;position:absolute;top:-6%;left:0}
