:root{
  --padX:20px;
  --sectionY:5.2rem;

  --glass: rgba(255,255,255,0.045);
  --glass2: rgba(255,255,255,0.072);
  --ring: 0 0 0 4px rgba(255,255,255,0.10);

  --radiusCard: 18px;

  --grainHover: 0;
}

html[data-dark="0"]{
  --cursor-mode: normal;
  background: var(--accent);
  color: var(--bg);
}

*{
  margin:0;
  padding:0;
  box-sizing:border-box;
}

body{
  background-color:var(--bg);
  color:var(--text);
  font-family: var(--fontB), Manrope, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{
  display:block;
  max-width:100%;
  height:auto;
}

a{
  color:inherit;
  text-decoration:none;
}

/* FX layers */
.fx-paper,
.fx-grain,
.fx-vignette{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
}

.fx-paper{
  opacity:1;
  background:
    radial-gradient(1200px 700px at 30% 20%, rgba(255,255,255,0.035), transparent 60%),
    radial-gradient(900px 600px at 80% 70%, rgba(255,255,255,0.025), transparent 55%),
    linear-gradient(0deg, rgba(255,255,255,0.02), rgba(255,255,255,0.00)),
    repeating-linear-gradient(90deg,
      rgba(255,255,255,0.012) 0px,
      rgba(255,255,255,0.012) 1px,
      rgba(255,255,255,0.00) 2px,
      rgba(255,255,255,0.00) 6px);
  mix-blend-mode:overlay;
  transition:opacity 900ms ease;
}

.fx-grain{
  opacity: calc(var(--grainA) + var(--grainHover));
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  background-size:160px 160px;
  mix-blend-mode:overlay;
  transform:translateZ(0);
  animation: grainShift 6s steps(8) infinite;
}

@keyframes grainShift{
  0%{
    transform:translate3d(0,0,0);
  }
  15%{
    transform:translate3d(-2%,-1%,0);
  }
  30%{
    transform:translate3d(1%,-2%,0);
  }
  45%{
    transform:translate3d(-1%,2%,0);
  }
  60%{
    transform:translate3d(2%,1%,0);
  }
  75%{
    transform:translate3d(-2%,2%,0);
  }
  100%{
    transform:translate3d(0,0,0);
  }
}

.fx-vignette{
  opacity:.9;
  background: radial-gradient(1400px 900px at 50% 40%, rgba(0,0,0,0) 55%, rgba(0,0,0,0.55) 100%);
  mix-blend-mode:multiply;
  transition:opacity 900ms ease;
}

body.hero-hover .fx-vignette{
  opacity:.45;
}

body.hero-hover .fx-paper{
  opacity:.6;
}

body.hero-hover{
  --grainHover: var(--grainHoverBoost);
}

/* Cursor */
html.has-mouse *{
  cursor:none;
}

.cursor{
  position:fixed;
  left:0;
  top:0;
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--text);
  pointer-events:none;
  z-index:9999;
  transform:translate3d(-999px,-999px,0);
  will-change:transform,width,height,opacity;
  mix-blend-mode:var(--cursor-mode);
  opacity:.85;
  display:none;
  transition:width .22s,height .22s,opacity .22s;
}

html.has-mouse .cursor{
  display:block;
}

.cursor.hovered{
  width:78px;
  height:78px;
  opacity:.18;
}

@media (hover:none) and (pointer:coarse){
  .cursor{
    display:none!important;
  }

  html.has-mouse *{
    cursor:auto!important;
  }
}

.container{
  max-width:1100px;
  margin:0 auto;
  padding:0 var(--padX);
  position:relative;
  z-index:1;
}

/* reveal */
.reveal{
  opacity:0;
  transform:translateY(22px) scale(.992);
  filter:blur(6px);
  transition:
    opacity 900ms cubic-bezier(.16,1,.3,1),
    transform 900ms cubic-bezier(.16,1,.3,1),
    filter 900ms cubic-bezier(.16,1,.3,1);
  will-change:opacity,transform,filter;
}

.reveal.is-visible{
  opacity:1;
  transform:none;
  filter:blur(0);
}

/* HERO */
.hero{
  min-height:100svh;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  text-align:center;
  position:relative;
  padding:0 20px;
  isolation:isolate;
  z-index:1;
}

.hero-media{
  position:absolute;
  left:50%;
  top:50%;
  width:32vw;
  height:46vh;
  --boxScale:1;
  transform:translate(-50%,-50%) scale(var(--boxScale));
  transition:transform 2600ms cubic-bezier(.19,1,.22,1);
  will-change:transform;
  z-index:1;
  box-shadow:var(--shadow);
  overflow:hidden;
  pointer-events:auto;
  --px:0;
  --py:0;
  background:
    radial-gradient(circle at 30% 25%, color-mix(in srgb, var(--text) 13%, transparent), transparent 38%),
    radial-gradient(circle at 75% 75%, color-mix(in srgb, var(--accent) 28%, transparent), transparent 42%),
    linear-gradient(135deg, color-mix(in srgb, var(--text) 10%, transparent), color-mix(in srgb, var(--text) 3%, transparent));
}

.hero-kicker,
.hero-title-wrapper,
.hero-date{
  position:relative;
  z-index:2;
  pointer-events:none!important;
}

.hero-media::before{
  content:"";
  position:absolute;
  inset:-30%;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  background-size:220px 220px;
  mix-blend-mode:overlay;
  opacity:0;
  pointer-events:none;
  transform:translate3d(0,0,0);
  will-change:transform,opacity;
  transition:opacity 1200ms ease;
  animation: heroGrainDrift 10s ease-in-out infinite;
  animation-play-state: paused;
}

.hero-media::after{
  content:"";
  position:absolute;
  inset:0;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.06);
  pointer-events:none;
}

.hero-bg{
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:var(--heroOpacity);
  filter: grayscale(var(--heroGray)) saturate(var(--heroSat)) brightness(var(--heroBright)) contrast(var(--heroContrast));
  transform-origin:50% 50%;
  transform: translate3d(calc(var(--px) * 1px), calc(var(--py) * 1px), 0);
  will-change:transform,filter,opacity;
  transition:filter 1600ms ease, opacity 1600ms ease;
}

.hero-bg-placeholder{
  display:block;
  opacity:.72;
  filter:none;
  background:
    linear-gradient(135deg, transparent 0 47%, color-mix(in srgb, var(--text) 18%, transparent) 47% 48%, transparent 48% 100%),
    linear-gradient(45deg, transparent 0 47%, color-mix(in srgb, var(--text) 13%, transparent) 47% 48%, transparent 48% 100%),
    radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 45%);
}

.hero-media.is-placeholder::after{
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb, var(--text) 10%, transparent),
    inset 0 0 90px rgba(0,0,0,.16);
}

@keyframes heroGrainDrift{
  0%{
    transform:translate3d(-2%,-1%,0);
  }
  50%{
    transform:translate3d(2%,1%,0);
  }
  100%{
    transform:translate3d(-2%,2%,0);
  }
}

.hero-kicker{
  text-transform:uppercase;
  letter-spacing:4px;
  margin-bottom:2rem;
  font-size:.75rem;
  opacity:.72;
  font-family: Manrope, var(--fontB), sans-serif;
}

.hero-title-wrapper{
  line-height:.84;
  margin:2rem 0;
  user-select:none;
}

.hero-name{
  font-family: Italiana, "Cormorant Garamond", serif;
  font-size:11vw;
  text-transform:uppercase;
  font-weight:500;
  letter-spacing:-0.05em;
  line-height:.92;
}

.hero-divider{
  font-size:4vw;
  font-style:italic;
  font-weight:400;
  margin:10px 0;
  opacity:.82;
  font-family: "Cormorant Garamond", serif;
}

.hero-date{
  margin-top:2rem;
  letter-spacing:1px;
  text-transform:uppercase;
  opacity:.92;
  font-size:.88rem;
}

@media (hover:hover) and (pointer:fine){
  .hero-media:hover{
    --boxScale:1.5;
    --heroOpacity:.95;
    --heroGray:0;
    --heroSat:1.18;
    --heroBright:1.03;
    --heroContrast:1.02;
  }

  .hero-media:hover::before{
    opacity:.22;
    animation-play-state:running;
  }
}

