:root{--forest:#334b3d;--forest-deep:#263a30;--sage:#8b9b81;--cream:#f8f4ee;--blush:#e9c7bd;--ink:#38483c;--muted:#778075;--gold:#c5a66c;--serif:"Cormorant Garamond",Georgia,serif;--script:"Italianno",cursive;--sans:"DM Sans",sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.75}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}.cover{height:100svh;min-height:700px;position:relative;overflow:hidden;background:#d5c8b6;color:white;display:grid;place-items:center;text-align:center}.cover-art,.cover-shade,.closing-art,.closing-overlay{position:absolute;inset:0}.cover-art{overflow:hidden;transform:scale(1.035)}.cover-scene{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;will-change:opacity,transform}.scene-castle{background-image:url("assets/chateau-garden.jpg");background-position:center 56%;animation:castle-film 20s ease-in-out 1 forwards}.scene-entrance{background-image:url("assets/entrance-close.jpg");background-position:center 55%;opacity:0;animation:entrance-film 20s ease-in-out 1 forwards}.scene-doors-open{background-image:url("assets/doors-open.jpg");background-position:center 55%;opacity:0;animation:doors-film 20s ease-in-out 1 forwards}.scene-garden{background-image:url("assets/garden-gate.jpg");background-position:center 58%;opacity:0;animation:garden-film 20s ease-in-out 1 forwards}.cover-shade{background:linear-gradient(180deg,rgba(255,249,239,.19),rgba(250,242,227,.08) 55%,rgba(27,40,33,.10))}.cover-content{position:relative;z-index:1;width:min(90%,560px);padding:56px 20px 70px;color:var(--forest-deep);text-shadow:0 1px 10px rgba(255,255,255,.62);animation:fade-rise 1.2s both}.cover-title{animation:title-reveal 20s ease-in-out 1 forwards}.cover-cta{animation:fade-rise 1.1s .25s both}.eyebrow{font-size:10px;letter-spacing:.28em;font-weight:600;margin:0 0 14px}.cover .eyebrow{letter-spacing:.38em}.cover h1{font-family:var(--script);font-weight:400;line-height:.9;font-size:clamp(62px,12vw,100px);margin:0 auto 18px;display:flex;flex-direction:column;align-items:center}.cover h1 b{font-family:var(--serif);font-style:italic;font-weight:400;font-size:26px;line-height:1.25}.cover-date{font-size:12px;letter-spacing:.14em;margin:0 0 30px}.cover-rule{color:var(--gold);font-size:19px;line-height:1;margin:0 0 16px}.guest-card{border-top:1px solid rgba(51,75,61,.42);border-bottom:1px solid rgba(51,75,61,.42);background:rgba(250,247,239,.25);max-width:320px;margin:0 auto 22px;padding:13px 14px 15px;display:grid;gap:1px}.small-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase}.guest-card strong{font-family:var(--serif);font-size:22px;font-weight:500}.guest-note{font-size:11px;line-height:1.5;opacity:.92}.open-button,.submit-button{border:1px solid rgba(255,255,255,.88);background:rgba(47,70,56,.84);color:white;padding:12px 22px;letter-spacing:.08em;font-size:11px;cursor:pointer;transition:background .25s,transform .25s}.open-button:hover,.submit-button:hover{background:var(--forest-deep);transform:translateY(-2px)}.open-button span{color:#ead49f;margin-right:8px}.scroll-hint{font-family:var(--serif);font-style:italic;font-size:14px;margin:17px 0 0;opacity:.94}.cover-bottom{position:absolute;bottom:20px;z-index:1;letter-spacing:.45em;color:var(--forest);font-size:15px}.petals{position:fixed;inset:0;z-index:5;pointer-events:none;overflow:hidden}.petals i{position:absolute;top:-30px;color:#eec6c6;font-style:normal;font-size:19px;opacity:0;animation:petal-fall 13s linear infinite}.petals i:nth-child(1){left:12%;animation-delay:0s}.petals i:nth-child(2){left:42%;animation-delay:4s;font-size:14px}.petals i:nth-child(3){left:72%;animation-delay:8s}.petals i:nth-child(4){left:90%;animation-delay:2.5s;font-size:13px}.invitation{display:none}.invitation.is-open{display:block;animation:fade-in .9s both}.opened-photo{height:55.5svh;min-height:430px;max-height:790px;position:relative;overflow:hidden;display:grid;place-items:center;text-align:center;color:white;background:#e2d4c0}.opened-photo-art,.opened-photo-shade{position:absolute;inset:0}.opened-photo-art{display:block;width:100%;height:100%;object-fit:cover;object-position:center 70%;animation:opened-photo-drift 22s ease-in-out infinite alternate}.opened-photo-shade{background:linear-gradient(180deg,rgba(31,47,37,.04),rgba(31,47,37,.08) 42%,rgba(31,47,37,.44))}.opened-photo-caption{position:relative;z-index:1;margin-top:110px;padding:20px;text-shadow:0 2px 15px rgba(25,37,30,.4)}.opened-photo-caption .eyebrow{margin-bottom:2px;color:#fff6e6}.opened-photo-caption h2{margin:0;font-family:var(--serif);font-size:clamp(35px,6vw,64px);font-weight:400;line-height:1.08}.opened-photo-caption span{display:block;color:#f4ddb0;margin-top:12px;font-size:19px}.section-pad{padding:105px 7vw}.invitation .section-pad{opacity:0;transform:translateY(22px);transition:opacity .85s ease,transform .85s ease}.invitation .section-pad.is-visible{opacity:1;transform:translateY(0)}.intro{text-align:center;max-width:860px;margin:auto;padding-top:0;padding-bottom:86px}.ornament{font-family:var(--serif);font-size:28px;color:var(--gold);display:block;line-height:1;margin-bottom:14px}.intro h2,.section-heading h2,.story-copy h2,.rsvp-card h2,.closing h2{font-family:var(--serif);font-size:clamp(34px,5vw,54px);font-weight:400;line-height:1.06;color:var(--forest);margin:0 auto 20px}.intro h2{max-width:660px;font-size:clamp(31px,4.5vw,46px)}.intro-copy{max-width:620px;margin:0 auto 30px;color:#697267;font-family:var(--serif);font-size:19px;line-height:1.7}.couple-names{display:flex;justify-content:center;align-items:center;gap:18px;color:var(--forest);font-family:var(--script);font-size:clamp(46px,8vw,75px);line-height:1}.couple-names small{font-family:var(--serif);font-size:25px;color:var(--gold);font-style:italic}.family-line{font-size:11px;letter-spacing:.12em;color:var(--muted);margin-top:17px}.story{display:grid;grid-template-columns:minmax(280px,1fr) minmax(280px,.9fr);gap:9vw;align-items:center;max-width:1280px;margin:auto;background:#efe8df}.story-frame{position:relative;padding:13px;border:1px solid #c5a66c;max-width:470px;margin:auto}.story-image{min-height:550px;background:url("assets/chateau-garden.jpg") center 70%/cover no-repeat;filter:saturate(.8)}.frame-corner{position:absolute;color:var(--gold);font-size:30px;background:#efe8df;line-height:1}.top-left{top:-12px;left:-5px}.bottom-right{bottom:-12px;right:-5px;transform:rotate(180deg)}.story-copy{max-width:480px}.story-copy h2{margin-bottom:24px}.story-copy h2 em{font-family:var(--script);font-size:1.42em;color:#7b8e75;font-weight:400}.story-copy>p:not(.eyebrow){color:#697267;font-family:var(--serif);font-size:19px;line-height:1.8}.signature{font-family:var(--script);font-size:47px;color:var(--sage)}.event{background:#f3eee7;text-align:center}.section-heading{max-width:640px;margin:0 auto 36px}.section-heading>p:last-child{color:var(--muted);font-family:var(--serif);font-size:18px;margin:0}.countdown{display:flex;align-items:center;justify-content:center;gap:22px;margin:32px auto 53px;color:var(--forest)}.countdown div{display:grid;min-width:56px}.countdown strong{font-family:var(--serif);font-weight:400;font-size:35px;line-height:1.1}.countdown span{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.countdown i{font-style:normal;color:var(--gold);font-family:var(--serif);font-size:25px;margin-top:-9px}.event-cards{display:grid;grid-template-columns:repeat(2,minmax(0,340px));justify-content:center;gap:20px}.event-card{padding:28px 24px 30px;background:rgba(255,255,255,.56);border:1px solid #e3d7c7}.event-icon{display:block;font-family:var(--serif);font-size:23px;color:var(--gold);margin-bottom:4px}.event-card .eyebrow{margin:0;color:#84907f}.event-card h3{font-family:var(--serif);font-weight:500;color:var(--forest);font-size:25px;margin:9px 0 0}.event-card>p:not(.eyebrow){margin:0;color:#6d776b;font-size:13px}.event-card hr{width:45px;border:0;border-top:1px solid var(--gold);margin:19px auto}.event-card .venue-name{font-family:var(--serif);font-size:20px!important;color:var(--forest)!important}.event-card .venue-address{font-size:12px!important;max-width:245px;margin:4px auto 0!important}.text-link{display:inline-flex;gap:12px;align-items:center;color:var(--forest);border-bottom:1px solid #b9a985;text-decoration:none;font-size:12px;letter-spacing:.06em;margin-top:29px;padding-bottom:4px}.text-link span{font-size:16px}.gallery{text-align:center;max-width:1300px;margin:auto}.gallery-grid{display:grid;grid-template-columns:1fr .74fr 1fr;gap:15px;max-width:1040px;margin:42px auto 0}.gallery-tile{min-height:310px;background-image:url("assets/chateau-garden.jpg");background-size:cover;position:relative;display:flex;align-items:end;justify-content:center;padding:20px}.gallery-tile:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(27,41,32,.58))}.gallery-tile span{position:relative;z-index:1;color:white;font-family:var(--serif);font-style:italic;font-size:18px}.tile-one{background-position:12% 5%}.tile-two{background-position:50% 70%;min-height:360px;margin-top:-25px}.tile-three{background-position:85% 100%}.rsvp-section{background:#e8e9df;padding-top:86px;padding-bottom:86px}.rsvp-card{max-width:600px;background:#faf8f3;margin:auto;padding:50px clamp(24px,6vw,62px);text-align:center;border:1px solid #d4c8b6;box-shadow:0 16px 44px rgba(54,64,50,.07)}.rsvp-card h2{font-size:clamp(31px,5vw,43px)}.rsvp-intro{font-family:var(--serif);font-size:17px;color:var(--muted);margin:0 0 25px}.rsvp-card form{text-align:left;display:grid;gap:14px}.wishes{background:#f3eee7;text-align:center}.wishes-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:16px;max-width:1000px;margin:35px auto 0}.wish-card{background:#faf8f3;border:1px solid #e3d7c7;padding:24px 22px;text-align:center}.wish-message{margin:0 0 12px;font-family:var(--serif);font-size:19px;line-height:1.55;color:#697267;overflow-wrap:anywhere}.wish-flower{display:block;color:var(--gold);font-size:15px}.wish-name{margin:6px 0 0;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);font-weight:600}.empty-wishes{grid-column:1/-1;color:var(--muted);font-family:var(--serif);font-style:italic;font-size:18px;margin:0}.rsvp-card label{font-size:10px;letter-spacing:.08em;color:#697267;display:grid;gap:5px}.field-note{font-size:10px;line-height:1.45;letter-spacing:0;color:#879083}.rsvp-card input,.rsvp-card select,.rsvp-card textarea{width:100%;background:#fff;border:1px solid #ddd5c9;color:var(--ink);border-radius:0;padding:11px 12px;font-size:13px;letter-spacing:0;outline-color:#94a28c}.rsvp-card textarea{resize:vertical}.submit-button{border:0;width:100%;margin-top:5px;display:flex;justify-content:center;gap:12px;align-items:center;padding:14px}.submit-button span{font-size:17px}.form-feedback{min-height:22px;text-align:center;margin:0;font-size:12px;color:var(--forest)}.closing{min-height:650px;display:grid;place-items:center;text-align:center;position:relative;overflow:hidden;color:white}.closing-art{background:url("assets/chateau-garden.jpg") center 35%/cover no-repeat;transform:scale(1.03)}.closing-overlay{background:rgba(38,57,45,.58)}.closing-content{position:relative;z-index:1;max-width:620px;padding:30px}.closing .eyebrow{color:#f5e4c2}.closing h2{color:white;font-size:clamp(38px,6vw,61px);text-shadow:0 2px 18px rgba(0,0,0,.16)}.closing-names{display:flex;justify-content:center;align-items:center;gap:12px;font-family:var(--script);font-size:48px;line-height:1.1}.closing-names b{font-family:var(--serif);font-size:20px;color:#f1d9a6;font-weight:400}.closing-flower{display:block;color:#f3d7b0;font-size:23px;margin-top:22px}.footer{display:flex;justify-content:center;align-items:center;gap:13px;padding:18px;color:#8b9587;background:#f5f1eb}.footer p{font-family:var(--serif);font-style:italic;font-size:15px;margin:0}.footer span{color:var(--gold);font-size:12px}.cover.is-closing{pointer-events:none;animation:cover-close .7s ease-in forwards}body.invitation-open .cover{height:100svh}body.invitation-open .cover-content{animation:fade-rise .8s both}@keyframes castle-film{0%,17%{opacity:1;transform:scale(1.04) translateY(0)}23%{opacity:0;transform:scale(1.13) translateY(-1%)}100%{opacity:0;transform:scale(1.13) translateY(-1%)}}@keyframes entrance-film{0%,17%{opacity:0;transform:scale(1.12) translateY(1%)}23%{opacity:1;transform:scale(1.04) translateY(0)}42%{opacity:1;transform:scale(1.12) translateY(-1%)}48%,100%{opacity:0;transform:scale(1.16) translateY(-2%)}}@keyframes doors-film{0%,42%{opacity:0;transform:scale(1.14) translateY(1%)}48%{opacity:1;transform:scale(1.04) translateY(0)}67%{opacity:1;transform:scale(1.12) translateY(-1%)}73%,100%{opacity:0;transform:scale(1.15) translateY(-2%)}}@keyframes garden-film{0%,67%{opacity:0;transform:scale(1.16) translateY(1%)}73%{opacity:1;transform:scale(1.04) translateY(0)}100%{opacity:1;transform:scale(1.12) translateY(-1%)}}@keyframes title-reveal{0%,68%{opacity:0;transform:translateY(14px)}76%,100%{opacity:1;transform:translateY(0)}}@keyframes cover-close{to{opacity:0;transform:scale(1.035);filter:blur(5px)}}@keyframes opened-photo-drift{to{transform:scale(1.07) translateY(-1%)}}@keyframes fade-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes petal-fall{0%{transform:translate3d(0,-10vh,0) rotate(0);opacity:0}12%{opacity:.65}85%{opacity:.4}100%{transform:translate3d(50px,110vh,0) rotate(520deg);opacity:0}}@media(max-width:700px){.cover{min-height:650px}.cover-scene{background-position-x:52%}.cover-content{padding:45px 15px 52px}.cover h1{font-size:clamp(61px,16vw,84px)}.section-pad{padding:75px 7vw}.opened-photo{height:55.5svh;min-height:390px;max-height:550px}.opened-photo-art{object-position:52% 62%}.intro{padding-top:0}.story{grid-template-columns:1fr;gap:36px}.story-frame{max-width:390px;width:100%}.story-image{min-height:410px}.story-copy{text-align:center;margin:auto}.event-cards{grid-template-columns:1fr;max-width:420px;margin:auto}.countdown{gap:12px}.countdown div{min-width:46px}.countdown strong{font-size:30px}.countdown span{font-size:8px}.gallery-grid{gap:8px}.gallery-tile{min-height:205px;padding:10px}.tile-two{min-height:240px;margin-top:-14px}.gallery-tile span{font-size:14px}.rsvp-section{padding-top:64px;padding-bottom:64px}.rsvp-card{padding:38px 22px}.closing{min-height:540px}.closing-names{font-size:40px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.cover-scene{animation:none!important;opacity:0!important}.scene-castle{opacity:1!important}.cover-title{animation:none!important;opacity:1!important;transform:none!important}.petals{display:none}}
