:root{
  --ivory:#f8f6f1;
  --paper:#fbfaf7;
  --mist:#eef5f8;
  --midnight:#1c2b48;
  --midnight2:#294f76;
  --ink:#1e2c39;
  --soft:#72889a;
  --serif:'Cormorant Garamond',serif;
  --sans:'Manrope',sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;max-width:100%;overflow-x:hidden!important;background:var(--ivory);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
body{position:relative}
img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}
button,input,textarea{font:inherit}
.site{width:100%;max-width:100%;overflow-x:hidden!important}
.section{position:relative;width:100%;max-width:100%;overflow:hidden}
.content{position:relative;z-index:6;width:min(86vw,720px);margin:0 auto}
.content--narrow{width:min(82vw,650px)}

.paper-grain{position:absolute;inset:0;opacity:.18;background-image:radial-gradient(circle at 20% 25%,rgba(255,255,255,.95) 0 1px,transparent 1px),radial-gradient(circle at 74% 67%,rgba(74,104,128,.10) 0 1px,transparent 1px);background-size:9px 9px,16px 16px}
.soft-aura{position:absolute;width:90vw;height:90vw;border-radius:50%;left:5vw;top:17svh;background:radial-gradient(circle,rgba(190,216,235,.42),transparent 70%);filter:blur(26px);animation:aura 12s ease-in-out infinite alternate}
@keyframes aura{to{transform:translate3d(2vw,-1vh,0) scale(1.04)}}

.progress{position:fixed;z-index:9999;left:0;right:0;top:0;height:3px;background:rgba(255,255,255,.14);backdrop-filter:blur(8px)}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#c5d9e8,#6e91af,#1c2b48)}