@media (hover:none) and (pointer:coarse){
  .hero-media{
    width:92vw;
    height:72vh;
    max-width:560px;
  }

  .hero-name{
    font-size:15vw;
  }

  .hero-divider{
    font-size:1.5rem;
    margin:6px 0;
  }

  .hero-media.is-active{
    --boxScale:1.06;
    --heroOpacity:.95;
    --heroGray:0;
    --heroSat:1.15;
    --heroBright:1.03;
    --heroContrast:1.02;
  }

  .hero-media.is-active::before{
    opacity:.20;
  }
}

/* MARQUEE */
.marquee-container{
  width:100%;
  overflow:hidden;
  white-space:nowrap;
  padding:25px 0;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  margin:6rem 0;
  position:relative;
  z-index:1;
}

.marquee-track{
  display:flex;
  width:max-content;
  will-change:transform;
  animation: marquee 40s linear infinite;
  transform:translateZ(0);
}

.marquee-set{
  display:flex;
  align-items:center;
}

.marquee-item{
  font-family: "Cormorant Garamond", var(--fontH), serif;
  font-size:3rem;
  text-transform:uppercase;
  margin:0 50px;
  color:transparent;
  -webkit-text-stroke:1px var(--text);
  font-style:italic;
  opacity:.95;
  user-select:none;
}

@keyframes marquee{
  0%{
    transform:translate3d(0,0,0);
  }
  100%{
    transform:translate3d(-50%,0,0);
  }
}

@media (max-width:768px){
  .marquee-item{
    font-size:1.5rem;
    margin:0 20px;
  }

  :root{
    --padX:16px;
    --sectionY:4.4rem;
  }
}

/* Section headings */
.section-title{
  font-family: "Cormorant Garamond", var(--fontH), serif;
  font-style:italic;
  font-weight:500;
  font-size: clamp(30px, 4.6vw, 60px);
  line-height:1.02;
  letter-spacing:-0.02em;
  margin:0 0 18px 0;
}

.section-kicker{
  font-family: Manrope, var(--fontB), sans-serif;
  text-transform:uppercase;
  letter-spacing:2px;
  opacity:.62;
  font-size:.9rem;
  margin:0 0 14px 0;
}

.section-text{
  white-space:pre-line;
  font-size:1.05rem;
  line-height:1.75;
  opacity:.86;
  font-weight:300;
}

.section-lead{
  max-width:760px;
  margin:-4px 0 24px;
  opacity:.76;
  line-height:1.75;
  font-size:1rem;
}

/* Story */
.story{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5rem;
  align-items:center;
  margin:7rem 0 5.5rem;
}

.story-media{
  overflow:hidden;
  height:auto;
  border:1px solid var(--border);
  border-radius:10px;
}

.story-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:grayscale(100%) contrast(1.06);
  transform:scale(1.02);
  transition:transform 1.2s cubic-bezier(.19,1,.22,1), filter 1s ease;
}

@media (hover:hover){
  .story-media:hover img{
    transform:scale(1.05);
    filter:grayscale(0%) contrast(1.03);
  }
}

@media (max-width:768px){
  .story{
    grid-template-columns:1fr;
    gap:2.2rem;
    margin:4.6rem 0 4.2rem;
  }

  .story-media{
    height:380px;
  }
}

/* Program */
.program{
  margin:var(--sectionY) 0 var(--sectionY);
}

.program-list{
  border-top:1px solid var(--border);
  margin-top:18px;
}

.program-item{
  display:flex;
  justify-content:space-between;
  gap:18px;
  padding:20px 0;
  border-bottom:1px solid var(--border);
  align-items:baseline;
  transition:.3s;
}

.p-time{
  font-family:"Cormorant Garamond", var(--fontH), serif;
  font-style:italic;
  font-size:2.1rem;
  letter-spacing:-0.01em;
  opacity:.96;
  white-space:nowrap;
}

.p-main{
  text-align:right;
  max-width:720px;
  margin-left:auto;
}

.p-title{
  font-family: Manrope, var(--fontB), sans-serif;
  text-transform:uppercase;
  letter-spacing:.22em;
  font-weight:800;
  font-size:.80rem;
  opacity:.84;
}

.p-text{
  margin-top:8px;
  opacity:.70;
  font-size:.98rem;
  line-height:1.65;
  white-space:pre-line;
}

@media (hover:hover){
  .program-item:hover{
    padding-left:18px;
    padding-right:18px;
    background:rgba(255,255,255,0.03);
    border-radius:10px;
  }
}

html[data-dark="0"] .program-item:hover{
  background:rgba(0,0,0,0.03);
}

@media (max-width:768px){
  .p-time{
    font-size:1.75rem;
  }

  .program-item{
    flex-direction:column;
    align-items:flex-start;
  }

  .p-main{
    text-align:left;
    margin-left:0;
  }
}

/* Gallery */
.gallery{
  margin:var(--sectionY) 0 var(--sectionY);
}

.gallery-shell{
  margin-top:22px;
}

.gallery-shell :is(.iviGalleryGrid--grid,.iviGalleryGrid,.gallery-grid,.grid,.photos-grid){
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}

@media (max-width:900px){
  .gallery-shell :is(.iviGalleryGrid--grid,.iviGalleryGrid,.gallery-grid,.grid,.photos-grid){
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:600px){
  .gallery-shell :is(.iviGalleryGrid--grid,.iviGalleryGrid,.gallery-grid,.grid,.photos-grid){
    grid-template-columns:1fr;
  }
}

.gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item){
  position:relative;
  overflow:hidden;
  border:1px solid var(--border);
  box-shadow:var(--shadow);
  background:rgba(255,255,255,0.02);
  border-radius:10px;
}

html[data-dark="0"] .gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item){
  background:rgba(0,0,0,0.02);
}

.gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item) img{
  width:100%;
  height:auto;
  display:block;
  object-fit:cover;
  filter:grayscale(100%) brightness(.9) contrast(1.05);
  transform:scale(1.01);
  transition: transform .75s cubic-bezier(.19,1,.22,1), filter .55s ease, opacity .55s ease;
  opacity:.95;
}

@media (hover:hover){
  .gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item):hover img{
    filter:grayscale(0%) brightness(1) contrast(1.02);
    transform:scale(1.05);
    opacity:1;
  }
}

/* Shared blocks */
.section-block{
  margin:var(--sectionY) 0 var(--sectionY);
}

/* Dresscode */
#dresscode .iviDressSwatches{
  display:flex!important;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
  margin-top:10px;
  margin-bottom:10px;
}

#dresscode .iviDressDot{
  width:54px!important;
  height:54px!important;
  border-radius:999px!important;
  background:var(--c,#fff)!important;
  border:1px solid var(--border)!important;
  box-shadow:0 18px 46px rgba(0,0,0,0.18)!important;
  display:inline-block!important;
  position:relative;
}

#dresscode .iviDressDot::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.55);
  pointer-events:none;
}

html[data-dark="0"] #dresscode .iviDressDot::after{
  border-color:rgba(0,0,0,0.10);
}

@media (max-width:768px){
  #dresscode .iviDressDot{
    width:46px!important;
    height:46px!important;
  }
}

#dresscode :is(.iviDressHead,.iviDressTitle){
  display:none!important;
}

/* RSVP / Location duplicated heads */
:is(#rsvp,#rsvpInner) :is(.rose-line-svg){
  display:none!important;
}

#location :is(.iviLocHead,.iviLocHeader,.iviLocTitle,.iviLocKicker,.iviLocSub,.iviLocSubtitle){
  display:none!important;
}

/* RSVP skin */
:is(#rsvp,#rsvpInner).rsvpSection{
  margin:0;
}

:is(#rsvp,#rsvpInner) .rsvpGrid{
  display:flex;
  justify-content:center;
}

:is(#rsvp,#rsvpInner) .rsvpFormCard{
  width:min(900px,100%);
  margin:0 auto;
  border:1px solid var(--border);
  background:linear-gradient(180deg,var(--glass2),var(--glass));
  box-shadow:var(--shadow);
  padding:22px 18px 20px;
  border-radius:var(--radiusCard);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  position:relative;
  overflow:hidden;
}

