@font-face{font-family:"Source Han Serif TW";src:url(../fonts/source-han-serif/SubsetOTF/TW/SourceHanSerifTW-Light.otf) format("opentype");font-display:swap;font-weight:300;font-style:normal}@font-face{font-family:"Source Han Serif TW";src:url(../fonts/source-han-serif/SubsetOTF/TW/SourceHanSerifTW-Regular.otf) format("opentype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:"Source Han Serif TW";src:url(../fonts/source-han-serif/SubsetOTF/TW/SourceHanSerifTW-Medium.otf) format("opentype");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:"Source Han Serif TW";src:url(../fonts/source-han-serif/SubsetOTF/TW/SourceHanSerifTW-SemiBold.otf) format("opentype");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:Cormorant Garamond;src:url(../fonts/cormorant-garamond/CormorantGaramond-Regular.ttf) format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:Cormorant Garamond;src:url(../fonts/cormorant-garamond/CormorantGaramond-Medium.ttf) format("truetype");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:Cormorant Garamond;src:url(../fonts/cormorant-garamond/CormorantGaramond-SemiBold.ttf) format("truetype");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:Wedding Numbers;src:url(../fonts/montserrat/Montserrat-Light.ttf) format("truetype");font-display:swap;font-weight:300;font-style:normal;unicode-range:u+0030-0039,u+ff10-ff19}@font-face{font-family:Wedding Numbers;src:url(../fonts/montserrat/Montserrat-Regular.ttf) format("truetype");font-display:swap;font-weight:400;font-style:normal;unicode-range:u+0030-0039,u+ff10-ff19}@font-face{font-family:Wedding Numbers;src:url(../fonts/montserrat/Montserrat-Medium.ttf) format("truetype");font-display:swap;font-weight:500;font-style:normal;unicode-range:u+0030-0039,u+ff10-ff19}@font-face{font-family:Wedding Numbers;src:url(../fonts/montserrat/Montserrat-SemiBold.ttf) format("truetype");font-display:swap;font-weight:600;font-style:normal;unicode-range:u+0030-0039,u+ff10-ff19}:root{--paper:#f2eadb;--paper-line:#c9baa2;--ink:#2f332b;--muted:#696255;--green:#073525;--green-2:#0d442f;--burgundy:#6b1d22;--button:#06442e;--cream-text:#f5ead5;--shadow-paper:0 12px 22px rgba(34,25,18,.24);--font-serif:"Wedding Numbers","Source Han Serif TW","Songti TC","STSong","PingFang TC",serif;--font-display:"Wedding Numbers","Cormorant Garamond","Source Han Serif TW","Songti TC","STSong","PingFang TC",serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-serif);font-weight:300;line-height:1.85;letter-spacing:0;text-rendering:geometricPrecision}img{display:block;width:100%}a{color:inherit}figure,h1,h2,h3,p{margin:0}button{font:inherit}main{overflow:hidden}.reveal-once .reveal-item{opacity:0;transform:translateY(28px);filter:blur(8px);transition:opacity .76s ease,transform .76s ease,filter .76s ease;transition-delay:var(--reveal-delay,0s);will-change:opacity,transform,filter}.reveal-once.is-visible .reveal-item{opacity:1;transform:translateY(0);filter:blur(0)}.delay-1{--reveal-delay:.12s}.delay-2{--reveal-delay:.24s}.delay-3{--reveal-delay:.36s}.delay-4{--reveal-delay:.48s}.delay-5{--reveal-delay:.6s}.hero-section.reveal-once .hero-image{opacity:0;transform:scale(1.03);transition:opacity 1.4s ease,transform 1.4s ease}.hero-section.reveal-once.is-visible .hero-image{opacity:1;transform:scale(1)}.section{padding:92px 24px}.section-inner{width:min(100%,1120px);margin:0 auto}.eyebrow{color:currentColor;font-size:13px;font-weight:600;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}.eyebrow,h1,h2,h3{font-family:var(--font-display)}h1,h2,h3{font-weight:500;line-height:1.18}.hero-section{position:relative;min-height:100svh;display:grid;align-items:start;isolation:isolate;background:#1f241f}.hero-image,.hero-overlay{position:absolute;inset:0}.hero-image{height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;z-index:-2}.hero-overlay{z-index:-1;background:linear-gradient(90deg,#0000007a,#00000029 52%,#0000002e),linear-gradient(180deg,#00000047,#00000014 50%,#0000005c)}.hero-content{width:min(92vw,600px);margin:clamp(92px,18svh,170px) 0 0 clamp(28px,9vw,120px);color:#fff8ea;text-align:center;text-shadow:0 3px 18px rgba(0,0,0,.54);transform:translateY(-100px)}.hero-arc{display:block;width:min(92vw,360px);height:56px;margin:0 auto 12px;overflow:visible}.hero-arc text{fill:#fff8ea;font-family:var(--font-display);font-size:24px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;dominant-baseline:middle}.hero-title{font-size:clamp(34px,5vw,64px);letter-spacing:0}.hero-names{margin-top:10px;color:#fff8eae0;font-size:clamp(13px,1.6vw,18px);font-weight:600;line-height:1.4}.hero-date,.hero-names{font-family:var(--font-display);text-transform:uppercase}.hero-date{margin-top:22px;color:#fff8eaeb;font-size:clamp(14px,1.5vw,18px);font-weight:300;letter-spacing:.08em}.details-section{position:relative;z-index:1;background:#e9dcc5}.invitation-section{--ink:#344238;--muted:#344238;background:#e9dcc5;color:var(--ink);padding-top:clamp(92px,12vw,150px);padding-bottom:clamp(76px,10vw,118px)}.invitation-inner{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(400px,1fr);gap:clamp(46px,7vw,90px);align-items:start}.invitation-copy{padding-top:10px}.invitation-copy .eyebrow{color:var(--muted)}.invitation-copy h2{margin-top:14px;font-size:clamp(34px,5vw,56px)}.invitation-lines{display:grid;gap:20px;margin-top:34px}.body-line{line-height:2;white-space:pre-line}.body-line,.signature{color:var(--ink);font-size:20px}.signature{margin-top:34px}.polaroid-frame{width:min(100%,480px);justify-self:center;padding:12px 12px 18px;background:#fffdf7;box-shadow:var(--shadow-paper)}.polaroid-frame img{aspect-ratio:4/5.15;-o-object-fit:cover;object-fit:cover}.invitation-line-art{width:min(100%,470px);margin:22px 0 0;opacity:1}.countdown-section{position:relative;z-index:0;height:470px;min-height:0;display:grid;align-items:stretch;padding:0;overflow:hidden;background:var(--green);color:var(--cream-text)}.countdown-inner{width:100%;height:100%}.countdown-grid{height:100%;min-height:0;display:grid;grid-template-columns:19% 62% 19%}.countdown-photo{height:100%;min-height:0;overflow:hidden}.countdown-photo img{height:100%;-o-object-fit:cover;object-fit:cover}.countdown-photo-left img{-o-object-position:center center;object-position:center center}.countdown-photo-right img{-o-object-position:center top;object-position:center top}.countdown-panel{display:grid;align-content:center;justify-items:center;padding:28px 28px 24px;text-align:center;background:linear-gradient(90deg,#072e20,#0a3928 50%,#072e20)}.countdown-panel .eyebrow{color:#dfcfa9}.countdown-panel h2{margin-top:8px;color:#ead9b2;font-size:clamp(30px,3.5vw,44px);letter-spacing:.08em}.timer-grid{display:grid;grid-template-columns:repeat(4,minmax(76px,1fr));gap:clamp(14px,1.4vw,20px);width:min(82%,560px);margin-top:22px}.timer-item{position:relative;min-height:120px;display:grid;grid-template-rows:auto auto;align-content:center;justify-items:center;gap:12px;padding:14px 8px 12px;background:linear-gradient(#232724,#171b18);border:1px solid hsla(0,0%,100%,.13);border-radius:6px;box-shadow:inset 0 1px #ffffff1a,0 12px 20px #0000004d;perspective:500px;isolation:isolate}.timer-item:before{content:"";position:absolute;right:0;left:0;top:50%;z-index:2;height:1px;background:#000000b8;box-shadow:0 1px #ffffff0d;pointer-events:none}.timer-item strong{position:relative;z-index:1;color:#ead9b2;font-family:var(--font-display);font-size:clamp(34px,4.5vw,54px);font-weight:600;line-height:1;transform-origin:center center;backface-visibility:hidden;animation:countdown-flip .52s cubic-bezier(.2,.72,.25,1)}@keyframes countdown-flip{0%{opacity:.35;transform:rotateX(90deg)}55%{opacity:1;transform:rotateX(-12deg)}to{opacity:1;transform:rotateX(0)}}.timer-item span{position:relative;z-index:1;color:#ead9b2;font-family:var(--font-display);font-size:11px;font-weight:600;text-transform:uppercase}.countdown-note{margin-top:24px;color:#ead9b2;font-size:20px;line-height:1.65}.countdown-note span{display:block}.countdown-note span:first-child{font-size:clamp(20px,2.2vw,28px);letter-spacing:.14em}.details-section{padding:0 24px 132px!important}.details-heading{padding-top:128px;text-align:center}.details-heading .eyebrow{color:var(--muted)}.details-heading h2{margin-top:10px;font-size:clamp(36px,5vw,58px)}.details-primary{display:grid;grid-template-columns:minmax(230px,.68fr) minmax(480px,1.55fr);gap:clamp(28px,5vw,58px);align-items:center;margin-top:42px}.details-secondary{display:grid;grid-template-columns:minmax(400px,1.15fr) minmax(340px,1fr);gap:clamp(36px,7vw,88px);align-items:start;margin-top:42px}.date-card,.location-card{border:1px solid #8b806d;background:#f4ebd985;box-shadow:inset 0 1px #ffffff73}.date-card{width:min(100%,300px);min-height:252px;display:grid;align-content:center;justify-items:center;padding:24px 20px;text-align:center;box-shadow:inset 0 1px #ffffff85,0 8px 16px #3b301f29}.date-card .month{color:var(--muted);font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.details-date-column{display:grid;justify-items:center;gap:18px}.date-card strong{margin-top:12px;color:#24211d;font-family:var(--font-display);font-size:clamp(72px,8vw,112px);font-weight:500;line-height:.92}.date-card span:not(.month){color:var(--ink);font-family:var(--font-display);font-size:15px;letter-spacing:.08em;line-height:1.8;text-transform:uppercase}.venue-address{color:var(--ink);font-size:20px;line-height:1.8;text-align:center}.venue-address p:first-child{font-weight:500}.details-photo{position:relative;aspect-ratio:16/10.4;overflow:hidden}.carousel-frame img{position:absolute;inset:0;height:100%;opacity:0;-o-object-fit:cover;object-fit:cover;transition:opacity .7s ease}.carousel-frame img.active{opacity:1}.location-card{padding:26px 20px 20px;outline:1px solid #8b806d;outline-offset:4px;text-align:center}.location-card .eyebrow{color:var(--muted)}.location-card h3{margin-top:8px;font-size:clamp(26px,3vw,34px)}.location-card>img{width:90%;margin:16px auto 12px;opacity:.8;mix-blend-mode:multiply}.location-card p:last-of-type{color:var(--ink);font-size:14px}.map-frame{width:100%;height:120px;margin-top:14px;border:1px solid rgba(83,75,62,.36);filter:saturate(.7) contrast(.92)}.schedule-list{display:grid;gap:20px;width:100%;margin:0}.schedule-item{display:grid;grid-template-columns:76px 1fr;gap:18px;align-items:start}.schedule-item time{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:1px 10px;background:var(--green-2);color:#f5e7ca;font-family:var(--font-display);font-size:14px;font-weight:600;line-height:1}.schedule-item h3{font-size:20px}.schedule-item p{color:var(--muted);font-size:20px;line-height:1.75}.rsvp-section{position:relative;min-height:350px;display:grid;align-items:center;isolation:isolate;overflow:hidden;background:#3f0f12;color:var(--cream-text);text-align:center}.rsvp-section:before{content:"";position:absolute;inset:0;z-index:-2;background:url(../images/hk-neon-line-art.png) 50%/contain no-repeat;opacity:.86}.rsvp-section:after{content:"";position:absolute;inset:0;z-index:-1;background:#48080c1a}.narrow{max-width:760px}.rsvp-section .eyebrow{color:#e8bdad}.rsvp-section h2{margin-top:12px;font-size:clamp(32px,5vw,56px);letter-spacing:.08em}.rsvp-message{margin:16px auto 0;max-width:640px;color:#f3ded2;font-size:20px;line-height:1.9}.rsvp-message-mobile{display:none}.rsvp-section .primary-button{min-height:52px;margin-top:24px;padding:12px 38px 13px;background:#042f22;font-size:18px}.rsvp-section .primary-button:hover{background:#063d2b}.primary-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;margin-top:24px;padding:9px 28px 10px;background:var(--button);color:#f9ead0;border:1px solid rgba(246,224,192,.34);border-radius:2px;cursor:pointer;font-family:var(--font-display);font-weight:500;text-decoration:none;transition:transform .18s ease,background-color .18s ease}.primary-button:hover{transform:translateY(-2px);background:#0b5239}.dialog-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:#120e0c94}.rsvp-dialog{width:min(100%,420px);padding:36px 28px;background:var(--paper);border:1px solid var(--paper-line);box-shadow:0 28px 80px #1e18123d;text-align:center}.rsvp-dialog h3{margin-top:10px;font-size:32px}.rsvp-dialog p{font-size:20px}.rsvp-dialog .eyebrow,.rsvp-dialog p{color:var(--muted)}.dialog-close{margin-top:22px}.closing-section{min-height:420px;display:grid;align-items:center;padding:0;background:url(../images/closing-thank-you.jpg) top/cover no-repeat}.closing-inner{width:min(100%,1120px);padding:46px 24px}.closing-inner .eyebrow{color:var(--muted)}.closing-inner h2{max-width:480px;margin-top:8px;font-size:clamp(28px,3.2vw,42px)}.closing-inner p:last-child{max-width:460px;margin-top:14px;color:var(--muted);font-size:20px;line-height:1.75;white-space:pre-line}.vendor-section{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px clamp(24px,7vw,80px) calc(22px + env(safe-area-inset-bottom));background:#042f22;color:#f5e7ca;font-family:var(--font-display);font-size:20px}.vendor-section a{text-decoration:underline;text-underline-offset:3px}@media(max-width:899px){.section{padding:66px 24px}.details-section{padding:0 24px 86px!important}.details-heading{padding-top:66px}.body-line,.closing-inner p:last-child,.countdown-note,.rsvp-dialog p,.rsvp-message,.schedule-item h3,.schedule-item p,.signature,.venue-address{font-size:16px}.hero-section{min-height:90svh}.hero-image{-o-object-position:54% center;object-position:54% center}.hero-overlay{background:linear-gradient(180deg,transparent 0,transparent 48%,rgba(0,0,0,.18) 67%,rgba(0,0,0,.58))}.hero-content{width:min(88vw,430px);margin-top:clamp(82px,17svh,128px);margin-left:clamp(22px,7vw,54px)}.hero-title{font-size:clamp(32px,8.2vw,46px)}.invitation-inner{grid-template-columns:1fr;gap:36px;text-align:center}.invitation-copy{padding-top:0}.invitation-lines{margin-top:24px}.polaroid-frame{width:min(100%,330px);order:3}.invitation-line-art{width:min(100%,360px);margin:22px auto 0}.countdown-grid{min-height:auto;grid-template-columns:1fr}.countdown-section{height:auto;padding:0}.countdown-photo{min-height:0}.countdown-photo-left,.countdown-photo-right{display:none}.countdown-panel{min-height:330px;order:1;padding:44px 18px 34px}.timer-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:min(100%,420px)}.timer-item{min-height:86px;padding-inline:4px}.timer-item strong{font-size:clamp(28px,9vw,42px)}.timer-item span{font-size:9px}.details-primary,.details-secondary{grid-template-columns:1fr;gap:28px;margin-top:30px}.date-card{width:min(100%,280px);min-height:240px;margin:0 auto}.details-photo{width:min(100%,420px);margin:0 auto;aspect-ratio:4/3.1}.location-card{width:min(100%,360px);margin:0 auto}.schedule-list{width:min(100%,420px);margin-top:28px}.schedule-item h3{font-size:18px}.schedule-item p{font-size:15px}.rsvp-section{min-height:280px}.rsvp-section:before{background:url(../images/hk-neon-line-art-mobile.png) 50%/100% 100% no-repeat}.rsvp-message{text-align:center}.rsvp-message-desktop{display:none}.rsvp-message-mobile{display:block}.closing-section{position:relative;min-height:420px;isolation:isolate;background:url(../images/closing-thank-you-mobile.jpg) 50%/cover no-repeat}.closing-section:after{content:"";position:absolute;inset:0;z-index:-1;background:#eee4d1d6}.closing-inner{padding:50px 24px 76px}.vendor-section{font-size:16px}}@media(max-width:520px){.hero-section{min-height:100svh;align-items:end;overflow:hidden}.hero-overlay{background:linear-gradient(180deg,transparent 0,transparent 42%,rgba(0,0,0,.22) 62%,rgba(0,0,0,.62))}.hero-image{-o-object-fit:cover;object-fit:cover;-o-object-position:60% center;object-position:60% center}.hero-content{margin:0 0 32px clamp(22px,7vw,54px);transform:none}.body-line,.hero-arc text{font-size:18px}.countdown-panel h2,.rsvp-section h2{letter-spacing:.04em}.date-card strong{font-size:78px}.schedule-item{grid-template-columns:68px 1fr;gap:12px}.vendor-section{padding-inline:22px}}@media(prefers-reduced-motion:reduce){.timer-item strong{animation:none}.hero-section.reveal-once .hero-image,.reveal-once .reveal-item{opacity:1;transform:none;filter:none;transition:none}}
