/* Section geometry follows the public Olivar de Oro reference. */
.intro-card{position:absolute;z-index:12;left:50%;top:50%;width:min(36.5vw,445px);height:min(78vh,598px);min-height:490px;transform:translate(-50%,-47%);background:#faf9f2;border:1px solid #c9ba89;box-shadow:inset 0 0 0 5px white,inset 0 0 0 7px #c9ba894b,0 18px 45px #11170d50;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#363a2d;opacity:0;pointer-events:none}
.intro-card::before{content:"";position:absolute;inset:11px;border:1px solid #cbbd956e;pointer-events:none}
.intro-card>p{font:italic 600 17px var(--serif);color:#987b3e;margin:0 0 10px}
.intro-card h2{font:400 clamp(55px,6vw,80px)/1.06 var(--script);display:flex;flex-direction:column;align-items:center;color:#9d8247;margin:0;text-align:center}
.intro-card h2 i{font:italic 400 38px var(--serif);line-height:1;color:#8b7441}
.intro-divider{width:90px;height:13px;margin:12px auto 17px;background:url('assets/gold-divider.svg') center/contain no-repeat}
.intro-card>b{font:600 12px var(--sans);letter-spacing:.27em;color:#3d4432}
.body-opening .intro-card{animation:open-card-sequence 2.05s .05s both}
@keyframes open-card-sequence{0%,18%{opacity:0;transform:translate(-50%,-43%) scale(.93)}38%,72%{opacity:1;transform:translate(-50%,-47%) scale(1)}100%{opacity:0;transform:translate(-50%,-54%) scale(.97)}}
.body-opening .envelope-flap{transition-duration:.95s}
.body-open .music-toggle{position:fixed;top:auto;right:calc(env(safe-area-inset-right,0px) + 16px);bottom:calc(env(safe-area-inset-bottom,0px) + 16px);width:38px;height:38px;z-index:2100;background:#fbfaf4ed;border-color:#aa965b;color:#415238;box-shadow:0 5px 16px #28331f28;opacity:1;pointer-events:auto}
.music-toggle[aria-pressed="false"]{opacity:.8}
.music-note{font-size:19px}
.story-section{min-height:100svh;padding:70px 6vw;display:flex;align-items:center;justify-content:center}
.story-layout{width:min(1080px,100%);display:grid;grid-template-columns:minmax(280px,.92fr) minmax(390px,1.08fr);align-items:center;gap:clamp(48px,7vw,100px)}
.story-frame{position:relative;width:100%;max-width:430px;padding:7px;margin:0;background:#fffdf8;border:1px solid #bdab77;box-shadow:0 12px 28px #2d362124}
.story-photo{position:relative;height:clamp(470px,68vh,570px);border-radius:48% 48% 0 0;background:url('assets/story.webp') 50% 30%/cover no-repeat;overflow:visible}
.story-sprig{position:absolute;left:-16%;bottom:-6%;width:34%;height:auto;aspect-ratio:2/5;z-index:2;background:url('assets/story-side-ornament.svg') center/contain no-repeat;filter:drop-shadow(0 4px 4px #2a342033);pointer-events:none}
.story-content{text-align:left;max-width:570px}
.story-content .script-label{font-size:20px;margin:0 0 11px}
.story-content .script-heading{font-size:clamp(58px,7vw,82px);line-height:1.08}
.story-content .ornament{margin:20px 0 28px}
.story-content .body-copy{font-size:19px;line-height:2;margin:0;max-width:560px}
.venue-section{display:flex;flex-direction:column;align-items:center;gap:0;padding-left:5vw;padding-right:5vw}
.venue-section>.script-label{margin:0 0 2px}
.venue-section>.script-heading{margin:0}
.venue-section>.ornament{margin:20px auto 34px}
.venue-card{display:grid;grid-template-columns:1fr 1fr;width:min(1000px,100%);margin:0 auto 38px;padding:0;border:1px solid #d7d1c1;background:#fffefa;box-shadow:0 12px 24px #3035281c;text-align:center;overflow:hidden}
.venue-card.reverse .venue-photo{order:2}
.venue-photo{height:100%;min-height:430px;background-size:cover;background-position:center}
.venue-info{padding:36px 30px;display:flex;flex-direction:column;justify-content:center;align-items:stretch}
.venue-info>.script-label{font-size:38px;margin:0 0 3px}
.venue-info h3{font-size:28px;margin:0 0 18px}
.venue-time{font-size:31px;margin-bottom:8px}
.venue-date{font-size:11px;letter-spacing:.24em;margin-bottom:17px}
.venue-address{font-size:18px;margin-bottom:23px}
.venue-button{height:49px;margin-top:10px;font-size:11px}
.schedule-section{min-height:100svh;padding:88px 5vw;display:flex;flex-direction:column;align-items:center;justify-content:center}
.schedule-section>.script-label{font-size:22px}
.schedule-section>.script-heading{font-size:clamp(61px,8vw,88px)}
.schedule-section>.ornament{margin:21px auto 35px}
.timeline{width:min(1100px,100%);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;text-align:center;margin-top:5px}
.timeline::before{left:5%;right:5%;top:40px;bottom:auto;border:0;border-top:1px solid #b59c5f}
.timeline article{min-height:0;display:flex;flex-direction:column;align-items:center;gap:11px;padding:0 7px}
.timeline-icon{width:64px;height:64px;flex:none;background:#fffefa;border-color:#d6cfb9;box-shadow:0 4px 12px #27331e16;color:#746344;font-size:unset}
.timeline-icon svg{width:35px;height:35px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.timeline time{order:2;text-align:center;font-size:13px;letter-spacing:.17em;color:#8c7544}
.timeline article>div{order:3}
.timeline h3{font-size:39px;margin:0 0 5px}
.timeline p{font-size:17px;line-height:1.55}
.attire-section{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:78px;padding-bottom:75px}
.attire-section>.script-label{font-size:19px;margin-bottom:2px}
.attire-section .section-heading{font:400 clamp(74px,9vw,104px)/1 var(--script);color:#a38a50;margin:0 0 26px}
.attire-section>.ornament{margin:0 auto 38px}
.dress-cards{width:min(730px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.dress-cards article{height:350px;min-height:0;padding:17px 18px 19px;border:1px solid #d8d4c7;border-radius:0;background:#fffefa;box-shadow:0 8px 18px #34372b0c;justify-content:flex-start}
.dress-art{height:188px;flex:0 0 188px;margin:0;display:flex;align-items:center;justify-content:center}
.dress-art img{max-height:180px;max-width:64%;filter:grayscale(1) contrast(.8) brightness(1.1) drop-shadow(0 5px 4px #15181520)}
.dress-label{font:400 40px/1 var(--script);color:#2e382e;margin:1px 0 7px}
.dress-copy{font-size:17px;line-height:1.45;margin:0}
.palette-caption{margin:22px 0 13px;font:italic 17px var(--serif);color:#777465}
.color-swatches{gap:2px}
.color-swatches i{width:60px;height:40px;border:2px solid #fffefa;outline:1px solid #cfc5a5;border-radius:0;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:#53653d}
.color-swatches i:nth-child(2){background:#a5b18d}.color-swatches i:nth-child(3){background:#c49c55}.color-swatches i:nth-child(4){background:#765545}.color-swatches i:nth-child(5){background:#293448}
.soft-note{font-size:18px;margin-top:17px}
.gallery-section{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:70px 5vw 85px}
.gallery-section>.script-label{font-size:36px;margin:0 0 -3px}
.gallery-section>.script-heading{font-size:clamp(67px,8vw,90px);color:#fffdf4}
.gallery-section>.ornament{margin:11px auto 31px}
.green-section .ornament::after{background:#2d3d24;color:#d5bd70}
.gallery-grid{width:min(1070px,100%);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:245px 245px 225px;gap:13px;align-items:stretch}
.gallery-grid button{height:auto!important;min-height:0;border:1px solid #e9e4d3;box-shadow:0 5px 14px #0e180b35;transform:none!important;position:relative}
.gallery-grid button:nth-child(1){grid-column:1/3;grid-row:1/3}
.gallery-grid button:nth-child(2){grid-column:3/4;grid-row:1/3}
.gallery-grid button:nth-child(3){grid-column:4/5;grid-row:1/2}
.gallery-grid button:nth-child(4){grid-column:4/5;grid-row:2/3}
.gallery-grid button:nth-child(5){grid-column:1/2;grid-row:3/4}
.gallery-grid button:nth-child(6){grid-column:2/5;grid-row:3/4}
.gallery-grid button:hover{transform:scale(1.015)!important;z-index:1}
.gallery-help{font-size:15px;color:#e0d9c7;margin-top:20px}
.gifts-section{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:82px 24px 85px}
.gifts-section>.script-label{font-size:20px;margin-bottom:2px}
.gifts-section>.script-heading{font-size:clamp(60px,8vw,86px);color:var(--ink)}
.gifts-section>.ornament{margin:18px auto 28px}
.gift-card{position:relative;width:min(570px,100%);padding:37px 32px 30px;border:1px solid #d5d0c1;background:#fffefa;box-shadow:0 10px 26px #35382a14}
.gift-card::before{content:"";position:absolute;inset:6px;border:1px solid #dfd9c8;pointer-events:none}
.gift-card-icon{display:block;width:40px;height:32px;margin:0 auto 21px;color:#90794a}
.gift-card-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.gift-card .body-copy{font-size:18px;line-height:1.65;margin:0 auto 31px}
.payment-details{display:grid;grid-template-columns:1fr;gap:0;text-align:center;width:100%}
.payment-details article{padding:17px 4px;border:0;border-top:1px solid #dfd9c9;background:transparent;align-items:center;gap:8px}
.payment-details article>p{font:700 11px var(--sans);letter-spacing:.25em;color:#847043}
.payment-details article>b{font:500 18px var(--serif);color:#373a30}
.payment-details article>small{font:italic 14px var(--serif);color:#777263}
.payment-details button{align-self:center;padding:7px 17px;border:1px solid #ded9cc;border-radius:22px;background:#fffefa;color:#555547;font:600 10px var(--sans);letter-spacing:.15em}
.guest-notes{width:min(960px,100%);display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin:35px auto 0}
.guest-notes article{background:transparent;border:0;padding:10px 7px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.guest-notes article>span{width:33px;height:33px;display:grid;place-items:center;color:#8a7547}
.guest-notes article>span svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.guest-notes b{font:italic 600 17px var(--serif);letter-spacing:0;color:#6b5837}
.guest-notes p{font:400 16px/1.55 var(--serif);color:#46483d}
.hotel-section{min-height:100svh;padding:85px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.hotel-section>.script-label{font-size:20px}
.hotel-section>.script-heading{font-size:clamp(64px,8vw,88px)}
.hotel-section>.ornament{margin:17px auto 24px}
.hotel-section .body-copy{font-size:18px;font-style:italic;max-width:610px;line-height:1.55;margin:0 auto 30px}
.hotels{width:min(830px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;text-align:center}
.hotels article{min-height:265px;padding:21px 18px;background:#fffefa;border:1px solid #d8d4c7;box-shadow:0 9px 20px #2a2f2014;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:11px}
.hotels article>span{font:400 14px var(--serif);letter-spacing:.25em;color:#a98e51}
.hotels h3{font:italic 600 24px var(--serif);margin:0 0 2px}
.hotels p{font:400 17px/1.5 var(--serif);color:#626154;margin:0}
.hotels a{display:inline-flex;border:1px solid #70694f;padding:13px 22px;color:#45483b;margin-top:10px;font-size:11px;letter-spacing:.16em}
.rsvp-section{min-height:100svh;padding:73px 22px 90px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.rsvp-date{font:italic 600 18px var(--serif);color:#937a45;margin:0 0 7px}
.rsvp-section .script-heading{font-size:clamp(64px,8vw,88px);line-height:1.02;color:var(--ink)}
.rsvp-section>.ornament{margin:21px auto 25px}
.rsvp-section>.body-copy{font-size:19px;max-width:520px;line-height:1.6;margin:0 auto 20px}
.rsvp-card{width:min(415px,100%);padding:25px 22px 19px;border:1px solid #d7d1c1;background:#fffefa;box-shadow:0 10px 28px #35382a16;position:relative;text-align:left}
.rsvp-card::before{content:"";position:absolute;inset:6px;border:1px solid #e0dacb;pointer-events:none}
.reserved-seats{text-align:center;margin:8px auto 18px}
.reserved-seats small{color:#706a59;font-size:15px}
.reserved-seats b{font-size:20px;letter-spacing:.16em;color:#907544}
#rsvp-form{width:100%;position:relative;z-index:1}
#rsvp-form>label{color:#4b4d41;font:500 12px var(--sans);margin-bottom:5px}
#rsvp-form input,#rsvp-form textarea{height:42px;border:1px solid #dedacc;background:#fffefa;color:#373a30;border-radius:4px;font:14px var(--serif)}
#rsvp-form input::placeholder,#rsvp-form textarea::placeholder{color:#989588}
.guest-counter{color:#555648;border-block:1px solid #dedacc;margin-top:13px;padding:13px 0}
.guest-counter span{font:400 16px/1.35 var(--serif)}
.guest-counter span small{font-size:13px;color:#858274}
.guest-counter button{background:#fffefa;border-color:#d4c9a6;color:#4a4c3e}
.optional-message{border:1px solid #dedacc;border-radius:8px;padding:13px 15px;color:#555648;font:14px var(--serif);margin:12px 0}
.optional-message summary{text-align:center}
.optional-message input,.optional-message textarea{color:#34372d!important}
.optional-message input::placeholder,.optional-message textarea::placeholder{color:#989588!important}
.rsvp-deadline{font:600 9px var(--sans);letter-spacing:.16em;color:#797359;border:1px dashed #aba48c;background:#f5f4ec;padding:11px 7px;margin:13px 0 24px}
.rsvp-deadline b{display:block;font:500 24px var(--serif);letter-spacing:0;color:#41443a;margin-top:4px}
.rsvp-actions button{height:48px;background:#415633;border-color:#415633;color:#fffdf5}
.rsvp-actions button+button{height:34px;background:none;border:0;color:#777467;font:italic 16px var(--serif);text-decoration:underline}
.rsvp-status{color:#6f794c}

@media(min-width:900px){
  .story-layout{grid-template-columns:minmax(360px,.9fr) minmax(450px,1.1fr)}
  .venue-section{display:flex;gap:0}
  .venue-card{grid-template-columns:1fr 1fr}
  .venue-photo{min-height:445px}
  .venue-info{padding:38px 35px}
  .gallery-grid{width:min(1070px,100%)}
}
@media(max-width:899px){
  .story-section{min-height:0;padding:35px 24px 60px;align-items:flex-start;justify-content:flex-start}
  .story-section.cream-section::before{display:block;inset:8px}
  .story-layout{width:min(540px,100%);grid-template-columns:1fr;gap:37px;justify-items:center;margin-inline:auto}
  .story-frame{position:relative;width:min(71vw,430px);max-width:none;padding:0;margin:0 auto;border:0;background:transparent;box-shadow:none;isolation:isolate}
  .story-frame::after{content:"";position:absolute;z-index:-1;inset:0 -12px -12px 0;border:1px solid #b59a58;border-radius:50% 50% 0 0;pointer-events:none}
  .story-photo{width:100%;height:auto;aspect-ratio:.752;border-radius:50% 50% 0 0;background-position:50% 30%;z-index:1}
  .story-content{width:100%;max-width:540px;text-align:center;margin:auto}
  .story-content .script-label{font-size:21px;color:#97712e;margin:0 0 11px}
  .story-content .script-heading{font-size:clamp(52px,12vw,60px);line-height:1;margin:0}
  .story-content .ornament{width:150px;height:24px;margin:32px auto 27px;background:url('assets/story-divider.svg') center/contain no-repeat}
  .story-content .body-copy{font-size:clamp(17px,4.5vw,21px);line-height:1.65;text-align:center}
  .venue-card{display:flex;flex-direction:column;width:min(570px,100%)}
  .venue-card.reverse .venue-photo{order:0}
  .venue-photo{height:300px;min-height:0}
  .timeline{grid-template-columns:1fr;gap:14px;width:min(560px,100%);text-align:left}
  .timeline::before{left:31px;right:auto;top:31px;bottom:30px;border-top:0;border-left:1px solid #b59c5f}
  .timeline article{display:grid;grid-template-columns:64px 1fr;grid-template-rows:auto auto;column-gap:15px;row-gap:4px;min-height:92px;padding:0}
  .timeline-icon{grid-column:1;grid-row:1/3;align-self:center;width:62px;height:62px}
  .timeline time{grid-column:2;grid-row:1;text-align:left}
  .timeline article>div{grid-column:2;grid-row:2}
  .timeline h3{font-size:34px}
  .timeline p{font-size:16px}
  .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto;grid-auto-rows:190px}
  .gallery-grid button:nth-child(1){grid-column:1/3;grid-row:auto;height:280px!important}
  .gallery-grid button:nth-child(2){grid-column:1/2;grid-row:auto}
  .gallery-grid button:nth-child(3){grid-column:2/3;grid-row:auto}
  .gallery-grid button:nth-child(4){grid-column:1/2;grid-row:auto}
  .gallery-grid button:nth-child(5){grid-column:2/3;grid-row:auto}
  .gallery-grid button:nth-child(6){grid-column:1/3;grid-row:auto;height:220px!important}
}
@media(max-width:600px){
  .intro-card{width:min(77vw,350px);height:min(66svh,485px);min-height:380px;transform:translate(-50%,-50%)}
  .intro-card h2{font-size:clamp(50px,13vw,68px)}
  .body-opening .intro-card{animation-name:open-card-sequence-mobile}
  @keyframes open-card-sequence-mobile{0%,18%{opacity:0;transform:translate(-50%,-45%) scale(.93)}38%,72%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-56%) scale(.97)}}
  .venue-section{padding-top:67px;padding-bottom:68px}
  .venue-section>.ornament{margin:17px auto 26px}
  .venue-card{width:min(420px,100%);margin-bottom:25px}
  .venue-photo{height:235px}
  .venue-info{padding:23px 17px 25px}
  .venue-info>.script-label{font-size:32px}
  .venue-info h3{font-size:23px}
  .venue-time{font-size:27px}
  .venue-address{font-size:16px}
  .schedule-section{min-height:0;padding:76px 20px 80px}
  .timeline{margin-top:0}
  .attire-section{padding:69px 20px 70px}
  .attire-section .section-heading{font-size:77px}
  .dress-cards{width:min(480px,100%);gap:11px}
  .dress-cards article{height:310px;padding:13px 9px}
  .dress-art{height:150px;flex-basis:150px}
  .dress-art img{max-height:144px;max-width:72%}
  .dress-label{font-size:35px}
  .dress-copy{font-size:14px;line-height:1.4}
  .color-swatches i{width:44px;height:30px}
  .gallery-section{padding:65px 17px 77px}
  .gallery-section>.script-label{font-size:27px}
  .gallery-section>.script-heading{font-size:60px}
  .gallery-grid{grid-auto-rows:150px;gap:8px}
  .gallery-grid button:nth-child(1){height:250px!important}
  .gallery-grid button:nth-child(6){height:160px!important}
  .gifts-section{padding:69px 20px 73px}
  .gifts-section>.script-heading{font-size:60px}
  .gift-card{padding:28px 20px 20px}
  .gift-card .body-copy{font-size:16px;line-height:1.6}
  .guest-notes{grid-template-columns:1fr;gap:10px;margin-top:23px}
  .guest-notes article{display:grid;grid-template-columns:36px 1fr;text-align:left;gap:10px;padding:8px 2px}
  .guest-notes article>span{grid-row:1/3}
  .guest-notes b{font-size:16px}
  .guest-notes p{font-size:15px;margin:0}
  .hotel-section{padding:69px 18px 75px}
  .hotel-section>.script-heading{font-size:63px}
  .hotel-section .body-copy{font-size:16px}
  .hotels{grid-template-columns:1fr;gap:13px}
  .hotels article{min-height:230px}
  .hotels h3{font-size:21px}
  .hotels p{font-size:16px}
  .rsvp-section{padding:67px 18px 76px}
  .rsvp-section .script-heading{font-size:66px}
  .rsvp-section>.body-copy{font-size:16px}
  .rsvp-card{padding:23px 16px 16px}
  .music-toggle{right:12px!important;bottom:12px!important;width:36px!important;height:36px!important}
}

/* Mobile compositions transcribed from the supplied Olivar screenshots. */
@media(max-width:600px){
  .hero-section{min-height:100svh}
  .hero-section::after{content:"";position:absolute;z-index:2;inset:5px;border:1px solid #c3ae6b;pointer-events:none}
  .hero-copy{position:absolute;left:0;right:0;bottom:4.5%;width:auto;max-width:none;margin:0;padding:0 20px}
  .hero-kicker{font-size:20px;margin:0 0 2px}
  .hero-copy h2{display:flex;flex-direction:column;gap:0;font-size:clamp(68px,16vw,86px);line-height:.8;flex-wrap:nowrap}
  .hero-copy h2 i{font-size:.55em;line-height:.92}
  .hero-date{font-size:clamp(8px,2.5vw,11px);letter-spacing:.2em;margin:17px 0 22px;white-space:nowrap}
  .hero-date b{padding:0 6px}
  .venue-section::before,.attire-section::before{content:"";position:absolute;inset:5px;border:1px solid #c5b77b66;pointer-events:none}
  .venue-section{position:relative;padding:60px 28px 68px;display:flex;align-items:center}
  .venue-section>.script-label{font-size:20px;color:#97712e;margin:0 0 2px}
  .venue-section>.script-heading{font-size:clamp(47px,12vw,62px);line-height:1;margin:0}
  .venue-section>.ornament{width:124px;height:18px;margin:23px auto 27px;background:url('assets/gold-divider.svg') center/contain no-repeat}
  .venue-card,.venue-card.reverse{display:flex;flex-direction:column;width:min(420px,100%);margin:0 auto 25px;border:0;padding:0;background:transparent;box-shadow:none;overflow:visible}
  .venue-photo{width:100%;height:auto;aspect-ratio:4/3;min-height:0}
  .venue-info{position:relative;margin:0 4px;padding:18px 15px 22px;border:1px solid #e5dcc2;outline:4px solid #fffefa;background:#fffefa;box-shadow:0 7px 16px #26311d18;text-align:center;align-items:center}
  .venue-info::before{content:"";position:absolute;inset:4px;border:1px solid #eee7d6;pointer-events:none}
  .venue-info>.script-label{font-size:38px;color:#a27a32;margin:0 0 1px}
  .venue-info h3{font-size:clamp(23px,6vw,30px);font-style:italic;margin:0 0 10px}
  .venue-time{font-size:29px;line-height:1.15;margin:0 0 3px}
  .venue-date{font-size:11px;letter-spacing:.22em;color:#97712e;margin:0 0 13px}
  .venue-address{font-size:18px;line-height:1.4;margin:0 0 20px}
  .venue-button{position:relative;z-index:1;width:100%;max-width:392px;height:47px;margin:0;padding:0 10px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:10px;letter-spacing:.12em;text-decoration:none}
  .venue-button+.venue-button{margin-top:9px}
  .venue-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
  .attire-section{position:relative;padding:60px 28px 68px;min-height:100svh}
  .attire-section>.script-label{font-size:19px;color:#97712e}
  .attire-section .section-heading{font-size:clamp(65px,16vw,78px);color:#b18d40;margin:0 0 14px}
  .attire-section>.ornament{width:124px;height:18px;margin:0 auto 27px;background:url('assets/gold-divider.svg') center/contain no-repeat}
  .dress-cards{width:min(434px,calc(100vw - 22px));grid-template-columns:1fr;gap:18px}
  .dress-cards article{display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-rows:55px 1fr;column-gap:12px;align-items:center;height:160px;min-height:0;padding:12px 16px;border:1px solid #e5dfd2;outline:4px solid #fffefa;outline-offset:-5px;background:#fffefa;box-shadow:0 6px 13px #29321e1c;text-align:left}
  .dress-art{grid-column:1;grid-row:1/3;width:64px;height:140px;flex:none;margin:0;display:flex;align-items:center;justify-content:center}
  .dress-art img{max-height:128px;max-width:100%;width:auto;object-fit:contain}
  .dress-label{grid-column:2;grid-row:1;align-self:end;font-size:35px;margin:0 0 1px;text-align:left}
  .dress-copy{grid-column:2;grid-row:2;align-self:start;padding-top:13px;font-size:16px;line-height:1.42;text-align:left}
  .palette-caption{margin:25px 0 13px;font-size:16px}
  .color-swatches{gap:3px}
  .color-swatches i{width:48px;height:34px}
  .soft-note{font-size:16px;margin:20px auto 0;text-align:center}
}

/* Keep page content comfortably inset and the album tiles equal in every viewport. */
.story-layout{max-width:900px}
.venue-card{max-width:940px}
.dress-cards{max-width:640px}
.gallery-grid{width:min(840px,calc(100% - 32px));grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:auto;gap:12px;align-items:stretch}
.gallery-grid button,.gallery-grid button:nth-child(n){grid-column:auto!important;grid-row:auto!important;height:auto!important;min-height:0;aspect-ratio:1/1;padding:0;border:5px solid #fffefa;background-size:300% 200%;box-shadow:0 5px 14px #0e180b35;transform:none!important}
.gallery-grid button:hover{transform:scale(1.015)!important}
.gift-card{width:min(500px,calc(100% - 32px))}
.hotels{width:min(780px,calc(100% - 32px))}
.rsvp-card{width:min(420px,calc(100% - 32px));margin-inline:auto}
.closing-section{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100svh;padding:clamp(68px,15vw,110px) clamp(22px,5vw,64px) clamp(96px,14vw,120px);overflow:hidden;background:radial-gradient(ellipse 90% 70% at 50% 35%,#46542e,#2f3a22 62%,#232c18);color:#f4f0e1}
.closing-section::before{content:"";position:absolute;z-index:1;inset:clamp(12px,2vw,22px);background-image:none;border:1px solid #e2c98759;box-shadow:inset 0 0 0 5px #2f3a2240,inset 0 0 0 6px #e2c98724;pointer-events:none}
.closing-section::after{content:"";position:absolute;z-index:0;inset:0;background-image:url('assets/olive-branch.svg');background-size:420px 260px;background-position:center;background-repeat:repeat;opacity:.2;pointer-events:none}
.closing-section>*{position:relative;z-index:2}
.closing-monogram{position:relative;isolation:isolate;display:grid;place-items:center;width:min(70vw,19rem,40svh);height:min(70vw,19rem,40svh);margin:0 auto 22px;border:0;border-radius:0;font:400 clamp(2.25rem,9vw,3.25rem)/1.3 var(--script);white-space:nowrap;overflow:visible;isolation:isolate}
.closing-monogram::before{content:"";position:absolute;z-index:0;inset:9%;background:url('assets/gold-wreath-original.svg') center/contain no-repeat;pointer-events:none}
.closing-monogram [data-bind="monogram"]{position:relative;z-index:1;display:block;background:linear-gradient(100deg,#e9d397 0%,#fff3cf 34%,#d6b569 64%,#f0dca0 100%);-webkit-background-clip:text;background-clip:text;color:transparent;font:inherit;line-height:1.3;padding:.08em .08em .14em;white-space:nowrap;overflow:visible}
.closing-section .script-label{max-width:26rem;margin:1.6rem auto 0;color:#f4f0e1;font:italic 500 clamp(1.6rem,6vw,2rem)/1.4 var(--serif)}
.closing-section .script-heading{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;margin-top:1rem;font-size:clamp(2.8rem,12vw,4.4rem);line-height:1.15;color:#fffdf6}
.closing-section .script-heading i{color:#d8bf80}
.closing-date{margin-top:.8rem;font:500 1.05rem/1 var(--sans);letter-spacing:.42em;text-indent:.42em;color:#e9d397}
.closing-section .hashtag{margin-top:1.2rem;color:#e8e1ce;font:italic 500 1.5rem/1.4 var(--serif)}
.brand-signoff{display:flex;flex-direction:column;align-items:center;gap:7px;margin-top:2rem;color:#e9d397;text-align:center}
.brand-signoff span{font:500 .86rem/2 var(--sans);letter-spacing:.3em}
.brand-signoff small{color:#d9d3bd;font:italic 500 1.1rem/1.4 var(--serif);letter-spacing:.04em}
.music-toggle .music-note{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lightbox button{display:grid;place-items:center}
.lightbox button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.guest-counter button svg,.optional-message summary svg,.rsvp-deadline svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.guest-counter button{display:grid;place-items:center}
.optional-message summary{display:flex;align-items:center;gap:8px}
.rsvp-deadline{display:flex;align-items:center;justify-content:center;gap:7px}
.hotels a{display:inline-flex;align-items:center;gap:5px}
.hotels a svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:600px){
  .gallery-grid{width:min(390px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .gallery-grid button,.gallery-grid button:nth-child(n){border-width:4px}
  .gift-card,.hotels,.rsvp-card{width:min(390px,100%)}
  .closing-section{min-height:100svh;padding:48px 24px 70px}
  .closing-monogram{margin-bottom:17px}
}

/* Story portrait and floral spray follow the supplied mobile reference. */
@media(max-width:600px){
  .story-section{padding:22px 16px 58px}
  .story-layout{width:100%;max-width:540px;gap:26px}
  .story-frame{width:min(71vw,430px);transform:translateX(2px)}
  .story-photo{background-image:url('assets/story.webp');background-size:cover;background-position:50% 30%}
  .story-content{max-width:425px}
  .story-content .script-label{margin-bottom:5px}
  .story-content .script-heading{font-size:clamp(52px,12vw,60px);line-height:1}
  .story-content .ornament{width:124px;height:20px;margin:30px auto 32px;background:url('assets/story-divider.svg') center/contain no-repeat}
  .story-content .body-copy{font-size:clamp(16px,3.9vw,18px);line-height:1.8}
  .story-content .story-copy p:first-child{margin:0}
  .story-content .story-copy p+p{margin:30px 0 0}
}

/* Keep a single branch pattern in the closing panel and preserve monogram glyph bounds. */
#cierre::before{background-image:none!important}
#cierre::after{background-size:420px 260px;opacity:.2}
#cierre .closing-monogram [data-bind="monogram"]{line-height:1.4;padding:.12em .1em .18em}
#lugar .venue-button svg{display:block;width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* Portada: keep decorative branches off the portrait and give each text line room. */
.hero-olive{display:none!important}
.hero-kicker{margin-bottom:12px}
.hero-copy h2{line-height:1.05}
.hero-date{margin:28px 0 28px}
@media(max-width:600px){
  .hero-copy{bottom:7%}
  .hero-kicker{margin:0 0 12px}
  .hero-copy h2{line-height:1.02}
  .hero-date{margin:23px 0 26px}
}

/* Álbum horizontal: fotos cuadradas, centradas y con desplazamiento suave. */
.gallery-carousel{width:min(1120px,100%);margin:0 auto}
.gallery-track{--gallery-card-size:clamp(238px,30vw,350px);display:flex;align-items:center;gap:clamp(16px,2.8vw,32px);width:100%;overflow-x:auto;overflow-y:hidden;padding:12px calc((100% - var(--gallery-card-size))/2) 24px;scroll-padding-inline:calc((100% - var(--gallery-card-size))/2);scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.gallery-track::-webkit-scrollbar{display:none}
.gallery-card{appearance:none;flex:0 0 var(--gallery-card-size);width:var(--gallery-card-size);aspect-ratio:1/1;height:auto;border:9px solid #fbfaf4;outline:1px solid #c9b66f;box-shadow:0 12px 28px #10170f38;scroll-snap-align:center;cursor:zoom-in;opacity:.7;transform:scale(.95);transition:opacity .42s ease,transform .55s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease}
.gallery-card.is-active{opacity:1;transform:scale(1);box-shadow:0 16px 32px #10170f55}
.gallery-card:hover{opacity:1;box-shadow:0 16px 32px #10170f55}
.gallery-card:focus-visible,.gallery-arrow:focus-visible,.gallery-pagination button:focus-visible{outline:2px solid #e3cf8b;outline-offset:4px}
.gallery-controls{display:flex;align-items:center;justify-content:center;gap:16px;min-height:42px}
.gallery-arrow{display:grid;place-items:center;width:38px;height:38px;border:1px solid #ad9654;border-radius:50%;background:#33442b;color:#f4efd9;transition:background-color .2s ease,transform .2s ease}
.gallery-arrow:hover{background:#465a38;transform:translateY(-1px)}
.gallery-arrow svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.gallery-index{min-width:49px;text-align:center;color:#e5d39a;font:500 11px var(--sans);letter-spacing:.16em;font-variant-numeric:tabular-nums}
.gallery-pagination{display:flex;align-items:center;justify-content:center;gap:7px}
.gallery-pagination button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:#b8b19a;opacity:.62;transition:width .3s ease,opacity .3s ease,background-color .3s ease}
.gallery-pagination button[aria-current="true"]{width:22px;border-radius:5px;background:#dfc47b;opacity:1}
.gallery-help{margin:12px 0 0;color:#e6dfcf;font:italic 15px var(--serif);text-align:center}
@media(max-width:600px){
  .gallery-carousel{width:100%}
  .gallery-section>.script-heading{font-size:clamp(46px,11vw,58px);line-height:1.05}
  .gallery-track{--gallery-card-size:min(72vw,350px);gap:15px;padding:10px calc((100% - var(--gallery-card-size))/2) 21px;scroll-padding-inline:calc((100% - var(--gallery-card-size))/2)}
  .gallery-card{border-width:7px}
  .gallery-controls{gap:12px}
  .gallery-arrow{width:36px;height:36px}
  .gallery-help{max-width:300px;margin:12px auto 0;font-size:14px;line-height:1.4}
}
@media(prefers-reduced-motion:reduce){.gallery-track{scroll-behavior:auto}.gallery-card,.gallery-arrow,.gallery-pagination button{transition:none}}

#invitation{overflow-x:clip}

/* Vertical scroll pins the gallery while its photo strip follows the page. */
.gallery-scroll-stage{position:relative;display:block!important;height:calc(100svh + var(--gallery-scroll-distance,700vh));min-height:calc(100svh + var(--gallery-scroll-distance,700vh));padding:0!important;overflow:visible!important}
.gallery-scroll-stage .gallery-pin{position:sticky!important;top:0;isolation:isolate;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100svh;min-height:0;padding:clamp(20px,4vh,42px) 5vw;overflow:hidden;text-align:center}
.body-open .gallery-scroll-stage{animation:none;opacity:1}
.gallery-pin>.script-label{font-size:36px;margin:0 0 clamp(14px,2vh,20px)}
.gallery-pin>.script-heading{font-size:clamp(67px,8vw,90px);line-height:1.05;margin:0;color:#fffdf4}
.gallery-pin>.ornament{margin:11px auto 24px}
@media(max-width:600px){
  .gallery-scroll-stage{height:calc(100svh + var(--gallery-scroll-distance,700vh));min-height:calc(100svh + var(--gallery-scroll-distance,700vh));padding:0!important}
  .gallery-scroll-stage .gallery-pin{height:100svh;min-height:0;padding:20px 17px 25px}
  .gallery-pin>.script-label{font-size:27px;margin:0 0 22px}
  .gallery-pin>.script-heading{font-size:clamp(46px,11vw,58px);line-height:1.05}
  .gallery-pin>.ornament{margin:10px auto 16px}
}
@media(prefers-reduced-motion:reduce){.gallery-scroll-stage .gallery-pin{scroll-behavior:auto}}