:is(#rsvp,#rsvpInner) .rsvpFormCard::before{
  content:"";
  position:absolute;
  inset:-40%;
  background:
    radial-gradient(540px 360px at 25% 35%, rgba(255,255,255,0.08), transparent 60%),
    radial-gradient(520px 380px at 80% 55%, rgba(255,255,255,0.06), transparent 62%);
  opacity:.65;
  pointer-events:none;
  mix-blend-mode:overlay;
}

html[data-dark="0"] :is(#rsvp,#rsvpInner) .rsvpFormCard::before{
  background:
    radial-gradient(540px 360px at 25% 35%, rgba(0,0,0,0.05), transparent 60%),
    radial-gradient(520px 380px at 80% 55%, rgba(0,0,0,0.04), transparent 62%);
  mix-blend-mode:normal;
  opacity:.55;
}

:is(#rsvp,#rsvpInner) .rsvpFormCard > *{
  position:relative;
  z-index:1;
}

:is(#rsvp,#rsvpInner) .rsvpHint{
  text-align:center;
  opacity:.74;
  line-height:1.7;
  font-weight:300;
  margin:10px auto 18px;
  max-width:720px;
  white-space:pre-line;
}

:is(#rsvp,#rsvpInner) .label{
  display:block;
  text-transform:uppercase;
  letter-spacing:.24em;
  font-weight:900;
  font-size:11px;
  opacity:.70;
  margin:0 0 10px;
  text-align:left;
}

:is(#rsvp,#rsvpInner) .row2{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}

:is(#rsvp,#rsvpInner) .formRow{
  margin:0 0 14px;
}

:is(#rsvp,#rsvpInner) .field{
  width:100%;
  background: color-mix(in srgb, var(--text) 4%, transparent);
  color:var(--text);
  border:1px solid color-mix(in srgb, var(--text) 14%, transparent);
  border-radius:14px;
  padding:14px 14px;
  outline:none;
  font-family:Manrope,sans-serif;
  font-size:1rem;
  transition:border-color .25s ease, box-shadow .25s ease, background .25s ease;
}

:is(#rsvp,#rsvpInner) textarea.field{
  min-height:110px;
  resize:vertical;
  padding-top:12px;
  line-height:1.6;
}

:is(#rsvp,#rsvpInner) .field:focus{
  border-color: color-mix(in srgb, var(--text) 26%, transparent);
  box-shadow:var(--ring);
  background: color-mix(in srgb, var(--text) 6%, transparent);
}

:is(#rsvp,#rsvpInner) .field::placeholder{
  color: color-mix(in srgb, var(--text) 50%, transparent);
}

:is(#rsvp,#rsvpInner) .chips{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  gap:10px;
  margin-top:8px;
}

:is(#rsvp,#rsvpInner) .chip{
  border:1px solid color-mix(in srgb, var(--text) 18%, transparent);
  background: color-mix(in srgb, var(--text) 6%, transparent);
  color: color-mix(in srgb, var(--text) 88%, transparent);
  border-radius:999px;
  padding:10px 14px;
  min-height:42px;
  font-weight:900;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  cursor:pointer;
  box-shadow:0 14px 38px rgba(0,0,0,.18);
  transition:transform .16s ease, box-shadow .16s ease, background .2s ease, border-color .2s ease, opacity .2s ease;
  user-select:none;
}

@media (hover:hover){
  :is(#rsvp,#rsvpInner) .chip:hover{
    transform:translateY(-1px);
    box-shadow:0 18px 44px rgba(0,0,0,.24);
    border-color: color-mix(in srgb, var(--text) 26%, transparent);
    background: color-mix(in srgb, var(--text) 8%, transparent);
  }
}

:is(#rsvp,#rsvpInner) .chip[data-active="true"]{
  background:var(--accent)!important;
  border-color: color-mix(in srgb, var(--accent) 55%, transparent)!important;
  color:var(--accentInk)!important;
  box-shadow:
    0 22px 70px rgba(0,0,0,.22),
    0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);
}

:is(#rsvp,#rsvpInner) .rsvpTotal{
  padding:12px 14px;
  border-radius:14px;
  border:1px solid color-mix(in srgb, var(--text) 12%, transparent);
  background:color-mix(in srgb, var(--text) 5%, transparent);
  font-size:.95rem;
  line-height:1.4;
  opacity:.9;
}

:is(#rsvp,#rsvpInner) .consent{
  display:flex;
  gap:10px;
  align-items:flex-start;
  margin:14px 0 6px;
  opacity:.88;
}

:is(#rsvp,#rsvpInner) .consent input[type="checkbox"]{
  margin-top:3px;
  width:18px;
  height:18px;
  accent-color:var(--accent);
  flex:0 0 auto;
}

:is(#rsvp,#rsvpInner) .consent span{
  font-size:.92rem;
  line-height:1.5;
  opacity:.86;
}

:is(#rsvp,#rsvpInner) .consent small{
  display:inline-block;
  margin-top:4px;
  font-size:12px;
  line-height:1.45;
  opacity:.78;
}

:is(#rsvp,#rsvpInner) .consent a{
  text-decoration:underline;
  text-underline-offset:3px;
}

:is(#rsvp,#rsvpInner) .btn.btn-full{
  width:100%;
  margin-top:14px;
  background:var(--accent)!important;
  color:var(--accentInk)!important;
  border:none;
  padding:18px 24px;
  border-radius:999px;
  font-weight:900;
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
  cursor:pointer;
  box-shadow:0 22px 70px rgba(0,0,0,.22);
  transition:opacity .25s ease, transform .25s ease, letter-spacing .25s ease;
}

@media (hover:hover){
  :is(#rsvp,#rsvpInner) .btn.btn-full:hover{
    opacity:.92;
    transform:translateY(-1px);
    letter-spacing:.26em;
  }
}

:is(#rsvp,#rsvpInner) .btn.btn-full:active{
  transform:translateY(0);
  opacity:.86;
}

/* RSVP status boxes */
:is(#rsvp,#rsvpInner) .statusBox{
  border-radius:14px!important;
  border:1px solid color-mix(in srgb, var(--text) 12%, transparent);
  background:color-mix(in srgb, var(--text) 5%, transparent);
}

:is(#rsvp,#rsvpInner) .statusBox.ok{
  border-color:rgba(46,125,80,.22);
  background:rgba(46,125,80,.10);
}

:is(#rsvp,#rsvpInner) .statusBox.bad{
  border-color:rgba(176,54,54,.22);
  background:rgba(176,54,54,.10);
}

:is(#rsvp,#rsvpInner) .previewLockNote{
  border-radius:18px;
  border-color:color-mix(in srgb, var(--text) 12%, transparent);
  background:color-mix(in srgb, var(--text) 6%, transparent);
  box-shadow:none;
}

html[data-dark="1"] :is(#rsvp,#rsvpInner) .previewLockTitle{
  color:var(--text);
}

html[data-dark="1"] :is(#rsvp,#rsvpInner) .previewLockText{
  color:color-mix(in srgb, var(--text) 72%, transparent);
}

@media (max-width:768px){
  :is(#rsvp,#rsvpInner) .rsvpFormCard{
    padding:18px 14px 16px;
    border-radius:16px;
  }

  :is(#rsvp,#rsvpInner) .row2{
    grid-template-columns:1fr;
  }

  :is(#rsvp,#rsvpInner) .chips{
    gap:8px;
  }

  :is(#rsvp,#rsvpInner) .chip{
    min-height:40px;
    padding:10px 12px;
    letter-spacing:.12em;
  }

  :is(#rsvp,#rsvpInner) .btn.btn-full{
    padding:16px 18px;
  }
}

/* LOCATION skin */
#location.iviLoc{
  margin:0;
}

#location .iviLocGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:start;
  margin-top:16px;
}

@media (max-width:900px){
  #location .iviLocGrid{
    grid-template-columns:1fr;
  }
}

#location .iviLocCard{
  overflow:hidden;
  border-radius:18px;
  border:1px solid var(--border);
  background: linear-gradient(180deg, color-mix(in srgb, var(--text) 6%, transparent), color-mix(in srgb, var(--text) 3%, transparent));
  box-shadow:var(--shadow);
}