.loader{position:fixed;inset:0;z-index:10000;overflow:hidden;background:#111820}
.loader__photo{width:100%;height:100%;object-fit:cover;object-position:center 44%;filter:contrast(1.02);animation:loaderZoom 4.3s ease-out both}
.loader__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,8,12,.12),rgba(4,8,12,.05) 50%,rgba(4,8,12,.50))}
.loader__names{position:absolute;z-index:4;top:8svh;left:50%;transform:translateX(-50%);width:min(84vw,520px);filter:brightness(0) invert(1) drop-shadow(0 10px 26px rgba(0,0,0,.25));opacity:.96}
.loader__date{position:absolute;z-index:4;left:0;right:0;bottom:6svh;text-align:center;color:#fff;font:400 10px/1 var(--sans);letter-spacing:.34em}
.loader__curtain{position:absolute;top:0;bottom:0;width:51%;background:linear-gradient(180deg,#faf9f6,#edf3f7);transition:transform .95s cubic-bezier(.76,0,.24,1)}
.loader__curtain--a{left:0;transform:translateX(-101%)}
.loader__curtain--b{right:0;transform:translateX(101%)}
.loader.is-opening .loader__curtain--a,.loader.is-opening .loader__curtain--b{transform:translateX(0)}
.loader.is-hidden{opacity:0;visibility:hidden;transition:opacity .42s ease .12s,visibility .42s ease .12s}
@keyframes loaderZoom{to{transform:scale(1.065)}}

.desktop-gate{display:none}

.hero{min-height:100svh;display:grid;place-items:center;background:linear-gradient(180deg,#fbfaf7 0%,#eef4f8 52%,#faf8f3 100%)}
.hero__content{position:relative;z-index:7;width:74vw;text-align:center}
.hero__monogram{width:min(58vw,295px);margin:0 auto 22px;filter:drop-shadow(0 14px 30px rgba(29,52,73,.08))}
.hero__rule{width:46px;height:1px;background:#8ba2b4;margin:0 auto 18px}
.hero__date,.hero__place{margin:0;font:300 clamp(28px,6.8vw,39px)/1 var(--serif)}
.hero__place{margin-top:10px;font-size:clamp(22px,5.7vw,31px);color:#607789}
.scroll-cue{position:absolute;z-index:8;left:50%;bottom:max(22px,calc(env(safe-area-inset-bottom) + 10px));transform:translateX(-50%);border:0;background:transparent;color:#72899b;display:flex;flex-direction:column;align-items:center;gap:9px}
.scroll-cue span{width:1px;height:44px;background:#8398a8;animation:cue 2.1s ease-in-out infinite}
.scroll-cue em{font-style:normal;font:400 8px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase}
@keyframes cue{0%,100%{transform:scaleY(.72);opacity:.35;transform-origin:top}50%{transform:scaleY(1);opacity:1}}

.side-art{position:absolute;z-index:2;pointer-events:none;will-change:transform;filter:drop-shadow(0 20px 40px rgba(32,54,75,.08))}
.side-art img{height:100%;width:auto;max-width:none}
.side-art--left{-webkit-mask-image:linear-gradient(90deg,#000 0 58%,rgba(0,0,0,.92) 72%,transparent 100%);mask-image:linear-gradient(90deg,#000 0 58%,rgba(0,0,0,.92) 72%,transparent 100%)}
.side-art--right{-webkit-mask-image:linear-gradient(270deg,#000 0 58%,rgba(0,0,0,.92) 72%,transparent 100%);mask-image:linear-gradient(270deg,#000 0 58%,rgba(0,0,0,.92) 72%,transparent 100%)}

.side-art--hero-left{height:76svh;left:-18vw;top:11svh}
.side-art--hero-right{height:72svh;right:-18vw;top:13svh}
.side-art--where{height:54svh;left:-20vw;bottom:0}
.side-art--timing{height:52svh;right:-20vw;top:22svh;opacity:.46;filter:brightness(1.15) drop-shadow(0 18px 38px rgba(0,0,0,.09))}
.side-art--dress-left{height:56svh;left:-22vw;bottom:3svh;opacity:.88}
.side-art--dress-right{height:52svh;right:-22vw;top:5svh;opacity:.86}
.side-art--details{height:72svh;right:-19vw;top:12svh;opacity:.78;filter:brightness(1.13) drop-shadow(0 18px 42px rgba(0,0,0,.12))}
.side-art--rsvp{height:48svh;left:-20vw;bottom:2svh;opacity:.42}
.side-art--contact{height:54svh;right:-20vw;bottom:0;opacity:.52;filter:brightness(1.14)}
.side-art--final-left{height:58svh;left:-22vw;bottom:0;opacity:.82}
.side-art--final-right{height:54svh;right:-22vw;top:0;opacity:.78}

.floral-motion-a{animation:floralA 13s ease-in-out infinite alternate}
.floral-motion-b{animation:floralB 15s ease-in-out infinite alternate}
.floral-motion-c{animation:floralC 17s ease-in-out infinite alternate}
@keyframes floralA{to{transform:translate3d(7px,-9px,0) rotate(.65deg) scale(1.012)}}
@keyframes floralB{to{transform:translate3d(-6px,8px,0) rotate(-.65deg) scale(1.012)}}
@keyframes floralC{to{transform:translate3d(5px,-6px,0) rotate(.45deg) scale(1.01)}}

.section--navy{background:linear-gradient(145deg,#172943 0%,#2b5076 58%,#1c2b48 100%);color:#fff}
.section--ivory{background:linear-gradient(180deg,#fbfaf7,#f6f3ed)}
.section--mist{background:linear-gradient(180deg,#eff5f8,#f9faf8 58%,#edf4f8)}
.navy-light{position:absolute;inset:-18%;pointer-events:none;filter:blur(24px)}
.navy-light--one{background:radial-gradient(ellipse at 18% 35%,rgba(124,177,218,.17),transparent 33%);animation:navyOne 13s ease-in-out infinite alternate}
.navy-light--two{background:radial-gradient(ellipse at 78% 65%,rgba(255,255,255,.075),transparent 28%),linear-gradient(115deg,transparent 30%,rgba(255,255,255,.045) 49%,transparent 67%);animation:navyTwo 15s ease-in-out infinite alternate}
@keyframes navyOne{to{transform:translate3d(2vw,-1vh,0) scale(1.04)}}
@keyframes navyTwo{to{transform:translate3d(-2vw,1vh,0) rotate(2deg) scale(1.035)}}

.kicker{margin:0 0 20px;text-align:center;font:400 10px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;color:#7c91a2}
.kicker--light{color:#bdd0dd}
.display{margin:0 auto 28px;max-width:12.5em;text-align:center;font:300 clamp(38px,9.4vw,55px)/1.02 var(--serif);letter-spacing:-.02em}
.display--small{font-size:clamp(34px,8.3vw,48px)}
.display--light{color:#fff}
.copy{margin:0 auto;max-width:18em;text-align:center;font:300 23px/1.34 var(--serif)}
.copy--light{color:#e1e9ef}

.invitation{padding:18svh 0 19svh}

.photo-single{padding:8svh 0 10svh;background:#f8f6f1}
.photo-single__frame{width:88vw;height:76svh;margin:0 auto;overflow:hidden}
.photo-single__frame img{width:100%;height:100%;object-fit:cover;object-position:center 49%}

.where{padding:15svh 0 18svh}
.where__date,.where__place{margin:0;text-align:center;font:300 clamp(47px,11.2vw,68px)/.95 var(--serif);letter-spacing:-.04em}
.where__place{font-size:clamp(39px,9.8vw,56px);max-width:13em;margin:0 auto}
.where__gap{height:8svh}

.lux-button{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:64px;padding:0 22px;margin-top:34px;border:1px solid rgba(28,43,72,.16);text-transform:uppercase;letter-spacing:.18em;font:400 9px/1 var(--sans)}
.lux-button b{font-size:20px;font-weight:300}
.lux-button::before{content:"";position:absolute;inset:-30% auto -30% -72%;width:42%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.44),transparent);transform:skewX(-22deg);animation:shine 5s ease-in-out infinite}
@keyframes shine{0%,72%,100%{left:-72%}84%{left:128%}}
.lux-button--dark{background:var(--midnight);color:#fff;border-color:transparent;box-shadow:0 18px 36px rgba(28,43,72,.16)}
.lux-button--glass{background:rgba(255,255,255,.055);color:#fff;border-color:rgba(255,255,255,.24)}

.timing{padding:14svh 0 16svh;min-height:100svh}
.timeline{display:grid;gap:2svh}
.timeline__item{position:relative;padding:4svh 0 4.5svh}
.timeline__item time{display:block;font:300 clamp(72px,18vw,102px)/.78 var(--serif);letter-spacing:-.055em}
.timeline__item span{display:block;margin-top:20px;font:300 clamp(33px,8.3vw,48px)/1 var(--serif);color:#d9e5ed}
.timeline__item small{position:absolute;right:0;top:4.5svh;font:400 9px/1 var(--sans);letter-spacing:.28em;color:#8da9bd}

.photo-switch{height:88svh;background:#10151c}
.photo-switch__layer{position:absolute;inset:0;overflow:hidden}
.photo-switch__layer img{width:100%;height:100%;object-fit:cover;object-position:center 50%;transform:scale(1.045)}
.photo-switch__layer--a{animation:photoA 12s ease-in-out infinite}
.photo-switch__layer--b{animation:photoB 12s ease-in-out infinite}
.photo-switch__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,10,15,.06),transparent 50%,rgba(5,10,15,.34))}
.photo-switch__caption{position:absolute;z-index:3;left:6vw;bottom:5svh;color:#fff;font:400 9px/1 var(--sans);letter-spacing:.30em;text-transform:uppercase}
@keyframes photoA{0%,42%{opacity:1;transform:scale(1)}50%,92%{opacity:0;transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
@keyframes photoB{0%,42%{opacity:0;transform:scale(1.04)}50%,92%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.04)}}

.dress{padding:15svh 0 18svh}
.section-title{margin:0;text-align:center;font:300 clamp(50px,12vw,70px)/.94 var(--serif);letter-spacing:-.035em}
.dress__type{text-align:center;margin:9px 0 38px;font:400 9px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;color:#7d92a3}
.palette{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;align-items:start;max-width:440px;margin:0 auto 54px}
.swatch{min-width:0;text-align:center}
.swatch i{display:block;height:124px;border-radius:40px 40px 18px 18px;background:linear-gradient(120deg,rgba(255,255,255,.15),transparent 40%),var(--sw);box-shadow:0 16px 30px rgba(33,57,81,.09),inset 1px 1px 0 rgba(255,255,255,.45);animation:swatchGlow 7s ease-in-out infinite alternate}
.swatch:nth-child(2) i{animation-delay:-1.4s}.swatch:nth-child(3) i{animation-delay:-2.8s}.swatch:nth-child(4) i{animation-delay:-4.2s}.swatch:nth-child(5) i{animation-delay:-5.6s}
@keyframes swatchGlow{to{box-shadow:0 20px 36px rgba(33,57,81,.13),inset 1px 1px 0 rgba(255,255,255,.55)}}
.swatch span{display:flex;justify-content:center;align-items:flex-start;min-height:38px;margin-top:11px;font:300 14px/1.02 var(--serif);color:#394b5b}
.swatch small{display:block;margin-top:5px;font:400 7px/1 var(--sans);letter-spacing:.14em;color:#8598a7}
.dress__rules{display:grid;gap:42px}
.dress__rule{padding-top:30px;border-top:1px solid rgba(28,43,72,.10)}
.dress__rule h3{margin:0 0 18px;text-align:center;font:400 9px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;color:#7890a2}
.dress__rule p{margin:0 auto;max-width:15em;text-align:center;font:300 28px/1.26 var(--serif)}

.details{padding:18svh 0 20svh;min-height:96svh}
.rsvp{padding:15svh 0 18svh}
.rsvp__deadline{margin:0 auto 22px;max-width:12em;text-align:center;font:300 clamp(37px,9vw,52px)/1.03 var(--serif);letter-spacing:-.02em}
.form-kicker{text-align:center;margin:0 0 38px;font:400 9px/1 var(--sans);letter-spacing:.27em;text-transform:uppercase;color:#8397a7}
.field{display:block;margin:0 0 30px}
.field span,.choices legend{display:block;margin-bottom:10px;font:300 20px/1.28 var(--serif)}
.field input,.field textarea{width:100%;border:0;border-bottom:1px solid rgba(28,43,72,.20);background:transparent;border-radius:0;padding:11px 0 10px;outline:0;color:var(--ink);font-size:16px}
.field textarea{min-height:60px;resize:vertical}
.field input:focus,.field textarea:focus{border-color:#6e8ba3}
.choices{border:0;padding:0;margin:0 0 32px}
.choices label{display:grid;grid-template-columns:18px 1fr;gap:12px;align-items:start;margin-bottom:16px}
.choices input{position:absolute;opacity:0}
.choices i{width:16px;height:16px;border:1px solid #7f95a6;border-radius:50%;margin-top:4px;position:relative}
.choices input:checked+i::after{content:"";position:absolute;inset:3px;border-radius:50%;background:#5f7e96}
.choices span{font:300 19px/1.3 var(--serif)}
.form-note{min-height:22px;text-align:center;margin:15px 0 0;font:300 17px/1 var(--serif);color:#6f879a}

.contact{padding:17svh 0 19svh;min-height:92svh}
.contact__name{margin:34px 0 4px;text-align:center;font:300 clamp(54px,13vw,74px)/.9 var(--serif)}
.contact__phone{display:block;text-align:center;font:300 27px/1 var(--serif);color:#dce8ef}
.contact__actions{display:grid;gap:10px;margin-top:31px}
.contact__actions .lux-button{margin:0}

.closing-photo{height:88svh;background:#111}
.closing-photo__image{width:100%;height:100%;object-fit:cover;object-position:center 48%;filter:grayscale(1) contrast(1.04)}
.closing-photo__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,10,16,.04),transparent 50%,rgba(4,10,16,.30))}

.final{min-height:100svh;display:grid;place-items:center;padding:15svh 0}
.final__content{position:relative;z-index:7;width:82vw;text-align:center}
.final__copy{margin:0 auto 18px;max-width:12em;font:300 clamp(36px,8.8vw,52px)/1.02 var(--serif);letter-spacing:-.025em}
.final__love{margin:0 0 10px;font:400 9px/1 var(--sans);letter-spacing:.30em;text-transform:uppercase;color:#70889a}
.final__names{width:min(92vw,610px);margin:0 auto;filter:drop-shadow(0 14px 28px rgba(38,59,80,.07))}
.final__date{margin:11px 0 0;font:300 16px/1 var(--serif);letter-spacing:.26em;color:#7d91a1}

.reveal{opacity:0;transform:translateY(24px);filter:blur(5px);transition:opacity 1.05s cubic-bezier(.2,.7,.2,1),transform 1.05s cubic-bezier(.2,.7,.2,1),filter 1.05s ease}
.reveal.is-visible{opacity:1;transform:none;filter:blur(0)}
.reveal--hero{transition-duration:1.25s}
.reveal-image{opacity:0;clip-path:inset(8% 0 8% 0);transform:scale(1.025);transition:opacity 1.1s ease,clip-path 1.35s cubic-bezier(.2,.7,.2,1),transform 1.35s ease}
.reveal-image.is-visible{opacity:1;clip-path:inset(0);transform:scale(1)}

.desktop-gate{display:none}

@media(max-width:420px){
  .loader__names{width:88vw;top:7svh}
  .side-art--hero-left{height:72svh;left:-21vw}
  .side-art--hero-right{height:68svh;right:-21vw}
  .side-art--where{height:50svh;left:-23vw}
  .side-art--timing{height:49svh;right:-23vw}
  .side-art--dress-left{height:52svh;left:-24vw}
  .side-art--dress-right{height:49svh;right:-24vw}
  .side-art--details{height:68svh;right:-22vw}
  .side-art--rsvp{height:45svh;left:-23vw}
  .side-art--contact{height:50svh;right:-23vw}
  .side-art--final-left{height:54svh;left:-24vw}
  .side-art--final-right{height:51svh;right:-24vw}
  .palette{gap:5px}
  .swatch i{height:118px;border-radius:38px 38px 17px 17px}
  .swatch span{font-size:12px;min-height:36px}
  .swatch small{font-size:6.5px}
}
@media(min-width:700px){
  .dress__rules{grid-template-columns:1fr 1fr;gap:42px}
  .contact__actions{grid-template-columns:1fr 1fr}
}
@media(min-width:900px){
  body{overflow:hidden}
  .site,.loader{display:none!important}
  .desktop-gate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#fff,#edf4f8 58%,#dbe7ef)}
  .desktop-gate__inner{display:flex;flex-direction:column;align-items:center;text-align:center;color:#284158}
  .desktop-gate__monogram{width:110px;opacity:.72}
  .desktop-gate p{margin:20px 0 24px;font:300 30px/1.05 var(--serif)}
  .qr-box{width:190px;height:190px;padding:14px;background:#fff;box-shadow:0 24px 68px rgba(37,62,85,.14)}
  .qr-box img,.qr-box canvas{max-width:100%;height:auto!important}
  .desktop-gate small{margin-top:18px;font:400 12px/1 var(--sans);letter-spacing:.24em;color:#70889b}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}


/* ===== FINAL DELIVERY POLISH ===== */
/* Hero florals run continuously from top to bottom of the white field. */
.hero .side-art{top:0!important;bottom:0!important;height:100svh!important;opacity:.98;overflow:visible}
.hero .side-art--hero-left{left:-12vw!important}
.hero .side-art--hero-right{right:-12vw!important}
.hero .side-art img{height:100%!important;width:auto!important;object-fit:contain}
.hero .side-art--left{-webkit-mask-image:linear-gradient(90deg,#000 0 54%,rgba(0,0,0,.94) 72%,transparent 100%);mask-image:linear-gradient(90deg,#000 0 54%,rgba(0,0,0,.94) 72%,transparent 100%)}
.hero .side-art--right{-webkit-mask-image:linear-gradient(270deg,#000 0 54%,rgba(0,0,0,.94) 72%,transparent 100%);mask-image:linear-gradient(270deg,#000 0 54%,rgba(0,0,0,.94) 72%,transparent 100%)}

/* Large calla + lace bridge before the timing scene. */
.calla-interlude{height:58svh;background:linear-gradient(180deg,#f8f6f1 0%,#eef4f7 72%,#1c2b48 100%);display:flex;align-items:flex-end;justify-content:flex-start}
.calla-interlude__glow{position:absolute;inset:0;background:radial-gradient(circle at 28% 35%,rgba(255,255,255,.95),rgba(207,226,240,.30) 42%,transparent 72%);filter:blur(12px)}
.calla-interlude__image{position:relative;z-index:2;height:68svh;width:auto;max-width:none;margin-left:-8vw;margin-bottom:-4svh;filter:drop-shadow(0 28px 54px rgba(35,58,79,.12));animation:callaBridge 15s ease-in-out infinite alternate}
@keyframes callaBridge{to{transform:translate3d(8px,-7px,0) rotate(.5deg) scale(1.012)}}

/* Timing: stronger side florals, still kept behind typography. */
.side-art--timing-right{height:78svh;right:-17vw;top:10svh;opacity:.74;filter:brightness(1.18) drop-shadow(0 22px 46px rgba(0,0,0,.10))}
.side-art--timing-left{height:40svh;left:-22vw;bottom:2svh;opacity:.28;filter:brightness(1.15)}
.timing .content{z-index:7}

/* Dress code: one heading only; no technical hex labels. */
.dress .section-title{margin-bottom:10px}
.dress .swatch small{display:none!important}
.palette{margin-bottom:58px}

/* Contacts: floral framing is much more visible. */
.side-art--contact-right{height:76svh;right:-18vw;bottom:0;opacity:.72;filter:brightness(1.18) drop-shadow(0 22px 46px rgba(0,0,0,.12))}
.side-art--contact-left{height:45svh;left:-21vw;top:8svh;opacity:.34;filter:brightness(1.14)}
.contact .content{z-index:7}

/* Final text lives directly over the final couple image. */
.final--photo{height:100svh;padding:0;background:#0e141a;display:flex;align-items:flex-end;justify-content:center}
.final__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 47%;filter:grayscale(1) contrast(1.04);transform:scale(1.035);animation:finalZoom 16s ease-in-out infinite alternate}
.final__overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,10,16,.08) 0%,rgba(5,10,16,.13) 42%,rgba(6,12,18,.82) 100%)}
.final--photo .final__content{position:relative;z-index:6;width:86vw;margin:0 auto max(6svh,calc(env(safe-area-inset-bottom) + 24px));color:#fff;text-align:center}
.final--photo .final__copy{color:#fff;text-shadow:0 10px 28px rgba(0,0,0,.18)}
.final--photo .final__love,.final--photo .final__date{color:#dce7ee}
.final--photo .final__names{filter:brightness(0) invert(1) drop-shadow(0 12px 28px rgba(0,0,0,.28));opacity:.96}
@keyframes finalZoom{to{transform:scale(1.075)}}

/* hard mobile lock */
html,body,.site{width:100%!important;max-width:100%!important;min-width:0!important;overflow-x:hidden!important}

@media(max-width:420px){
  .hero .side-art--hero-left{left:-14vw!important}
  .hero .side-art--hero-right{right:-14vw!important}
  .calla-interlude{height:54svh}
  .calla-interlude__image{height:63svh;margin-left:-10vw}
  .side-art--timing-right{height:72svh;right:-20vw}
  .side-art--timing-left{height:36svh;left:-24vw}
  .side-art--contact-right{height:70svh;right:-20vw}
  .side-art--contact-left{height:40svh;left:-23vw}
}


/* ===== FINAL POLISHED ROUND ===== */
/* Safe text zones */
.hero__content,
.where .content,
.dress .content,
.details .content,
.contact .content,
.final__content{position:relative;z-index:8}

/* Hero — side florals from top to bottom, but text stays fully readable */
.hero{min-height:100svh;padding:0;background:linear-gradient(180deg,#fbfaf7 0%,#eef4f8 48%,#faf8f3 100%)}
.hero__content{width:min(64vw,430px);padding:14svh 0 16svh}
.hero__content::before{content:"";position:absolute;inset:8svh -10vw 9svh;border-radius:999px;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.95) 0%,rgba(255,255,255,.72) 48%,rgba(255,255,255,0) 78%);filter:blur(18px);z-index:-1}
.hero__monogram{width:min(48vw,270px);margin:0 auto 28px}
.hero__date{font-size:clamp(28px,7.2vw,42px)}
.hero__place{margin-top:14px;font-size:clamp(22px,5.5vw,32px);line-height:1.06;color:#6d8394}
.hero .side-art{top:0!important;bottom:0!important;height:100svh!important;opacity:1;overflow:visible}
.hero .side-art img{height:100%!important;width:auto!important;object-fit:contain}
.hero .side-art--hero-left{left:-18vw!important;width:auto}
.hero .side-art--hero-right{right:-18vw!important;width:auto}
.hero .side-art--left{-webkit-mask-image:linear-gradient(90deg,#000 0 48%,rgba(0,0,0,.92) 63%,transparent 100%);mask-image:linear-gradient(90deg,#000 0 48%,rgba(0,0,0,.92) 63%,transparent 100%)}
.hero .side-art--right{-webkit-mask-image:linear-gradient(270deg,#000 0 48%,rgba(0,0,0,.92) 63%,transparent 100%);mask-image:linear-gradient(270deg,#000 0 48%,rgba(0,0,0,.92) 63%,transparent 100%)}
.scroll-cue{bottom:max(26px,calc(env(safe-area-inset-bottom) + 12px))}

/* Where block — slightly more breathing room */
.where{padding:14svh 0 15svh}
.where .content{width:min(80vw,640px)}

/* Decorative calla bridge before timing */
.calla-interlude{height:42svh;min-height:320px;background:linear-gradient(180deg,#fbfaf7 0%,#eef4f8 72%,#e2ebf2 100%);display:flex;align-items:flex-end;justify-content:flex-start}
.calla-interlude::after{content:"";position:absolute;right:-10vw;top:4svh;width:48vw;max-width:240px;height:26svh;background:url('assets/decor/floral-right-luxe.png') no-repeat right top/contain;opacity:.16;filter:blur(.2px)}
.calla-interlude__glow{position:absolute;inset:0;background:radial-gradient(circle at 30% 42%,rgba(255,255,255,.98),rgba(207,226,240,.34) 42%,transparent 74%);filter:blur(14px)}
.calla-interlude__image{position:absolute;left:-10vw;bottom:-2svh;z-index:2;height:54svh;width:auto;max-width:none;margin:0;filter:drop-shadow(0 24px 50px rgba(35,58,79,.12));animation:callaBridge 16s ease-in-out infinite alternate}

/* Timing — more visible florals, but safely outside the text column */
.timing{padding:14svh 0 15svh;min-height:auto}
.timing .content{width:min(80vw,650px);padding-right:10vw}
.side-art--timing-right{height:62svh;right:-16vw;top:18svh;opacity:.78;filter:brightness(1.16) drop-shadow(0 22px 48px rgba(0,0,0,.11))}
.side-art--timing-left{height:30svh;left:-18vw;bottom:3svh;opacity:.30;filter:brightness(1.14)}
.timeline{gap:1.2svh}
.timeline__item{padding:3.7svh 0 4.1svh}

/* Mid photo transition */
.photo-switch{height:84svh}
.photo-switch__caption{left:50%;transform:translateX(-50%);bottom:4svh;text-align:center;width:max-content;max-width:82vw;background:rgba(12,18,26,.26);padding:10px 16px;border-radius:999px;backdrop-filter:blur(10px)}

/* Dress code — no duplicate technical labels, more florals at edges only */
.dress{padding:14svh 0 15svh}
.dress .content{width:min(82vw,700px)}
.dress .section-title{margin-bottom:12px}
.dress__type{margin:10px 0 34px}
.palette{max-width:520px;margin:0 auto 54px;gap:9px}
.swatch span{min-height:44px}
.swatch small{display:none!important}
.dress__rules{max-width:620px;margin:0 auto;gap:36px}
.side-art--dress-left{height:44svh;left:-16vw;bottom:2svh;opacity:.42;filter:brightness(1.07) drop-shadow(0 16px 36px rgba(30,50,68,.08))}
.side-art--dress-right{height:28svh;right:-18vw;top:6svh;opacity:.34;filter:brightness(1.08)}

/* Details section — mild edge floral only */
.details{padding:16svh 0 17svh;min-height:auto}
.details .content{width:min(82vw,620px)}
.side-art--details{height:58svh;right:-18vw;top:18svh;opacity:.44}

/* RSVP bridge */
.rsvp{padding:14svh 0 16svh}
.side-art--rsvp{height:42svh;left:-18vw;bottom:3svh;opacity:.26}

/* Contacts — richer styling with florals framing the text */
.contact{padding:16svh 0 17svh;min-height:auto}
.contact .content{width:min(82vw,620px)}
.side-art--contact-right{height:66svh;right:-16vw;bottom:2svh;opacity:.82;filter:brightness(1.18) drop-shadow(0 24px 50px rgba(0,0,0,.14))}
.side-art--contact-left{height:38svh;left:-15vw;top:7svh;opacity:.34;filter:brightness(1.12)}
.contact__name{margin:28px 0 6px}
.contact__actions{margin-top:34px;gap:12px}
.contact .lux-button--glass{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,.04));backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.contact::before{content:"";position:absolute;left:50%;top:11svh;width:38px;height:1px;background:rgba(255,255,255,.22);transform:translateX(-50%)}

/* Final screen — split text into upper and lower groups over the photo */
.final--photo{height:100svh;padding:0;background:#0f141b;display:block}
.final__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 47%;filter:grayscale(1) contrast(1.05);transform:scale(1.035);animation:finalZoom 16s ease-in-out infinite alternate}
.final__overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,8,14,.52) 0%,rgba(4,8,14,.32) 28%,rgba(4,8,14,.10) 46%,rgba(4,8,14,.44) 68%,rgba(4,8,14,.82) 100%)}
.final__content{position:absolute;inset:0;width:100%;margin:0;color:#fff;text-align:center}
.final__top{position:absolute;left:50%;top:15svh;transform:translateX(-50%);width:min(82vw,600px)}
.final__bottom{position:absolute;left:50%;bottom:max(7svh,calc(env(safe-area-inset-bottom) + 32px));transform:translateX(-50%);width:min(92vw,640px)}
.final__copy{margin:0 auto;max-width:10.8em;font:300 clamp(36px,8.8vw,52px)/1.04 var(--serif);letter-spacing:-.025em;color:#fff;text-shadow:0 10px 28px rgba(0,0,0,.20)}
.final__love{margin:0 0 12px;font:400 9px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:#dbe6ee}
.final__names{width:min(90vw,610px);margin:0 auto;filter:brightness(0) invert(1) drop-shadow(0 12px 28px rgba(0,0,0,.30));opacity:.97}
.final__date{margin:14px 0 0;font:300 16px/1 var(--serif);letter-spacing:.26em;color:#dbe6ee}

/* Mobile refinements */
@media(max-width:420px){
  .hero__content{width:min(72vw,420px);padding:14svh 0 15svh}
  .hero .side-art--hero-left{left:-20vw!important}
  .hero .side-art--hero-right{right:-20vw!important}
  .hero__content::before{inset:10svh -16vw 10svh}
  .where .content,.timing .content,.dress .content,.details .content,.contact .content{width:min(84vw,640px)}
  .calla-interlude{height:38svh;min-height:290px}
  .calla-interlude::after{width:42vw;top:3svh;right:-12vw;opacity:.14}
  .calla-interlude__image{height:48svh;left:-14vw;bottom:-1svh}
  .side-art--timing-right{height:56svh;right:-19vw;top:22svh}
  .side-art--timing-left{height:26svh;left:-20vw;bottom:4svh}
  .photo-switch{height:76svh}
  .photo-switch__caption{font-size:8px;letter-spacing:.26em;padding:9px 14px}
  .side-art--dress-left{height:38svh;left:-19vw}
  .side-art--dress-right{height:23svh;right:-20vw}
  .side-art--contact-right{height:58svh;right:-18vw;bottom:4svh}
  .side-art--contact-left{height:32svh;left:-18vw;top:10svh}
  .final__top{top:12svh;width:min(84vw,560px)}
  .final__copy{font-size:clamp(34px,9vw,48px)}
  .final__bottom{bottom:max(8svh,calc(env(safe-area-inset-bottom) + 28px));width:min(92vw,600px)}
}


/* ===== FINAL VERSION — spatial / floral re-art-direction ===== */
/* Global safe zone: decorative artwork is always outside text. */
.content{z-index:10}
.hero__content,.final__content{z-index:10}
.side-art,.timing__garland,.dress__garland,.contact__garland,.calla-interlude__garland{pointer-events:none;z-index:2}

/* HERO: florals visibly run from top to bottom, but keep a clean center. */
.hero{min-height:100svh;background:linear-gradient(180deg,#fbfaf7 0%,#edf4f8 52%,#faf8f3 100%)}
.hero__content{width:min(62vw,390px);padding:13svh 0 15svh}
.hero__content::before{inset:7svh -11vw 8svh;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.98) 0%,rgba(255,255,255,.84) 49%,rgba(255,255,255,0) 79%)}
.hero .side-art{top:0!important;bottom:0!important;height:100svh!important;width:48vw!important;opacity:1!important;overflow:visible!important;filter:drop-shadow(0 20px 42px rgba(39,61,82,.07))}
.hero .side-art img{height:100%!important;width:100%!important;object-fit:contain!important}
.hero .side-art--hero-left{left:-24vw!important}
.hero .side-art--hero-right{right:-24vw!important}
.hero .side-art--left,.hero .side-art--right{-webkit-mask-image:none!important;mask-image:none!important}
.hero__date,.hero__place{position:relative;z-index:11}
.hero__place{color:#657d90}

/* PHOTO -> DATE transition: no huge blank gap. */
.photo-single{padding:6svh 0 5svh}
.where{padding:11svh 0 10svh}
.where__gap{height:5svh}

/* CALLA BRIDGE: compact, finished, not an empty standalone screen. */
.calla-interlude{height:30svh;min-height:235px;background:linear-gradient(180deg,#f8f6f1 0%,#edf3f7 100%);overflow:hidden;display:flex;align-items:flex-end}
.calla-interlude__glow{background:radial-gradient(circle at 34% 38%,rgba(255,255,255,.98),rgba(200,222,238,.30) 42%,transparent 74%);filter:blur(14px)}
.calla-interlude__garland{position:absolute;left:50%;bottom:-4svh;transform:translateX(-50%);width:120vw;max-width:none;height:auto;filter:drop-shadow(0 22px 44px rgba(35,58,79,.12));animation:garlandFloat 16s ease-in-out infinite alternate}
@keyframes garlandFloat{to{transform:translateX(-50%) translateY(-6px) scale(1.012)}}

/* TIMING: richer edge florals and a floral base; center stays untouched. */
.timing{padding:12svh 0 25svh;min-height:100svh}
.timing .content{width:min(72vw,570px);margin-left:7vw;margin-right:auto;padding-right:0}
.side-art--timing-right{height:72svh!important;width:44vw!important;right:-24vw!important;top:12svh!important;opacity:.88!important;filter:brightness(1.18) drop-shadow(0 22px 50px rgba(0,0,0,.13))!important}
.side-art--timing-right img{height:100%;width:100%;object-fit:contain}
.side-art--timing-left{height:33svh!important;width:28vw!important;left:-19vw!important;bottom:17svh!important;opacity:.38!important;filter:brightness(1.13)}
.timing__garland{position:absolute;left:50%;bottom:-3svh;transform:translateX(-50%);width:114vw;max-width:none;opacity:.58;filter:brightness(1.08) drop-shadow(0 -4px 24px rgba(0,0,0,.08));animation:navyGarland 15s ease-in-out infinite alternate}
@keyframes navyGarland{to{transform:translateX(-50%) translateY(-7px) scale(1.012)}}
.timeline__item{padding:3.2svh 0 3.7svh}
.timeline__item time{font-size:clamp(68px,17vw,96px)}
.timeline__item span{font-size:clamp(31px,7.8vw,44px)}

/* DRESS: more floral presence, still no floral behind any copy. */
.dress{padding:13svh 0 25svh}
.dress .content{width:min(82vw,660px)}
.side-art--dress-left{height:48svh!important;width:38vw!important;left:-23vw!important;bottom:13svh!important;opacity:.57!important}
.side-art--dress-right{height:31svh!important;width:30vw!important;right:-21vw!important;top:5svh!important;opacity:.45!important}
.dress__garland{position:absolute;left:50%;bottom:-4svh;transform:translateX(-50%);width:114vw;max-width:none;opacity:.46;filter:drop-shadow(0 -2px 22px rgba(35,58,79,.08))}
.palette{position:relative;z-index:11}
.dress__rules{position:relative;z-index:11;background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,.16));padding:8px 0 0}

/* DETAILS/RSPV — keep floral quieter around text. */
.details{padding:15svh 0 18svh}
.side-art--details{right:-24vw!important;opacity:.40!important}
.rsvp{padding:14svh 0 17svh}
.side-art--rsvp{left:-22vw!important;opacity:.22!important}

/* CONTACT: visibly decorated at sides and bottom, with a protected center. */
.contact{padding:15svh 0 29svh;min-height:100svh}
.contact .content{width:min(72vw,560px)}
.contact .content::before{content:"";position:absolute;inset:-5svh -7vw -6svh;border-radius:44%;background:radial-gradient(circle at 50% 45%,rgba(34,66,98,.64),rgba(34,66,98,.24) 58%,transparent 80%);filter:blur(10px);z-index:-1}
.side-art--contact-right{height:72svh!important;width:44vw!important;right:-25vw!important;bottom:9svh!important;opacity:.90!important;filter:brightness(1.2) drop-shadow(0 24px 52px rgba(0,0,0,.15))!important}
.side-art--contact-left{height:40svh!important;width:30vw!important;left:-20vw!important;top:10svh!important;opacity:.42!important}
.contact__garland{position:absolute;left:50%;bottom:-4svh;transform:translateX(-50%);width:115vw;max-width:none;opacity:.62;filter:brightness(1.08) drop-shadow(0 -4px 26px rgba(0,0,0,.10))}
.contact__actions{position:relative;z-index:12}
.contact .lux-button--glass{border-color:rgba(255,255,255,.30);background:linear-gradient(90deg,rgba(255,255,255,.09),rgba(255,255,255,.045));box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 18px 38px rgba(7,18,30,.12)}

/* FINAL: more editorial spacing over the photo. */
.final__top{top:10svh!important;width:min(80vw,570px)!important}
.final__bottom{bottom:max(7svh,calc(env(safe-area-inset-bottom) + 28px))!important}
.final__copy{max-width:10.5em!important;font-size:clamp(33px,8.4vw,48px)!important}
.final__names{width:min(88vw,570px)!important}

/* No horizontal drift from decorative layers. */
html,body,.site,.section{overflow-x:hidden!important;max-width:100%!important}

@media(max-width:420px){
  .hero__content{width:min(66vw,360px);padding:13svh 0 15svh}
  .hero .side-art{width:52vw!important}
  .hero .side-art--hero-left{left:-28vw!important}
  .hero .side-art--hero-right{right:-28vw!important}
  .calla-interlude{height:27svh;min-height:215px}
  .calla-interlude__garland{width:126vw;bottom:-3svh}
  .timing{padding:11svh 0 23svh}
  .timing .content{width:70vw;margin-left:6vw}
  .side-art--timing-right{height:65svh!important;width:47vw!important;right:-28vw!important;top:14svh!important}
  .timing__garland{width:124vw;bottom:-2svh;opacity:.58}
  .dress{padding:12svh 0 23svh}
  .side-art--dress-left{height:42svh!important;left:-27vw!important}
  .side-art--dress-right{height:27svh!important;right:-24vw!important}
  .dress__garland{width:122vw;opacity:.44}
  .contact{padding:14svh 0 27svh}
  .contact .content{width:72vw}
  .side-art--contact-right{height:64svh!important;width:48vw!important;right:-29vw!important;bottom:10svh!important}
  .side-art--contact-left{height:34svh!important;width:31vw!important;left:-22vw!important}
  .contact__garland{width:124vw;opacity:.60}
  .final__top{top:8svh!important;width:82vw!important}
  .final__copy{font-size:clamp(31px,8.2vw,44px)!important}
}

/* ===== FINAL HOTFIX — static florals / cleaner composition ===== */

/* Stop drifting florals that create broken cropped edges */
.floral-motion-a,
.floral-motion-b,
.floral-motion-c,
.hero .side-art,
.timing .side-art,
.dress .side-art,
.contact .side-art,
.calla-interlude__image,
.calla-interlude__garland,
.timing__garland,
.dress__garland,
.contact__garland{
  animation:none !important;
  transform:none !important;
}

/* Remove hard masks that make floral edges look torn */
.hero .side-art--left,
.hero .side-art--right,
.timing .side-art--left,
.timing .side-art--right,
.dress .side-art--left,
.dress .side-art--right,
.contact .side-art--left,
.contact .side-art--right{
  -webkit-mask-image:none !important;
  mask-image:none !important;
}

/* HERO — bring back stable florals on both sides from top to bottom */
.hero{min-height:100svh;overflow:hidden;background:linear-gradient(180deg,#fbfaf7 0%,#edf4f8 54%,#faf8f3 100%) !important}
.hero__content{width:min(64vw,410px) !important;padding:14svh 0 16svh !important;position:relative;z-index:20}
.hero__content::before{content:"";position:absolute;inset:8svh -13vw 9svh;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.97) 0%,rgba(255,255,255,.83) 48%,rgba(255,255,255,0) 78%);filter:blur(18px);z-index:-1}
.hero .side-art{top:0 !important;bottom:0 !important;height:100svh !important;width:42vw !important;opacity:1 !important;overflow:visible !important;filter:drop-shadow(0 18px 40px rgba(39,61,82,.08)) !important}
.hero .side-art img{height:100% !important;width:100% !important;object-fit:contain !important;max-width:none !important}
.hero .side-art--hero-left{left:-17vw !important}
.hero .side-art--hero-right{right:-17vw !important}
.hero__date,.hero__place{position:relative;z-index:21}
.hero__place{color:#698093 !important}

/* Slightly tighter spacing before the map bridge */
.photo-single{padding:6svh 0 5svh !important}
.where{padding:11svh 0 10svh !important}
.where__gap{height:5svh !important}

/* Bridge under the map button — elegant, filled, no crude cut borders */
.calla-interlude{
  position:relative;
  height:36svh !important;
  min-height:280px !important;
  overflow:hidden;
  background:linear-gradient(180deg,#f7f5ef 0%,#edf3f7 100%) !important;
}
.calla-interlude::before{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 38% 42%,rgba(255,255,255,.98) 0%,rgba(214,229,240,.42) 45%,rgba(255,255,255,0) 76%);
  z-index:0;
}
.calla-interlude__glow{display:none !important}
.calla-interlude__image{
  position:absolute;
  left:-9vw;
  bottom:-7svh;
  height:50svh;
  width:auto;
  z-index:2;
  filter:drop-shadow(0 20px 44px rgba(34,56,78,.12));
}
.calla-interlude__garland{
  position:absolute;
  left:55%;
  bottom:-6svh;
  transform:translateX(-50%) !important;
  width:112vw;
  max-width:none;
  opacity:.82;
  z-index:1;
  filter:drop-shadow(0 18px 40px rgba(34,56,78,.10));
}

/* TIMING — center everything and move florals away from text */
.timing{
  padding:14svh 0 18svh !important;
  min-height:auto !important;
  text-align:center;
}
.timing .content{
  width:min(82vw,620px) !important;
  margin:0 auto !important;
  padding:0 !important;
}
.timing .kicker{margin-bottom:24px !important}
.timeline{gap:2svh !important}
.timeline__item{padding:3.4svh 0 4svh !important;text-align:center}
.timeline__item time{font-size:clamp(70px,17vw,96px) !important}
.timeline__item span{font-size:clamp(31px,7.8vw,44px) !important;margin-top:18px !important}
.timeline__item small{right:6vw !important;top:50% !important;transform:translateY(-50%);opacity:.56}
.side-art--timing-right{height:58svh !important;width:31vw !important;right:-15vw !important;top:17svh !important;opacity:.44 !important;filter:brightness(1.12) drop-shadow(0 18px 40px rgba(0,0,0,.10)) !important}
.side-art--timing-left{height:28svh !important;width:22vw !important;left:-13vw !important;bottom:9svh !important;opacity:.23 !important;filter:brightness(1.10) !important}
.timing__garland{position:absolute;left:50%;bottom:-8svh;transform:translateX(-50%) !important;width:108vw;max-width:none;opacity:.30;filter:drop-shadow(0 -2px 22px rgba(0,0,0,.08))}

/* DRESS CODE — static florals only at the edges, never over text */
.dress{padding:14svh 0 19svh !important;overflow:hidden}
.dress .content{width:min(82vw,620px) !important;position:relative;z-index:12}
.dress .content::before{content:"";position:absolute;inset:-4svh -8vw -5svh;background:radial-gradient(circle at 50% 38%,rgba(255,255,255,.92) 0%,rgba(255,255,255,.72) 44%,rgba(255,255,255,0) 76%);filter:blur(14px);z-index:-1}
.side-art--dress-left{height:48svh !important;width:32vw !important;left:-15vw !important;bottom:4svh !important;opacity:.50 !important;filter:brightness(1.08) drop-shadow(0 16px 34px rgba(35,58,79,.08)) !important}
.side-art--dress-right{height:25svh !important;width:22vw !important;right:-11vw !important;top:5svh !important;opacity:.34 !important;filter:brightness(1.08) !important}
.palette{max-width:520px !important;margin:0 auto 48px !important;gap:8px !important}
.dress__rules{max-width:620px !important;margin:0 auto !important;gap:34px !important;background:none !important;padding:0 !important}
.dress__garland{position:absolute;left:50%;bottom:-8svh;transform:translateX(-50%) !important;width:106vw;max-width:none;opacity:.24;filter:drop-shadow(0 -2px 18px rgba(35,58,79,.08))}

/* CONTACT / MARIA — static framed florals, no side-to-side crawl */
.contact{
  padding:15svh 0 20svh !important;
  min-height:auto !important;
  overflow:hidden;
}
.contact .content{width:min(82vw,610px) !important;position:relative;z-index:12}
.contact .content::before{content:"";position:absolute;inset:-6svh -9vw -7svh;background:radial-gradient(circle at 50% 44%,rgba(43,78,112,.58) 0%,rgba(43,78,112,.24) 56%,rgba(43,78,112,0) 82%);filter:blur(12px);z-index:-1}
.side-art--contact-right{height:60svh !important;width:34vw !important;right:-15vw !important;top:18svh !important;bottom:auto !important;opacity:.64 !important;filter:brightness(1.16) drop-shadow(0 18px 42px rgba(0,0,0,.12)) !important}
.side-art--contact-left{height:38svh !important;width:27vw !important;left:-14vw !important;top:8svh !important;opacity:.35 !important;filter:brightness(1.10) !important}
.contact__garland{position:absolute;left:50%;bottom:-8svh;transform:translateX(-50%) !important;width:110vw;max-width:none;opacity:.36;filter:drop-shadow(0 -3px 22px rgba(0,0,0,.09))}
.contact .copy{max-width:14em !important}
.contact__actions{margin-top:34px !important;gap:12px !important}

/* Keep other florals static too, but subtle */
.details .side-art,
.rsvp .side-art{animation:none !important;transform:none !important}

/* Mobile refinements */
@media(max-width:420px){
  .hero__content{width:min(68vw,380px) !important}
  .hero .side-art{width:47vw !important}
  .hero .side-art--hero-left{left:-21vw !important}
  .hero .side-art--hero-right{right:-21vw !important}
  .calla-interlude{height:34svh !important;min-height:255px !important}
  .calla-interlude__image{left:-13vw;bottom:-5svh;height:43svh}
  .calla-interlude__garland{width:124vw;left:56%;bottom:-5svh}
  .timing .content{width:min(84vw,620px) !important}
  .side-art--timing-right{width:34vw !important;right:-18vw !important;top:22svh !important;height:52svh !important}
  .side-art--timing-left{width:22vw !important;left:-16vw !important;bottom:10svh !important;height:25svh !important}
  .timeline__item small{right:4vw !important}
  .side-art--dress-left{width:36vw !important;left:-19vw !important;height:42svh !important}
  .side-art--dress-right{width:23vw !important;right:-14vw !important;height:22svh !important}
  .dress__garland{width:120vw;bottom:-6svh}
  .side-art--contact-right{width:38vw !important;right:-19vw !important;height:54svh !important;top:23svh !important}
  .side-art--contact-left{width:28vw !important;left:-16vw !important;height:34svh !important;top:10svh !important}
  .contact__garland{width:122vw;bottom:-6svh}
}

/* ===== FINAL SIGNATURE FIX ===== */
.final--photo .final__content{position:absolute!important;inset:0!important;z-index:20!important;width:100%!important;height:100%!important;margin:0!important;pointer-events:none}
.final--photo .final__top{position:absolute!important;left:50%!important;top:9svh!important;transform:translateX(-50%)!important;width:min(82vw,560px)!important;text-align:center!important}
.final--photo .final__bottom{position:absolute!important;left:50%!important;bottom:max(9svh,calc(env(safe-area-inset-bottom) + 44px))!important;transform:translateX(-50%)!important;width:min(92vw,620px)!important;text-align:center!important;z-index:22!important}
.final--photo .final__bottom::before{content:"";position:absolute;left:50%;top:46%;width:110vw;height:38svh;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(0,0,0,.32) 0%,rgba(0,0,0,.16) 44%,rgba(0,0,0,0) 72%);filter:blur(10px);z-index:-1;pointer-events:none}
.final--photo .final__love{margin:0 0 12px!important;color:#f3f7fa!important;opacity:.92!important}
.final--photo .final__names{display:block!important;width:min(86vw,560px)!important;max-width:none!important;margin:0 auto!important;filter:brightness(0) invert(1) drop-shadow(0 12px 28px rgba(0,0,0,.38))!important;opacity:1!important}
.final--photo .final__date{display:block!important;margin:12px 0 0!important;color:#f0f5f8!important;font-size:15px!important;letter-spacing:.28em!important;opacity:.92!important}
@media(max-width:420px){
  .final--photo .final__top{top:7svh!important;width:84vw!important}
  .final--photo .final__bottom{bottom:max(10svh,calc(env(safe-area-inset-bottom) + 42px))!important;width:94vw!important}
  .final--photo .final__names{width:88vw!important}
  .final--photo .final__date{font-size:14px!important}
}


/* ===== ABSOLUTE FINAL — latest requested fixes ===== */
/* Flowers are fixed everywhere: no crawling or exposing cropped raster edges. */
.side-art,
.side-art img,
.floral-motion-a,
.floral-motion-b,
.floral-motion-c,
.dress__garland,
.contact__garland,
.calla-interlude__image,
.calla-interlude__garland{
  animation:none !important;
  transform:none !important;
}

/* No flowers under timing. */
.timing__garland{display:none !important}

/* First white monogram page: much fuller floral framing on both sides. */
.hero .side-art{
  top:0 !important;
  bottom:0 !important;
  height:100svh !important;
  width:56vw !important;
  opacity:1 !important;
  overflow:visible !important;
  filter:drop-shadow(0 18px 42px rgba(34,55,76,.08)) !important;
}
.hero .side-art img{
  display:block !important;
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
  max-width:none !important;
}
.hero .side-art--hero-left{left:-14vw !important}
.hero .side-art--hero-right{right:-14vw !important}
.hero .side-art--left,.hero .side-art--right{
  -webkit-mask-image:none !important;
  mask-image:none !important;
}
.hero__content{
  width:min(58vw,390px) !important;
  padding:13svh 0 16svh !important;
  z-index:20 !important;
}
.hero__content::before{
  content:"";
  position:absolute;
  inset:6svh -18vw 8svh;
  border-radius:999px;
  background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.99) 0%,rgba(255,255,255,.93) 43%,rgba(255,255,255,.68) 58%,rgba(255,255,255,0) 80%);
  filter:blur(16px);
  z-index:-1;
}
.hero__monogram{width:min(49vw,285px) !important}
.hero__date,.hero__place{position:relative;z-index:22}

/* Timing: centered, clean, flowers only at side edges. */
.timing{
  padding:13svh 0 14svh !important;
  min-height:auto !important;
  text-align:center !important;
}
.timing .content{
  width:min(78vw,600px) !important;
  margin:0 auto !important;
  padding:0 !important;
  z-index:15 !important;
}
.timeline__item{text-align:center !important}
.timeline__item small{right:2vw !important;opacity:.48 !important}
.side-art--timing-right{
  height:50svh !important;
  width:29vw !important;
  right:-16vw !important;
  top:20svh !important;
  opacity:.34 !important;
}
.side-art--timing-left{
  height:25svh !important;
  width:20vw !important;
  left:-13vw !important;
  bottom:8svh !important;
  opacity:.18 !important;
}

/* Dress code: fixed florals, safely outside all type. */
.dress .content{z-index:15 !important}
.side-art--dress-left{left:-18vw !important;opacity:.42 !important}
.side-art--dress-right{right:-16vw !important;opacity:.26 !important}

/* Maria/contact: fixed decorative frame, never drifting. */
.contact .content{z-index:15 !important}
.side-art--contact-right{right:-17vw !important;opacity:.58 !important}
.side-art--contact-left{left:-16vw !important;opacity:.30 !important}

/* Keep the final calligraphic signature clearly visible on the photo. */
.final--photo .final__names{
  display:block !important;
  width:min(88vw,580px) !important;
  margin:0 auto !important;
  opacity:1 !important;
  filter:brightness(0) invert(1) drop-shadow(0 12px 30px rgba(0,0,0,.42)) !important;
}

@media(max-width:420px){
  .hero .side-art{width:60vw !important}
  .hero .side-art--hero-left{left:-16vw !important}
  .hero .side-art--hero-right{right:-16vw !important}
  .hero__content{width:min(60vw,360px) !important}
  .hero__content::before{inset:7svh -21vw 9svh}
  .timing .content{width:min(80vw,580px) !important}
  .side-art--timing-right{right:-18vw !important;width:31vw !important}
  .side-art--timing-left{left:-15vw !important;width:20vw !important}
  .side-art--dress-left{left:-20vw !important}
  .side-art--dress-right{right:-18vw !important}
  .side-art--contact-right{right:-19vw !important}
  .side-art--contact-left{left:-18vw !important}
}

/* ===== USER FIXES 2026-10-05 ===== */

/* 1) Remove the awkward floral layer under the map button entirely */
.calla-interlude{display:none !important;}

/* 2) Timing: remove tiny side numbers and keep composition clean */
.timeline__item small{display:none !important;}
.timing{
  padding:13svh 0 14svh !important;
  min-height:auto !important;
  text-align:center !important;
}
.timing .content{
  width:min(80vw,620px) !important;
  margin:0 auto !important;
  padding:0 !important;
  z-index:20 !important;
}
.timing .timeline{gap:1.6svh !important;}
.timing .timeline__item{
  padding:3.4svh 0 3.8svh !important;
  text-align:center !important;
}
.timing .timeline__item time,
.timing .timeline__item span{position:relative;z-index:21;}
.timing .timeline__item time{font-size:clamp(72px,17vw,98px) !important;}
.timing .timeline__item span{font-size:clamp(31px,7.8vw,44px) !important;}
.timing .side-art{animation:none !important;transform:none !important;}
.timing .side-art--timing-right{
  width:24vw !important;
  height:46svh !important;
  right:-12vw !important;
  top:22svh !important;
  opacity:.28 !important;
}
.timing .side-art--timing-left{
  width:18vw !important;
  height:22svh !important;
  left:-10vw !important;
  bottom:10svh !important;
  opacity:.14 !important;
}

/* 3) Dress code: remove flowers under the block */
.dress__garland{display:none !important;}
.dress .side-art{animation:none !important;transform:none !important;}
.dress .content{z-index:20 !important;}
.dress .side-art--dress-left{
  width:26vw !important;
  height:38svh !important;
  left:-12vw !important;
  bottom:6svh !important;
  opacity:.26 !important;
}
.dress .side-art--dress-right{
  width:18vw !important;
  height:20svh !important;
  right:-8vw !important;
  top:7svh !important;
  opacity:.18 !important;
}

/* 4) Details block: elegant fixed florals, no motion, no cut feeling */
.details{
  position:relative;
  padding:15svh 0 17svh !important;
  overflow:hidden !important;
}
.details .side-art--details{display:none !important;}
.details::before,
.details::after{
  content:"";
  position:absolute;
  z-index:2;
  pointer-events:none;
  background-repeat:no-repeat;
  background-size:contain;
  filter:drop-shadow(0 18px 42px rgba(0,0,0,.10));
}
.details::before{
  left:-14vw;
  bottom:3svh;
  width:30vw;
  height:42svh;
  background-image:url('assets/decor/floral-edge-left.png');
  opacity:.38;
}
.details::after{
  right:-12vw;
  top:8svh;
  width:28vw;
  height:44svh;
  background-image:url('assets/decor/floral-edge-right.png');
  opacity:.48;
}
.details .content{
  width:min(82vw,620px) !important;
  position:relative;
  z-index:20 !important;
}
.details .content::before{
  content:"";
  position:absolute;
  inset:-5svh -8vw;
  border-radius:44%;
  background:radial-gradient(circle at 50% 44%,rgba(35,66,98,.52) 0%,rgba(35,66,98,.18) 56%,rgba(35,66,98,0) 82%);
  filter:blur(12px);
  z-index:-1;
}

/* 5) Contact / Maria: lock flowers in place and bring them back into frame */
.contact{
  padding:15svh 0 18svh !important;
  overflow:hidden !important;
}
.contact .side-art,
.contact__garland{
  animation:none !important;
  transform:none !important;
}
.contact .content{
  width:min(82vw,610px) !important;
  position:relative;
  z-index:20 !important;
}
.contact .content::before{
  content:"";
  position:absolute;
  inset:-6svh -9vw -7svh;
  border-radius:44%;
  background:radial-gradient(circle at 50% 44%,rgba(43,78,112,.54) 0%,rgba(43,78,112,.22) 58%,rgba(43,78,112,0) 84%);
  filter:blur(12px);
  z-index:-1;
}
.contact .side-art--contact-left{
  width:28vw !important;
  height:36svh !important;
  left:-12vw !important;
  top:10svh !important;
  bottom:auto !important;
  opacity:.34 !important;
}
.contact .side-art--contact-right{
  width:30vw !important;
  height:48svh !important;
  right:-10vw !important;
  top:20svh !important;
  bottom:auto !important;
  opacity:.52 !important;
}
.contact__garland{
  display:block !important;
  position:absolute !important;
  left:50% !important;
  bottom:-7svh !important;
  transform:translateX(-50%) !important;
  width:108vw !important;
  max-width:none !important;
  opacity:.16 !important;
  filter:drop-shadow(0 -3px 20px rgba(0,0,0,.08)) !important;
}

@media(max-width:420px){
  .timing .content{width:min(84vw,620px) !important;}
  .timing .side-art--timing-right{width:28vw !important;right:-14vw !important;height:42svh !important;top:24svh !important;}
  .timing .side-art--timing-left{width:18vw !important;left:-12vw !important;height:20svh !important;bottom:10svh !important;}

  .dress .side-art--dress-left{width:30vw !important;left:-16vw !important;height:34svh !important;}
  .dress .side-art--dress-right{width:20vw !important;right:-10vw !important;height:18svh !important;}

  .details::before{left:-18vw;width:36vw;height:38svh;bottom:4svh;opacity:.34;}
  .details::after{right:-16vw;width:34vw;height:40svh;top:10svh;opacity:.44;}

  .contact .side-art--contact-left{width:32vw !important;left:-15vw !important;height:32svh !important;top:11svh !important;}
  .contact .side-art--contact-right{width:34vw !important;right:-13vw !important;height:42svh !important;top:22svh !important;}
  .contact__garland{width:120vw !important;bottom:-6svh !important;opacity:.14 !important;}
}
