@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&family=Great+Vibes&display=swap');
:root{--ink:#1b2025}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font-family:Montserrat,Arial,sans-serif}.page{max-width:1440px;margin:auto;container-type:inline-size;overflow:hidden}.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}h1,h2,h3,p{margin-top:0}h1,h2{text-transform:uppercase}button,input{font:inherit}button{cursor:pointer}
.photo-slice{background-repeat:no-repeat;background-size:100cqw auto}.hero{height:54.75cqw;background-position:0 0;position:relative}.hero-shade{position:absolute;inset:0 0 auto;height:18%;background:linear-gradient(#48030ad9,#48030a99 70%,transparent);backdrop-filter:blur(8px)}.topbar{position:relative;display:flex;align-items:center;justify-content:space-between;padding:2.8cqw 12cqw;color:#fff}.brand,.mark{color:white;display:flex;align-items:center;text-decoration:none;font-family:'Great Vibes','Brush Script MT',cursive;font-size:clamp(19px,3.6cqw,53px);line-height:.8;white-space:nowrap;text-shadow:0 1px 3px #3f0000}.brand small,.mark small{display:block;text-align:center;font:600 .25em Montserrat,Arial,sans-serif;line-height:1.3;margin-top:.45em}.ornament{font:normal 1.2em Georgia,serif;transform:rotate(-18deg);margin-right:-.2em}.nav-links{display:flex;gap:2.25cqw;align-items:center}.nav-links a{color:#fff;text-decoration:none;font-size:clamp(8px,.95cqw,14px);font-weight:700;text-transform:uppercase}.nav-links a:hover,.nav-links a:focus-visible{text-decoration:underline}.menu-toggle{display:none}
.event{min-height:37.6cqw;background:#fafafa;text-align:center;padding:5.9cqw 8cqw 3.5cqw}.event h1,.gifts h2,.rsvp h2,.hotels h2{font-size:clamp(17px,1.7cqw,26px);font-weight:800;letter-spacing:.015em;margin-bottom:.5em}.event-rule{width:13cqw;height:1px;background:#ddd;margin:0 auto 2.2cqw}.event-intro{max-width:47cqw;margin:0 auto 1.4cqw;font-size:clamp(8px,.72cqw,11px);line-height:1.55}.event-grid{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:4cqw;align-items:start}.event-location h2{font-size:clamp(9px,.9cqw,14px);margin:1.1cqw 0 .35cqw}.event-location p,.event-location strong,.event-center{font-size:clamp(8px,.67cqw,11px);line-height:1.45}.event-location p{margin-bottom:.2em}.event-location strong{color:#b10613}.round-photo{width:16cqw;height:16cqw;border-radius:50%;margin:-1.7cqw auto 0;background-repeat:no-repeat;background-size:100cqw auto}.church-photo{background-position:-8cqw -61.9cqw}.venue-photo{background-position:-74.3cqw -61.9cqw}.event-center{padding-top:1.2cqw}.event-center p{margin-bottom:1.3cqw}.event-center strong{font-weight:600}
.red-bokeh{background-color:#81030c;background-image:radial-gradient(circle at 7% 35%,#fa374b99 0 1%,transparent 5%),radial-gradient(circle at 18% 75%,#ec273a99 0 2%,transparent 7%),radial-gradient(circle at 29% 10%,#ff4a5999 0 2%,transparent 7%),radial-gradient(circle at 38% 55%,#ef344899 0 3%,transparent 9%),radial-gradient(circle at 50% 21%,#ff627366 0 1%,transparent 6%),radial-gradient(circle at 62% 80%,#f8394a88 0 2%,transparent 8%),radial-gradient(circle at 75% 31%,#ff5a6c88 0 3%,transparent 10%),radial-gradient(circle at 88% 65%,#f92b3b77 0 2%,transparent 8%),radial-gradient(circle at 96% 9%,#ff4c5c88 0 2%,transparent 8%),linear-gradient(115deg,#420006,#bb0c18 48%,#420006)}.countdown{height:21cqw;display:grid;grid-template-columns:24% 21% 1fr;align-items:center;position:relative;color:#fff}.countdown-portrait{height:100%;background-position:0 -92.3cqw}.countdown-brand{justify-content:center;font-size:3.8cqw}.time-boxes{display:flex;justify-content:space-around;padding-right:3cqw}.time-boxes div{text-align:center;text-transform:uppercase;font-size:.85cqw;font-weight:500}.time-boxes b{display:grid;place-items:center;border:2px solid #fff;border-radius:50%;width:8.7cqw;height:8.7cqw;font-size:2.4cqw;margin-bottom:.8cqw}.time-boxes span{display:block}
.gifts{text-align:center;background:#f8f8f8;padding:2cqw 9.5cqw 3cqw}.gifts h2{margin-bottom:1.6cqw}.gift-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2cqw}.gift-card{background:#fff;padding:1.5cqw 1.1cqw 1.2cqw;min-height:32cqw}.gift-art{height:22cqw;display:flex;flex-direction:column;align-items:center;justify-content:center}.pink-gift{background:#e7679b;color:#fff;letter-spacing:.26em}.pink-gift span{font-size:3.2cqw}.pink-gift b{font-size:1.7cqw;line-height:1.25}.pink-gift small{margin-top:4cqw;font-size:1cqw;letter-spacing:0}.cash-gift strong{text-transform:uppercase;font-size:1.75cqw}.cash-gift span{color:#124577;font:700 6cqw Arial,sans-serif;margin-top:2cqw}.table-gift span{font-size:7cqw;line-height:1}.table-gift strong{font:600 2.8cqw Arial,sans-serif}.table-gift small{font-size:.5em;font-weight:400}.gift-card p{font-size:.64cqw;line-height:1.5;margin:1.6cqw .6cqw 0;color:#6a6a6a}
.wide-portrait{height:36.4cqw;background-position:0 -154.5cqw}.rsvp{background:#fff;text-align:center;padding:1.6cqw 9.5cqw 2.4cqw}.rsvp h2{margin-bottom:1.6cqw}.rsvp-panel{display:grid;grid-template-columns:30% 1fr;align-items:center;min-height:18cqw;padding:2.4cqw 4cqw}.rsvp-brand{justify-content:center;font-size:4cqw}.rsvp-form{text-align:left;display:grid;grid-template-columns:1fr auto;gap:.6cqw 1cqw}.rsvp-form>label{grid-column:1/-1;color:white;text-transform:uppercase;font-size:.9cqw;font-weight:700}.rsvp-form>input{grid-column:1/-1;height:2.9cqw;min-height:24px;border:0;background:#fff;padding:.4em .7em;font-size:1.1cqw}.rsvp-form fieldset{border:0;padding:0;margin:.5cqw 0 0;display:flex;align-items:center;gap:2cqw}.rsvp-form fieldset label{color:white;font-size:.88cqw;font-weight:600;text-transform:uppercase;white-space:nowrap}.rsvp-form fieldset input{accent-color:#fff}.rsvp-form button{margin-top:.4cqw;padding:.5cqw 1.3cqw;border:1px solid white;color:white;background:transparent;text-transform:uppercase;font-size:.9cqw;font-weight:700}.rsvp-form button:hover{background:#ffffff22}.rsvp-message{font-size:clamp(12px,1cqw,15px);margin:.8cqw 0 0}.rsvp-message:empty{display:none}
.music{display:grid;grid-template-columns:1fr 1fr;gap:2.5cqw;padding:1.5cqw 9.5cqw 5cqw;background:#fff}.music-photo{height:24cqw;background-position:-9.5cqw -217cqw;background-size:100cqw auto}.playlist{border:1px solid #e5e5e5;height:24cqw}.player-controls{height:5cqw;display:flex;align-items:center;gap:1.2cqw;padding:0 2cqw;color:#333;font-size:1.4cqw}.progress{height:1px;background:#999;flex:1}.playlist ol{margin:0;padding:0;list-style:none}.playlist li{padding:1.2cqw 2cqw;border-top:1px solid #e5e5e5;color:#777;text-transform:uppercase;font-size:.9cqw;letter-spacing:.07em}.playlist li:before{content:'♡';margin-right:1.6cqw;color:#be8c90}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,25cqw);background:#68040d}.gallery-photo{background-repeat:no-repeat;background-size:100cqw auto}.gallery-one{grid-row:1/3;background-position:0 -247.8cqw}.gallery-two{background-position:-33.3cqw -247.8cqw}.gallery-three{background-position:-66.6cqw -247.8cqw}.gallery-four{background-position:-66.6cqw -272.8cqw}.gallery-logo{display:flex;justify-content:center;align-items:center;font-size:5.2cqw;background-position:center,0 -344cqw}
.hotels{background:#fff;padding:5.5cqw 9.5cqw 6cqw}.hotels h2{text-align:center;margin-bottom:5cqw}.hotel-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.3cqw 3cqw}.hotel{display:grid;grid-template-columns:48% 1fr;gap:1.5cqw;align-items:start}.hotel-placeholder{aspect-ratio:270/170;background:#c8c8c8;color:#999;display:grid;place-items:center;font-size:1.6cqw}.hotel h3{font-size:.95cqw;text-transform:uppercase;letter-spacing:.2em;margin:.4cqw 0 1cqw}.hotel p{font-size:.75cqw;line-height:1.6;color:#777;margin-bottom:.8cqw}.hotel span{font-size:.7cqw;color:#bd7680;text-transform:uppercase}
.footer{height:23cqw;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;text-align:center;color:white;position:relative;padding:0 9.5cqw 3cqw}.footer>strong{font-size:1.7cqw;text-transform:uppercase;line-height:1.15}.footer-brand{justify-content:center;font-size:5.2cqw}.credit{position:absolute;bottom:0;left:0;width:100%;height:3.1cqw;background:#050505;display:grid;place-items:center;color:#eee;font-size:.85cqw;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
@media(max-width:700px){.hero{height:54.75vw;background-size:100vw auto;background-position:0 0}.topbar{padding:4vw 5vw}.brand{font-size:6vw}.menu-toggle{display:block;color:#fff;background:#25000577;border:1px solid #fff;padding:.3em .6em;font-size:5vw}.nav-links{display:none;position:absolute;right:5vw;top:13vw;background:#70030eef;padding:3vw;z-index:3;flex-direction:column;align-items:stretch;gap:0}.nav-links.open{display:flex}.nav-links a{font-size:3vw;padding:2vw 4vw}.event{padding:8vw 5vw;min-height:0}.event h1,.gifts h2,.rsvp h2,.hotels h2{font-size:5vw}.event-intro{max-width:90%;font-size:2.6vw;margin-bottom:6vw}.event-grid{grid-template-columns:1fr 1fr;gap:4vw}.event-center{grid-column:1/-1;grid-row:2;font-size:2.5vw}.event-location h2{font-size:2.5vw}.event-location p,.event-location strong{font-size:2.2vw}.round-photo{width:25vw;height:25vw;background-size:156vw auto}.church-photo{background-position:-12.5vw -96.5vw}.venue-photo{background-position:-116vw -96.5vw}.countdown{height:auto;min-height:35vw;grid-template-columns:32% 1fr}.countdown-portrait{background-size:156vw auto;background-position:0 -144vw}.countdown-brand{font-size:7vw}.time-boxes{grid-column:1/-1;padding:3vw 2vw}.time-boxes b{width:15vw;height:15vw;font-size:5vw}.time-boxes div{font-size:2vw}.gifts{padding:6vw 5vw}.gift-grid{gap:2vw}.gift-card{min-height:0;padding:2vw}.gift-art{height:28vw}.pink-gift span{font-size:5vw}.pink-gift b,.cash-gift strong{font-size:2.2vw}.pink-gift small{font-size:1.7vw}.cash-gift span{font-size:8vw}.table-gift span{font-size:9vw}.table-gift strong{font-size:3vw}.gift-card p{font-size:1.7vw}.wide-portrait{height:36.4vw;background-size:100vw auto;background-position:0 -154.5vw}.rsvp{padding:5vw}.rsvp-panel{min-height:42vw;grid-template-columns:1fr;padding:4vw}.rsvp-brand{display:none}.rsvp-form{gap:1.5vw}.rsvp-form>label,.rsvp-form fieldset label,.rsvp-form button{font-size:2.2vw}.rsvp-form>input{height:6vw;font-size:3vw}.rsvp-form fieldset{gap:2vw}.music{padding:5vw;gap:2vw}.music-photo,.playlist{height:35vw}.music-photo{background-size:145vw auto;background-position:-14vw -315vw}.player-controls{height:7vw}.playlist li{font-size:1.4vw;padding:1.3vw}.gallery{grid-template-rows:repeat(2,32vw)}.gallery-logo{font-size:6vw}.hotels{padding:9vw 5vw}.hotels h2{margin-bottom:7vw}.hotel-grid{grid-template-columns:1fr;gap:5vw}.hotel-placeholder{font-size:3vw}.hotel h3{font-size:2.3vw}.hotel p,.hotel span{font-size:2vw}.footer{height:32vw;padding:0 5vw 4vw}.footer>strong{font-size:2vw}.footer-brand{font-size:6vw}.credit{height:4vw;font-size:1.2vw}}
/* Reconstructed high-resolution photography. The original screenshot remains a reference only. */
.hero{background-image:url('assets/hero-mask.jpg');background-size:cover;background-position:center center}
.round-photo{background-size:cover;background-position:center center}
.church-photo{background-image:url('assets/church.jpg')}
.venue-photo{background-image:url('assets/venue.jpg')}
.countdown-portrait{background-image:url('assets/countdown-portrait.jpg');background-size:cover;background-position:center 44%}
.wide-portrait{background-image:url('assets/portrait-wide.jpg');background-size:cover;background-position:center 44%}
.music-photo{background-image:url('assets/beach-rock.jpg');background-size:cover;background-position:center center}
.gallery-photo{background-size:cover;background-position:center center}
.gallery-one{background-image:url('assets/portrait-tiara.jpg');background-position:center 38%}
.gallery-two{background-image:url('assets/beach-walk.jpg');background-position:center 42%}
.gallery-three{background-image:url('assets/portrait-wall.jpg');background-position:center 34%}
.gallery-four{background-image:url('assets/beach-seated.jpg');background-position:center 52%}
@media(max-width:700px){
  .hero{background-size:cover;background-position:center center}
  .round-photo,.countdown-portrait,.wide-portrait,.music-photo,.gallery-photo{background-size:cover}
  .church-photo,.venue-photo,.music-photo{background-position:center center}
  .wide-portrait{background-position:center 44%}
  .countdown-portrait{background-position:center 44%}
}

/* Ruby sparkle texture reconstructed from the original page's visual style. */
.red-bokeh {
  background-color: #720007;
  background-image: linear-gradient(90deg, rgba(43, 0, 6, .32), rgba(80, 0, 8, .05) 50%, rgba(43, 0, 6, .32)), url('assets/red-sparkle-bokeh.jpg');
  background-size: cover, cover;
  background-position: center, center;
  background-repeat: no-repeat;
}
.gallery-logo.red-bokeh { background-position: center, center; }

/* Simulated invitation submission. */
.submit-overlay[hidden], .submit-pending[hidden], .submit-complete[hidden], .submit-close[hidden] { display: none; }
.submit-overlay {
  position: fixed;
  z-index: 100;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(20, 0, 6, .74);
  backdrop-filter: blur(8px);
}
.submit-card {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  width: min(100%, 560px);
  min-height: 440px;
  padding: 62px 44px 40px;
  text-align: center;
  color: white;
  border: 1px solid rgba(255, 214, 214, .45);
  box-shadow: 0 24px 80px rgba(29, 0, 8, .48), inset 0 0 40px rgba(255, 255, 255, .08);
  background: linear-gradient(160deg, rgba(78, 0, 11, .24), rgba(110, 0, 22, .28)), url('assets/red-sparkle-bokeh.jpg') center / cover;
}
.submit-card::before, .submit-card::after {
  content: '';
  position: absolute;
  z-index: -1;
  width: 280px;
  height: 280px;
  border-radius: 50%;
  filter: blur(45px);
  background: rgba(255, 65, 88, .15);
  pointer-events: none;
}
.submit-card::before { top: -120px; left: -110px; }
.submit-card::after { right: -110px; bottom: -145px; }
.submit-glow {
  position: absolute;
  inset: -30%;
  z-index: -1;
  background: conic-gradient(from 40deg, transparent, rgba(255,255,255,.13), transparent 32%, rgba(255,174,190,.1), transparent 70%);
  animation: mare-spin 8s linear infinite;
}
.submit-logo { justify-content: center; font-size: clamp(54px, 8vw, 88px); filter: drop-shadow(0 0 12px rgba(255, 255, 255, .46)); animation: mare-breathe 2.3s ease-in-out infinite; }
.submit-logo .ornament { margin-right: -.18em; }
.submit-pending h2, .submit-complete h2 { margin: 46px 0 8px; color: white; font-size: 19px; letter-spacing: .06em; text-transform: uppercase; }
.submit-pending p { margin: 0 0 30px; color: #ffe7e9; font-size: 14px; }
.submit-progress { width: min(100%, 320px); height: 4px; margin: 0 auto; overflow: hidden; border-radius: 10px; background: rgba(255,255,255,.27); }
.submit-progress span { display: block; width: 32%; height: 100%; border-radius: inherit; background: white; box-shadow: 0 0 12px white; animation: mare-progress 1.2s ease-in-out infinite; }
.submit-sparkles { position: absolute; inset: 0; pointer-events: none; }
.submit-sparkles i { position: absolute; width: 5px; height: 5px; background: white; border-radius: 50%; box-shadow: 0 0 5px white, 0 0 15px #fff0f3; animation: mare-twinkle 1.8s ease-in-out infinite; }
.submit-sparkles i::before, .submit-sparkles i::after { content: ''; position: absolute; background: rgba(255,255,255,.8); left: 50%; top: 50%; transform: translate(-50%,-50%); }
.submit-sparkles i::before { width: 1px; height: 17px; }
.submit-sparkles i::after { width: 17px; height: 1px; }
.submit-sparkles i:nth-child(1) { left: 12%; top: 17%; animation-delay: .1s; }.submit-sparkles i:nth-child(2) { left: 81%; top: 12%; animation-delay: .7s; }.submit-sparkles i:nth-child(3) { left: 91%; top: 44%; animation-delay: 1.2s; }.submit-sparkles i:nth-child(4) { left: 19%; top: 70%; animation-delay: .4s; }.submit-sparkles i:nth-child(5) { left: 75%; top: 78%; animation-delay: 1.5s; }.submit-sparkles i:nth-child(6) { left: 43%; top: 9%; animation-delay: 1s; }.submit-sparkles i:nth-child(7) { left: 8%; top: 42%; animation-delay: 1.8s; }.submit-sparkles i:nth-child(8) { left: 57%; top: 87%; animation-delay: .9s; }
.submit-close { position: absolute; z-index: 3; top: 10px; right: 14px; border: 0; background: none; color: white; font: 400 30px Arial,sans-serif; }
.submit-complete h2 { margin-top: 28px; }
.ticket-card { display: grid; gap: 8px; max-width: 390px; margin: 18px auto; padding: 22px 26px; color: #740413; background: #fff9f8; border: 2px solid #f3d4d9; box-shadow: 0 10px 25px rgba(30,0,0,.28); }
.ticket-eyebrow { color: #b74257; font-size: 11px; text-transform: uppercase; letter-spacing: .2em; }
.ticket-card strong { font-size: 22px; overflow-wrap: anywhere; }
.ticket-card span:not(.ticket-eyebrow), .ticket-card small { font-size: 13px; }
.submit-disclaimer { max-width: 400px; margin: 12px auto 20px; color: #ffe9ed; font-size: 12px; line-height: 1.5; }
.submit-return { border: 1px solid #fff; background: #fff; color: #8f081a; padding: 11px 18px; text-transform: uppercase; font-size: 11px; font-weight: 800; letter-spacing: .05em; }
.submit-return:hover { background: #ffe8ed; }
body.submit-open { overflow: hidden; }
@keyframes mare-spin { to { transform: rotate(360deg); } }
@keyframes mare-breathe { 50% { filter: drop-shadow(0 0 24px rgba(255, 255, 255, .82)); transform: scale(1.025); } }
@keyframes mare-twinkle { 0%,100% { opacity: .25; transform: scale(.45); } 50% { opacity: 1; transform: scale(1.2); } }
@keyframes mare-progress { 0% { transform: translateX(-110%); } 100% { transform: translateX(320%); } }
@media(max-width:600px) { .submit-card { min-height: 420px; padding: 64px 22px 32px; }.submit-logo { font-size: 55px; }.submit-pending h2,.submit-complete h2 { font-size: 16px; }.ticket-card { padding: 18px; } }
@media(prefers-reduced-motion: reduce) { .submit-glow,.submit-logo,.submit-sparkles i,.submit-progress span { animation: none; } }

/* Full-screen quinceañera reveal */
.submit-overlay {
  padding: 0;
  background: radial-gradient(circle at 50% 40%, rgba(231, 31, 62, .22), transparent 54%), linear-gradient(130deg, rgba(35, 0, 9, .44), rgba(64, 0, 12, .12) 45%, rgba(22, 0, 6, .55)), url('assets/red-sparkle-bokeh.jpg') center / cover;
  backdrop-filter: none;
}
.submit-overlay::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: .35;
  background: repeating-conic-gradient(from 0deg at 50% 42%, transparent 0deg 13deg, rgba(255, 224, 230, .08) 16deg 17deg, transparent 19deg 34deg);
  animation: mare-spin 32s linear infinite;
}
.submit-overlay.is-complete::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 45%, rgba(255,255,255,.46), transparent 12%);
  animation: mare-reveal 1s ease-out forwards;
}
.submit-card {
  width: 100%;
  height: 100dvh;
  min-height: 0;
  max-height: none;
  padding: 4vh 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 0;
  box-shadow: none;
  background: none;
}
.submit-card::before, .submit-card::after { display: none; }
.submit-glow {
  position: fixed;
  inset: -55%;
  z-index: -1;
  opacity: .45;
  background: conic-gradient(from 20deg, transparent 0deg 58deg, rgba(255,244,246,.2) 73deg, transparent 89deg 170deg, rgba(255,181,195,.2) 185deg, transparent 202deg 360deg);
  animation: mare-spin 14s linear infinite;
}
.submit-emblem {
  width: clamp(126px, 16vw, 220px);
  height: auto;
  margin-bottom: 16px;
  overflow: visible;
  filter: drop-shadow(0 0 6px white) drop-shadow(0 0 24px rgba(255,231,237,.75));
  animation: mare-emblem 3.4s ease-in-out infinite;
}
.submit-logo {
  font-size: clamp(78px, 11vw, 160px);
  line-height: .9;
  filter: drop-shadow(0 0 15px rgba(255,255,255,.72));
  animation: mare-logo 3.2s ease-in-out infinite;
}
.submit-logo .ornament { display: none; }
.submit-logo > span:last-child {
  display: block;
  padding: .12em .1em .04em;
  background: linear-gradient(100deg, #fff 10%, #ffd5df 35%, #fff 47%, #fff 65%, #f7c5d0 77%, #fff 88%);
  background-size: 250% 100%;
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: mare-shimmer 3s linear infinite;
}
.submit-logo small { margin-top: .15em; font-size: .18em; letter-spacing: .2em; text-transform: uppercase; }
.submit-pending, .submit-complete { width: 100%; position: relative; z-index: 2; }
.submit-pending h2, .submit-complete h2 { margin: 30px 0 10px; text-shadow: 0 2px 14px #5b0010; font-size: clamp(17px, 2vw, 24px); letter-spacing: .12em; }
.submit-pending p { margin-bottom: 32px; font-size: clamp(13px, 1.2vw, 16px); }
.submit-progress { width: min(70vw, 440px); height: 7px; background: rgba(255,255,255,.24); box-shadow: 0 0 20px rgba(255,255,255,.2); }
.submit-progress span { width: 0; background: linear-gradient(90deg,#ff9ead,#fff,#fff0f5); box-shadow: 0 0 17px white; animation: mare-fill 2.7s ease-in-out forwards; }
.submit-sparkles { position: fixed; inset: 0; z-index: 1; overflow: hidden; }
.submit-sparkles i {
  left: var(--x); top: var(--y);
  width: var(--size); height: var(--size);
  box-shadow: 0 0 5px white, 0 0 14px #fff0f3, 0 0 28px #ffd4e2;
  animation: mare-drift var(--duration) ease-in-out var(--delay) infinite;
}
.submit-sparkles i::before { height: calc(var(--size) * 4); }
.submit-sparkles i::after { width: calc(var(--size) * 4); }
.submit-sparkles i:nth-child(3n) { background: #ffd6aa; box-shadow: 0 0 8px #ffe9cb, 0 0 24px #ffd29a; }
.submit-sparkles i:nth-child(5n) { border-radius: 50%; filter: blur(1px); }
.submit-sparkles i:nth-child(5n)::before,.submit-sparkles i:nth-child(5n)::after { display: none; }
.submit-close { position: fixed; top: max(20px,3vh); right: max(20px,3vw); font-size: 38px; text-shadow: 0 0 12px #fff; }
.submit-overlay.is-complete .submit-emblem { width: clamp(92px, 11vw, 155px); margin-bottom: 4px; }
.submit-overlay.is-complete .submit-logo { font-size: clamp(68px, 8vw, 118px); }
.submit-complete h2 { margin-top: 18px; }
.ticket-card { width: min(88vw, 480px); max-width: none; margin: 18px auto; padding: 28px; border: 3px double #d99ca9; box-shadow: 0 20px 50px rgba(20,0,7,.45), inset 0 0 0 5px #fff6f7; }
.ticket-card strong { font-size: clamp(21px,2.3vw,29px); }
.submit-disclaimer { max-width: 480px; font-size: 13px; }
.submit-return { padding: 14px 24px; box-shadow: 0 0 20px rgba(255,255,255,.27); }
@keyframes mare-emblem { 50% { transform: translateY(-8px) rotate(2deg); filter: drop-shadow(0 0 13px #fff) drop-shadow(0 0 38px #fff0f5); } }
@keyframes mare-logo { 50% { filter: drop-shadow(0 0 32px rgba(255,255,255,.95)); transform: scale(1.025); } }
@keyframes mare-shimmer { to { background-position: 250% 0; } }
@keyframes mare-drift { 0%,100% { opacity: .18; transform: translate3d(0,14px,0) scale(.45) rotate(0deg); } 48% { opacity: 1; transform: translate3d(10px,-18px,0) scale(1.3) rotate(35deg); } }
@keyframes mare-fill { to { width: 100%; } }
@keyframes mare-reveal { 0% { opacity: 0; transform: scale(.2); } 30% { opacity: .9; } 100% { opacity: 0; transform: scale(5); } }
@media(max-width:600px) {
  .submit-card { min-height: 0; padding: 5vh 18px; }
  .submit-emblem { width: 130px; margin-bottom: 8px; }
  .submit-logo { font-size: clamp(68px, 18vw, 88px); }
  .submit-logo small { font-size: .2em; }
  .submit-overlay.is-complete .submit-emblem { width: 100px; }
  .submit-overlay.is-complete .submit-logo { font-size: 67px; }
  .submit-pending h2,.submit-complete h2 { font-size: 17px; line-height: 1.3; }
  .ticket-card { padding: 20px; }
}
@media(prefers-reduced-motion: reduce) {
  .submit-overlay::before,.submit-overlay.is-complete::after,.submit-glow,.submit-emblem,.submit-logo,.submit-logo > span:last-child,.submit-sparkles i,.submit-progress span { animation: none; }
  .submit-progress span { width: 100%; }
}
.submit-sparkles i:nth-child(n) { left: var(--x); top: var(--y); animation-delay: var(--delay); }
.submit-logo { text-shadow: none; }
.submit-logo > span:last-child {
  background: none;
  -webkit-text-fill-color: #fff;
  color: #fff;
  text-shadow: 0 2px 3px #50000c, 0 0 14px rgba(255,255,255,.72), 0 0 34px rgba(255,214,226,.58);
  animation: mare-logo-shine 3s ease-in-out infinite;
}
@keyframes mare-logo-shine { 50% { text-shadow: 0 2px 3px #50000c, 0 0 24px #fff, 0 0 58px rgba(255,214,226,.9); } }
@media(prefers-reduced-motion: reduce) { .submit-logo > span:last-child { animation: none; } }
.hotel-image { display: block; width: 100%; aspect-ratio: 270 / 170; height: auto; object-fit: cover; }

/* Header and countdown placement from the original screenshot. */
.brand { flex-direction: column; align-items: center; justify-content: center; }
.brand img { display: block; width: 5.2cqw; height: auto; margin-bottom: -.9cqw; filter: drop-shadow(0 1px 2px #5b0010); }
.brand > span { display: block; text-align: center; }
.countdown { grid-template-columns: 40% 60%; align-items: stretch; }
.countdown-visual { position: relative; height: 100%; min-width: 0; overflow: hidden; }
.countdown-portrait { position: absolute; inset: 0; height: 100%; background-size: cover; background-position: center 44%; }
.countdown-brand { position: absolute; z-index: 1; top: 50%; right: 1.7cqw; transform: translateY(-50%); display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 3.7cqw; line-height: .8; text-shadow: 0 2px 5px #130006; }
.countdown-brand img { display: block; width: 5.6cqw; height: auto; margin-bottom: -.7cqw; filter: drop-shadow(0 2px 3px #130006); }
.countdown-brand > span { display: block; text-align: center; }
.time-boxes { grid-column: 2; grid-row: 1; align-self: center; padding: 0 2cqw; }
@media(max-width:700px) {
  .brand img { width: 12vw; margin-bottom: -1.3vw; }
  .countdown { grid-template-columns: 40% 60%; height: 23vw; min-height: 0; }
  .countdown-visual { height: 23vw; }
  .countdown-portrait { background-size: cover; background-position: center 44%; }
  .countdown-brand { right: 1.5vw; font-size: 3.7vw; }
  .countdown-brand img { width: 7.5vw; margin-bottom: -1vw; }
  .time-boxes { grid-column: 2; grid-row: 1; padding: 0 1.2vw; gap: .4vw; }
  .time-boxes div { font-size: 1.5vw; }
  .time-boxes b { width: 11.7vw; height: 11.7vw; margin-bottom: .8vw; font-size: 3.4vw; border-width: 1px; }
}

/* RSVP invitation and ticket redesign */
.rsvp {
  padding: clamp(56px, 5.5cqw, 82px) clamp(22px, 8cqw, 116px) clamp(62px, 6cqw, 90px);
  text-align: center;
  background: #fffdfc;
}
.rsvp-heading { margin-bottom: clamp(26px, 3cqw, 42px); }
.rsvp-eyebrow { display: inline-block; margin-bottom: 12px; color: #a62b42; font-size: 11px; font-weight: 800; letter-spacing: .24em; text-transform: uppercase; }
.rsvp h2 { margin: 0; color: #241d20; font-size: clamp(26px, 3cqw, 42px); letter-spacing: .01em; line-height: 1.13; }
.rsvp-heading p { margin: 14px 0 0; color: #766b6e; font-size: clamp(13px, 1.1cqw, 16px); line-height: 1.5; }
.rsvp-panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
  align-items: center;
  gap: clamp(28px, 4cqw, 58px);
  min-height: 0;
  padding: clamp(30px, 4cqw, 58px);
  overflow: hidden;
  border-radius: 5px;
  box-shadow: 0 24px 55px rgba(96, 6, 22, .18);
}
.rsvp-panel::after { content: ''; position: absolute; inset: 12px; border: 1px solid rgba(255,255,255,.18); pointer-events: none; }
.rsvp-intro { position: relative; z-index: 1; display: grid; justify-items: center; align-content: center; min-height: 250px; padding: 18px; color: #fff; }
.rsvp-logo { display: grid; justify-items: center; color: #fff; font-family: 'Great Vibes','Brush Script MT',cursive; font-size: clamp(48px, 5.8cqw, 79px); line-height: .8; text-shadow: 0 2px 5px #570009, 0 0 22px rgba(255,255,255,.4); }
.rsvp-logo img { width: clamp(92px, 10cqw, 138px); height: auto; margin-bottom: -7px; filter: drop-shadow(0 0 13px rgba(255,255,255,.7)); }
.rsvp-logo small { display: block; margin-top: .28em; font: 700 .2em Montserrat,Arial,sans-serif; text-align: center; text-transform: uppercase; letter-spacing: .14em; }
.rsvp-intro p { max-width: 280px; margin: 30px 0 12px; font-size: clamp(13px, 1.2cqw, 16px); line-height: 1.6; }
.rsvp-stars { color: #ffdce2; font-size: 19px; letter-spacing: .3em; }
.rsvp-form {
  position: relative; z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  padding: clamp(25px, 3.1cqw, 44px);
  color: #3d2a2e;
  text-align: left;
  background: rgba(255, 252, 251, .98);
  border: 1px solid #f0dfe2;
  border-top: 4px solid #c04b62;
  box-shadow: 0 18px 40px rgba(38, 0, 8, .28);
}
.rsvp-form h3 { margin: 0 0 3px; color: #720e22; font-size: clamp(19px, 1.7cqw, 24px); font-weight: 800; letter-spacing: -.02em; }
.form-field label, .rsvp-form fieldset legend { display: block; margin: 0 0 9px; color: #5d333a; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.form-field input { display: block; width: 100%; height: 50px; padding: 0 15px; color: #26171a; background: #fff; border: 1px solid #dfcdd1; border-radius: 3px; font-size: 15px; }
.form-field input::placeholder { color: #ac999e; }
.form-field input:focus { outline: 2px solid #c45066; outline-offset: 1px; border-color: #b23a50; }
.rsvp-form fieldset { display: block; margin: 0; padding: 0; border: 0; }
.attendance-options { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.rsvp-form fieldset .attendance-options label { display: flex; align-items: center; gap: 9px; min-height: 49px; padding: 10px 13px; color: #513c42; background: #fff; border: 1px solid #dfcdd1; border-radius: 3px; font-size: 12px; font-weight: 700; text-transform: none; white-space: normal; cursor: pointer; }
.rsvp-form fieldset .attendance-options label:has(input:checked) { color: #8e1028; background: #fff1f3; border-color: #bd4960; box-shadow: inset 0 0 0 1px #bd4960; }
.rsvp-form fieldset .attendance-options input { flex: 0 0 auto; width: 16px; height: 16px; margin: 0; accent-color: #a3223c; }
.rsvp-form button { display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; min-height: 53px; margin: 5px 0 0; padding: 12px 20px; color: #fff; background: linear-gradient(110deg, #790917, #b71938); border: 0; border-radius: 3px; font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; box-shadow: 0 10px 18px rgba(139, 12, 38, .2); transition: transform .2s, box-shadow .2s, background .2s; }
.rsvp-form button:hover { background: linear-gradient(110deg, #8e0c1d, #cb2242); box-shadow: 0 13px 21px rgba(139,12,38,.29); transform: translateY(-2px); }
.rsvp-form button:disabled { cursor: wait; opacity: .7; transform: none; }
.rsvp-form button span { font-size: 19px; line-height: 1; }
.rsvp-message { margin: 18px 0 0; color: #763744; }

.submit-overlay.is-complete .submit-emblem { width: clamp(72px, 8vw, 108px); margin-bottom: 0; }
.submit-overlay.is-complete .submit-logo { font-size: clamp(64px, 7vw, 98px); }
.submit-complete h2 { margin: 13px 0 3px; font-size: clamp(21px, 2.3vw, 30px); letter-spacing: .05em; }
.submit-success-intro { margin: 0 0 16px; color: #ffe5e9; font-size: 14px; }
.ticket-card { position: relative; display: block; width: min(90vw, 560px); margin: 0 auto 18px; padding: 0; overflow: hidden; color: #741023; background: #fffcfa; border: 1px solid #f6d9dc; border-radius: 4px; box-shadow: 0 22px 50px rgba(26,0,8,.45), inset 0 0 0 4px #fff8f8; text-align: center; }
.ticket-header { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 76px; padding: 12px 30px; color: white; background: linear-gradient(110deg,#6b0718,#a71b39); }
.ticket-header img { width: 58px; height: auto; }
.ticket-header > span:not(.ticket-spark) { display: grid; gap: 4px; font-size: 12px; font-weight: 800; letter-spacing: .2em; }
.ticket-header small { font-size: 11px; font-weight: 500; letter-spacing: .11em; text-transform: uppercase; }
.ticket-spark { position: absolute; right: 24px; color: #ffd5de; font-size: 20px; }
.ticket-content { display: grid; justify-items: center; gap: 11px; padding: 26px 24px 28px; }
.ticket-eyebrow { color: #ad5163; font-size: 10px; font-weight: 800; letter-spacing: .22em; text-transform: uppercase; }
.ticket-content strong { max-width: 100%; color: #6d0a1a; font-size: clamp(24px, 3.1vw, 39px); line-height: 1.13; overflow-wrap: anywhere; }
.ticket-status { display: inline-flex; justify-content: center; align-items: center; min-height: 32px; padding: 5px 15px; color: #8a1630; background: #fcebee; border: 1px solid #f0c7d0; border-radius: 30px; font-size: 12px; font-weight: 800; }
.ticket-content small { color: #674a51; font-size: 13px; }
.ticket-stub { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 24px; color: #a95a69; background: #fff7f6; border-top: 1px dashed #d8aab3; font-size: 10px; font-weight: 800; letter-spacing: .12em; }
.ticket-stub span:last-child { white-space: nowrap; }
.submit-disclaimer { display: flex; align-items: center; justify-content: center; gap: 8px; max-width: 560px; margin: 13px auto 18px; padding: 9px 15px; color: #fff3f4; background: rgba(56, 0, 12, .38); border: 1px solid rgba(255,255,255,.2); border-radius: 30px; font-size: 11px; line-height: 1.4; }
.submit-disclaimer span { flex: 0 0 auto; font-size: 17px; }
.submit-return { display: inline-flex; align-items: center; justify-content: center; gap: 13px; padding: 12px 20px; color: #fff; background: transparent; border: 1px solid rgba(255,255,255,.75); border-radius: 30px; box-shadow: none; font-size: 11px; letter-spacing: .1em; }
.submit-return:hover { color: #7d0d21; background: #fff; }
.submit-return span { font-size: 17px; line-height: 1; }
@media(max-width:700px) {
  .rsvp { padding: 46px 20px 55px; }
  .rsvp-heading { margin-bottom: 25px; }
  .rsvp h2 { font-size: clamp(24px, 7vw, 31px); }
  .rsvp-heading p { font-size: 13px; }
  .rsvp-panel { grid-template-columns: 1fr; gap: 10px; padding: 22px 18px 20px; }
  .rsvp-intro { min-height: 0; padding: 15px 10px 11px; }
  .rsvp-logo { font-size: 52px; }
  .rsvp-logo img { width: 86px; }
  .rsvp-intro p { margin: 18px 0 5px; font-size: 13px; }
  .rsvp-stars { font-size: 16px; }
  .rsvp-form { gap: 16px; padding: 25px 20px; }
  .form-field input { height: 48px; font-size: 14px; }
  .rsvp-form fieldset .attendance-options label { font-size: 11px; padding: 8px; }
  .submit-overlay.is-complete .submit-emblem { width: 64px; }
  .submit-overlay.is-complete .submit-logo { font-size: 58px; }
  .submit-overlay.is-complete .submit-card { justify-content: flex-start; overflow-y: auto; padding-top: 30px; padding-bottom: 28px; }
  .submit-complete h2 { font-size: 20px; }
  .ticket-header { min-height: 61px; }
  .ticket-header img { width: 46px; }
  .ticket-content { padding: 18px 16px 20px; gap: 8px; }
  .ticket-content strong { font-size: clamp(22px, 7vw, 30px); }
  .ticket-stub { padding: 11px 16px; font-size: 8px; }
  .submit-disclaimer { max-width: 95%; padding: 8px 12px; border-radius: 8px; font-size: 10px; }
}
.submit-disclaimer > span:last-child { flex: 1 1 auto; min-width: 0; font-size: 11px; }
@media(max-width:700px) { .submit-disclaimer > span:last-child { font-size: 10px; } }

/* Bring the event and countdown compositions closer to the reference. */
.event { position: relative; }
.event-grid { display: block; }
.event-location { position: absolute; top: 7cqw; width: 23cqw; }
.event-location:first-child { left: 5cqw; }
.event-location:last-child { right: 7.2cqw; }
.round-photo { width: 16cqw; height: 16cqw; margin: 0 auto; }
.church-photo { background-image: url('assets/church-v2.jpg'); background-position: center 48%; }
.venue-photo { background-image: url('assets/venue-v2.jpg'); background-position: center 58%; }
.event-center { width: 43cqw; max-width: 100%; margin: 0 auto; padding-top: 1.7cqw; }
.event-center p { margin-bottom: 1.6cqw; }
.countdown-portrait {
  background-color: #27201f;
  background-image: linear-gradient(90deg, transparent 38%, rgba(39,32,31,.48) 63%, #27201f 96%), url('assets/countdown-portrait.jpg');
  background-size: 100% 100%, 80% auto;
  background-position: center, left top;
  background-repeat: no-repeat;
}
@media(max-width:700px) {
  .event { min-height: 0; padding: 8vw 5vw 7vw; }
  .event-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4vw; }
  .event-location { position: static; width: auto; }
  .round-photo { width: 25vw; height: 25vw; margin: 0 auto; }
  .event-center { grid-column: 1 / -1; grid-row: 2; width: 90%; padding-top: 0; }
  .event-center p { margin-bottom: 3vw; }
  .countdown-portrait { background-size: 100% 100%, 80% auto; background-position: center, left top; }
}
.submit-card:focus { outline: none; }
.submit-overlay.is-leaving { opacity: 0; pointer-events: none; transition: opacity .35s ease; }
@media(prefers-reduced-motion: reduce) { .submit-overlay.is-leaving { opacity: 1; transition: none; } }

/* Interactive photo gallery */
.gallery-section { padding: clamp(42px, 5cqw, 72px) 5cqw clamp(55px, 6cqw, 88px); background: #fffdfc; }
.gallery-heading { margin-bottom: 30px; text-align: center; }
.gallery-heading > span { display: block; margin-bottom: 9px; color: #af3d55; font-size: 10px; font-weight: 800; letter-spacing: .23em; text-transform: uppercase; }
.gallery-heading h2 { margin: 0; color: #20191b; font-size: clamp(25px, 2.7cqw, 39px); font-weight: 800; }
.gallery-heading p { margin: 8px 0 0; color: #776b6f; font-size: 13px; }
.gallery { grid-template-rows: repeat(2, 22.5cqw); overflow: visible; }
.gallery-photo { position: relative; display: block; min-width: 0; padding: 0; overflow: hidden; border: 0; background: #21171a; cursor: zoom-in; isolation: isolate; transition: transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease; }
.gallery-photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; transform: scale(1.01) translate(var(--move-x, 0px), var(--move-y, 0px)); transition: transform .65s cubic-bezier(.2,.8,.2,1), filter .45s ease; }
.gallery-one img { object-position: center 38%; }.gallery-two img,.gallery-three img { object-position: center top; }.gallery-four img { object-position: center 52%; }
.gallery-photo::after { content: ''; position: absolute; inset: 0; z-index: 1; opacity: 0; background: radial-gradient(circle at var(--pointer-x, 50%) var(--pointer-y, 50%), rgba(255,255,255,.2), transparent 30%), linear-gradient(0deg, rgba(31,0,8,.65), transparent 50%); transition: opacity .35s ease; pointer-events: none; }
.gallery-photo:hover,.gallery-photo:focus-visible { z-index: 2; transform: scale(1.025); box-shadow: 0 20px 48px rgba(30,0,9,.32); }
.gallery-photo:hover img,.gallery-photo:focus-visible img { transform: scale(1.075) translate(var(--move-x, 0px), var(--move-y, 0px)); }
.gallery-photo:hover::after,.gallery-photo:focus-visible::after { opacity: 1; }
.gallery-photo:focus-visible,.gallery-logo:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
.gallery-hover { position: absolute; z-index: 2; left: 22px; bottom: 20px; display: flex; align-items: center; gap: 13px; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; opacity: 0; transform: translateY(12px); transition: opacity .35s ease, transform .35s ease; }
.gallery-hover b { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; font-size: 17px; font-weight: 400; }
.gallery-photo:hover .gallery-hover,.gallery-photo:focus-visible .gallery-hover { opacity: 1; transform: translateY(0); }
.gallery-logo { position: relative; flex-direction: column; gap: 4px; padding: 0; overflow: hidden; border: 0; cursor: pointer; transition: filter .35s ease; }
.gallery-logo:hover { filter: brightness(1.18); }
.gallery-logo em { position: absolute; bottom: 20px; color: white; font: 800 10px Montserrat,Arial,sans-serif; font-style: normal; letter-spacing: .16em; text-transform: uppercase; transition: transform .3s ease; }
.gallery-logo:hover em { transform: translateY(-5px); }
.gallery-logo .ornament { margin: 0 0 -8px; font-size: .9em; }
.gallery-section.is-visible .gallery-photo,.gallery-section.is-visible .gallery-logo { animation: gallery-enter .75s backwards; }
.gallery-section.is-visible .gallery-two { animation-delay: .08s; }.gallery-section.is-visible .gallery-three { animation-delay: .16s; }.gallery-section.is-visible .gallery-logo { animation-delay: .24s; }.gallery-section.is-visible .gallery-four { animation-delay: .32s; }
@keyframes gallery-enter { from { opacity: 0; transform: translateY(28px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }

.gallery-dialog { position: fixed; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; overflow: hidden; color: #fff; background: #14080d; border: 0; }
body.gallery-open { overflow: hidden; }
.gallery-dialog::backdrop { background: rgba(12,0,5,.86); }
.gallery-viewer { position: relative; isolation: isolate; display: grid; grid-template-rows: auto minmax(0,1fr) auto; width: 100%; height: 100%; background: radial-gradient(circle at center, #5a1628 0, #16060c 75%); }
.gallery-ambient { position: absolute; z-index: -1; inset: -12%; background: center / cover no-repeat; filter: blur(55px) brightness(.6) saturate(1.3); opacity: .45; transform: scale(1.12); transition: background-image .2s; }
.gallery-viewer::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgba(18,2,8,.55), transparent 22% 78%, rgba(18,2,8,.55)); pointer-events: none; }
.gallery-topbar { display: flex; justify-content: space-between; align-items: center; min-height: 68px; padding: 14px clamp(20px,4vw,60px); }
.gallery-topbar span { color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .22em; }
.gallery-topbar i { color: #ee8199; font-style: normal; }
.gallery-close { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; color: #fff; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.3); border-radius: 50%; font: 32px Arial,sans-serif; line-height: 1; }
.gallery-close:hover,.gallery-arrow:hover { background: rgba(255,255,255,.24); }
.gallery-stage { display: grid; grid-template-columns: minmax(52px,6vw) minmax(0,1fr) minmax(52px,6vw); align-items: center; min-height: 0; padding: 0 clamp(8px,3vw,45px); touch-action: pan-y; }
.gallery-stage figure { display: grid; grid-template-rows: minmax(0,1fr) auto; justify-items: center; align-items: center; min-height: 0; height: 100%; margin: 0; }
.gallery-stage figure img { display: block; max-width: 100%; max-height: calc(100dvh - 205px); width: auto; height: auto; object-fit: contain; box-shadow: 0 25px 70px rgba(0,0,0,.38); opacity: 1; transform: translateX(0) scale(1); transition: opacity .2s ease, transform .3s ease; }
.gallery-stage figure.is-changing img { opacity: 0; transform: translateX(var(--slide-shift, 15px)) scale(.97); }
.gallery-stage figcaption { display: flex; justify-content: space-between; gap: 25px; width: min(100%,600px); padding: 12px 0 8px; font-size: 12px; font-weight: 700; letter-spacing: .07em; }
.gallery-stage figcaption span:last-child { color: #f2bcc8; font-variant-numeric: tabular-nums; }
.gallery-arrow { justify-self: center; display: grid; place-items: center; width: clamp(42px,4vw,58px); height: clamp(42px,4vw,58px); color: #fff; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.3); border-radius: 50%; font: 48px Georgia,serif; line-height: .5; }
.gallery-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 92px; padding: 12px clamp(20px,4vw,60px); background: rgba(13,1,6,.45); border-top: 1px solid rgba(255,255,255,.12); backdrop-filter: blur(15px); }
.gallery-play { min-width: 130px; padding: 10px 13px; color: #fff; background: transparent; border: 1px solid rgba(255,255,255,.35); border-radius: 2px; font-size: 10px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.gallery-play[aria-pressed=true] { background: #a51635; border-color: #a51635; }
.gallery-thumbs { display: flex; justify-content: center; gap: 8px; }
.gallery-thumbs button { width: 48px; height: 48px; padding: 0; overflow: hidden; background: #2b101b; border: 2px solid transparent; border-radius: 2px; opacity: .6; transition: opacity .2s, transform .2s; }
.gallery-thumbs button[aria-current=true] { border-color: #fff; opacity: 1; transform: translateY(-3px); }
.gallery-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.gallery-help { min-width: 130px; color: #d9bac3; font-size: 11px; text-align: right; }
@media(max-width:700px) {
  .gallery-section { padding: 43px 16px 52px; }
  .gallery-heading { margin-bottom: 23px; }
  .gallery-heading h2 { font-size: 29px; }
  .gallery { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: repeat(3,36vw); }
  .gallery-one { grid-row: 1 / 3; }
  .gallery-logo { grid-column: 1; grid-row: 3; font-size: 7vw; }
  .gallery-four { grid-column: 2; grid-row: 3; }
  .gallery-logo em { bottom: 10px; font-size: 7px; }
  .gallery-hover { left: 9px; bottom: 8px; font-size: 8px; gap: 4px; }
  .gallery-hover b { width: 20px; height: 20px; font-size: 12px; }
  .gallery-stage { grid-template-columns: 42px minmax(0,1fr) 42px; padding: 0 4px; }
  .gallery-stage figure img { max-height: calc(100dvh - 210px); }
  .gallery-arrow { width: 34px; height: 34px; font-size: 35px; }
  .gallery-topbar { min-height: 58px; padding: 10px 16px; }
  .gallery-topbar span { font-size: 10px; }
  .gallery-stage figcaption { font-size: 10px; }
  .gallery-toolbar { min-height: 92px; flex-wrap: wrap; justify-content: center; gap: 8px 15px; padding: 10px 12px; }
  .gallery-play { min-width: 0; font-size: 9px; padding: 9px; }
  .gallery-thumbs button { width: 38px; height: 38px; }
  .gallery-help { display: none; }
}
@media(prefers-reduced-motion:reduce) {
  .gallery-section.is-visible .gallery-photo,.gallery-section.is-visible .gallery-logo { animation: none; }
  .gallery-photo,.gallery-photo img,.gallery-photo::after,.gallery-hover,.gallery-stage figure img,.gallery-ambient { transition: none; }
}

/* Menú ligero con letras nítidas sobre los reflejos de la fotografía. */
@media (min-width: 701px) {
  .nav-links { gap: clamp(13px,1.9cqw,28px); }
  .nav-links a {
    position: relative;
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 7px 1px;
    color: #fff;
    background: transparent;
    border-radius: 0;
    font-weight: 800;
    letter-spacing: .1em;
    -webkit-text-stroke: .6px #310006;
    paint-order: stroke fill;
    text-shadow: 0 1px 1px #210006, 1px 0 2px #210006, -1px 0 2px #210006, 0 3px 8px #210006;
    transition: color .2s ease, text-shadow .2s ease;
  }
  .nav-links a::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: 3px;
    width: 0;
    height: 2px;
    border-radius: 2px;
    background: #fff;
    box-shadow: 0 0 7px rgba(255,255,255,.85);
    transform: translateX(-50%);
    transition: width .25s ease;
  }
  .nav-links a:hover,.nav-links a:focus-visible { color: #fff4f6; text-decoration: none; text-shadow: 0 1px 2px #210006, 0 0 11px #fff; }
  .nav-links a:hover::after,.nav-links a:focus-visible::after { width: 100%; }
}

/* Cuenta regresiva con esfera de cristal, órbitas de luz y destellos. */
.countdown-content {
  grid-column: 2;
  grid-row: 1;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: clamp(19px, 1.7cqw, 26px);
  padding: 2cqw 3cqw;
  background: linear-gradient(105deg, rgba(72,0,13,.48), transparent 42%, rgba(25,0,8,.4));
}
.countdown-content::before {
  content: '';
  position: absolute;
  z-index: -1;
  width: 38%;
  aspect-ratio: 1;
  top: -62%;
  right: 13%;
  border-radius: 50%;
  background: #ff8194;
  filter: blur(75px);
  opacity: .17;
  animation: countdown-glow 7s ease-in-out infinite alternate;
}
.countdown-content::after {
  content: '';
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(115deg, transparent 36%, rgba(255,255,255,.055) 50%, transparent 64%);
  background-size: 220% 100%;
  animation: countdown-sheen 9s linear infinite;
  pointer-events: none;
}
.countdown-heading { text-align: center; line-height: 1.25; text-shadow: 0 2px 9px #380006; }
.countdown-heading > span { display: block; margin-bottom: 7px; color: #ffc7d1; font-size: clamp(9px,.72cqw,11px); font-weight: 700; letter-spacing: .28em; text-transform: uppercase; }
.countdown-heading strong { display: block; color: #fff; font-size: clamp(17px,1.55cqw,23px); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.time-boxes { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); align-items: start; gap: 1cqw; width: 100%; padding: 0; }
.time-boxes .time-unit { position: relative; display: flex; flex-direction: column; align-items: center; gap: 13px; min-width: 0; color: #fff; }
.time-boxes .time-unit b {
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  width: clamp(72px,8.1cqw,118px);
  height: clamp(72px,8.1cqw,118px);
  margin: 0;
  border: 1px solid rgba(255,255,255,.7);
  border-radius: 50%;
  background: radial-gradient(circle at 35% 24%,rgba(255,255,255,.19),rgba(134,8,29,.2) 42%,rgba(34,0,10,.36) 90%);
  box-shadow: inset 0 1px 17px rgba(255,255,255,.19), inset 0 -12px 26px rgba(26,0,8,.34), 0 9px 20px rgba(27,0,7,.26);
  font-size: clamp(27px,2.5cqw,37px);
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  line-height: 1;
  text-shadow: 0 2px 10px rgba(56,0,10,.8);
}
.time-boxes .time-unit b::before {
  content: '';
  position: absolute;
  inset: -5px;
  border: 1px solid rgba(255,214,223,.36);
  border-radius: 50%;
}
.time-boxes .time-unit b::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  background: conic-gradient(transparent 0 67%,rgba(255,255,255,.13) 75%,#fff 80%,rgba(255,255,255,.1) 85%,transparent 94%);
  -webkit-mask: radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 2px));
  mask: radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 2px));
  animation: countdown-orbit 8s linear infinite;
}
.time-boxes .time-unit:nth-child(2) b::after { animation-delay: -2s; }
.time-boxes .time-unit:nth-child(3) b::after { animation-delay: -4s; }
.time-boxes .time-unit:nth-child(4) b::after { animation-delay: -6s; }
.time-boxes .time-unit > span { color: #ffe9ed; font-size: clamp(9px,.72cqw,11px); font-weight: 700; letter-spacing: .17em; text-shadow: 0 2px 7px #3d0007; }
.time-boxes .time-unit:nth-child(4) b { border-color: #fff0f4; box-shadow: inset 0 1px 17px rgba(255,255,255,.24),0 0 24px rgba(255,134,158,.38),0 9px 20px rgba(27,0,7,.3); }
.time-boxes b.is-ticking { animation: countdown-tick .4s ease-out; }
@keyframes countdown-orbit { to { transform: rotate(360deg); } }
@keyframes countdown-glow { to { transform: translate(-25%,22%) scale(1.3); opacity: .3; } }
@keyframes countdown-sheen { to { background-position: -220% 0; } }
@keyframes countdown-tick { 45% { transform: scale(1.075); filter: brightness(1.3); } }
@media (max-width: 700px) {
  .countdown { display: block; height: auto; min-height: 0; }
  .countdown-visual { height: 170px; }
  .countdown-brand { right: 7%; font-size: clamp(27px,8vw,39px); }
  .countdown-brand img { width: 42px; margin-bottom: -5px; }
  .countdown-content { min-height: 226px; padding: 24px 17px 26px; gap: 24px; }
  .countdown-heading > span { font-size: 9px; }
  .countdown-heading strong { font-size: 18px; }
  .time-boxes { gap: 4px; }
  .time-boxes .time-unit { gap: 11px; }
  .time-boxes .time-unit b { width: clamp(56px,17vw,76px); height: clamp(56px,17vw,76px); font-size: clamp(23px,6vw,29px); }
  .time-boxes .time-unit > span { font-size: 8px; letter-spacing: .08em; }
}
@media (max-width: 350px) {
  .time-boxes .time-unit b { width: 54px; height: 54px; }
  .time-boxes .time-unit > span { font-size: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  .countdown-content::before,.countdown-content::after,.time-boxes .time-unit b::after,.time-boxes b.is-ticking { animation: none; }
}