html[data-dark="0"] #location .iviLocCard{
  background:linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.01));
}

#location .iviLocPhoto{
  position:relative;
  overflow:hidden;
  border-bottom:1px solid var(--border);
}

#location .iviLocPhoto::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,.18), transparent 55%, rgba(0,0,0,.12));
  pointer-events:none;
}

#location .iviLocPhoto img{
  width:100%;
  height:320px;
  object-fit:cover;
  filter:grayscale(100%) contrast(1.06);
  transform:scale(1.02);
  transition:transform .8s cubic-bezier(.19,1,.22,1), filter .5s ease;
}

@media (hover:hover){
  #location .iviLocPhoto:hover img{
    filter:grayscale(0%) contrast(1.03);
    transform:scale(1.06);
  }
}

@media (max-width:900px){
  #location .iviLocPhoto img{
    height:260px;
  }
}

#location .iviLocBody{
  padding:16px 16px 18px;
}

#location .iviLocBadge{
  display:inline-flex;
  align-items:center;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid color-mix(in srgb, var(--text) 18%, transparent);
  background: color-mix(in srgb, var(--text) 8%, transparent);
  color: color-mix(in srgb, var(--text) 78%, transparent);
  font-family: Manrope, var(--fontB), sans-serif;
  font-weight:900;
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
  margin-bottom:12px;
}

#location .iviLocName{
  font-family:"Cormorant Garamond", var(--fontH), serif;
  font-size:1.6rem;
  letter-spacing:-.01em;
  line-height:1.15;
  margin-bottom:8px;
}

#location .iviLocAddr,
#location .iviLocNote{
  opacity:.76;
  line-height:1.65;
  font-size:.98rem;
}

#location .iviLocNote{
  margin-top:8px;
  opacity:.70;
}

#location .iviLocActions{
  margin-top:14px;
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}

#location .iviBtn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:14px 16px;
  min-height:46px;
  border-radius:999px;
  border:1px solid color-mix(in srgb, var(--text) 18%, transparent);
  background: color-mix(in srgb, var(--text) 8%, transparent);
  color:var(--text);
  font-family: Manrope, var(--fontB), sans-serif;
  font-size:11px;
  font-weight:900;
  letter-spacing:.22em;
  text-transform:uppercase;
  box-shadow:0 18px 55px rgba(0,0,0,.18);
  transition:transform .16s ease, box-shadow .16s ease, opacity .16s ease;
}

@media (hover:hover){
  #location .iviBtn:hover{
    transform:translateY(-1px);
    box-shadow:0 22px 70px rgba(0,0,0,.22);
  }
}

#location .iviBtn:active{
  transform:translateY(1px) scale(.99);
}

#location .iviBtnPrimary{
  background:var(--accent);
  color:var(--accentInk);
  border-color: color-mix(in srgb, var(--accent) 55%, transparent);
}

#location .iviBtnGhost{
  opacity:.90;
}

/* Footer */
footer{
  text-align:center;
  padding:3rem 1.2rem;
  border-top:1px solid var(--border);
  opacity:.55;
  position:relative;
  z-index:1;
}

footer p{
  font-size:.8rem;
  text-transform:uppercase;
  letter-spacing:2px;
  opacity:1;
}

@media (prefers-reduced-motion: reduce){
  *{
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important;
  }

  .cursor{
    display:none!important;
  }

  html.has-mouse *{
    cursor:auto!important;
  }

  .reveal{
    filter:none!important;
  }

  .hero-media::before{
    display:none!important;
  }
}

/* =========================================================
   WEDDING EDITORIAL 2.1
   Воздушная редакционная версия без карточных оболочек
========================================================= */

:root{
  --we-accent-soft:color-mix(in srgb,var(--accent) 14%,transparent);
  --we-accent-faint:color-mix(in srgb,var(--accent) 7%,transparent);
  --we-line:color-mix(in srgb,var(--accent) 28%,var(--border));
  --we-ink-soft:color-mix(in srgb,var(--text) 66%,transparent);
  --we-gap:clamp(5.5rem,9vw,9rem);
}

body{
  background-color:var(--bg);
  background-image:
    radial-gradient(720px 480px at 8% 10%,var(--we-accent-faint),transparent 72%),
    radial-gradient(680px 460px at 94% 68%,var(--we-accent-faint),transparent 74%);
  background-attachment:fixed;
}

.container{max-width:1180px}

/* Никаких карточных оболочек у основных разделов */
.story,
.program,
.gallery,
.section-block,
#dresscodeWrap,
#locationWrap,
#rsvpWrap{
  position:relative;
  margin:var(--we-gap) 0;
  border:0!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
}

.story,
.program,
.gallery-shell,
#dresscodeWrap,
#locationWrap,
#rsvpWrap{
  padding:0!important;
}

/* Тонкая редакционная линия вместо рамок */
.story::before,
.program::before,
.gallery::before,
.section-block::before{
  content:"";
  position:absolute;
  top:-2.15rem;
  left:0;
  width:min(180px,28vw);
  height:1px;
  background:linear-gradient(90deg,var(--accent),transparent);
  transform-origin:left center;
  animation:weLineIn .9s cubic-bezier(.22,1,.36,1) both;
}

.section-kicker{
  display:flex;
  align-items:center;
  gap:.75rem;
  width:max-content;
  max-width:100%;
  min-height:0;
  padding:0;
  margin:0 0 1.1rem;
  border:0;
  border-radius:0;
  background:none;
  color:var(--accent);
  font-size:.72rem;
  font-weight:800;
  letter-spacing:.22em;
  text-transform:uppercase;
}

.section-kicker::before{
  content:"";
  width:24px;
  height:1px;
  border-radius:0;
  background:currentColor;
  box-shadow:none;
  flex:0 0 auto;
}

.section-title{
  max-width:900px;
  color:var(--text);
  font-size:clamp(44px,6.6vw,92px);
  line-height:.92;
  letter-spacing:-.05em;
  text-wrap:balance;
}

.section-text,
.section-lead{
  color:var(--we-ink-soft);
}

/* Hero без рамки-контейнера, но с живой тематической глубиной */
.hero::before{display:none!important}
.hero-media{
  border:0!important;
  border-radius:0!important;
  box-shadow:0 28px 80px color-mix(in srgb,var(--accent) 16%,rgba(0,0,0,.18));
  clip-path:inset(0 0 0 0);
  animation:weHeroFloat 8s ease-in-out infinite;
}
.hero-media::after{
  background:linear-gradient(180deg,transparent 58%,color-mix(in srgb,var(--accent) 18%,rgba(0,0,0,.28)));
}
.hero-kicker,
.hero-date{
  border:0!important;
  border-radius:0!important;
  background:none!important;
  backdrop-filter:none!important;
  padding:0!important;
  color:var(--accent);
}
.hero-name{
  text-shadow:0 14px 45px color-mix(in srgb,var(--accent) 13%,transparent);
}

/* История остаётся свободной композицией */
.story{gap:clamp(32px,6vw,90px)}
.story-media{
  border-radius:0!important;
  box-shadow:0 24px 70px color-mix(in srgb,var(--accent) 11%,rgba(0,0,0,.16));
  transform:rotate(-1.2deg);
  transition:transform .7s cubic-bezier(.22,1,.36,1),box-shadow .7s ease;
}
@media (hover:hover){
  .story:hover .story-media{
    transform:rotate(0deg) translateY(-6px);
    box-shadow:0 32px 88px color-mix(in srgb,var(--accent) 17%,rgba(0,0,0,.2));
  }
}

