@font-face{font-family:Pattaya;src:url(/assets/pattaya.woff) format("woff");font-display:swap}:root{--paper:oklch(97% .018 83);--paper-dark:oklch(93% .033 83);--red:oklch(46% .145 23);--red-dark:oklch(35% .11 23);--ink:oklch(32% .045 48);--muted:oklch(48% .045 48);--gold:oklch(73% .09 77);--line:oklch(80% .055 68);--white:oklch(99% .008 83);--error:oklch(43% .17 25);--success:oklch(38% .08 150);--display:Pattaya,Georgia,serif;--body:"Trebuchet MS",sans-serif;--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s6:1.5rem;--s8:2rem;--s12:3rem;--s16:4rem;--s24:6rem;--small:.875rem;--normal:1rem;--medium:1.25rem;--large:clamp(2rem,3vw,3rem);--huge:clamp(3rem,5.5vw,5.5rem);--ease:cubic-bezier(.22,1,.36,1);--z-sticky:10;--z-modal:30}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--s24)}body{margin:0;background:var(--paper);color:var(--ink);font:var(--normal)/1.7 var(--body)}body.cover-open{overflow:hidden}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}h2{font:var(--large)/1.25 var(--display);color:var(--red)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer}img{max-width:100%;display:block}button,a{transition:transform .2s var(--ease),color .2s var(--ease),background-color .2s var(--ease)}a:hover,button:hover{transform:translateY(-2px)}button:active,a:active{transform:translateY(2px)}:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{cursor:wait;opacity:.65}section[id]{scroll-margin-top:var(--s8)}.section-wrap{max-width:1120px;margin:auto;padding:var(--s24) var(--s8)}.site-header{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:var(--s8);padding:var(--s4) var(--s12);border-bottom:1px solid var(--line)}.monogram{font:var(--s8)/1 var(--display);color:var(--red);min-height:44px;display:flex;align-items:center;gap:var(--s2)}.monogram span{font-size:var(--normal);color:var(--muted)}nav{display:flex;gap:var(--s8)}nav a,.header-rsvp{min-height:44px;display:flex;align-items:center;gap:var(--s6);font-size:var(--small)}.header-rsvp{color:var(--red);border-bottom:1px solid var(--red)}.skip-link{position:fixed;top:0;left:var(--s4);background:var(--paper);padding:var(--s4);z-index:40;transform:translateY(-130%)}.skip-link:focus{transform:none}.hero{isolation:isolate;position:relative;max-width:1600px;min-height:min(850px,calc(100svh - 80px));margin:auto;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:var(--s24) max(var(--s12),calc((100vw - 1120px)/2));overflow:hidden}.hero-border{position:absolute;inset:var(--s4);border:1px solid var(--line);pointer-events:none;z-index:-1}.hero-copy{position:relative;z-index:2;padding-bottom:var(--s12)}.eyebrow{font-size:var(--small);letter-spacing:.12em;color:var(--red);margin-bottom:var(--s8)}h1{font:var(--huge)/1.18 var(--display);color:var(--red);max-width:600px}h1 span{display:block;font:var(--s8)/1.6 Georgia,serif;padding-left:var(--s12);color:var(--muted)}.hero-date{font:var(--s8)/1.4 Georgia,serif;letter-spacing:.12em;margin:var(--s8) 0 var(--s2)}.hero-date i{font-style:normal;color:var(--red);margin:0 var(--s2)}.hero-location{font-size:var(--small);letter-spacing:.12em}.text-link{display:inline-flex;align-items:center;gap:var(--s6);border-bottom:1px solid var(--red);min-height:44px;color:var(--red);font-size:var(--small)}.hero-copy .text-link{margin-top:var(--s8)}.hero-art{position:relative;height:560px;min-width:0;align-self:center}.art-orbit{position:absolute;inset:var(--s8) 0 var(--s4);border-radius:50% 50% 0 0;border:1px solid var(--line);background:var(--paper-dark)}.fan{position:absolute;width:100%;top:var(--s6);opacity:.65}.double-happiness{position:absolute;width:64px;left:calc(50% - 32px);top:var(--s8);z-index:1}.couple-art{position:absolute;height:88%;width:90%;object-fit:contain;bottom:var(--s2);left:5%;z-index:2}.art-cloud{position:absolute;width:125%;max-width:none;bottom:-24px;left:-12%;z-index:3;pointer-events:none}.art-caption{position:absolute;bottom:0;left:0;right:0;z-index:4;text-align:center;color:var(--red);font:var(--s8)/1.2 var(--display)}.hero-flower{position:absolute;width:220px;top:-64px;left:-64px;z-index:-1;transform:rotate(25deg)}.hero-lantern{position:absolute;top:-32px;right:var(--s12);width:120px;transform-origin:top center;animation:sway 7s ease-in-out infinite}.hero-cloud{position:absolute;width:160px;opacity:.7;z-index:-1}.cloud-left{bottom:var(--s24);left:-48px}.cloud-right{right:-64px;top:40%}.hero-bottom{position:absolute;bottom:var(--s8);left:var(--s12);right:var(--s12);display:flex;justify-content:space-between;font-size:.75rem;letter-spacing:.1em;color:var(--muted)}.section-heading{text-align:center}.small-happiness{display:block;color:var(--red);font:var(--s12)/1.4 Georgia,serif;margin-bottom:var(--s4)}.section-heading>p{margin-top:var(--s3)}.families{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--s12);text-align:center;margin-top:var(--s12)}.families h3{font:var(--medium)/1.5 var(--body);font-weight:600;color:var(--red);margin-bottom:var(--s4)}.address{font-size:var(--small);color:var(--muted)}.families .address{margin-top:var(--s4)}.family-divider{align-self:center;font:var(--s8)/1 var(--display);color:var(--gold)}.full-names{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--s8);align-items:center;text-align:center;border-top:1px solid var(--line);margin-top:var(--s12);padding-top:var(--s12)}.full-names h3{font:clamp(1.5rem,3vw,2.5rem)/1.4 var(--display);color:var(--red)}.full-names p{font-size:var(--small)}.full-names>span{font:var(--s8)/1 var(--display);color:var(--gold)}.ceremony{text-align:center;margin-top:var(--s8)}.ceremony strong{display:block}.lunar{font-size:var(--small);font-style:italic;color:var(--muted)}.ceremony .lunar{margin-top:var(--s3)}.celebration{background:var(--paper-dark);border-block:1px solid var(--line)}.reception-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s24);align-items:center}.reception-intro h2{font-size:clamp(2.5rem,4vw,4rem)}.reception-intro>p:not(.eyebrow){margin-top:var(--s6);max-width:30ch}.reception-intro>img{width:200px;margin-top:var(--s12)}.reception-ticket{position:relative;text-align:center;padding:var(--s12);background:var(--paper);border:1px solid var(--red)}.reception-ticket h3{font:var(--s12)/1.4 var(--display);color:var(--red);margin-bottom:var(--s4)}.corner{position:absolute;width:64px;pointer-events:none}.top-left{top:var(--s2);left:var(--s2)}.bottom-right{bottom:var(--s2);right:var(--s2);transform:rotate(180deg)}.event-date{display:flex;align-items:center;justify-content:center;gap:var(--s6);margin:var(--s6) 0}.event-date>span{font-size:var(--small);line-height:1.5}.event-date strong{font:var(--s24)/1 Georgia,serif;color:var(--red);border-inline:1px solid var(--line);padding-inline:var(--s6)}.event-times{display:flex;justify-content:center;gap:var(--s12);margin:var(--s6) 0}.event-times p{font-size:var(--small)}.event-times strong{display:block;font:var(--s8)/1.5 Georgia,serif;color:var(--red)}.button{background:var(--red);color:var(--white);padding:var(--s3) var(--s6);min-height:48px;border:1px solid var(--red);display:inline-flex;align-items:center;justify-content:space-between;gap:var(--s8);font-size:var(--normal);border-radius:0}.button:hover{background:var(--red-dark)}.reception-ticket .button{margin-top:var(--s6)}.date-section{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--s24);align-items:center}.countdown-side>p{margin-top:var(--s4)}.countdown{display:flex;gap:var(--s6);margin:var(--s8) 0}.countdown>div{flex:1;text-align:center}.countdown strong{display:block;font:var(--s12)/1.3 Georgia,serif;color:var(--red);font-variant-numeric:tabular-nums}.countdown span{font-size:var(--small);color:var(--muted)}.calendar{border:1px solid var(--line);padding:var(--s8)}.calendar-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:var(--s4);font-size:var(--small)}.calendar-heading strong{font:var(--s8)/1 Georgia,serif;color:var(--red)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:var(--s2);margin-top:var(--s6);font-variant-numeric:tabular-nums}.calendar-grid span{min-height:32px;display:grid;place-items:center}.calendar-grid .weekday{font-size:.75rem;color:var(--muted)}.calendar-grid .wedding-day{position:relative;isolation:isolate;color:var(--white);font-weight:700}.calendar-grid .wedding-day:before{content:"";position:absolute;width:40px;height:36px;background:var(--red);clip-path:polygon(50% 95%,8% 54%,2% 37%,5% 20%,18% 8%,34% 8%,50% 23%,66% 8%,82% 8%,95% 20%,98% 37%,92% 54%);z-index:-1}.calendar>p{font-size:.75rem;margin-top:var(--s6);display:flex;align-items:center;gap:var(--s2)}.calendar-key{width:8px;height:8px;background:var(--red);border-radius:50%}.rsvp-section{background:var(--red);color:var(--paper)}.rsvp-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s24);align-items:center}.rsvp-section h2,.rsvp-section .small-happiness{color:var(--paper)}.rsvp-grid>div>p{margin-top:var(--s6);max-width:38ch}.handwritten{font:var(--s8)/1.5 var(--display);color:var(--gold)}form{display:flex;flex-direction:column;align-items:stretch;gap:var(--s3)}form>label,legend{font-size:var(--small)}input[type=text],input:not([type]),textarea{display:block;width:100%;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:0;padding:var(--s3) var(--s4);min-height:48px;font-size:1rem}textarea{resize:vertical;min-height:128px}input::placeholder,textarea::placeholder{color:var(--muted)}fieldset{border:0;padding:0;margin:var(--s4) 0;min-width:0}legend{margin-bottom:var(--s3)}.radio-option{display:flex;gap:var(--s3);align-items:center;min-height:52px;padding:var(--s3) var(--s4);border:1px solid var(--gold);margin-bottom:var(--s3);cursor:pointer}.radio-option input{width:20px;height:20px;accent-color:var(--red);flex-shrink:0}.radio-option span:last-child:not(:nth-child(2)){margin-left:auto}.radio-option:has(input:checked){background:var(--paper);color:var(--red-dark)}.rsvp-section .button{background:var(--paper);color:var(--red);border-color:var(--paper)}.rsvp-section .button:hover{background:var(--paper-dark)}.form-status{min-height:var(--s6);font-size:var(--small)}.form-status.error{color:var(--error)}.form-status.success{color:var(--success)}.rsvp-section .form-status.error,.rsvp-section .form-status.success{color:var(--paper);font-weight:700}.venue-section{display:grid;grid-template-columns:1fr 1fr;gap:var(--s24);align-items:center}.venue-panel{position:relative;min-height:440px;background:var(--paper-dark);border:1px solid var(--line);padding:var(--s8);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.venue-mark{position:absolute;top:var(--s6);right:var(--s6);font:var(--s8)/1 Georgia;color:var(--red)}.venue-address>span,.venue-caption{font-size:.75rem;letter-spacing:.1em}.venue-address>strong{display:block;font:8rem/1.2 Georgia,serif;color:var(--red)}.venue-address>p{font:var(--s8)/1.4 var(--display);color:var(--red)}.venue-caption{position:absolute;bottom:var(--s6)}.venue-copy>p{margin-top:var(--s4)}.venue-copy>h3{font:var(--s8)/1.3 var(--display);color:var(--red);margin-top:var(--s4)}.venue-copy>.button{margin-top:var(--s8)}.timeline-section{background:var(--paper-dark);border-block:1px solid var(--line)}.timeline-heading{text-align:center}.timeline-heading p{margin-top:var(--s4)}.timeline{display:grid;grid-template-columns:repeat(6,1fr);list-style:none;padding:0;margin:var(--s12) 0 0}.timeline li{position:relative}.timeline time{font:var(--s8)/1.5 Georgia,serif;color:var(--red)}.timeline-dot{display:block;height:32px;position:relative}.timeline-dot:before{content:"";position:absolute;top:12px;left:0;width:100%;height:1px;background:var(--line)}.timeline-dot:after{content:"";position:absolute;top:8px;left:0;width:8px;height:8px;background:var(--red);border-radius:50%}.timeline h3{font:var(--small)/1.5 var(--body);max-width:12ch}.guestbook{display:grid;grid-template-columns:1fr 1fr;gap:var(--s24);align-items:center}.guestbook-intro h2{font-size:clamp(2.5rem,4vw,4rem)}.guestbook-intro>p:not(.eyebrow){margin-top:var(--s6)}.guestbook-intro img{width:160px;margin-top:var(--s8)}.guestbook form label:not(:first-child){margin-top:var(--s3)}.guestbook .button{margin-top:var(--s3)}.privacy-note{font-size:.75rem;color:var(--muted)}.closing{position:relative;isolation:isolate;overflow:hidden;text-align:center;border-top:1px solid var(--line);padding:var(--s24) var(--s8);background:var(--paper-dark)}.closing h2{font-size:clamp(2rem,5vw,4rem);margin:var(--s6) 0}.closing h2 span{font-family:Georgia,serif;font-size:.65em}.closing>p{position:relative;z-index:1;font-size:var(--small)}.closing>img{position:absolute;width:240px;left:-64px;bottom:-96px;transform:rotate(-35deg);z-index:-1}.closing .text-link{margin-top:var(--s6)}.cover[hidden]{display:none}.cover{position:fixed;inset:0;z-index:var(--z-modal);background:var(--red-dark);color:var(--paper);display:grid;place-items:center;padding:var(--s6);overflow-y:auto;transition:opacity .6s var(--ease),transform .6s var(--ease)}.cover.leaving{opacity:0;transform:scale(1.04);pointer-events:none}.cover-frame{isolation:isolate;position:relative;overflow:hidden;width:min(100%,480px);padding:var(--s8) var(--s8) var(--s12);text-align:center;border:1px solid var(--gold);outline:1px solid var(--gold);outline-offset:-8px;min-height:560px;display:flex;flex-direction:column;align-items:center;justify-content:center}.cover-hy{width:64px;margin-bottom:var(--s6)}.cover-frame>p:first-of-type{letter-spacing:.12em;font-size:.75rem}.cover-frame h2{font:clamp(2.5rem,6vh,3.5rem)/1.2 var(--display);color:var(--paper);margin:var(--s4) 0}.cover-frame h2 span{display:block;font:var(--s6)/1.6 Georgia}.cover-date{font:var(--s6)/1.5 Georgia;letter-spacing:.1em}.cover-invite{font-size:var(--small);margin:var(--s6) 0}.cover-button{background:var(--paper);color:var(--red-dark);border:0;padding:var(--s3) var(--s8);min-height:48px;display:flex;gap:var(--s8);align-items:center}.cover-flower{position:absolute;width:240px;left:-96px;bottom:-64px;z-index:-1;opacity:.45;transform:rotate(-20deg)}@keyframes sway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes settle{0%{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}@media(min-width:1600px){.hero{padding-inline:var(--s24)}}@media(max-width:1000px){.site-header{padding-inline:var(--s6)}nav{gap:var(--s6)}.hero{padding-inline:var(--s8);min-height:700px}.hero-art{height:480px}.hero-lantern{right:var(--s8);width:96px}.hero-copy{padding-top:var(--s8)}.reception-grid,.date-section,.rsvp-grid,.venue-section,.guestbook{gap:var(--s12)}.reception-ticket{padding:var(--s8)}.hero-bottom{left:var(--s8);right:var(--s8)}.timeline{grid-template-columns:repeat(3,1fr);row-gap:var(--s8)}}@media(max-width:640px){.section-wrap{padding:var(--s12) var(--s6)}.site-header{padding:var(--s3) var(--s6);min-height:64px}.site-header nav{display:none}.header-rsvp{font-size:.75rem;gap:var(--s3)}.monogram{font-size:var(--s6)}.hero{min-height:auto;grid-template-columns:1fr;padding:var(--s12) var(--s6) var(--s16);text-align:center}.hero-copy{padding:0;z-index:3}.eyebrow{font-size:.75rem;margin-bottom:var(--s6)}h1{font-size:clamp(2.75rem,12vw,4rem);max-width:none}h1 span{display:inline;font-size:.5em;padding:0 var(--s2)}.hero-date{font-size:var(--s6);margin-top:var(--s4)}.hero-location{font-size:.75rem}.hero-copy .text-link{display:none}.hero-art{height:400px;width:min(100%,360px);margin:var(--s8) auto 0}.hero-flower{width:144px;left:-64px;top:-32px}.hero-lantern{width:72px;right:-24px;top:-12px;opacity:.65}.hero-cloud{width:120px}.hero-bottom{left:var(--s6);right:var(--s6);bottom:var(--s6);justify-content:center;font-size:.6rem}.hero-bottom span:last-child{display:none}.double-happiness{width:48px;left:calc(50% - 24px);top:var(--s6)}.art-caption{font-size:var(--s6)}.art-orbit{inset:var(--s4) var(--s2) 0}.art-cloud{bottom:-16px}.families{grid-template-columns:1fr;gap:var(--s6);margin-top:var(--s8)}.family-divider{font-size:var(--s6)}.full-names{grid-template-columns:1fr;gap:var(--s4);padding-top:var(--s8);margin-top:var(--s8)}.full-names h3{font-size:var(--s8)}.full-names>span{font-size:var(--s6)}.ceremony strong{font-size:var(--small)}.reception-grid,.date-section,.rsvp-grid,.venue-section,.guestbook{grid-template-columns:1fr;gap:var(--s8)}.reception-intro{text-align:center}.reception-intro>p:not(.eyebrow){margin-inline:auto}.reception-intro>img,.guestbook-intro>img{display:none}.reception-intro h2,.guestbook-intro h2{font-size:2.5rem}.reception-ticket{padding:var(--s8) var(--s6)}.event-date strong{font-size:5rem}.event-date{gap:var(--s4)}.countdown-side{text-align:center}.countdown{gap:var(--s4)}.countdown strong{font-size:2.5rem}.calendar{padding:var(--s6)}.rsvp-grid>div{text-align:center}.rsvp-grid>div>p{margin-inline:auto}.venue-panel{min-height:360px}.venue-copy{text-align:center}.timeline-heading h2{font-size:var(--s8)}.timeline{grid-template-columns:1fr 1fr;gap:var(--s8) var(--s6)}.timeline h3{max-width:none}.guestbook-intro{text-align:center}.guestbook-intro .eyebrow{margin-bottom:var(--s4)}.closing{padding:var(--s12) var(--s6)}.closing h2{font-size:var(--s8)}.closing>img{opacity:.45}.cover-frame{min-height:min(580px,90svh);padding:var(--s8) var(--s6)}.cover-hy{width:48px;margin-bottom:var(--s4)}.cover-invite{margin:var(--s4) 0}.cover-frame h2{font-size:clamp(2.25rem,6vh,3rem)}}.venue-actions{display:flex;align-items:center;gap:var(--s6);flex-wrap:wrap;margin-top:var(--s8)}@media(max-width:640px){.venue-actions{justify-content:center}}.cover{background:transparent;isolation:isolate;transition:none;overflow:hidden}.cover:before,.cover:after{content:"";position:absolute;inset-block:0;width:50%;background:var(--red-dark);z-index:-1;transition:transform 1s var(--ease) .3s}.cover:before{left:0}.cover:after{right:0}.cover.leaving{opacity:1;transform:none;pointer-events:auto}.cover.leaving:before{transform:translate(-101%)}.cover.leaving:after{transform:translate(101%)}.cover-frame{transition:opacity .35s var(--ease),transform .5s var(--ease)}.cover.leaving .cover-frame{opacity:0;transform:scale(.92)}.cover-button{position:relative;overflow:hidden;align-self:center;justify-content:center;margin-inline:auto}.cover-button:after{content:"";position:absolute;inset:0;background:var(--gold);opacity:.25;transform:translate(-110%) skew(-20deg);animation:invitation-sheen 4s var(--ease) infinite;pointer-events:none}.cover-button:active{transform:scale(.96)}@keyframes invitation-sheen{0%,65%{transform:translate(-110%) skew(-20deg)}to{transform:translate(110%) skew(-20deg)}}.cover-open .hero-copy,.cover-open .couple-art{opacity:0;transform:translateY(64px)}.opening-invitation .hero-copy,.opening-invitation .couple-art{animation:couple-entrance 1.1s var(--ease) .3s both}@keyframes couple-entrance{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.opening-invitation .hero-copy,.opening-invitation .couple-art{opacity:1;transform:none}html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
