:root{--burgundy:#5a1024;--wine:#761f39;--rose:#d9a3ad;--blush:#f4e6e7;--pale:#fbf5f3;--ink:#181214;--cream:#fffaf7;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--cream);font-family:var(--sans);line-height:1.65}img{max-width:100%}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:1000;top:1rem;left:1rem;padding:.7rem 1rem;background:#fff;color:var(--burgundy);transform:translateY(-200%)}.skip-link:focus{transform:none}.hidden{display:none!important}
.site-header{position:absolute;z-index:20;top:0;left:0;width:100%;height:92px;padding:0 clamp(1.25rem,5vw,5rem);display:flex;align-items:center;justify-content:space-between;color:#fff;border-bottom:1px solid #ffffff3d}.monogram,.footer-monogram{font:500 1.5rem/1 var(--serif);letter-spacing:.12em;text-decoration:none}.monogram span,.footer-monogram span{color:var(--rose);font-style:italic}.site-header nav{display:flex;align-items:center;gap:2.25rem}.site-header nav a{text-decoration:none;text-transform:uppercase;font-size:.72rem;font-weight:600;letter-spacing:.15em}.site-header nav a:hover,.site-header nav a:focus-visible{color:#f5bdc9}.nav-rsvp{border:1px solid #ffffffa8;padding:.65rem 1rem}.menu-button{display:none;background:none;border:0;color:#fff;padding:.5rem}.menu-button span:not(.sr-only){display:block;width:26px;height:1px;background:currentColor;margin:7px}
.hero{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;color:#fff}.hero-image{position:absolute;inset:0;background:url("assets/alliance-hero.png") center/cover no-repeat;transform:scale(1.01)}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(25,8,12,.7) 0%,rgba(67,12,29,.42) 47%,rgba(14,5,8,.35)),linear-gradient(0deg,rgba(17,5,8,.5),transparent 50%)}.hero-content{position:relative;z-index:2;width:min(900px,90%);text-align:center;padding-top:4rem;text-shadow:0 2px 25px #15050d80}.eyebrow{margin:0 0 1rem;text-transform:uppercase;letter-spacing:.28em;font-size:.7rem;font-weight:600}.hero h1{margin:0;font:500 clamp(3.7rem,9vw,8rem)/.75 var(--serif);letter-spacing:-.045em}.hero h1 span{display:block}.hero h1 i{display:block;color:#efbdc8;font-size:.62em;font-weight:400;line-height:.9}.date-line{margin:2.2rem auto 0;display:flex;max-width:430px;align-items:center;gap:1.5rem}.date-line span{height:1px;background:#fff8;flex:1}.date-line p{font:500 1.1rem var(--serif);letter-spacing:.26em;white-space:nowrap;margin:0}.hero-place{text-transform:uppercase;letter-spacing:.35em;font-size:.65rem;margin:.7rem 0 2rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:1.5rem;padding:1rem 1.5rem;border:1px solid;text-transform:uppercase;letter-spacing:.13em;font:600 .7rem var(--sans);text-decoration:none;cursor:pointer;transition:.25s}.button-light{background:#fff;color:var(--burgundy);border-color:#fff}.button-light:hover{background:var(--blush);border-color:var(--blush)}.scroll-cue{position:absolute;z-index:2;right:2.5rem;bottom:2rem;text-decoration:none;text-transform:uppercase;letter-spacing:.2em;font-size:.55rem;writing-mode:vertical-rl;display:flex;align-items:center;gap:.7rem}.scroll-cue span{height:45px;width:1px;background:#fff8}
.section{padding:clamp(5rem,10vw,9rem) clamp(1.25rem,6vw,6rem)}.intro{text-align:center;background:var(--pale);position:relative;overflow:hidden}.intro:before,.intro:after{content:"";position:absolute;border:1px solid #d9a3ad45;border-radius:50%;width:300px;height:500px;transform:rotate(35deg)}.intro:before{left:-220px;top:-120px}.intro:after{right:-220px;bottom:-200px}.ornament{font:2rem var(--serif);color:var(--rose);margin-bottom:2rem}.burgundy{color:var(--burgundy)}h2{font:500 clamp(2.8rem,6vw,5.2rem)/.95 var(--serif);letter-spacing:-.035em;margin:.5rem 0 1.5rem}h2 em{color:var(--wine);font-weight:400}.intro-copy{max-width:650px;margin:0 auto;color:#5d4b50}.countdown{display:flex;justify-content:center;margin:4rem auto 0;max-width:720px}.countdown div{min-width:130px;padding:0 2rem;border-right:1px solid #d9c8c9}.countdown div:last-child{border:0}.countdown strong{display:block;font:500 clamp(2.3rem,5vw,4rem)/1 var(--serif);color:var(--burgundy)}.countdown span{text-transform:uppercase;letter-spacing:.17em;font-size:.6rem;color:#766568}
.schedule{background:var(--burgundy);color:#fff}.section-heading{text-align:center;max-width:740px;margin:0 auto 5rem}.section-heading>p:last-child{color:#dac6ca}.timeline{list-style:none;max-width:980px;margin:0 auto;padding:0;position:relative}.timeline:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#ffffff35}.timeline li{display:grid;grid-template-columns:1fr 80px 1fr;align-items:center;margin:0 0 3.5rem}.timeline time{font:500 clamp(2.2rem,5vw,3.7rem) var(--serif);color:#e7b6c1;text-align:right;padding-right:2.2rem}.timeline-dot{position:relative;z-index:2;margin:auto;width:47px;height:47px;border-radius:50%;background:var(--burgundy);border:1px solid #c77f90;display:grid;place-items:center;color:#f1c4cd}.timeline article{background:#fff;color:var(--ink);padding:2rem 2.2rem;min-height:190px;box-shadow:0 15px 40px #1c010b35}.timeline h3,.venue-card h3{font:500 2.15rem/1 var(--serif);margin:.2rem 0 1rem}.timeline article p:last-child{color:#6c5b60;margin:0;font-size:.9rem}.card-number{margin:0;color:#b87989;font-size:.6rem;letter-spacing:.2em}.timeline li:nth-child(even) time{grid-column:3;text-align:left;padding:0 0 0 2.2rem}.timeline li:nth-child(even) .timeline-dot{grid-column:2;grid-row:1}.timeline li:nth-child(even) article{grid-column:1;grid-row:1}
.venues{background:var(--pale)}.venues .section-heading{margin-bottom:3.5rem}.venues .section-heading>p:last-child{color:inherit}.venue-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;max-width:1100px;margin:auto}.venue-card{background:#fff;display:grid;grid-template-columns:44% 56%;min-height:380px;box-shadow:0 18px 55px #58102712}.venue-photo{position:relative;background-position:center;background-size:cover;overflow:hidden}.venue-photo:before{content:"";position:absolute;inset:0;background:linear-gradient(20deg,#501225b8,transparent)}.venue-mairie .venue-photo{background:linear-gradient(25deg,#5a1024cc,#d5a2ac44),url("https://images.unsplash.com/photo-1497366811353-6870744d04b2?auto=format&fit=crop&w=900&q=85") center/cover}.venue-dinner .venue-photo{background:linear-gradient(25deg,#311018b8,#d5a2ac22),url("https://images.unsplash.com/photo-1519167758481-83f550bb49b3?auto=format&fit=crop&w=900&q=85") center/cover}.venue-photo span{position:absolute;z-index:1;bottom:1.5rem;left:1.5rem;color:#fff;font:500 2.8rem var(--serif)}.venue-info{padding:3rem 2.3rem;display:flex;flex-direction:column;justify-content:center}.venue-info .eyebrow{color:var(--wine);font-size:.58rem}.venue-info address{font-style:normal;color:#6a5b5f;font-size:.9rem;margin-bottom:2rem}.text-link{text-transform:uppercase;letter-spacing:.12em;font-size:.65rem;font-weight:600;text-underline-offset:5px;color:var(--burgundy)}
.rsvp{background:var(--wine);color:#fff;position:relative;overflow:hidden}.rsvp:before{content:"F-Z & G";position:absolute;right:-3rem;top:-3rem;font:italic 14rem var(--serif);color:#ffffff08;white-space:nowrap}.rsvp-inner{position:relative;display:grid;grid-template-columns:minmax(250px,.75fr) minmax(500px,1.25fr);gap:clamp(3rem,8vw,8rem);max-width:1180px;margin:auto}.rsvp-copy{padding-top:2rem}.rsvp-copy h2 em{color:#efb7c4}.rsvp-copy>p:not(.eyebrow){max-width:390px;color:#e8d8db}.small-note{font-size:.8rem}.rsvp-form{background:#fff;color:var(--ink);padding:clamp(1.5rem,4vw,3.5rem);box-shadow:0 24px 70px #29000f55}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}.field{margin-bottom:1.7rem}.field label,legend{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;margin-bottom:.55rem}.field label span{font-size:.62rem;color:#7b6d71;text-transform:none;letter-spacing:0;font-weight:400}.field input,.field textarea{width:100%;border:0;border-bottom:1px solid #bdaeb1;padding:.75rem .2rem;font:1rem var(--sans);background:#fff;border-radius:0}.field textarea{resize:vertical}.field input:focus,.field textarea:focus{outline:2px solid #b55c75;outline-offset:4px}fieldset{border:0;margin:0 0 1.7rem;padding:0}.choice-grid{display:grid;gap:.7rem}.attendance{grid-template-columns:1fr 1fr}.choice-grid label{position:relative;cursor:pointer}.choice-grid input{position:absolute;opacity:0}.choice-grid label>span{display:flex;border:1px solid #d9ced0;min-height:52px;align-items:center;padding:.8rem 1rem;font-size:.85rem;transition:.2s}.choice-grid input:checked+span{border-color:var(--wine);background:var(--blush);box-shadow:inset 0 0 0 1px var(--wine)}.choice-grid input:focus-visible+span{outline:3px solid #b55c75;outline-offset:2px}.menu-choices{grid-template-columns:repeat(3,1fr)}.menu-choices label>span{min-height:115px;flex-direction:column;align-items:flex-start;justify-content:center}.menu-choices b{font:1.6rem var(--serif);color:var(--rose)}.menu-choices strong{font:500 1.3rem var(--serif)}.menu-choices small{color:#75676a}.consent{display:flex;align-items:flex-start;gap:.7rem;font-size:.7rem;color:#675a5e;margin:0 0 1.4rem}.consent input{accent-color:var(--wine);margin-top:.25rem}.button-submit{border:0;background:var(--burgundy);color:#fff;width:100%;min-height:56px}.button-submit:hover{background:#851f3e}.required-note{text-align:center;font-size:.62rem;color:#817377;margin:.8rem 0 0}
footer{background:#180e11;color:#fff;text-align:center;padding:4rem 1.25rem}.footer-monogram{font-size:2.3rem}.footer-monogram+p{text-transform:uppercase;letter-spacing:.24em;font-size:.65rem;color:#c9b9bd}.footer-love{font:italic 1.2rem var(--serif);color:#e0a9b6;margin:2rem 0}.footer-love+ a{text-transform:uppercase;font-size:.6rem;letter-spacing:.15em;text-underline-offset:5px}.reveal{opacity:0;transform:translateY(20px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:none}
@media (max-width:850px){.site-header{height:76px}.menu-button{display:block;position:relative;z-index:3}.site-header nav{position:fixed;inset:0;background:#4f0c20;display:flex;flex-direction:column;justify-content:center;gap:2rem;transform:translateX(100%);transition:.3s}.site-header nav.open{transform:none}.site-header nav a{font-size:.9rem}.scroll-cue{display:none}.venue-grid,.rsvp-inner{grid-template-columns:1fr}.rsvp-inner{gap:2rem}.rsvp-copy{text-align:center}.rsvp-copy>p:not(.eyebrow){margin-left:auto;margin-right:auto}.venue-card{min-height:340px}.countdown div{min-width:0;flex:1;padding:0 1rem}.rsvp-form{max-width:700px;width:100%;margin:auto}}
@media (max-width:600px){.hero{min-height:760px}.hero-image{background-position:63% center}.hero h1{font-size:3.7rem}.section{padding:5rem 1.2rem}.intro h2 br{display:none}.countdown{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.countdown div,.countdown div:last-child{border:0}.timeline:before{left:23px}.timeline li,.timeline li:nth-child(even){grid-template-columns:48px 1fr;align-items:start}.timeline time,.timeline li:nth-child(even) time{grid-column:2;grid-row:1;text-align:left;padding:0 0 .6rem;font-size:2rem}.timeline-dot,.timeline li:nth-child(even) .timeline-dot{grid-column:1;grid-row:1;width:45px;height:45px}.timeline article,.timeline li:nth-child(even) article{grid-column:2;grid-row:2;padding:1.5rem;min-height:0}.venue-card{grid-template-columns:1fr;min-height:auto}.venue-photo{min-height:220px}.venue-info{padding:2rem}.field-row,.attendance,.menu-choices{grid-template-columns:1fr}.menu-choices label>span{min-height:80px}.date-line{gap:.8rem}.hero-place{letter-spacing:.24em}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.site-header nav{transition:none}}
.button-submit:disabled{cursor:not-allowed;background:#8d747b}.activation-note{text-align:center;font-size:.72rem;color:#6e5f63;margin:.8rem auto;max-width:420px}
.hero-image{background-image:url("assets/fleurs-hero.webp")}.venue-mairie .venue-photo{background-image:linear-gradient(25deg,#5a102485,#d5a2ac18),url("assets/mairie-15.jpg")}.venue-dinner .venue-photo{background-image:linear-gradient(25deg,#31101872,#d5a2ac12),url("assets/table-du-cam-diner.jpg")}
.whatsapp{position:relative;overflow:hidden;background:var(--cream)}.whatsapp:before{content:"";position:absolute;width:430px;height:430px;right:-260px;top:-210px;border:1px solid #d9a3ad55;border-radius:50%}.whatsapp-inner{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,390px);align-items:center;gap:clamp(3rem,8vw,7rem);max-width:1050px;margin:auto}.whatsapp-copy>p:not(.eyebrow):not(.whatsapp-note){max-width:580px;color:#5d4b50}.button-whatsapp{margin-top:1.25rem;background:var(--burgundy);border-color:var(--burgundy);color:#fff}.button-whatsapp:hover,.button-whatsapp:focus-visible{background:var(--wine);border-color:var(--wine)}.whatsapp-note{margin:1rem 0 0;color:#78686c;font-size:.72rem}.whatsapp-qr{display:block;padding:.7rem;background:#fff;border:1px solid #eadcdf;box-shadow:0 25px 70px #58102720;transform:rotate(1deg);transition:transform .25s}.whatsapp-qr:hover,.whatsapp-qr:focus-visible{transform:rotate(0) translateY(-4px)}.whatsapp-qr img{display:block;width:100%;height:auto}
@media (max-width:850px){.whatsapp-inner{grid-template-columns:1fr;text-align:center}.whatsapp-copy>p:not(.eyebrow):not(.whatsapp-note){margin-left:auto;margin-right:auto}.whatsapp-qr{width:min(390px,100%);margin:auto}}
@media (max-width:600px){.button-whatsapp{width:100%;gap:.8rem;padding-left:.8rem;padding-right:.8rem}.whatsapp-qr{width:min(330px,100%)}}
.form-error{margin:0 0 1rem;padding:.8rem 1rem;border-left:3px solid #a22649;background:#f9e7eb;color:#751c38;font-size:.78rem}.rsvp-success{position:relative;grid-column:1/-1;overflow:hidden;max-width:760px;width:100%;margin:auto;padding:clamp(2.5rem,7vw,5rem) clamp(1.5rem,7vw,5rem);border:1px solid #ffffff61;background:#350b1a9c;box-shadow:0 28px 80px #26000e70;text-align:center;outline:0}.rsvp-success>*:not(.success-confetti){position:relative;z-index:2}.rsvp-success .footer-monogram{font-size:2.8rem}.rsvp-success .eyebrow{margin:1.8rem 0 .5rem}.rsvp-success h2{margin:.25rem 0 1rem;color:#fff}.rsvp-success>p:not(.eyebrow):not(.success-message){color:#ead9dd}.success-message{margin:1.8rem auto 0;font:italic 500 clamp(1.8rem,4vw,2.5rem)/1.1 var(--serif);color:#fff}.success-message span{display:inline-block;margin-top:.45rem;color:#efbdc8}.rsvp-success .button{margin-top:2.2rem}.success-confetti{position:absolute;z-index:1;inset:0;overflow:hidden;pointer-events:none}.success-confetti i{position:absolute;top:-12%;width:8px;height:15px;background:var(--piece-color);opacity:.85;animation:rsvp-confetti var(--duration) linear var(--delay) infinite}.success-confetti i:nth-child(3n){width:9px;height:9px;border-radius:50%}.success-confetti i:nth-child(4n){clip-path:polygon(50% 0,100% 100%,0 100%)}@keyframes rsvp-confetti{to{transform:translate3d(var(--drift),125vh,0) rotate(var(--spin))}}@media (prefers-reduced-motion:reduce){.success-confetti{display:none}}
.song-request{display:grid;grid-template-columns:52px 1fr;gap:1.1rem;margin:2.8rem 0;padding:1.5rem;border:1px solid #d9bdc5;background:linear-gradient(135deg,#fff9f8,#f7e9ec)}.song-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--burgundy);font-size:1.25rem;box-shadow:0 8px 20px #5a102429}.song-content{min-width:0}.song-label{margin:0 0 .55rem;color:var(--burgundy);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.song-label span{color:#817176;font-size:.62rem;font-weight:400;letter-spacing:0;text-transform:none}.song-content label{display:block;margin:0 0 .75rem;color:#493c40;font:500 1.15rem/1.25 var(--serif)}.song-content input{width:100%;border:0;border-bottom:1px solid #ad8e97;padding:.7rem .15rem;background:transparent;font:1rem var(--sans);border-radius:0}.song-content input:focus{outline:2px solid #b55c75;outline-offset:4px}@media (max-width:600px){.song-request{grid-template-columns:1fr;padding:1.25rem}.song-icon{width:44px;height:44px}.song-content label{font-size:1.08rem}}
.legend-note{color:#796b6f;font-size:.66rem;font-weight:400;letter-spacing:0;text-transform:none}