/* Программа как редакционная сетка, без общего фона и рамки */
.program{overflow:visible}
.program::after{display:none!important}
.program-list{
  margin-top:clamp(2rem,4vw,3.5rem);
  border-top:1px solid var(--we-line);
}
.program-item{
  grid-template-columns:clamp(90px,12vw,150px) minmax(0,1fr) 34px;
  min-height:118px;
  padding:1.55rem 0;
  border-bottom:1px solid var(--we-line);
  transition:padding-left .35s ease,color .35s ease;
}
.program-item::after{
  content:counter(item-counter,decimal-leading-zero);
  width:auto;
  height:auto;
  border:0;
  border-radius:0;
  color:var(--accent);
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.15em;
  opacity:.75;
}
.program-list{counter-reset:item-counter}
.program-item{counter-increment:item-counter}
@media (hover:hover){
  .program-item:hover{padding-left:12px}
  .program-item:hover .p-title{color:var(--accent)}
}
.p-time{color:var(--accent)}
.p-title{transition:color .3s ease}

/* Галерея: прямой вывод лейбла и фотографии без карточной рамки */
.gallery-shell{
  margin-top:clamp(2rem,4vw,3.25rem);
  border:0!important;
  background:none!important;
  box-shadow:none!important;
}
.gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item){
  border:0!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
  overflow:hidden;
}
.gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item) img{
  border-radius:0!important;
  transition:transform 1s cubic-bezier(.22,1,.36,1),filter .6s ease;
}
@media (hover:hover){
  .gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item):hover img{
    transform:scale(1.035);
    filter:saturate(1.05) contrast(1.02);
  }
}

/* Локация без карточных оболочек */
#locationWrap{overflow:visible!important}
#location .iviLocGrid{
  gap:clamp(2rem,5vw,5rem);
  margin-top:clamp(2rem,4vw,3.5rem);
}
#location .iviLocCard{
  border:0!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
  overflow:visible!important;
}
#location .iviLocPhoto{
  border:0!important;
  border-radius:0!important;
  box-shadow:0 22px 64px color-mix(in srgb,var(--accent) 10%,rgba(0,0,0,.16));
  overflow:hidden;
}
#location .iviLocPhoto img{
  height:clamp(280px,40vw,480px);
  transition:transform 1s cubic-bezier(.22,1,.36,1);
}
@media (hover:hover){
  #location .iviLocCard:hover .iviLocPhoto img{transform:scale(1.035)}
}
#location .iviLocBody{padding:1.5rem 0 0!important}
#location .iviLocBadge{
  border:0!important;
  background:none!important;
  color:var(--accent)!important;
  padding:0!important;
}
#location .iviBtn{
  border-radius:0!important;
  box-shadow:none!important;
}

/* RSVP и dress code не превращаем в панели */
#dresscodeWrap,
#rsvpWrap{overflow:visible}

/* Тематические акценты сильнее зависят от выбранной темы */
::selection{
  background:color-mix(in srgb,var(--accent) 28%,transparent);
  color:var(--text);
}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:4px;
}

/* Новые мягкие анимации */
.reveal{
  opacity:0;
  transform:translateY(28px);
  filter:blur(4px);
  transition:
    opacity .9s cubic-bezier(.22,1,.36,1),
    transform .9s cubic-bezier(.22,1,.36,1),
    filter .9s ease;
}
.reveal.is-visible,
.reveal.visible,
.reveal.in-view{
  opacity:1;
  transform:none;
  filter:none;
}

@keyframes weLineIn{
  from{transform:scaleX(0);opacity:0}
  to{transform:scaleX(1);opacity:1}
}
@keyframes weHeroFloat{
  0%,100%{transform:translateY(0) rotate(-.35deg)}
  50%{transform:translateY(-10px) rotate(.25deg)}
}

@media (prefers-reduced-motion:reduce){
  .hero-media{animation:none!important}
  .reveal{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  .story-media,.gallery-shell img,#location .iviLocPhoto img{transition:none!important}
}

@media (max-width:900px){
  :root{--we-gap:5rem}
  .program-item{grid-template-columns:92px minmax(0,1fr) 28px;gap:16px}
}

@media (max-width:640px){
  :root{--padX:16px;--we-gap:4.25rem}
  .section-title{font-size:clamp(40px,13vw,62px)}
  .story{gap:2.5rem}
  .story-media{transform:none}
  .program-item{
    grid-template-columns:1fr 28px;
    gap:.55rem 1rem;
    min-height:auto;
    padding:1.35rem 0;
  }
  .p-time{grid-column:1;font-size:34px}
  .p-main{grid-column:1}
  .program-item::after{grid-column:2;grid-row:1 / span 2;align-self:center}
  #location .iviLocPhoto img{height:260px}
}


/* =========================================================
   WEDDING EDITORIAL 2.2
   Hero по центру, крупнее и выразительнее
========================================================= */
.hero{
  min-height:100svh;
  overflow:hidden;
}

.hero-media{
  left:50%!important;
  top:50%!important;
  width:min(48vw,760px)!important;
  height:min(62vh,720px)!important;
  transform:translate(-50%,-50%) scale(var(--boxScale))!important;
  transform-origin:center center!important;
  margin:0!important;
}

.hero-bg{
  object-position:center center!important;
  transform-origin:center center!important;
  transition:
    transform 1500ms cubic-bezier(.16,1,.3,1),
    filter 1200ms ease,
    opacity 1200ms ease!important;
}

@media (hover:hover) and (pointer:fine){
  .hero-media:hover{
    --boxScale:1.30!important;
  }

  .hero-media:hover .hero-bg{
    transform:
      translate3d(calc(var(--px) * 1px),calc(var(--py) * 1px),0)
      scale(1.08)!important;
  }
}

@media (max-width:1100px){
  .hero-media{
    width:min(58vw,680px)!important;
    height:min(58vh,650px)!important;
  }
}

@media (hover:none) and (pointer:coarse){
  .hero-media{
    width:min(88vw,620px)!important;
    height:min(62vh,680px)!important;
  }

  .hero-media.is-active{
    --boxScale:1.08!important;
  }
}

@media (max-width:640px){
  .hero-media{
    width:88vw!important;
    height:56vh!important;
    max-height:620px;
  }

  .hero-name{
    font-size:14vw!important;
  }
}

/* Галерея: лейбл и заголовок визуально не смешиваются */
.gallery .section-kicker{
  color:var(--accent)!important;
  opacity:1!important;
}

.gallery .section-title{
  color:var(--text)!important;
}

/* =========================================================
   WEDDING EDITORIAL 2.3
   Плавный zoom hero без скачка при наведении
========================================================= */
.hero-media{
  --boxScale:1!important;
  transform:translate3d(-50%,-50%,0) scale(1)!important;
  transform-origin:50% 50%!important;
  transition:
    transform 1350ms cubic-bezier(.16,1,.3,1),
    box-shadow 900ms ease!important;
  will-change:transform;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}

.hero-media .hero-bg{
  transform:
    translate3d(calc(var(--px) * 1px),calc(var(--py) * 1px),0)
    scale(1)!important;
  transition:
    transform 1350ms cubic-bezier(.16,1,.3,1),
    filter 1200ms ease,
    opacity 1200ms ease!important;
  will-change:transform,filter,opacity;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}

@media (hover:hover) and (pointer:fine){
  .hero-media:hover{
    transform:translate3d(-50%,-50%,0) scale(1.30)!important;
  }

  .hero-media:hover .hero-bg{
    transform:
      translate3d(calc(var(--px) * 1px),calc(var(--py) * 1px),0)
      scale(1.075)!important;
  }
}

@media (hover:none) and (pointer:coarse){
  .hero-media.is-active{
    transform:translate3d(-50%,-50%,0) scale(1.08)!important;
  }
}

@media (prefers-reduced-motion:reduce){
  .hero-media,
  .hero-media .hero-bg{
    transition-duration:1ms!important;
  }
}

/* =========================================================
   WEDDING EDITORIAL 2.4
   Чистый фон с лёгкой сепией + безопасный контраст тем
========================================================= */
:root{
  --we-sepia:#8d6845;
  --we-bg-veil:color-mix(in srgb,var(--bg) 94%,var(--we-sepia) 6%);
  --we-accent-readable:color-mix(in srgb,var(--accent) 72%,var(--text) 28%);
  --we-muted-readable:color-mix(in srgb,var(--text) 68%,transparent);
  --we-line-safe:color-mix(in srgb,var(--text) 16%,transparent);
  --we-surface-safe:color-mix(in srgb,var(--text) 4%,transparent);
}

html[data-dark="1"]{
  --we-bg-veil:color-mix(in srgb,var(--bg) 96%,var(--we-sepia) 4%);
  --we-accent-readable:color-mix(in srgb,var(--accent) 62%,#fff 38%);
  --we-muted-readable:color-mix(in srgb,var(--text) 74%,transparent);
  --we-line-safe:color-mix(in srgb,var(--text) 18%,transparent);
  --we-surface-safe:color-mix(in srgb,var(--text) 5%,transparent);
}

/* Фон больше не окрашивается целиком в цвет темы. Тема остаётся в акцентах. */
body{
  background-color:var(--we-bg-veil)!important;
  background-image:
    radial-gradient(900px 620px at 12% 8%,color-mix(in srgb,var(--we-sepia) 7%,transparent),transparent 70%),
    radial-gradient(760px 560px at 88% 86%,color-mix(in srgb,var(--we-sepia) 5%,transparent),transparent 74%),
    linear-gradient(180deg,color-mix(in srgb,var(--bg) 98%,var(--we-sepia) 2%),var(--we-bg-veil))!important;
  background-attachment:fixed;
}

html[data-dark="1"] body{
  background-image:
    radial-gradient(940px 680px at 10% 6%,rgba(141,104,69,.075),transparent 72%),
    radial-gradient(820px 600px at 92% 88%,rgba(141,104,69,.055),transparent 75%),
    linear-gradient(180deg,color-mix(in srgb,var(--bg) 98%,#17120e 2%),var(--we-bg-veil))!important;
}

/* Очень деликатная бумажная сепия без грязной цветной дымки */
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  opacity:.22;
  background-image:
    repeating-linear-gradient(0deg,rgba(92,67,42,.018) 0 1px,transparent 1px 4px),
    radial-gradient(circle at 50% 20%,rgba(255,247,235,.12),transparent 48%);
  mix-blend-mode:multiply;
}

html[data-dark="1"] body::before{
  opacity:.13;
  mix-blend-mode:screen;
}

/* Цвет темы остаётся выразительным, но текст всегда читаемый */
.section-kicker,
.hero-kicker,
.hero-date,
.p-time,
.program-item::after,
#location .iviLocBadge,
.gallery .section-kicker,
.story .section-kicker,
.program .section-kicker,
#location .section-kicker,
#dresscodeWrap .section-kicker,
#rsvpWrap .section-kicker{
  color:var(--we-accent-readable)!important;
}

.section-text,
.section-lead,
.story-text,
.p-text,
.iviLocAddress,
.iviLocHint,
.iviLocText,
#rsvpWrap .form-help,
#rsvpWrap small,
#dresscodeWrap .section-text{
  color:var(--we-muted-readable)!important;
}

.section-title,
.hero-name,
.p-title,
.iviLocTitle,
#rsvpWrap label,
#dresscodeWrap .section-title{
  color:var(--text)!important;
}

