:root{--ink:#2c2b2a;--soft-ink:rgba(44,43,42,0.72);--gold:#b9a086;--paper:#fffdf9}*{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Serif SC","Songti SC",serif;-webkit-font-smoothing:antialiased}body{overflow-x:hidden}.invite-page{width:100%;width:min(100vw,480px);min-height:100vh;min-height:calc(var(--vh, 1vh) * 100);margin:0 auto;background:var(--paper)}.hero-screen{position:relative;min-height:100vh;min-height:calc(var(--vh, 1vh) * 100);overflow:hidden;background:#f6f3ee;isolation:isolate}.hero-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 48%;transform:scale(1.025);animation:photoBreath 7s ease-out forwards;z-index:1}.hero-shade{position:absolute;left:0;right:0;pointer-events:none;z-index:2}.hero-shade-top{top:0;height:34%;background:radial-gradient(ellipse at 50% 18%,rgba(255,253,249,0.68),rgba(255,253,249,0) 62%),linear-gradient(to bottom,rgba(255,253,249,0.78),rgba(255,253,249,0))}.hero-shade-bottom{top:60%;bottom:0;background:linear-gradient(to bottom,rgba(255,253,249,0),rgba(255,253,249,0.52) 50%,rgba(255,253,249,0.94) 88%),radial-gradient(circle at 50% 62%,rgba(255,255,255,0.02),rgba(255,255,255,0.58) 66%)}.music-control-layer{position:fixed;top:18px;top:max(18px,env(safe-area-inset-top));right:18px;z-index:9999;pointer-events:none}.music-button{pointer-events:auto;width:38px;height:38px;border:1px solid rgba(255,255,255,0.4);border-radius:50%;background:rgba(0,0,0,0.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.3s ease}.music-button::after{content:"♪";color:#fff;font-size:20px}.music-button.is-playing{animation:musicRotate 3s linear infinite;background:rgba(185,160,134,0.6);border-color:rgba(255,255,255,0.8)}@keyframes musicRotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.music-button.is-playing::before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border:1px solid rgba(185,160,134,0.4);border-radius:50%;animation:musicRipple 1.5s ease-out infinite}@keyframes musicRipple{0%{transform:scale(1);opacity:1}100%{transform:scale(1.5);opacity:0}}.hero-copy{position:relative;z-index:4;text-align:center}.hero-copy-top{padding-top:24px;padding-top:clamp(24px,5svh,48px)}.script-title{margin:0 0 10px;color:rgba(68,56,48,0.82);font-family:"Great Vibes",cursive;font-size:48px;font-size:clamp(48px,15vw,74px);line-height:0.78;letter-spacing:1px;text-shadow:0 2px 18px rgba(255,255,255,0.72);transform:rotate(-4deg)}.hero-line{margin:0;color:rgba(48,42,38,0.78);font-size:14px;font-weight:300;letter-spacing:6px;text-indent:6px;text-shadow:0 1px 12px rgba(255,255,255,0.8)}.hero-date{margin:12px 0 0;color:rgba(48,42,38,0.76);font-family:"Cormorant Garamond",serif;font-size:18px;letter-spacing:5px;text-shadow:0 1px 12px rgba(255,255,255,0.8)}.hero-copy-bottom{position:absolute;left:0;right:0;top:60%;padding:0 28px}.couple-name{display:flex;align-items:center;justify-content:center;gap:24px;margin:0;color:rgba(40,36,33,0.9);font-size:22px;font-weight:400;letter-spacing:4px}.couple-name i{color:var(--gold);font-family:"Cormorant Garamond",serif;font-style:normal;font-size:24px}.couple-name-en{margin:7px 0 0;color:rgba(40,36,33,0.58);font-family:"Cormorant Garamond",serif;font-size:11px;letter-spacing:1.5px}.hero-footer{position:absolute;left:0;right:0;bottom:36px;z-index:4;text-align:center}.tiny-heart{display:inline-block;margin:10px 0 18px 0;color:var(--gold);font-size:15px;animation:heartFloat 1.8s ease-in-out infinite}.wedding-word{margin:0 0 18px;color:rgba(145,119,92,0.88);font-family:"Cormorant Garamond",serif;font-size:42px;font-size:clamp(42px,13vw,66px);font-weight:300;line-height:0.74;letter-spacing:1px}.footer-title{margin:0;color:rgba(40,36,33,0.78);font-size:14px;font-weight:300;letter-spacing:9px;text-indent:9px}.hero-copy-top,.hero-copy-bottom,.hero-footer{opacity:0;transform:translateY(16px);animation:fadeUp 1.1s cubic-bezier(0.2,0.8,0.2,1) forwards}.hero-copy-bottom{animation-delay:0.25s}.hero-footer{animation-delay:0.42s}.reveal-section{opacity:0;transform:translateY(26px);transition:opacity 0.9s ease,transform 0.9s ease}.reveal-section.is-visible{opacity:1;transform:translateY(0)}.letter-screen,.lover-screen{position:relative;min-height:100vh;min-height:calc(var(--vh, 1vh) * 100);padding:40px 28px 32px;background:var(--paper);text-align:center}.section-kicker{display:grid;grid-template-columns:repeat(3,1fr);margin:0 -10px 18px;color:rgba(40,36,33,0.56);font-family:"Cormorant Garamond",serif;font-size:13px;letter-spacing:1.8px}.wide-photo-frame{margin:0 -28px 54px;background:#0f0f0f}.wide-photo-frame img{display:block;width:100%;aspect-ratio:1.82/1;object-fit:cover;object-position:50% 30%;filter:contrast(0.95) saturate(0.9)}.wide-photo-frame figcaption{margin:0;padding:8px 12px 10px;color:rgba(255,255,255,0.7);font-family:"Cormorant Garamond",serif;font-size:13px;letter-spacing:0.6px}.letter-copy{color:rgba(40,36,33,0.8);font-size:16px;font-weight:300;line-height:2.05;letter-spacing:1.5px}.letter-copy p{margin:0}.letter-english,.lover-english{margin:34px auto 0;color:rgba(40,36,33,0.44);font-family:"Cormorant Garamond",serif;font-size:14px;line-height:1.35;letter-spacing:0.7px}.section-heart{display:inline-block;margin-top:22px;color:var(--gold);font-size:15px}.lover-screen{padding-top:40px}.lover-screen>.section-heart{margin:0 0 34px}.section-title{margin:0 0 54px;color:rgba(185,160,134,0.88);font-family:"Cormorant Garamond",serif;font-size:42px;font-size:clamp(42px,13vw,64px);font-weight:300;line-height:0.78;letter-spacing:2px}.portrait-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}.portrait-card{margin:0;overflow:hidden;background:#f3eee7}.portrait-card img{display:block;width:100%;aspect-ratio:0.72/1;object-fit:cover;object-position:73% 27%;filter:contrast(0.98) saturate(0.92)}.groom-card img{object-position:25% 25%}.lover-names{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:30px 0 48px;color:rgba(40,36,33,0.82);font-size:17px;letter-spacing:2px}.lover-names i{display:block;width:1px;height:27px;margin:0 auto 24px;background:rgba(40,36,33,0.72)}.lover-names p{margin:0}.lover-copy{color:rgba(40,36,33,0.8);font-size:16px;font-weight:300;line-height:2.05;letter-spacing:1.8px}.lover-copy p{margin:0}.film-screen{background:#0c0c0c;color:#fff;padding:56px 0 0}.film-kicker{margin:0 0 18px;padding:0 28px;color:rgba(255,255,255,0.72)}.film-strip{position:relative;padding:16px 26px 28px;background:repeating-linear-gradient(90deg,rgba(255,255,255,0.1) 0 2px,transparent 2px 24px),#050505}.film-strip::before,.film-strip::after{position:absolute;left:8px;color:rgba(255,255,255,0.72);font-family:"Cormorant Garamond",serif;font-size:12px;letter-spacing:1px;writing-mode:vertical-rl;transform:rotate(180deg)}.film-strip::before{content:"KODAK 400";top:24px}.film-strip::after{content:"PASSION 2026";right:8px;left:auto;bottom:24px}.film-frame{position:relative;margin:0 0 14px;border:10px solid #111;outline:1px solid rgba(255,255,255,0.08);overflow:hidden}.film-frame img{display:block;width:100%;aspect-ratio:1.45/1;object-fit:cover;object-position:50% 33%;filter:contrast(1.04) saturate(0.84)}.film-frame:nth-child(2) img{object-position:50% 47%}.film-frame:nth-child(3) img{object-position:50% 60%}.film-frame figcaption{position:absolute;left:14px;right:14px;bottom:9px;margin:0;color:rgba(255,255,255,0.52);font-family:"Cormorant Garamond",serif;font-size:13px;letter-spacing:1px;text-align:center}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:34px 34px 46px;background:#050505}.countdown div{text-align:center}.countdown strong{display:block;margin-bottom:8px;color:#fff;font-family:"Cormorant Garamond",serif;font-size:28px;font-weight:400;line-height:1}.countdown span{color:rgba(255,255,255,0.82);font-size:14px}.save-date-screen,.address-screen{min-height:100vh;min-height:calc(var(--vh, 1vh) * 100);padding:40px 28px 32px;background:var(--paper);text-align:center}.emotion-screen{position:relative;min-height:100vh;min-height:calc(var(--vh, 1vh) * 100);background:var(--paper);overflow:hidden}.emotion-prelude{margin:0 42px 36px;padding-top:42px;color:rgba(40,36,33,0.7);font-size:15px;font-weight:300;line-height:1.9;letter-spacing:2px;text-align:center}.emotion-prelude p{margin:0}.emotion-stack{position:relative;min-height:650px}.emotion-side-words{position:absolute;left:18px;top:22px;z-index:3;display:flex;flex-direction:column;gap:90px;color:rgba(185,160,134,0.62);font-family:"Cormorant Garamond",serif;font-size:18px;font-weight:300;letter-spacing:1px;writing-mode:vertical-rl;transform:rotate(180deg)}.emotion-photo-main{position:absolute;right:0;top:0;width:78%;margin:0;overflow:hidden;background:#f2eee8}.emotion-photo-main img{display:block;width:100%;object-fit:cover;filter:saturate(0.9)}.emotion-sticker{position:absolute;left:0;top:200px;right:140px;z-index:4;margin:0}.emotion-sticker img{display:block;width:100%}.emotion-bottom{position:relative;z-index:5;margin:-200px 0 0 auto;padding-right:12px;text-align:right}.emotion-bottom .section-heart{display:block;margin:0 0 28px auto;width:max-content}.love-title{margin:0 0 30px;white-space:nowrap;font-size:36px;letter-spacing:-2px}.slash-mark{display:block;margin:0 0 22px;color:rgba(40, 36, 33, 0.5);font-family: "Cormorant Garamond", serif;font-size: 24px}.emotion-copy{color:rgba(40,36,33,0.78);font-size:14px;font-weight:300;line-height:2.1;letter-spacing:1.4px}.emotion-copy p{margin:0}.save-title{margin:28px 0 38px}.save-quote{margin:0 0 8px;color:rgba(40,36,33,0.76);font-size:15px;font-weight:300;letter-spacing:1.6px}.save-quote-en{margin:0 0 46px;color:rgba(40,36,33,0.46);font-family:"Cormorant Garamond",serif;font-size:14px;letter-spacing:0.8px}.calendar-card{position:relative;margin:0 auto 28px;width:90%;border:13px solid #171717;background:#111;overflow:hidden;box-shadow:0 16px 34px rgba(0,0,0,0.12)}.calendar-card img{display:block;width:100%;aspect-ratio:0.76/1;object-fit:cover;object-position:50% 35%;filter:contrast(0.96) saturate(0.86)}.calendar-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;padding:28px;color:rgba(255,255,255,0.9);background:linear-gradient(to bottom,rgba(0,0,0,0.18),rgba(0,0,0,0.32))}.calendar-month{margin:0 0 22px;font-family:"Cormorant Garamond",serif;font-size:42px;letter-spacing:4px}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:11px;font-family:"Cormorant Garamond",serif;font-size:14px}.calendar-week{margin-bottom:18px}.calendar-grid strong{color:#fff;font-size:19px;line-height:1}.calendar-date,.calendar-lunar{margin:0;color:rgba(40,36,33,0.72);font-size:15px;line-height:1.9;letter-spacing:1px}.address-title{margin:0 0 46px}.map-card{position:relative;display:block;height:200px;margin:0 0 34px;overflow:hidden;background:#f0f0f0;color:inherit;text-decoration:none;border-radius:12px;box-shadow:0 4px 15px rgba(0,0,0,0.08)}.map-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;filter:brightness(0.85);transition:transform 0.5s ease}.map-card:hover .map-image{transform:scale(1.05)}.map-info{position:absolute;left:20px;bottom:20px;z-index:2;text-align:left;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,0.5)}.map-eyebrow{display:block;font-family:"Cormorant Garamond",serif;font-size:12px;letter-spacing:2px;margin-bottom:4px;opacity:0.9}.map-info strong{display:block;font-size:18px;letter-spacing:1px;margin-bottom:4px}.map-info span:last-child{font-size:12px;opacity:0.8}.map-arrow{position:absolute;right:20px;bottom:20px;z-index:2;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,0.9);color:var(--ink);display:grid;place-items:center;font-size:14px;box-shadow:0 2px 8px rgba(0,0,0,0.2)}.venue-name{margin:0 0 10px;color:rgba(40,36,33,0.76);font-size:16px;letter-spacing:1.5px}.venue-desc{margin:0 0 42px;color:rgba(40,36,33,0.48);font-size:14px;letter-spacing:1px}.contact-actions{display:grid;gap:16px;margin:0 auto 60px;width:85%}.contact-btn{display:flex;align-items:center;gap:16px;padding:16px 20px;background:rgba(185,160,134,0.1);border:1px solid rgba(185,160,134,0.3);border-radius:12px;text-decoration:none;color:var(--ink);transition:all 0.3s ease}.contact-btn:active{background:rgba(185,160,134,0.2);transform:scale(0.98)}.btn-icon{font-size:24px}.btn-text{text-align:left}.btn-text span{display:block;font-size:16px;font-weight:500;letter-spacing:1px;margin-bottom:2px}.btn-text small{display:block;font-size:12px;color:var(--soft-ink);letter-spacing:0.5px}.thank-you{margin:0;color:rgba(185,160,134,0.88);font-family:"Cormorant Garamond",serif;font-size:46px;font-size:clamp(46px,14vw,68px);font-weight:300;line-height:0.85}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}@keyframes photoBreath{to{transform:scale(1)}}@keyframes heartFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
