:root{--paper:#faf6ee;--ink:#353d33;--muted:#666b60;--coral:#a54b39;--line:#deded0;--serif:Georgia,'Times New Roman',serif;--sans:'Avenir Next',Avenir,'Segoe UI',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.7 var(--sans)}body.entrance-active{overflow:hidden}[hidden]{display:none!important}a{color:inherit;text-underline-offset:5px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid #8a472f;outline-offset:6px}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}h2{font:clamp(34px,4vw,51px)/1.17 var(--serif);letter-spacing:-1.6px}h2 em{font-weight:400;color:var(--coral)}.section-shell{max-width:1230px;padding-left:52px;padding-right:52px;margin:auto}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2.3px;text-transform:uppercase}.button{display:inline-flex;align-items:center;justify-content:center;gap:30px;background:var(--coral);color:#fff9ed;border:1px solid var(--coral);padding:14px 23px;font-size:12px;letter-spacing:.3px;text-decoration:none;cursor:pointer;transition:background .2s,transform .2s}.button:hover{background:#8c3d30;transform:translateY(-2px)}.button span{font-size:18px}.text-button{border:0;background:transparent;color:inherit;cursor:pointer;padding:10px 0;font-size:11px}.text-button:hover{text-decoration:underline}.skip-link{position:fixed;left:15px;top:-100px;z-index:100;background:var(--paper);padding:10px}.skip-link:focus{top:12px}.demo-banner{background:#e8e9dc;text-align:center;min-height:31px;font-size:10px;letter-spacing:.2px;padding:5px 15px;color:#526048}.site-header{max-width:1334px;min-height:95px;margin:auto;padding:0 52px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:30px}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:14px;letter-spacing:3px}.brand-icon{font-size:31px;color:var(--coral);line-height:1}.site-header nav{display:flex;gap:29px;font-size:11px}.site-header nav a{text-decoration:none;padding:10px 0}.site-header nav a:hover{color:var(--coral)}.header-cta{font-size:11px;color:var(--coral);text-decoration:none;border-bottom:1px solid #c99580;padding-bottom:5px;white-space:nowrap}.header-cta span{margin-left:17px}
.hero{display:grid;grid-template-columns:1fr 1fr;position:relative;min-height:760px;padding-top:51px;padding-bottom:100px;gap:20px;align-items:center}.hero-copy{padding:10px 0 10px 20px;min-width:0}.hero .eyebrow{font-size:9px;letter-spacing:1.9px;display:flex;align-items:center;gap:10px}.tiny-flower{color:var(--coral);font-size:21px}.hero h1{font:clamp(65px,8.5vw,110px)/.93 var(--serif);letter-spacing:-4px;margin:27px 0 22px;display:flex;flex-direction:column;align-items:flex-start;overflow-wrap:anywhere}.hero h1 em{font:italic 51px/1 var(--serif);color:var(--coral);margin:2px 0 3px 110px}.hero-tagline{white-space:pre-line;font:italic 22px/1.4 var(--serif);color:#66705b;margin-bottom:25px}.hero-date{display:flex;align-items:center;gap:13px;font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase}.hero-date>span{height:1px;width:22px;background:#a0a58e}.hero-place{font-size:11px;color:var(--muted);margin:5px 0 25px}.hero-note{font-size:10px;color:var(--muted);margin-top:14px}.hero-art{position:relative;min-width:0}.hero-art>img{width:100%;max-height:605px;object-fit:contain}.art-caption{text-align:center;font:italic 14px var(--serif);color:#606a54;margin-bottom:12px}.art-caption span{color:var(--coral);margin-right:8px}.art-stamp{position:absolute;right:-5px;bottom:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:116px;height:116px;border:1px solid #bac0a9;border-radius:50%;background:#faf6eef2;transform:rotate(12deg);font-size:7px;line-height:1;letter-spacing:1.8px}.art-stamp span{font:italic 22px var(--serif);letter-spacing:-.3px;color:var(--coral)}.scroll-hint{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);display:flex;gap:11px;align-items:center;color:var(--muted);font-size:10px;letter-spacing:1px;text-decoration:none;white-space:nowrap}.scroll-hint span{font-size:24px;color:var(--coral)}.welcome{text-align:center;padding-top:90px;padding-bottom:70px;border-top:1px solid var(--line)}.welcome .eyebrow{color:var(--coral);margin-bottom:20px}.welcome>p:not(.eyebrow){max-width:580px;margin:23px auto 35px;font-size:13px;color:var(--muted);line-height:1.9}.tradition-divider{display:flex;align-items:center;justify-content:center;gap:24px;font-size:24px;color:#8b7348}.tradition-divider span{width:90px;height:1px;background:var(--line)}
.story{display:grid;grid-template-columns:1fr 1fr;gap:80px;padding-top:55px;padding-bottom:105px;align-items:center}.story-heading .eyebrow{color:var(--coral);margin-bottom:20px}.story h2{font-size:40px}.story-heading>p:not(.eyebrow){max-width:390px;color:var(--muted);font-size:12px;margin:22px 0}.handwritten{display:block;color:#8d654e;font:italic 20px var(--serif);transform:rotate(-4deg);margin:35px 0}.story-timeline{border-left:1px solid #cdd1bd;margin-left:10px;padding-left:31px;display:grid;gap:30px}.chapter{position:relative}.chapter:before{content:"";position:absolute;left:-36px;top:8px;border:1px solid #a68e63;background:var(--paper);width:7px;height:7px;border-radius:50%}.chapter-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--coral)}.chapter-meta span{color:var(--muted)}.chapter h3{font:23px/1.3 var(--serif);margin:9px 0}.chapter>p{font-size:12px;color:var(--muted);line-height:1.9}
.celebrations{background:#f0ede4;padding:75px 0 55px;border-top:1px solid #e8e3d8;border-bottom:1px solid #e8e3d8}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:35px}.section-heading .eyebrow{color:var(--coral);margin-bottom:14px}.section-heading h2{font-size:43px}.section-heading>p{font:italic 15px/1.5 var(--serif);color:var(--muted);padding-bottom:4px;min-width:145px}.event-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.event-card{padding:26px 26px 22px;background:#faf6ee;border:1px solid #e2dfd4;position:relative;transition:transform .2s;overflow-wrap:anywhere}.event-card:hover{transform:translateY(-4px)}.event-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;margin-bottom:15px;color:#8b5543;background:#f0ded7}.event-icon svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.tone-sand .event-icon{background:#ede2cb;color:#86622b}.tone-sage .event-icon{background:#e1e7d5;color:#596b46}.tone-yellow .event-icon{background:#f5e6b9;color:#956c1c}.tone-lavender .event-icon{background:#e7e0e9;color:#785b7e}.tone-peach .event-icon{background:#f2ded0;color:#955333}.event-number{position:absolute;right:24px;top:32px;font:italic 14px var(--serif);color:#747760}.event-card h3{font:29px/1.3 var(--serif);letter-spacing:-.6px}.event-subtitle{font:italic 13px/1.5 var(--serif);color:#80674f;margin:5px 0 11px}.event-description{font-size:11px;color:var(--muted);min-height:43px}.event-details{margin-top:19px;border-top:1px solid var(--line);padding-top:14px;display:grid;gap:4px;font-size:10px}.event-details time{font-weight:600;font-size:10px}.event-details a{color:var(--muted);width:fit-content;padding:3px 0}.dress-code{font-size:10px;color:var(--muted);margin-top:12px;display:flex;gap:6px;align-items:baseline}.dress-code span:first-child{color:#846748}.event-footnote{text-align:center;margin-top:27px;font-size:10px;color:var(--muted)}
.people{text-align:center;padding-top:90px;padding-bottom:90px}.people .eyebrow{color:var(--coral);margin-bottom:17px}.people h2{font-size:43px}.couple-grid{max-width:900px;margin:42px auto 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:75px}.portrait{width:205px;height:240px;overflow:hidden;border-radius:120px 120px 12px 12px;margin:auto;background:#e8e9dc;border:8px solid #f1eee4;outline:1px solid #d5dac5}.portrait img{width:100%;height:100%;object-fit:cover}.portrait svg{display:block;width:100%;height:100%}.person-label{font-size:9px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-top:25px}.person-card h3{font:33px var(--serif);margin:4px 0 7px;overflow-wrap:anywhere}.person-roots{font:italic 14px var(--serif);color:var(--coral)}.person-bio{font-size:12px;color:var(--muted);margin:17px auto 0;max-width:335px;line-height:1.9}.location{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:70px;padding-top:65px;padding-bottom:95px;border-top:1px solid var(--line);align-items:center}.location-illustration svg{width:100%;display:block}.map-label{display:block;text-align:center;margin-top:18px;color:#7a6a4e;font:italic 15px var(--serif)}.location .eyebrow{color:var(--coral);margin-bottom:19px}.location h2{font-size:40px}.location-copy>p:not(.eyebrow){font-size:12px;color:var(--muted);margin:18px 0 20px}.venue{padding:15px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.venue h3{font:20px var(--serif)}.venue p{font-size:11px;color:var(--muted);margin:6px 0}.venue a{font-size:11px;color:var(--coral);display:inline-block;padding:5px 0}.travel-note{font-size:11px;color:var(--muted);border-left:2px solid #b5bd9e;padding-left:13px;margin-top:18px}.closing{text-align:center;padding:80px 25px 75px;background:#e9ecdf}.closing .eyebrow{color:#52633f;margin-bottom:21px}.closing h2{font-size:49px}.closing p:not(.eyebrow){max-width:440px;margin:21px auto 24px;font-size:12px;color:#58634b}.closing-flower{display:block;margin-top:25px;font-size:39px;color:#73815c;line-height:1}footer{min-height:140px;padding-top:28px!important;padding-bottom:24px!important;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}footer .brand{font:italic 21px var(--serif);letter-spacing:0}footer>p{font-size:10px;color:var(--muted)}footer>span{width:100%;text-align:center;font-size:10px;color:#7c634d}.error-note{padding:25px;background:#f6e1ca;color:#643c2f;position:fixed;bottom:0;left:0;right:0;z-index:100;font-size:14px}
.entrance{position:fixed;inset:0;z-index:90;background:#392a28;color:#ead6aa;overflow:auto;display:grid;place-items:center;transition:opacity .7s}.gate{position:absolute;top:0;bottom:0;min-height:100%;width:50%;background:repeating-linear-gradient(90deg,transparent 0,transparent 36px,#bb935830 37px,#bb935830 39px,transparent 40px),#392a28;border:1px solid #a27a45;transition:transform 1.8s cubic-bezier(.65,0,.2,1);overflow:hidden}.gate-left{left:0;border-right:3px solid #b7955f}.gate-right{right:0;border-left:3px solid #b7955f}.gate:after{content:"❋";position:absolute;top:47%;color:#ad854c;font-size:100px;opacity:.5}.gate-left:after{right:-50px}.gate-right:after{left:-50px}.gate-arch{position:absolute;inset:35px 23px;border:1px solid #b7955f70;border-radius:50% 50% 0 0}.gate-arch:before{content:"";position:absolute;inset:18px;border:1px solid #b7955f50;border-radius:50% 50% 0 0}.entrance-content{position:relative;z-index:2;text-align:center;padding:35px 20px;max-width:600px;transition:opacity .5s}.entrance .eyebrow{font-size:9px;letter-spacing:2px}.entrance h2{font:clamp(46px,7vw,72px)/1.08 var(--serif);color:#f4e7ca;letter-spacing:-1.4px;margin:23px 0 5px;text-shadow:0 2px 15px #392a28}.entrance .button{background:#ead6aa;border-color:#ead6aa;color:#392a28;min-width:210px}.entrance .button:hover{background:#fff1d2}.entrance-skip{display:block;margin:10px auto 0;color:#e3cca4}.ritual{width:240px;height:220px;position:relative;margin:10px auto 20px}.ritual-ring{position:absolute;inset:30px 35px;border:1px dashed #caa35a;border-radius:50%;box-shadow:0 0 0 12px #b58b3a12,0 0 0 13px #b58b3a30}.flame{position:absolute;left:100px;top:85px;color:#f5bd56;font-size:45px;text-shadow:0 0 24px #efa951}.orbit{position:absolute;inset:0;animation:circle 16s linear infinite}.orbit-couple{position:absolute;left:75px;top:-3px;width:90px;height:117px;animation:counter-circle 16s linear infinite;filter:drop-shadow(0 3px 6px #211714)}.orbit-couple svg{width:100%;height:100%}.entrance.is-opening .gate-left{transform:translateX(-100%)}.entrance.is-opening .gate-right{transform:translateX(100%)}.entrance.is-opening .entrance-content{opacity:0;pointer-events:none}.entrance.is-fading{opacity:0;pointer-events:none}@keyframes circle{to{transform:rotate(360deg)}}@keyframes counter-circle{to{transform:rotate(-360deg)}}
.three-canvas{position:fixed;inset:0;z-index:1;pointer-events:none;width:100%;height:100%}.three-ready>.gate{visibility:hidden}.three-ready .ritual>*{visibility:hidden}.three-status{font-size:10px;color:#e3cca4;max-width:290px;margin:10px auto 0}.image-error{font-size:12px;padding:20px;color:var(--coral)}
@media(min-width:1450px){.hero{min-height:830px}.hero-art>img{max-height:660px}}
@media(max-width:1000px){.section-shell{padding-left:32px;padding-right:32px}.site-header{padding:0 32px}.site-header nav{gap:17px;font-size:10px}.hero{min-height:690px}.hero-copy{padding-left:0}.hero h1{font-size:90px}.hero .eyebrow{font-size:8px}.art-stamp{width:95px;height:95px;right:0}.story{gap:45px}.story h2,.location h2{font-size:35px}.section-heading h2{font-size:37px}.event-card{padding:22px 20px}.event-description{min-height:63px}.location{gap:35px}.couple-grid{gap:40px}}
@media(max-width:700px){.section-shell{padding-left:23px;padding-right:23px}.site-header{padding:0 23px;min-height:78px;flex-wrap:wrap;gap:0}.brand{font-size:12px;letter-spacing:2px}.brand-icon{font-size:27px}.site-header nav{order:3;justify-content:space-between;width:100%;padding-bottom:8px;gap:8px;font-size:10px}.site-header>.brand,.header-cta{margin:14px 0}.header-cta{font-size:10px}.demo-banner{font-size:9px;line-height:1.5}.hero{grid-template-columns:minmax(0,1fr);padding-top:39px;padding-bottom:74px;gap:28px;min-height:0;text-align:center}.hero .eyebrow{justify-content:center;font-size:8px}.hero h1{align-items:center;font-size:86px;margin:23px 0 18px}.hero h1 em{font-size:37px;margin:3px 0 5px}.hero-tagline{font-size:21px;margin-bottom:22px}.hero-date{justify-content:center;font-size:10px}.hero-place{margin-bottom:23px}.hero-art{max-width:460px;width:100%;margin:auto;padding:0 14px}.hero-art>img{max-height:460px}.art-caption{font-size:13px}.art-stamp{bottom:0;right:0;width:90px;height:90px;font-size:6px;gap:4px}.art-stamp span{font-size:18px}.scroll-hint{bottom:14px}.welcome{padding-top:54px;padding-bottom:35px}.welcome h2{font-size:36px}.welcome>p:not(.eyebrow){font-size:12px}.eyebrow{font-size:8px;letter-spacing:1.7px}.story{grid-template-columns:minmax(0,1fr);padding-top:33px;padding-bottom:55px;gap:25px}.story h2{font-size:34px}.handwritten{margin:26px 0 15px}.story-heading>p:not(.eyebrow){max-width:none}.story-timeline{margin-left:5px;padding-left:26px;gap:25px}.chapter:before{left:-31px}.celebrations{padding:49px 0 35px}.section-heading{display:block;margin-bottom:27px}.section-heading h2{font-size:35px}.section-heading>p{margin-top:18px;font-size:14px}.section-heading>p br{display:none}.event-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.event-card{padding:20px 16px}.event-card h3{font-size:25px}.event-number{right:16px;top:26px;font-size:12px}.event-icon{width:37px;height:37px;margin-bottom:14px}.event-icon svg{width:23px;height:23px}.event-subtitle{font-size:12px;min-height:36px}.event-description{font-size:11px;min-height:68px}.event-details{font-size:10px;gap:6px}.dress-code{font-size:10px;line-height:1.7}.event-footnote{font-size:10px}.people{padding-top:55px;padding-bottom:55px}.people h2{font-size:35px}.couple-grid{gap:43px;grid-template-columns:minmax(0,1fr);margin-top:32px}.portrait{width:185px;height:220px}.person-card h3{font-size:30px}.person-bio{max-width:350px}.location{grid-template-columns:minmax(0,1fr);gap:35px;padding-top:43px;padding-bottom:52px}.location-illustration{max-width:350px;margin:auto;order:2}.location h2{font-size:35px}.closing{padding:52px 23px 45px}.closing h2{font-size:39px}footer{justify-content:center;gap:12px;text-align:center}footer>p{width:100%}footer .brand{font-size:20px}.entrance h2{font-size:52px}.entrance .eyebrow{font-size:8px}.gate-arch{inset:15px 10px}.gate-arch:before{inset:12px}}
@media(max-width:370px){.event-grid{grid-template-columns:1fr}.event-subtitle,.event-description{min-height:0}.hero h1{font-size:72px}.hero .eyebrow{letter-spacing:1px}.section-shell{padding-left:18px;padding-right:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.orbit{transform:rotate(55deg)}.orbit-couple{transform:rotate(-55deg)}}