/* Линии больше не становятся слишком яркими или почти невидимыми */
.story::before,
.program::before,
.gallery::before,
.section-block::before{
  background:linear-gradient(90deg,var(--we-accent-readable),transparent)!important;
}

.program-list,
.program-item,
.story,
.gallery-shell,
#locationWrap,
#dresscodeWrap,
#rsvpWrap{
  border-color:var(--we-line-safe)!important;
}

/* Формы: одинаковая читаемость во всех светлых и тёмных темах */
#rsvpWrap input,
#rsvpWrap textarea,
#rsvpWrap select,
#rsvpWrap .form-control{
  color:var(--text)!important;
  caret-color:var(--we-accent-readable);
  border-color:var(--we-line-safe)!important;
  background:var(--we-surface-safe)!important;
}

#rsvpWrap input::placeholder,
#rsvpWrap textarea::placeholder{
  color:color-mix(in srgb,var(--text) 48%,transparent)!important;
  opacity:1;
}

#rsvpWrap input:focus,
#rsvpWrap textarea:focus,
#rsvpWrap select:focus{
  border-color:var(--we-accent-readable)!important;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--we-accent-readable) 16%,transparent)!important;
}

/* Акцентные кнопки получают контрастный текст, вторичные остаются нейтральными */
#rsvpWrap button[type="submit"],
#rsvpWrap .btn-primary,
.iviBtn.is-primary,
button.primary{
  background:var(--accent)!important;
  color:var(--accentInk)!important;
  border-color:color-mix(in srgb,var(--accent) 64%,var(--text) 10%)!important;
}

.iviBtn:not(.is-primary),
#location .iviBtn:not(.is-primary){
  color:var(--text)!important;
  border-color:var(--we-line-safe)!important;
  background:transparent!important;
}

@media (hover:hover){
  .iviBtn:not(.is-primary):hover,
  #location .iviBtn:not(.is-primary):hover{
    border-color:var(--we-accent-readable)!important;
    color:var(--we-accent-readable)!important;
  }
}

/* Изображения получают единую мягкую сепию, а при наведении оживают */
.hero-bg,
.story-media img,
.gallery-shell img,
#location .iviLocPhoto img{
  filter:
    grayscale(var(--heroGray,0))
    sepia(.14)
    saturate(var(--heroSat,1))
    brightness(var(--heroBright,1))
    contrast(var(--heroContrast,1));
}

@media (hover:hover) and (pointer:fine){
  .hero-media:hover .hero-bg,
  .story:hover .story-media img,
  .gallery-shell :is(a,.iviGalleryItem,.gallery-item,.item):hover img,
  #location .iviLocCard:hover .iviLocPhoto img{
    filter:grayscale(0) sepia(.06) saturate(1.06) brightness(1.02) contrast(1.03)!important;
  }
}

@media (prefers-reduced-motion:reduce){
  body{background-attachment:scroll}
}

/* =========================================================
   WEDDING EDITORIAL 2.5
   Реально плавный hero zoom + чистые светлые темы
========================================================= */

/*
 * Рывок создавался конфликтом двух transform-анимаций:
 * weHeroFloat постоянно меняла transform у .hero-media,
 * а hover одновременно задавал другой transform.
 * Контейнер hero больше не анимируется через transform.
 */
.hero-media{
  animation:none!important;
  transform:translate3d(-50%,-50%,0) scale(1)!important;
  transform-origin:center center!important;
  transition:
    transform 1800ms cubic-bezier(.18,.82,.18,1),
    box-shadow 1100ms ease,
    filter 1100ms ease!important;
  contain:layout paint;
  isolation:isolate;
}

.hero-media .hero-bg{
  transform:
    translate3d(calc(var(--px) * 1px),calc(var(--py) * 1px),0)
    scale(1)!important;
  transform-origin:center center!important;
  transition:
    transform 1800ms cubic-bezier(.18,.82,.18,1),
    filter 1300ms ease,
    opacity 1300ms ease!important;
}

@media (hover:hover) and (pointer:fine){
  .hero-media:hover{
    transform:translate3d(-50%,-50%,0) scale(1.20)!important;
  }

  .hero-media:hover .hero-bg{
    transform:
      translate3d(calc(var(--px) * 1px),calc(var(--py) * 1px),0)
      scale(1.055)!important;
  }
}

/* Чистая, нейтральная основа светлых тем. Цвет темы остаётся в акцентах. */
html[data-dark="0"]{
  --we-page-bg:#f7f3ed;
  --we-page-bg-2:#fbf8f3;
  --we-page-ink:#211d1a;
  --we-page-muted:rgba(33,29,26,.70);
  --we-page-line:rgba(52,43,36,.15);
  --we-accent-readable:color-mix(in srgb,var(--accent) 58%,#2c211b 42%);
  --we-muted-readable:var(--we-page-muted);
  --we-line-safe:var(--we-page-line);
  --we-surface-safe:rgba(255,255,255,.54);
}

html[data-dark="0"] body{
  color:var(--we-page-ink)!important;
  background-color:var(--we-page-bg)!important;
  background-image:
    radial-gradient(820px 520px at 8% 7%,color-mix(in srgb,var(--accent) 5%,transparent),transparent 72%),
    radial-gradient(720px 480px at 92% 82%,rgba(155,118,83,.055),transparent 76%),
    linear-gradient(180deg,var(--we-page-bg-2),var(--we-page-bg))!important;
  background-attachment:fixed;
}

html[data-dark="0"] body::before{
  opacity:.12!important;
  background-image:
    repeating-linear-gradient(0deg,rgba(70,53,39,.012) 0 1px,transparent 1px 5px),
    radial-gradient(circle at 50% 5%,rgba(255,255,255,.42),transparent 46%)!important;
  mix-blend-mode:multiply!important;
}

/* На светлых темах базовый текст всегда тёмный и контрастный. */
html[data-dark="0"] :is(
  .section-title,
  .hero-name,
  .p-title,
  .story-title,
  .iviLocTitle,
  #rsvpWrap label,
  #dresscodeWrap .section-title,
  .gallery .section-title
){
  color:var(--we-page-ink)!important;
}

html[data-dark="0"] :is(
  .section-text,
  .section-lead,
  .story-text,
  .p-text,
  .iviLocAddress,
  .iviLocHint,
  .iviLocText,
  #rsvpWrap .form-help,
  #rsvpWrap small,
  #dresscodeWrap .section-text
){
  color:var(--we-page-muted)!important;
}

html[data-dark="0"] :is(
  .section-kicker,
  .hero-kicker,
  .hero-date,
  .p-time,
  .program-item::after,
  #location .iviLocBadge,
  .gallery .section-kicker,
  .story .section-kicker,
  .program .section-kicker,
  #location .section-kicker,
  #dresscodeWrap .section-kicker,
  #rsvpWrap .section-kicker
){
  color:var(--we-accent-readable)!important;
  opacity:1!important;
}

html[data-dark="0"] :is(.program-list,.program-item,.story,.gallery-shell,#locationWrap,#dresscodeWrap,#rsvpWrap){
  border-color:var(--we-page-line)!important;
}

html[data-dark="0"] #rsvpWrap :is(input,textarea,select,.form-control){
  color:var(--we-page-ink)!important;
  background:rgba(255,255,255,.60)!important;
  border-color:var(--we-page-line)!important;
}

html[data-dark="0"] #rsvpWrap :is(input,textarea)::placeholder{
  color:rgba(33,29,26,.48)!important;
}

/* Светлая сепия без серой грязи. */
html[data-dark="0"] :is(.hero-bg,.story-media img,.gallery-shell img,#location .iviLocPhoto img){
  filter:
    grayscale(var(--heroGray,0))
    sepia(.09)
    saturate(var(--heroSat,1))
    brightness(1.025)
    contrast(1.025)!important;
}

@media (prefers-reduced-motion:reduce){
  .hero-media,
  .hero-media .hero-bg{
    transition:none!important;
  }
}


/* =========================================================
   WEDDING EDITORIAL DARK: RSVP + CONTACTS
   Только тёмные темы.
========================================================= */

/* RSVP */
html[data-dark="1"] #rsvpWrap .block-card,
html[data-dark="1"] #rsvpWrap .card,
html[data-dark="1"] #rsvpWrap .panel{
  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.075),
      rgba(255,255,255,.045)
    ) !important;
  border:1px solid rgba(255,255,255,.11) !important;
  color:rgba(255,255,255,.94) !important;
  box-shadow:
    0 30px 90px rgba(0,0,0,.34),
    inset 0 1px 0 rgba(255,255,255,.045) !important;
}

html[data-dark="1"] #rsvpWrap :where(#rsvp,#rsvpInner,.rsvpSection,.rsvp,[data-block="rsvp"]){
  --rsvp-paper:rgba(12,12,14,.78) !important;
  --rsvp-line:rgba(255,255,255,.16) !important;
  --rsvp-ink:rgba(255,255,255,.94) !important;
  --rsvp-muted:rgba(255,255,255,.66) !important;
  background:transparent !important;
  color:var(--rsvp-ink) !important;
}

html[data-dark="1"] #rsvpWrap :where(h2,h3,.section-title,.rsvpTitle){
  color:rgba(255,255,255,.96) !important;
}

html[data-dark="1"] #rsvpWrap :where(p,.section-subtitle,.rsvpHint,label,.label,legend){
  color:rgba(255,255,255,.68) !important;
}

html[data-dark="1"] #rsvpWrap :where(input[type="text"],input[type="tel"],textarea,select,.field){
  color:rgba(255,255,255,.94) !important;
  background:rgba(10,10,12,.84) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.035),
    0 14px 34px rgba(0,0,0,.20) !important;
}

html[data-dark="1"] #rsvpWrap :where(input,textarea)::placeholder{
  color:rgba(255,255,255,.40) !important;
}

html[data-dark="1"] #rsvpWrap .chip{
  color:rgba(255,255,255,.86) !important;
  background:rgba(10,10,12,.70) !important;
  border-color:rgba(255,255,255,.17) !important;
  box-shadow:none !important;
}

html[data-dark="1"] #rsvpWrap .chip[data-active="true"],
html[data-dark="1"] #rsvpWrap .chip.is-active,
html[data-dark="1"] #rsvpWrap .chip[aria-pressed="true"]{
  color:#fff !important;
  background:linear-gradient(135deg,var(--accent-color),var(--gold-color)) !important;
  border-color:transparent !important;
  box-shadow:0 16px 36px rgba(0,0,0,.24) !important;
}

html[data-dark="1"] #rsvpWrap .consent{
  background:rgba(10,10,12,.76) !important;
  border-color:rgba(255,255,255,.13) !important;
}

html[data-dark="1"] #rsvpWrap .consent,
html[data-dark="1"] #rsvpWrap .consent :where(span,label,a){
  color:rgba(255,255,255,.62) !important;
}

html[data-dark="1"] #rsvpWrap :where(button[type="submit"],input[type="submit"]){
  color:#fff !important;
  background:linear-gradient(135deg,var(--accent-color),var(--gold-color)) !important;
  border-color:transparent !important;
  box-shadow:0 18px 42px rgba(0,0,0,.26) !important;
}

/* CONTACTS */
html[data-dark="1"] .ivi-contacts{
  --ivi-contacts-bg:transparent !important;
  --ivi-contacts-card:
    linear-gradient(
      180deg,
      rgba(255,255,255,.075),
      rgba(255,255,255,.045)
    ) !important;
  --ivi-contacts-text:rgba(255,255,255,.96) !important;
  --ivi-contacts-muted:rgba(255,255,255,.66) !important;
  --ivi-contacts-accent:var(--accent-color) !important;
  --ivi-contacts-line:rgba(255,255,255,.13) !important;

  background:transparent !important;
  color:rgba(255,255,255,.96) !important;
  border:0 !important;
  box-shadow:none !important;
}

html[data-dark="1"] .ivi-contacts__kicker{
  color:var(--gold-color) !important;
}

html[data-dark="1"] .ivi-contacts__title,
html[data-dark="1"] .ivi-contact__name,
html[data-dark="1"] .ivi-contact__phone{
  color:rgba(255,255,255,.96) !important;
}

html[data-dark="1"] .ivi-contacts__text,
html[data-dark="1"] .ivi-contact__role{
  color:rgba(255,255,255,.66) !important;
}

html[data-dark="1"] .ivi-contact{
  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.08),
      rgba(255,255,255,.05)
    ) !important;
  border:1px solid rgba(255,255,255,.12) !important;
  box-shadow:
    0 28px 76px rgba(0,0,0,.34),
    inset 0 1px 0 rgba(255,255,255,.05) !important;
  backdrop-filter:blur(14px) !important;
  -webkit-backdrop-filter:blur(14px) !important;
}

html[data-dark="1"] .ivi-contact__avatar{
  color:var(--gold-color) !important;
  background:rgba(255,255,255,.045) !important;
  border-color:rgba(255,255,255,.14) !important;
}

html[data-dark="1"] .ivi-contact__action{
  color:rgba(255,255,255,.90) !important;
  background:rgba(10,10,12,.72) !important;
  border-color:rgba(255,255,255,.14) !important;
}

html[data-dark="1"] .ivi-contact__action:hover{
  color:#fff !important;
  background:linear-gradient(135deg,var(--accent-color),var(--gold-color)) !important;
  border-color:transparent !important;
}

@media (max-width:640px){
  html[data-dark="1"] .ivi-contact,
  html[data-dark="1"] #rsvpWrap .block-card{
    border-radius:22px !important;
  }
}

/* =========================================================
   EDITORIAL: STORY / LOCATION / DETAILS / CONTACTS
   ========================================================= */

/* История с фотографией */
.story--with-media .story-media{
  min-height:clamp(360px,46vw,620px);
}

.story--with-media .story-media img{
  height:100%;
  min-height:inherit;
}

/* История без фотографии: полноценная журнальная композиция */
.story.story--no-media{
  display:block;
  max-width:940px;
  margin-left:auto;
  margin-right:auto;
  padding:clamp(3rem,7vw,6.5rem) clamp(0px,4vw,3rem);
  text-align:center;
  position:relative;
}

.story.story--no-media::after{
  content:"";
  display:block;
  width:clamp(72px,10vw,128px);
  height:1px;
  margin:clamp(2rem,4vw,3.25rem) auto 0;
  background:var(--accent);
  opacity:.72;
}

.story--no-media .section-kicker{
  justify-content:center;
}

.story--no-media .section-title{
  max-width:780px;
  margin-left:auto;
  margin-right:auto;
  font-size:clamp(3rem,8vw,7rem);
  line-height:.92;
}

.story--no-media .section-text{
  max-width:760px;
  margin:clamp(1.5rem,3vw,2.4rem) auto 0;
  font-family:"Cormorant Garamond",var(--fontH),serif;
  font-size:clamp(1.25rem,2.15vw,1.75rem);
  line-height:1.65;
  font-weight:400;
  opacity:.86;
}

/* Локация без фото не выглядит пустой карточкой */
#location .iviLocCard:not(:has(.iviLocPhoto img)){
  min-height:100%;
  padding:clamp(1.5rem,3vw,2.5rem);
  border-top:1px solid var(--we-line,var(--border))!important;
  border-bottom:1px solid var(--we-line,var(--border))!important;
  display:flex;
  align-items:center;
}

#location .iviLocCard:not(:has(.iviLocPhoto img)) .iviLocPhoto{
  display:none!important;
}

#location .iviLocCard:not(:has(.iviLocPhoto img)) .iviLocBody{
  width:100%;
  padding:0!important;
}

#location .iviLocCard:not(:has(.iviLocPhoto img)) .iviLocName{
  max-width:620px;
  font-size:clamp(2.1rem,5vw,4rem);
  line-height:1;
  margin:clamp(.75rem,2vw,1.25rem) 0;
}

#location .iviLocCard:not(:has(.iviLocPhoto img)) :is(.iviLocAddr,.iviLocNote){
  max-width:620px;
  font-size:clamp(1rem,1.6vw,1.16rem);
}

#location .iviLocCard:not(:has(.iviLocPhoto img)) .iviLocActions{
  margin-top:clamp(1.4rem,3vw,2rem);
}

/* Общая редакционная оболочка для подключаемых блоков */
.editorial-shared-section{
  margin:var(--sectionY) 0;
  overflow:visible;
}

.editorial-shared-section > :first-child{
  margin-top:0!important;
}

#detailsWrap :is(.ivi-details,.details-block,.important-details,.iviDetails),
#contactsWrap .ivi-contacts{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
  color:var(--text)!important;
}

#detailsWrap :is(.ivi-details__kicker,.details-kicker,.iviDetailsKicker),
#contactsWrap .ivi-contacts__kicker{
  color:var(--accent)!important;
  font-family:Manrope,var(--fontB),sans-serif!important;
  font-size:.72rem!important;
  font-weight:800!important;
  letter-spacing:.22em!important;
  text-transform:uppercase!important;
}

#detailsWrap :is(.ivi-details__title,.details-title,.iviDetailsTitle),
#contactsWrap .ivi-contacts__title{
  color:var(--text)!important;
  font-family:"Cormorant Garamond",var(--fontH),serif!important;
  font-size:clamp(3rem,7vw,6.4rem)!important;
  font-weight:400!important;
  line-height:.92!important;
  letter-spacing:-.045em!important;
}

#detailsWrap :is(.ivi-details__text,.details-text,.iviDetailsText),
#contactsWrap .ivi-contacts__text{
  max-width:760px!important;
  color:var(--text)!important;
  opacity:.72!important;
  line-height:1.75!important;
}

/* Детали: сетка без тяжёлых карточек */
#detailsWrap :is(.ivi-details__grid,.details-grid,.iviDetailsGrid){
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:0!important;
  margin-top:clamp(2rem,4vw,3.5rem)!important;
  border-top:1px solid var(--we-line,var(--border))!important;
}

#detailsWrap :is(.ivi-detail,.details-item,.iviDetailsItem){
  min-width:0!important;
  padding:clamp(1.5rem,3vw,2.4rem)!important;
  background:transparent!important;
  border:0!important;
  border-right:1px solid var(--we-line,var(--border))!important;
  border-bottom:1px solid var(--we-line,var(--border))!important;
  border-radius:0!important;
  box-shadow:none!important;
}

#detailsWrap :is(.ivi-detail,.details-item,.iviDetailsItem):nth-child(3n){
  border-right:0!important;
}

/* Контакты: лёгкая журнальная сетка */
#contactsWrap .ivi-contacts__grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:clamp(1rem,2.5vw,1.75rem)!important;
  margin-top:clamp(2rem,4vw,3.5rem)!important;
}

#contactsWrap .ivi-contact{
  min-width:0!important;
  padding:clamp(1.25rem,2.8vw,2rem)!important;
  background:color-mix(in srgb,var(--text) 4%,transparent)!important;
  border:1px solid var(--we-line,var(--border))!important;
  border-radius:0!important;
  box-shadow:none!important;
  color:var(--text)!important;
}

#contactsWrap :is(.ivi-contact__name,.ivi-contact__phone){
  color:var(--text)!important;
}

#contactsWrap .ivi-contact__name{
  font-family:"Cormorant Garamond",var(--fontH),serif!important;
  font-size:clamp(1.65rem,3vw,2.45rem)!important;
  font-weight:400!important;
}

#contactsWrap :is(.ivi-contact__role,.ivi-contact__text){
  color:var(--text)!important;
  opacity:.62!important;
}

#contactsWrap .ivi-contact__avatar{
  background:transparent!important;
  border:1px solid var(--we-line,var(--border))!important;
  color:var(--accent)!important;
}

#contactsWrap .ivi-contact__action{
  border-radius:0!important;
  background:transparent!important;
  border:1px solid var(--we-line,var(--border))!important;
  color:var(--text)!important;
  box-shadow:none!important;
}

@media (hover:hover){
  #contactsWrap .ivi-contact__action:hover{
    background:var(--accent)!important;
    border-color:var(--accent)!important;
    color:var(--accentInk)!important;
  }
}

@media (max-width:900px){
  #detailsWrap :is(.ivi-details__grid,.details-grid,.iviDetailsGrid){
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }

  #detailsWrap :is(.ivi-detail,.details-item,.iviDetailsItem):nth-child(3n){
    border-right:1px solid var(--we-line,var(--border))!important;
  }

  #detailsWrap :is(.ivi-detail,.details-item,.iviDetailsItem):nth-child(2n){
    border-right:0!important;
  }
}

@media (max-width:640px){
  .story.story--no-media{
    text-align:left;
    padding-left:0;
    padding-right:0;
  }

  .story--no-media .section-kicker{
    justify-content:flex-start;
  }

  .story--no-media .section-title,
  .story--no-media .section-text{
    margin-left:0;
    margin-right:0;
  }

  .story.story--no-media::after{
    margin-left:0;
  }

  #detailsWrap :is(.ivi-details__grid,.details-grid,.iviDetailsGrid),
  #contactsWrap .ivi-contacts__grid{
    grid-template-columns:1fr!important;
  }

  #detailsWrap :is(.ivi-detail,.details-item,.iviDetailsItem){
    border-right:0!important;
    padding-left:0!important;
    padding-right:0!important;
  }

  #contactsWrap .ivi-contact{
    padding:1.25rem!important;
  }

  #location .iviLocCard:not(:has(.iviLocPhoto img)){
    padding:1.5rem 0;
  }
}
