*{box-sizing:border-box}
:root{
  --paper:#eee3d3;
  --paper2:#e3d1bb;
  --page-bg-start:#f2e9dd;
  --page-bg-end:#e7d6c2;
  --surface:#f7eee2;
  --surface-soft:#f6ecdf;
  --ink:#352821;
  --muted:#7a685c;
  --accent:#9c503c;
  --accent-2:#d2a574;
  --accent-3:#707b69;
  --accent-4:#9c503c;
  --map:#d0ae88;
  --route:#f1e5d4;
  --line:rgba(53,40,33,.18);
  --input-line:rgba(53,40,33,.35);
  --button-text:#fff;
  --page:min(1380px,calc(100% - 32px));
}

/* =========================
   COLOR THEMES
========================= */
body[data-theme="classic"]{
  --paper:#eee3d3;
  --paper2:#e3d1bb;
  --page-bg-start:#f2e9dd;
  --page-bg-end:#e7d6c2;
  --surface:#f7eee2;
  --surface-soft:#f6ecdf;
  --ink:#352821;
  --muted:#7a685c;
  --accent:#9c503c;
  --accent-2:#d2a574;
  --accent-3:#707b69;
  --accent-4:#9c503c;
  --map:#d0ae88;
  --route:#f1e5d4;
  --line:rgba(53,40,33,.18);
  --input-line:rgba(53,40,33,.35);
  --button-text:#fff;
}

body[data-theme="olive"]{
  --paper:#e8e5d5;
  --paper2:#d5d4bd;
  --page-bg-start:#f0eee3;
  --page-bg-end:#d8d8c5;
  --surface:#f5f2e8;
  --surface-soft:#ebe9dc;
  --ink:#2d3127;
  --muted:#6d725f;
  --accent:#687255;
  --accent-2:#a8a77a;
  --accent-3:#4e5a45;
  --accent-4:#7c6049;
  --map:#b9b28b;
  --route:#ece8d8;
  --line:rgba(45,49,39,.18);
  --input-line:rgba(45,49,39,.35);
  --button-text:#fff;
}

body[data-theme="wine"]{
  --paper:#eadfdc;
  --paper2:#d7c2c0;
  --page-bg-start:#f2e8e5;
  --page-bg-end:#dcc8c5;
  --surface:#f7efec;
  --surface-soft:#eee1de;
  --ink:#3a2429;
  --muted:#7b6267;
  --accent:#7a3043;
  --accent-2:#c4938b;
  --accent-3:#686e62;
  --accent-4:#562433;
  --map:#c7a49f;
  --route:#f0e4df;
  --line:rgba(58,36,41,.18);
  --input-line:rgba(58,36,41,.35);
  --button-text:#fff;
}

body[data-theme="blue"]{
  --paper:#e4e7ea;
  --paper2:#cdd4db;
  --page-bg-start:#eef1f3;
  --page-bg-end:#d4dbe1;
  --surface:#f5f7f8;
  --surface-soft:#e9edf0;
  --ink:#27313a;
  --muted:#66717c;
  --accent:#48677f;
  --accent-2:#94a9b7;
  --accent-3:#68796e;
  --accent-4:#3f5365;
  --map:#aab9c5;
  --route:#edf1f4;
  --line:rgba(39,49,58,.18);
  --input-line:rgba(39,49,58,.35);
  --button-text:#fff;
}

body[data-theme="mono"]{
  --paper:#e9e8e4;
  --paper2:#d4d2cc;
  --page-bg-start:#f1f0ed;
  --page-bg-end:#d9d7d1;
  --surface:#f7f6f2;
  --surface-soft:#eceae5;
  --ink:#202020;
  --muted:#707070;
  --accent:#343434;
  --accent-2:#a7a7a4;
  --accent-3:#676763;
  --accent-4:#1f1f1f;
  --map:#b8b7b2;
  --route:#f2f1ed;
  --line:rgba(32,32,32,.18);
  --input-line:rgba(32,32,32,.35);
  --button-text:#fff;
}


body[data-theme="espresso"]{
  --paper:#1c1512;
  --paper2:#2a1f1a;
  --page-bg-start:#211815;
  --page-bg-end:#120e0c;
  --surface:#2b211d;
  --surface-soft:#241b18;
  --ink:#f0e4d6;
  --muted:#b6a497;
  --accent:#c77a58;
  --accent-2:#8e674f;
  --accent-3:#4e5a4a;
  --accent-4:#7d3f35;
  --map:#4b352c;
  --route:#b78e6f;
  --line:rgba(240,228,214,.16);
  --input-line:rgba(240,228,214,.34);
  --button-text:#17110f;
}

body[data-theme="graphite"]{
  --paper:#17191d;
  --paper2:#23262c;
  --page-bg-start:#20232a;
  --page-bg-end:#101216;
  --surface:#292d34;
  --surface-soft:#21252b;
  --ink:#eef0f2;
  --muted:#a8adb5;
  --accent:#8ea8bd;
  --accent-2:#687684;
  --accent-3:#4f625a;
  --accent-4:#3e4f60;
  --map:#343b43;
  --route:#8795a2;
  --line:rgba(238,240,242,.15);
  --input-line:rgba(238,240,242,.32);
  --button-text:#111317;
}

body[data-theme="burgundy"]{
  --paper:#211316;
  --paper2:#311b20;
  --page-bg-start:#2b171c;
  --page-bg-end:#120a0c;
  --surface:#352026;
  --surface-soft:#2a181d;
  --ink:#f5e8e5;
  --muted:#c3a6a5;
  --accent:#d17a82;
  --accent-2:#80505a;
  --accent-3:#596052;
  --accent-4:#6e2938;
  --map:#503039;
  --route:#b57c7d;
  --line:rgba(245,232,229,.16);
  --input-line:rgba(245,232,229,.34);
  --button-text:#1a0d10;
}

body[data-theme="forest"]{
  --paper:#111b18;
  --paper2:#1b2924;
  --page-bg-start:#182721;
  --page-bg-end:#09100e;
  --surface:#24342d;
  --surface-soft:#1b2a24;
  --ink:#edf2e9;
  --muted:#aab8aa;
  --accent:#a5b57b;
  --accent-2:#64765d;
  --accent-3:#425d51;
  --accent-4:#6e5740;
  --map:#31473c;
  --route:#879a78;
  --line:rgba(237,242,233,.15);
  --input-line:rgba(237,242,233,.32);
  --button-text:#10160f;
}

body[data-theme="plum"]{
  --paper:#1d1520;
  --paper2:#2b1e30;
  --page-bg-start:#291c2e;
  --page-bg-end:#100b12;
  --surface:#34253a;
  --surface-soft:#281c2d;
  --ink:#f2eaf3;
  --muted:#b8a6bb;
  --accent:#c18bb8;
  --accent-2:#78617e;
  --accent-3:#53635b;
  --accent-4:#68405f;
  --map:#49344d;
  --route:#a1849f;
  --line:rgba(242,234,243,.15);
  --input-line:rgba(242,234,243,.32);
  --button-text:#160e18;
}

body[data-theme="navy"]{
  --paper:#101722;
  --paper2:#192436;
  --page-bg-start:#18253a;
  --page-bg-end:#080d15;
  --surface:#223149;
  --surface-soft:#19263a;
  --ink:#edf2f8;
  --muted:#a5b1c1;
  --accent:#91b5d7;
  --accent-2:#58728f;
  --accent-3:#49665f;
  --accent-4:#365574;
  --map:#2d425c;
  --route:#829ab4;
  --line:rgba(237,242,248,.15);
  --input-line:rgba(237,242,248,.32);
  --button-text:#0b111b;
}

body[data-theme="charcoal"]{
  --paper:#181817;
  --paper2:#252522;
  --page-bg-start:#252522;
  --page-bg-end:#0d0d0c;
  --surface:#2d2d29;
  --surface-soft:#232320;
  --ink:#f1eee4;
  --muted:#b6b0a1;
  --accent:#d0ad67;
  --accent-2:#77694c;
  --accent-3:#566057;
  --accent-4:#5d4932;
  --map:#3d3930;
  --route:#a89062;
  --line:rgba(241,238,228,.15);
  --input-line:rgba(241,238,228,.32);
  --button-text:#15130e;
}

body[data-theme="espresso"] .cover-photo img,
body[data-theme="graphite"] .cover-photo img{
  filter:saturate(.82) contrast(1.04);
}

body[data-theme="espresso"] .cover-photo::after,
body[data-theme="graphite"] .cover-photo::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg,transparent 58%,rgba(0,0,0,.18));
}

body[data-theme="espresso"] .cover-button,
body[data-theme="graphite"] .cover-button{
  background:var(--accent);
  color:var(--button-text);
}

body[data-theme="espresso"] .tickets article:nth-child(3),
body[data-theme="espresso"] .tickets article:nth-child(4),
body[data-theme="graphite"] .tickets article:nth-child(3),
body[data-theme="graphite"] .tickets article:nth-child(4){
  color:#fff;
}

html{scroll-behavior:smooth}
body{margin:0;background:linear-gradient(180deg,var(--page-bg-start) 0%,var(--page-bg-end) 100%);color:var(--ink);font-family:"DM Sans",sans-serif;overflow-x:hidden}
a{color:inherit}img{display:block;width:100%}button,input,select,textarea{font:inherit}
.header{width:var(--page);min-height:76px;margin:auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line)}
.logo{font:700 13px Manrope,sans-serif;letter-spacing:.2em;text-decoration:none}.header nav{display:flex;gap:28px}.header nav a{text-decoration:none;font-size:12px;color:var(--muted)}.header>span{justify-self:end;font-size:10px;letter-spacing:.15em;color:var(--muted)}
.hero,.section{width:var(--page);margin:0 auto;position:relative}.hero{min-height:760px;padding:78px 0;display:grid;grid-template-columns:.88fr 1.12fr;gap:82px;align-items:center}
.hero__copy{position:relative;z-index:2}.stamp{display:inline-flex;padding:8px 11px;border:1px solid var(--accent);color:var(--accent);font:700 11px Manrope,sans-serif;letter-spacing:.12em}.eyebrow,.kicker{margin:22px 0 14px;font-size:11px;text-transform:uppercase;letter-spacing:.17em;color:var(--muted)}
.hero h1,.section h2{margin:0;font-family:Fraunces,serif;font-weight:600;letter-spacing:-.045em}.hero h1{font-size:clamp(80px,11vw,156px);line-height:.8}.hero h1 span{color:var(--accent)}.hero__lead{max-width:560px;font-size:19px;line-height:1.7;color:var(--muted)}
.button{display:inline-flex;align-items:center;gap:28px;margin-top:26px;padding:14px 20px;background:var(--ink);color:var(--button-text);text-decoration:none;font-weight:600}.button span{font-size:18px}
.hero__collage{min-height:560px;position:relative}.photo{position:absolute;margin:0;background:var(--surface);border:1px solid var(--line)}.photo img{width:100%;height:100%;object-fit:cover}.photo figcaption{position:absolute;left:14px;bottom:12px;font:600 11px Manrope,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.photo--a{width:63%;height:450px;right:4%;top:2%;padding:10px 10px 38px}.photo--b{width:38%;height:270px;left:1%;bottom:3%;padding:9px 9px 35px}.hero__note{position:absolute;right:0;bottom:7%;font:700 12px Manrope,sans-serif;letter-spacing:.18em;color:var(--accent);writing-mode:vertical-rl;transform:rotate(180deg)}
.section{padding:96px 0;border-top:1px solid var(--line)}.story{display:grid;grid-template-columns:.8fr 1.2fr;gap:74px;align-items:center}.postcard{padding:46px;background:var(--surface);border-left:4px solid var(--accent)}.postcard>span{font:700 10px Manrope,sans-serif;letter-spacing:.14em;color:var(--muted)}.section h2{font-size:clamp(52px,7vw,94px);line-height:.96}.postcard p{line-height:1.75;color:var(--muted)}.story__photo img{aspect-ratio:1.45;object-fit:cover}
.section__head{max-width:760px}.tickets{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:48px;background:var(--line)}.tickets article{min-height:230px;padding:26px;background:var(--surface-soft);display:flex;flex-direction:column}.tickets article:nth-child(2){background:var(--accent-2)}.tickets article:nth-child(3){background:var(--accent-3);color:#fff}.tickets article:nth-child(4){background:var(--accent-4);color:#fff}.tickets span{font:700 11px Manrope,sans-serif;letter-spacing:.13em;opacity:.72}.tickets b{margin-top:auto;font:600 30px Fraunces,serif}.tickets p{margin:10px 0 0;line-height:1.5;opacity:.78}
.place{display:grid;grid-template-columns:.72fr 1.28fr;gap:52px;align-items:stretch}.place__ticket{padding:48px;background:var(--surface-soft);display:flex;flex-direction:column}.place__ticket>span{font:700 10px Manrope,sans-serif;letter-spacing:.18em;color:var(--muted)}.place__ticket p{font-size:18px}.place__ticket small{color:var(--muted)}.text-link{margin-top:auto;padding-top:38px;text-decoration:none;font-weight:700}.text-link span{color:var(--accent)}.place__map{min-height:430px;background:var(--map);position:relative;overflow:hidden}.route{position:absolute;width:125%;height:38px;left:-12%;top:46%;background:var(--route);transform:rotate(-14deg)}.pin{position:absolute;left:54%;top:38%;width:72px;height:72px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--accent);color:#fff;display:grid;place-items:center}.pin span{transform:rotate(45deg);font-weight:700}
.dress{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center}.dress>div>p:last-child{max-width:560px;line-height:1.75;color:var(--muted)}.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;align-items:stretch}.swatches span{min-height:260px;background:var(--c);position:relative}.swatches i{position:absolute;left:14px;bottom:12px;font:700 10px Manrope,sans-serif;color:rgba(255,255,255,.72);font-style:normal}.swatches span:first-child i{color:var(--ink)}
.rsvp{padding:76px;background:var(--surface-soft);display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;border-top:0}.rsvp__note>p:last-child{color:var(--muted)}.rsvp form{display:grid;grid-template-columns:1fr 1fr;gap:20px}.rsvp label{display:grid;gap:8px}.rsvp label span{font-size:11px;color:var(--muted)}.rsvp input,.rsvp select,.rsvp textarea{width:100%;padding:14px 0;border:0;border-bottom:1px solid var(--input-line);border-radius:0;background:transparent;color:var(--ink);outline:none}.rsvp label:last-of-type{grid-column:1/-1}.rsvp button{grid-column:1/-1;min-height:54px;border:0;background:var(--accent);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-weight:700;cursor:pointer}
footer{width:var(--page);margin:auto;padding:28px 0;display:flex;justify-content:space-between;color:var(--muted);font-size:11px;letter-spacing:.1em;border-top:1px solid var(--line)}
.reveal{opacity:0;will-change:transform,opacity;transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1)}.reveal--left{transform:translate3d(-70px,0,0)}.reveal--right{transform:translate3d(70px,0,0)}.reveal--top{transform:translate3d(0,-35px,0)}.reveal--bottom{transform:translate3d(0,35px,0)}.reveal.is-visible{opacity:1;transform:translate3d(0,0,0)}
@media(max-width:960px){.header nav{display:none}.header{grid-template-columns:1fr auto}.hero,.story,.place,.dress,.rsvp{grid-template-columns:1fr}.hero__collage{order:-1}.tickets{grid-template-columns:1fr 1fr}.rsvp{padding:54px 36px}}
@media(max-width:640px){:root{--page:calc(100% - 20px)}.hero{padding:42px 0;gap:30px}.hero h1{font-size:74px}.hero__collage{min-height:430px}.photo--a{width:73%;height:335px}.photo--b{width:45%;height:220px}.hero__note{display:none}.section{padding:70px 0}.story{gap:28px}.tickets{grid-template-columns:1fr}.dress{gap:34px}.swatches{grid-template-columns:repeat(5,1fr)}.swatches span{min-height:150px}.rsvp{padding:34px 20px}.rsvp form{grid-template-columns:1fr}.rsvp form>*{grid-column:1!important}.reveal--left,.reveal--right{transform:translate3d(34px,0,0)}.reveal--left{transform:translate3d(-34px,0,0)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1!important;transform:none!important;transition:none!important}}


/* =========================
   THEME SWITCHER
========================= */
body,
.header,
.photo,
.postcard,
.tickets article,
.place__ticket,
.place__map,
.route,
.rsvp,
.rsvp input,
.rsvp select,
.rsvp textarea,
.rsvp button,
.swatches span{
  transition:
    background-color .42s ease,
    background .42s ease,
    color .42s ease,
    border-color .42s ease;
}

.theme-switcher{
  width:var(--page);
  min-height:58px;
  margin:0 auto;
  display:flex;
  align-items:center;
  gap:18px;
  border-bottom:1px solid var(--line);
}

.theme-switcher__label{
  color:var(--muted);
  font:700 9px Manrope,sans-serif;
  letter-spacing:.15em;
  text-transform:uppercase;
}

.theme-switcher__buttons{
  display:flex;
  align-items:center;
  gap:9px;
}

.theme-dot{
  width:28px;
  height:28px;
  padding:3px;
  border:1px solid transparent;
  border-radius:50%;
  background:transparent;
  cursor:pointer;
  transition:transform .2s ease,border-color .2s ease;
}

.theme-dot:hover{
  transform:scale(1.08);
}

.theme-dot.is-active{
  border-color:var(--ink);
}

.theme-dot i{
  display:block;
  width:100%;
  height:100%;
  border-radius:50%;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);
}

.theme-dot[data-theme-value="classic"] i{
  background:linear-gradient(135deg,#eee3d3 0 50%,#9c503c 50%);
}

.theme-dot[data-theme-value="olive"] i{
  background:linear-gradient(135deg,#e8e5d5 0 50%,#687255 50%);
}

.theme-dot[data-theme-value="wine"] i{
  background:linear-gradient(135deg,#eadfdc 0 50%,#7a3043 50%);
}

.theme-dot[data-theme-value="blue"] i{
  background:linear-gradient(135deg,#e4e7ea 0 50%,#48677f 50%);
}

.theme-dot[data-theme-value="mono"] i{
  background:linear-gradient(135deg,#e9e8e4 0 50%,#343434 50%);
}

.theme-dot[data-theme-value="espresso"] i{
  background:linear-gradient(135deg,#2b211d 0 50%,#c77a58 50%);
}

.theme-dot[data-theme-value="graphite"] i{
  background:linear-gradient(135deg,#20232a 0 50%,#8ea8bd 50%);
}

.theme-dot[data-theme-value="burgundy"] i{
  background:linear-gradient(135deg,#211316 0 50%,#d17a82 50%);
}

.theme-dot[data-theme-value="forest"] i{
  background:linear-gradient(135deg,#111b18 0 50%,#a5b57b 50%);
}

.theme-dot[data-theme-value="plum"] i{
  background:linear-gradient(135deg,#1d1520 0 50%,#c18bb8 50%);
}

.theme-dot[data-theme-value="navy"] i{
  background:linear-gradient(135deg,#101722 0 50%,#91b5d7 50%);
}

.theme-dot[data-theme-value="charcoal"] i{
  background:linear-gradient(135deg,#181817 0 50%,#d0ad67 50%);
}

.theme-switcher__name{
  color:var(--ink);
  font:600 11px Manrope,sans-serif;
  letter-spacing:.04em;
}

@media(max-width:640px){
  .theme-switcher{
    min-height:66px;
    gap:12px;
    overflow-x:auto;
    scrollbar-width:none;
  }

  .theme-switcher::-webkit-scrollbar{
    display:none;
  }

  .theme-switcher__label{
    display:none;
  }

  .theme-switcher__name{
    white-space:nowrap;
  }
}

/* =========================
   YOUTH STRICT REDESIGN
========================= */
body{
  background:var(--page-bg-start);
}

.header{
  min-height:68px;
  border-bottom:0;
}

.logo,
.header nav a,
.header>span,
.theme-switcher,
.hero__edition,
.section__number,
.ticker{
  font-family:Syne,Manrope,sans-serif;
}

.logo{
  font-weight:800;
  letter-spacing:.16em;
}

.header nav a{
  color:var(--ink);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:10px;
}

.theme-switcher{
  min-height:50px;
  border-top:1px solid var(--line);
  border-bottom:0;
}

.ticker{
  width:100%;
  overflow:hidden;
  background:var(--ink);
  color:var(--button-text);
  white-space:nowrap;
}

.ticker__track{
  width:max-content;
  padding:11px 0;
  font-size:10px;
  font-weight:700;
  letter-spacing:.16em;
  animation:tickerMove 24s linear infinite;
}

@keyframes tickerMove{
  to{transform:translateX(-50%)}
}

.hero{
  min-height:790px;
  padding:64px 0 74px;
  grid-template-columns:.82fr 1.18fr;
  gap:48px;
  overflow:hidden;
}

.hero__ghost{
  position:absolute;
  right:-1.5vw;
  bottom:-6vw;
  z-index:0;
  font:800 clamp(220px,32vw,520px)/.72 Syne,sans-serif;
  letter-spacing:-.12em;
  color:transparent;
  -webkit-text-stroke:1px var(--line);
  opacity:.7;
  pointer-events:none;
}

.hero__copy,
.hero__collage{
  z-index:2;
}

.hero__edition{
  margin:18px 0 0;
  color:var(--muted);
  font-size:9px;
  font-weight:700;
  letter-spacing:.16em;
}

.stamp{
  border:0;
  border-left:4px solid var(--accent);
  padding:4px 0 4px 12px;
  font-size:10px;
}

.hero h1{
  margin-top:14px;
  font-family:Syne,sans-serif;
  font-size:clamp(78px,10.6vw,150px);
  font-weight:800;
  line-height:.76;
  letter-spacing:-.085em;
}

.hero h1 span{
  font-family:Fraunces,serif;
  font-weight:600;
  letter-spacing:-.07em;
}

.hero__lead{
  max-width:510px;
  font-size:17px;
}

.button{
  min-height:52px;
  margin-top:20px;
  padding:0 18px;
  font-family:Syne,sans-serif;
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.hero__collage{
  min-height:590px;
}

.photo{
  border:0;
  background:transparent;
}

.photo--a{
  width:69%;
  height:500px;
  right:0;
  top:0;
  padding:0;
}

.photo--b{
  width:34%;
  height:250px;
  left:2%;
  bottom:0;
  padding:0;
}

.photo figcaption{
  position:static;
  margin-top:10px;
  font-size:9px;
  color:var(--ink);
}

.hero__note{
  right:auto;
  left:2%;
  top:7%;
  bottom:auto;
  writing-mode:horizontal-tb;
  transform:none;
  font-size:10px;
}

.section{
  padding:112px 0;
  border-top:0;
}

.section__number{
  position:absolute;
  top:38px;
  right:0;
  color:var(--muted);
  font-size:10px;
  font-weight:700;
  letter-spacing:.14em;
}

.section__number--inside{
  top:28px;
  right:28px;
}

.section h2{
  font-family:Syne,sans-serif;
  font-weight:700;
  letter-spacing:-.065em;
}

.story{
  gap:40px;
  align-items:stretch;
}

.postcard{
  padding:54px 48px;
  background:var(--ink);
  color:var(--button-text);
  border-left:0;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
}

.postcard>span,
.postcard p{
  color:rgba(255,255,255,.58);
}

.story__photo img{
  height:100%;
  min-height:520px;
}

.section__head{
  max-width:none;
  display:grid;
  grid-template-columns:220px 1fr;
  align-items:end;
  gap:30px;
}

.section__head .kicker{
  margin:0 0 10px;
}

.tickets{
  gap:12px;
  background:transparent;
}

.tickets article{
  min-height:280px;
  padding:24px;
}

.tickets b{
  font-family:Syne,sans-serif;
  font-size:26px;
  font-weight:700;
  letter-spacing:-.04em;
}

.place{
  grid-template-columns:.82fr 1.18fr;
  gap:16px;
}

.place__ticket{
  padding:44px;
  background:var(--ink);
  color:var(--button-text);
}

.place__ticket>span,
.place__ticket small{
  color:rgba(255,255,255,.58);
}

.place__ticket h2{
  font-family:Syne,sans-serif;
  font-size:clamp(52px,6vw,84px);
}

.place__map{
  min-height:500px;
}

.dress{
  gap:40px;
}

.swatches{
  gap:0;
}

.swatches span{
  min-height:300px;
}

.swatches span:nth-child(odd){
  transform:translateY(18px);
}

.rsvp{
  position:relative;
  padding:78px;
  background:var(--ink);
  color:var(--button-text);
}

.rsvp .kicker,
.rsvp__note>p:last-child,
.rsvp label span{
  color:rgba(255,255,255,.58);
}

.rsvp input,
.rsvp select,
.rsvp textarea{
  color:var(--button-text);
  border-bottom-color:rgba(255,255,255,.38);
}

.rsvp select option{
  color:#111;
}

.rsvp button{
  background:var(--accent);
}

footer{
  border-top:0;
  padding:34px 0;
  font-family:Syne,sans-serif;
}

.reveal{
  transition-duration:.68s;
}

@media(max-width:960px){
  .section__head{
    grid-template-columns:1fr;
  }
  .hero{
    grid-template-columns:1fr;
  }
  .hero__collage{
    order:-1;
  }
  .story__photo img{
    min-height:420px;
  }
}

@media(max-width:640px){
  .ticker__track{
    animation-duration:18s;
  }
  .hero{
    padding-top:34px;
  }
  .hero h1{
    font-size:70px;
  }
  .hero__ghost{
    font-size:190px;
    right:-28px;
    bottom:0;
  }
  .hero__collage{
    min-height:450px;
  }
  .photo--a{
    width:76%;
    height:350px;
  }
  .photo--b{
    width:42%;
    height:200px;
  }
  .section{
    padding:82px 0;
  }
  .postcard{
    padding:38px 26px;
  }
  .story__photo img{
    min-height:320px;
  }
  .tickets article{
    min-height:220px;
  }
  .place__ticket{
    padding:34px 24px;
  }
  .place__map{
    min-height:340px;
  }
  .swatches span{
    min-height:180px;
  }
  .swatches span:nth-child(odd){
    transform:translateY(10px);
  }
  .rsvp{
    padding:54px 22px;
  }
}

@media(prefers-reduced-motion:reduce){
  .ticker__track{animation:none}
}


/* =========================
   CLEAN HEADER + OUTLINE AGE
========================= */
.header{
  grid-template-columns:1fr auto;
  min-height:64px;
}

.header>span{
  justify-self:end;
}

.hero{
  isolation:isolate;
  overflow:visible;
}

.hero__ghost{
  position:absolute;
  inset:auto -5vw -1vw auto;
  z-index:3;
  width:min(74vw,980px);
  height:92%;
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  pointer-events:none;
  opacity:1;
  overflow:visible;
}

.hero__ghost span{
  display:block;
  font:800 clamp(310px,46vw,720px)/.62 Syne,sans-serif;
  letter-spacing:-.15em;
  color:transparent;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:clamp(1.5px,.16vw,2.6px) color-mix(in srgb,var(--ink) 72%,transparent);
  paint-order:stroke fill;
  transform:translate3d(0,0,0);
  white-space:nowrap;
}

.hero__copy{
  z-index:4;
}

.hero__collage{
  z-index:2;
}

.hero h1{
  position:relative;
  z-index:5;
  max-width:7ch;
  font-size:clamp(82px,11.8vw,170px);
  line-height:.78;
}

.hero__lead,
.hero .button,
.hero .stamp,
.hero__edition,
.hero .eyebrow{
  position:relative;
  z-index:5;
}

.photo--a{
  z-index:2;
}

.photo--b{
  z-index:5;
}

@media(max-width:960px){
  .hero{
    overflow:hidden;
  }

  .hero__ghost{
    width:110vw;
    right:-28vw;
    bottom:5%;
    height:72%;
    z-index:3;
  }

  .hero__ghost span{
    font-size:clamp(300px,68vw,560px);
    -webkit-text-stroke-width:1.8px;
  }
}

@media(max-width:640px){
  .header{
    min-height:58px;
  }

  .hero{
    padding-top:28px;
  }

  .hero h1{
    font-size:clamp(70px,23vw,102px);
  }

  .hero__ghost{
    width:135vw;
    right:-45vw;
    bottom:8%;
    height:66%;
  }

  .hero__ghost span{
    font-size:clamp(270px,91vw,430px);
    -webkit-text-stroke-width:1.5px;
  }
}


/* =========================
   BLUEPRINT PORTRAIT HERO
========================= */
.hero{
  min-height:820px;
  grid-template-columns:.9fr 1.1fr;
  gap:54px;
  overflow:hidden;
}

.hero__ghost{
  inset:auto -1vw 4% auto;
  width:min(65vw,900px);
  height:76%;
  align-items:center;
  justify-content:center;
  z-index:4;
}

.hero__ghost span{
  font-size:clamp(270px,38vw,590px);
  line-height:.66;
  letter-spacing:-.13em;
  -webkit-text-stroke:clamp(1.3px,.12vw,2px) color-mix(in srgb,var(--ink) 58%,transparent);
  opacity:.74;
  transform:translateX(5%);
}

.hero__copy{
  z-index:6;
}

.hero__collage.hero__blueprint{
  min-height:620px;
  display:grid;
  place-items:center;
  position:relative;
  z-index:3;
}

.blueprint-frame{
  width:min(92%,650px);
  aspect-ratio:.82;
  position:relative;
  padding:42px;
  background:color-mix(in srgb,var(--surface) 82%,transparent);
  border:1px solid color-mix(in srgb,var(--ink) 66%,transparent);
}

.blueprint-frame::before{
  content:"";
  position:absolute;
  inset:13px;
  border:1px solid color-mix(in srgb,var(--ink) 24%,transparent);
  pointer-events:none;
}

.blueprint-frame::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(to right,color-mix(in srgb,var(--ink) 7%,transparent) 1px,transparent 1px),
    linear-gradient(to bottom,color-mix(in srgb,var(--ink) 7%,transparent) 1px,transparent 1px);
  background-size:38px 38px;
  opacity:.45;
  pointer-events:none;
}

.photo--main{
  position:absolute;
  inset:74px 76px 92px 76px;
  margin:0;
  z-index:2;
  overflow:hidden;
  background:var(--surface);
  border:1px solid color-mix(in srgb,var(--ink) 54%,transparent);
}

.photo--main img{
  width:100%;
  height:100%;
  object-fit:cover;
}

.blueprint-corner{
  position:absolute;
  width:34px;
  height:34px;
  z-index:5;
}

.blueprint-corner::before,
.blueprint-corner::after{
  content:"";
  position:absolute;
  background:var(--ink);
}

.blueprint-corner::before{
  width:34px;
  height:1px;
}

.blueprint-corner::after{
  width:1px;
  height:34px;
}

.blueprint-corner--tl{left:-1px;top:-1px}
.blueprint-corner--tr{right:-1px;top:-1px;transform:rotate(90deg)}
.blueprint-corner--br{right:-1px;bottom:-1px;transform:rotate(180deg)}
.blueprint-corner--bl{left:-1px;bottom:-1px;transform:rotate(270deg)}

.blueprint-axis{
  position:absolute;
  z-index:4;
  opacity:.5;
  pointer-events:none;
}

.blueprint-axis--x{
  left:24px;
  right:24px;
  top:50%;
  border-top:1px dashed color-mix(in srgb,var(--ink) 44%,transparent);
}

.blueprint-axis--y{
  top:24px;
  bottom:24px;
  left:50%;
  border-left:1px dashed color-mix(in srgb,var(--ink) 44%,transparent);
}

.blueprint-code,
.blueprint-date,
.blueprint-size{
  position:absolute;
  z-index:6;
  font:700 9px Manrope,sans-serif;
  letter-spacing:.15em;
  color:var(--muted);
}

.blueprint-code{left:24px;top:24px}
.blueprint-date{right:24px;top:24px}
.blueprint-size{right:24px;bottom:24px}

.blueprint-caption{
  position:absolute;
  left:76px;
  bottom:28px;
  z-index:6;
  display:grid;
  gap:4px;
}

.blueprint-caption strong{
  font:700 13px Syne,sans-serif;
  letter-spacing:.12em;
}

.blueprint-caption span{
  font:700 8px Manrope,sans-serif;
  letter-spacing:.16em;
  color:var(--muted);
}

.blueprint-point{
  position:absolute;
  z-index:7;
  width:24px;
  height:24px;
  border:1px solid var(--ink);
  border-radius:50%;
  display:grid;
  place-items:center;
  background:var(--paper);
  font:700 9px Manrope,sans-serif;
}

.blueprint-point--a{left:64px;top:62px}
.blueprint-point--b{right:64px;bottom:80px}

.blueprint-callout{
  position:absolute;
  z-index:7;
  display:flex;
  align-items:center;
  gap:10px;
  font:700 8px Manrope,sans-serif;
  letter-spacing:.14em;
  color:var(--ink);
}

.blueprint-callout span{
  display:block;
  width:74px;
  height:1px;
  background:var(--ink);
  position:relative;
}

.blueprint-callout span::after{
  content:"";
  position:absolute;
  right:0;
  top:-3px;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--accent);
}

.blueprint-callout--top{
  right:-8px;
  top:82px;
  transform:translateX(62%);
}

.blueprint-callout--side{
  left:-8px;
  bottom:138px;
  transform:translateX(-58%) rotate(-90deg);
  transform-origin:center;
}

.hero__note{
  left:auto;
  right:2%;
  top:3%;
  bottom:auto;
  z-index:8;
  writing-mode:horizontal-tb;
  transform:none;
}

@media(max-width:1100px){
  .hero{
    grid-template-columns:1fr;
  }

  .hero__collage.hero__blueprint{
    order:-1;
  }

  .hero__ghost{
    width:95vw;
    right:-18vw;
    bottom:4%;
    height:52%;
  }

  .hero__ghost span{
    font-size:clamp(300px,62vw,520px);
  }

  .blueprint-callout--top{
    right:8px;
    transform:none;
  }

  .blueprint-callout--side{
    left:8px;
    transform:rotate(-90deg);
  }
}

@media(max-width:640px){
  .hero{
    min-height:auto;
    padding-top:22px;
    gap:24px;
  }

  .hero__collage.hero__blueprint{
    min-height:465px;
  }

  .blueprint-frame{
    width:100%;
    max-width:420px;
    padding:26px;
  }

  .photo--main{
    inset:52px 42px 72px 42px;
  }

  .blueprint-code{left:16px;top:16px}
  .blueprint-date{right:16px;top:16px}
  .blueprint-size{right:16px;bottom:16px}

  .blueprint-caption{
    left:42px;
    bottom:18px;
  }

  .blueprint-point--a{left:32px;top:42px}
  .blueprint-point--b{right:32px;bottom:60px}

  .blueprint-callout{
    display:none;
  }

  .hero__note{
    right:2%;
    top:1%;
    font-size:8px;
  }

  .hero__ghost{
    width:120vw;
    right:-42vw;
    bottom:0;
    height:45%;
  }

  .hero__ghost span{
    font-size:clamp(230px,82vw,370px);
    -webkit-text-stroke-width:1.3px;
  }
}

/* Верхняя шапка удалена */
.theme-switcher{margin-top:0;}

/* =========================
   HERO CLEANUP V2
   Compact outline age + separated technical labels
========================= */
.hero{
  isolation:isolate;
}

.hero__ghost{
  inset:16% -2.5% auto auto !important;
  width:59% !important;
  height:68% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:visible !important;
  z-index:5 !important;
  pointer-events:none;
}

.hero__ghost span{
  display:block;
  font-size:clamp(250px,31vw,470px) !important;
  line-height:.72 !important;
  letter-spacing:-.12em !important;
  transform:translateX(4%) !important;
  color:transparent !important;
  -webkit-text-fill-color:transparent !important;
  -webkit-text-stroke:clamp(1.2px,.11vw,1.8px) color-mix(in srgb,var(--ink) 48%,transparent) !important;
  opacity:.66 !important;
}

.hero__copy{
  position:relative;
  z-index:8 !important;
}

.hero__blueprint{
  z-index:3 !important;
}

.blueprint-frame{
  z-index:3;
}

.photo--main{
  z-index:4;
}

/* Убираем лишнюю повторяющуюся подпись сверху */
.hero__note{
  display:none !important;
}

.blueprint-code{
  left:24px !important;
  top:24px !important;
  max-width:130px;
  white-space:nowrap;
}

.blueprint-date{
  right:24px !important;
  top:24px !important;
  max-width:120px;
  white-space:nowrap;
  text-align:right;
}

.blueprint-callout--top{
  right:26px !important;
  top:72px !important;
  transform:none !important;
  flex-direction:row-reverse;
}

.blueprint-callout--top span{
  width:58px !important;
}

.blueprint-callout--side{
  left:24px !important;
  bottom:104px !important;
  transform:none !important;
  flex-direction:row;
}

.blueprint-callout--side span{
  width:52px !important;
}

.blueprint-callout b{
  white-space:nowrap;
}

.blueprint-point--a{
  left:64px !important;
  top:61px !important;
}

.blueprint-point--b{
  right:64px !important;
  bottom:79px !important;
}

.blueprint-caption{
  left:76px !important;
  bottom:27px !important;
  max-width:220px;
}

.blueprint-size{
  right:24px !important;
  bottom:24px !important;
}

@media(max-width:1100px){
  .hero__ghost{
    inset:25% -12% auto auto !important;
    width:78% !important;
    height:52% !important;
  }

  .hero__ghost span{
    font-size:clamp(260px,48vw,430px) !important;
  }
}

@media(max-width:640px){
  .hero__ghost{
    inset:28% -28% auto auto !important;
    width:100% !important;
    height:42% !important;
  }

  .hero__ghost span{
    font-size:clamp(210px,72vw,330px) !important;
    -webkit-text-stroke-width:1.15px !important;
    opacity:.55 !important;
  }

  .blueprint-code,
  .blueprint-date,
  .blueprint-size{
    font-size:7px !important;
    letter-spacing:.11em !important;
  }

  .blueprint-code{left:14px !important;top:14px !important}
  .blueprint-date{right:14px !important;top:14px !important}
  .blueprint-size{right:14px !important;bottom:14px !important}

  .blueprint-caption{
    left:42px !important;
    bottom:17px !important;
  }
}


/* =========================
   HERO V3: AGE INSIDE FRAME
========================= */
.hero{
  min-height:800px;
  grid-template-columns:.88fr 1.12fr;
  gap:48px;
  overflow:hidden;
}

.hero__copy{
  z-index:8 !important;
}

.hero__collage.hero__blueprint{
  min-height:620px;
  z-index:3 !important;
}

.blueprint-frame{
  width:min(94%,650px);
  aspect-ratio:.82;
  overflow:hidden;
  isolation:isolate;
  background:color-mix(in srgb,var(--surface) 88%,transparent);
}

.blueprint-frame::after{
  z-index:0;
}

.blueprint-age{
  position:absolute;
  z-index:1;
  left:-5%;
  top:24%;
  width:112%;
  color:transparent;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:clamp(1.2px,.11vw,1.8px) color-mix(in srgb,var(--ink) 38%,transparent);
  font:800 clamp(250px,27vw,430px)/.68 Syne,sans-serif;
  letter-spacing:-.14em;
  opacity:.72;
  pointer-events:none;
  user-select:none;
  white-space:nowrap;
}

.photo--main{
  z-index:3 !important;
  inset:74px 76px 92px 76px;
  background:var(--surface);
}

.blueprint-axis{
  z-index:4;
  opacity:.26;
}

.blueprint-corner,
.blueprint-code,
.blueprint-date,
.blueprint-size,
.blueprint-point,
.blueprint-caption{
  z-index:6;
}

.blueprint-point{
  width:22px;
  height:22px;
  font-size:8px;
}

.blueprint-caption{
  left:76px !important;
  bottom:27px !important;
}

.blueprint-code{
  left:24px !important;
  top:24px !important;
}

.blueprint-date{
  right:24px !important;
  top:24px !important;
}

.blueprint-size{
  right:24px !important;
  bottom:24px !important;
}

/* old global outline age is no longer used */
.hero__ghost{
  display:none !important;
}

/* Keep the frame calm: no external leaders */
.blueprint-callout{
  display:none !important;
}

@media(max-width:1100px){
  .hero{
    grid-template-columns:1fr;
  }

  .hero__collage.hero__blueprint{
    order:-1;
  }

  .blueprint-age{
    left:-2%;
    top:26%;
    width:105%;
    font-size:clamp(250px,52vw,410px);
  }
}

@media(max-width:640px){
  .hero{
    min-height:auto;
    gap:24px;
  }

  .hero__collage.hero__blueprint{
    min-height:470px;
  }

  .blueprint-frame{
    width:100%;
    max-width:420px;
  }

  .photo--main{
    inset:52px 42px 72px 42px;
  }

  .blueprint-age{
    left:-8%;
    top:30%;
    width:116%;
    font-size:clamp(205px,74vw,310px);
    -webkit-text-stroke-width:1.15px;
    opacity:.62;
  }

  .blueprint-code{
    left:14px !important;
    top:14px !important;
  }

  .blueprint-date{
    right:14px !important;
    top:14px !important;
  }

  .blueprint-size{
    right:14px !important;
    bottom:14px !important;
  }

  .blueprint-caption{
    left:42px !important;
    bottom:17px !important;
  }
}

/* =========================
   HERO V4: VISIBLE OUTLINE AGE
========================= */
.blueprint-age{
  z-index:5 !important;
  left:-10% !important;
  top:28% !important;
  width:120% !important;
  font-size:clamp(270px,30vw,460px) !important;
  line-height:.66 !important;
  letter-spacing:-.16em !important;
  -webkit-text-stroke:clamp(1.8px,.16vw,2.8px) color-mix(in srgb,var(--ink) 72%,transparent) !important;
  opacity:.78 !important;
  mix-blend-mode:multiply;
}

.photo--main{
  z-index:3 !important;
}

.blueprint-axis{
  z-index:4 !important;
}

.blueprint-code,
.blueprint-date,
.blueprint-size,
.blueprint-point,
.blueprint-caption,
.blueprint-corner{
  z-index:7 !important;
}

@media(max-width:1100px){
  .blueprint-age{
    left:-7% !important;
    top:29% !important;
    width:116% !important;
    font-size:clamp(280px,56vw,440px) !important;
  }
}

@media(max-width:640px){
  .blueprint-age{
    left:-12% !important;
    top:32% !important;
    width:124% !important;
    font-size:clamp(225px,82vw,340px) !important;
    -webkit-text-stroke-width:1.65px !important;
    opacity:.74 !important;
  }
}


/* =========================
   HERO COVER V2
========================= */
.hero-cover{
  width:min(1480px,calc(100% - 32px)) !important;
  min-height:820px !important;
  margin:0 auto !important;
  padding:0 !important;
  display:grid !important;
  grid-template-columns:minmax(0,.86fr) minmax(520px,1.14fr) !important;
  grid-template-rows:58px 1fr !important;
  gap:0 !important;
  overflow:hidden !important;
  position:relative !important;
  background:var(--paper) !important;
}

.cover-meta{
  grid-column:1/-1;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  min-height:58px;
  padding:0 22px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font:700 9px Manrope,sans-serif;
  letter-spacing:.17em;
  text-transform:uppercase;
}
.cover-meta span:nth-child(2){justify-self:center}
.cover-meta span:nth-child(3){justify-self:end}

.cover-copy{
  grid-column:1;
  padding:clamp(56px,7vw,112px) clamp(34px,5vw,78px);
  display:flex;
  flex-direction:column;
  justify-content:center;
  position:relative;
  z-index:6;
}
.cover-copy::after{
  content:"";
  position:absolute;
  right:0;
  top:10%;
  bottom:10%;
  width:1px;
  background:var(--line);
}
.cover-kicker{
  margin:0 0 20px;
  color:var(--muted);
  font:700 10px Manrope,sans-serif;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.cover-copy h1{
  margin:0;
  font:800 clamp(92px,10.5vw,170px)/.78 Syne,sans-serif;
  letter-spacing:-.085em;
  color:var(--ink);
}
.cover-lead{
  max-width:590px;
  margin:38px 0 0;
  color:var(--muted);
  font-size:clamp(17px,1.35vw,21px);
  line-height:1.65;
}
.cover-actions{
  margin-top:38px;
  display:flex;
  align-items:center;
  gap:28px;
}
.cover-button{
  min-width:160px;
  min-height:56px;
  padding:0 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:var(--accent-2);
  color:var(--button-text);
  text-decoration:none;
  font:800 11px Manrope,sans-serif;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.cover-button span{font-size:20px}
.cover-note{
  color:var(--muted);
  font:700 9px/1.55 Manrope,sans-serif;
  letter-spacing:.14em;
}

.cover-stage{
  grid-column:2;
  position:relative;
  min-height:760px;
  display:grid;
  place-items:center;
  overflow:hidden;
  isolation:isolate;
  background:color-mix(in srgb,var(--surface) 72%,var(--paper));
}
.cover-stage::before{
  content:"";
  position:absolute;
  inset:28px;
  border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);
  pointer-events:none;
}
.cover-stage::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:linear-gradient(to right,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px);
  background-size:42px 42px;
  opacity:.5;
  z-index:0;
  pointer-events:none;
}
.cover-age{
  position:absolute;
  left:-1.5%;
  top:50%;
  transform:translateY(-50%);
  z-index:1;
  color:transparent;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:2px color-mix(in srgb,var(--ink) 58%,transparent);
  font:800 clamp(290px,27vw,470px)/.72 Syne,sans-serif;
  letter-spacing:-.16em;
  opacity:.66;
  white-space:nowrap;
  user-select:none;
}
.cover-photo{
  width:min(62%,520px);
  aspect-ratio:.78;
  margin:0 0 0 21%;
  position:relative;
  z-index:3;
  background:var(--surface);
  box-shadow:0 28px 80px color-mix(in srgb,var(--ink) 18%,transparent);
}
.cover-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.cover-photo figcaption{
  position:absolute;
  left:0;
  right:0;
  bottom:-54px;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px;
  color:var(--ink);
}
.cover-photo figcaption b{
  font:800 11px Manrope,sans-serif;
  letter-spacing:.13em;
}
.cover-photo figcaption span{
  color:var(--muted);
  font:700 8px Manrope,sans-serif;
  letter-spacing:.12em;
  text-align:right;
}
.crop{
  position:absolute;
  width:28px;
  height:28px;
  z-index:5;
}
.crop::before,.crop::after{content:"";position:absolute;background:var(--ink)}
.crop::before{width:28px;height:1px}
.crop::after{width:1px;height:28px}
.crop--tl{left:-12px;top:-12px}
.crop--tr{right:-12px;top:-12px;transform:rotate(90deg)}
.crop--br{right:-12px;bottom:-12px;transform:rotate(180deg)}
.crop--bl{left:-12px;bottom:-12px;transform:rotate(270deg)}
.cover-slash{
  position:absolute;
  right:-7%;
  bottom:14%;
  width:48%;
  height:2px;
  background:var(--accent);
  transform:rotate(-42deg);
  transform-origin:right center;
  z-index:4;
}
.cover-coordinate{
  position:absolute;
  z-index:5;
  color:var(--muted);
  font:700 8px Manrope,sans-serif;
  letter-spacing:.16em;
}
.cover-coordinate--top{right:42px;top:44px}
.cover-coordinate--side{left:36px;bottom:50px;writing-mode:vertical-rl;transform:rotate(180deg)}
.cover-index{
  position:absolute;
  right:42px;
  bottom:34px;
  z-index:5;
  font:800 58px/.8 Syne,sans-serif;
  color:color-mix(in srgb,var(--ink) 14%,transparent);
}

@media(max-width:1100px){
  .hero-cover{
    grid-template-columns:1fr !important;
    grid-template-rows:58px auto auto !important;
  }
  .cover-copy{grid-column:1;grid-row:3;padding-top:62px}
  .cover-copy::after{display:none}
  .cover-stage{grid-column:1;grid-row:2;min-height:700px}
  .cover-photo{width:min(58%,500px);margin-left:20%}
  .cover-age{left:4%;font-size:clamp(300px,48vw,450px)}
}

@media(max-width:640px){
  .hero-cover{width:calc(100% - 20px) !important;grid-template-rows:48px auto auto !important}
  .cover-meta{min-height:48px;padding:0 12px;grid-template-columns:1fr auto;font-size:7px}
  .cover-meta span:nth-child(2){display:none}
  .cover-meta span:nth-child(3){justify-self:end}
  .cover-stage{min-height:500px}
  .cover-stage::before{inset:14px}
  .cover-photo{width:62%;margin-left:22%}
  .cover-photo figcaption{bottom:-42px;display:grid;gap:4px}
  .cover-photo figcaption span{text-align:left}
  .cover-age{left:-7%;font-size:clamp(220px,73vw,320px);-webkit-text-stroke-width:1.4px;opacity:.56}
  .cover-slash{right:-15%;bottom:14%;width:58%}
  .cover-coordinate--top{right:20px;top:22px}
  .cover-coordinate--side{left:17px;bottom:28px}
  .cover-index{right:20px;bottom:20px;font-size:42px}
  .cover-copy{padding:48px 18px 58px}
  .cover-copy h1{font-size:clamp(72px,23vw,110px)}
  .cover-lead{margin-top:28px;font-size:16px}
  .cover-actions{align-items:flex-start;flex-direction:column}
}


/* =========================
   AGE BESIDE NAME
========================= */
.cover-name-wrap{
  position:relative;
  isolation:isolate;
  padding-top:20px;
}

.cover-name-wrap .cover-kicker,
.cover-name-wrap h1{
  position:relative;
  z-index:3;
}

.cover-name-wrap .cover-age{
  position:absolute;
  left:-5%;
  top:50%;
  transform:translateY(-42%);
  z-index:1;
  color:transparent;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:2px color-mix(in srgb,var(--accent) 70%,transparent);
  font:800 clamp(250px,24vw,410px)/.7 Syne,sans-serif;
  letter-spacing:-.16em;
  opacity:.72;
  white-space:nowrap;
  pointer-events:none;
  user-select:none;
}

.cover-copy h1{
  position:relative;
  z-index:4;
}

.cover-copy{
  overflow:visible;
}

.cover-stage .cover-age{
  display:none !important;
}

@media(max-width:1100px){
  .cover-name-wrap .cover-age{
    left:-2%;
    top:46%;
    font-size:clamp(240px,46vw,380px);
  }
}

@media(max-width:640px){
  .cover-name-wrap{
    padding-top:10px;
  }

  .cover-name-wrap .cover-age{
    left:-12%;
    top:48%;
    font-size:clamp(190px,65vw,280px);
    -webkit-text-stroke-width:1.35px;
    opacity:.62;
  }
}

/* =========================
   AGE POSITION V2
========================= */
.cover-name-wrap .cover-age{
  left:-2%;
  top:72%;
  transform:translateY(-32%);
  font-size:clamp(235px,22vw,380px);
  line-height:.78;
  letter-spacing:-.08em;
  -webkit-text-stroke-width:1.8px;
  opacity:.66;
}

@media(max-width:1100px){
  .cover-name-wrap .cover-age{
    left:0;
    top:70%;
    transform:translateY(-30%);
    font-size:clamp(225px,42vw,350px);
    letter-spacing:-.07em;
  }
}

@media(max-width:640px){
  .cover-name-wrap .cover-age{
    left:-5%;
    top:74%;
    transform:translateY(-28%);
    font-size:clamp(175px,58vw,250px);
    letter-spacing:-.06em;
    -webkit-text-stroke-width:1.25px;
    opacity:.58;
  }
}


/* =========================
   AGE V3 · CLEAN GEOMETRIC BLOCK
========================= */
.cover-name-wrap{
  min-height:315px;
  padding-top:18px;
  position:relative;
  isolation:isolate;
}

.cover-name-wrap .cover-kicker{
  position:relative;
  z-index:5;
}

.cover-name-wrap h1{
  position:relative;
  z-index:5;
  margin-top:8px;
}

.cover-name-wrap .cover-age{
  position:absolute;
  left:2%;
  right:auto;
  top:132px;
  z-index:2;
  display:flex;
  align-items:flex-start;
  gap:clamp(8px,1.1vw,18px);
  transform:none;
  opacity:.48;
  color:transparent;
  pointer-events:none;
  user-select:none;
  white-space:nowrap;
}

.cover-name-wrap .cover-age span{
  display:block;
  width:.68em;
  color:transparent;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:clamp(1.3px,.1vw,1.8px)
    color-mix(in srgb,var(--accent) 72%,transparent);
  font-family:Inter,Arial,sans-serif;
  font-size:clamp(190px,18vw,315px);
  font-weight:900;
  font-style:normal;
  font-variant-numeric:tabular-nums;
  line-height:.74;
  letter-spacing:0;
  text-align:center;
}

.cover-lead{
  position:relative;
  z-index:6;
  margin-top:30px !important;
  max-width:560px;
}

.cover-actions{
  position:relative;
  z-index:6;
}

/* cancel previous age rules */
.cover-name-wrap .cover-age{
  letter-spacing:0 !important;
  -webkit-text-stroke-width:0 !important;
}

@media(max-width:1100px){
  .cover-name-wrap{
    min-height:285px;
  }

  .cover-name-wrap .cover-age{
    left:1%;
    top:120px;
    gap:10px;
  }

  .cover-name-wrap .cover-age span{
    font-size:clamp(180px,34vw,285px);
  }
}

@media(max-width:640px){
  .cover-name-wrap{
    min-height:215px;
    padding-top:8px;
  }

  .cover-name-wrap .cover-age{
    left:1%;
    top:94px;
    gap:6px;
    opacity:.42;
  }

  .cover-name-wrap .cover-age span{
    font-size:clamp(130px,42vw,190px);
    -webkit-text-stroke-width:1.1px;
  }

  .cover-lead{
    margin-top:8px !important;
  }
}


/* FINAL VISIBLE AGE */
.cover-name-wrap{
  position:relative !important;
  min-height:360px !important;
  overflow:visible !important;
  isolation:isolate !important;
}
.cover-name-wrap h1{
  position:relative !important;
  z-index:5 !important;
}
.cover-age-visible{
  position:absolute !important;
  left:24px !important;
  top:146px !important;
  z-index:3 !important;
  display:flex !important;
  gap:18px !important;
  pointer-events:none !important;
  white-space:nowrap !important;
  opacity:.72 !important;
  transform:none !important;
}
.cover-age-visible span{
  display:block !important;
  color:transparent !important;
  -webkit-text-fill-color:transparent !important;
  -webkit-text-stroke:2px color-mix(in srgb,var(--accent) 78%,transparent) !important;
  font-family:Inter,Arial,sans-serif !important;
  font-size:clamp(210px,18vw,320px) !important;
  font-weight:900 !important;
  line-height:.74 !important;
  letter-spacing:0 !important;
  width:auto !important;
}
.cover-lead,.cover-actions{position:relative !important;z-index:6 !important}
@media(max-width:1100px){
  .cover-name-wrap{min-height:330px !important}
  .cover-age-visible{left:12px !important;top:140px !important;gap:12px !important}
  .cover-age-visible span{font-size:clamp(190px,34vw,290px) !important}
}
@media(max-width:640px){
  .cover-name-wrap{min-height:235px !important}
  .cover-age-visible{left:4px !important;top:102px !important;gap:7px !important;opacity:.64 !important}
  .cover-age-visible span{font-size:clamp(135px,43vw,190px) !important;-webkit-text-stroke-width:1.35px !important}
}


/* REAL PHOTO TUNING */
.cover-photo img{
  object-position:center 36%;
}
.story__photo{
  overflow:hidden;
  min-height:420px;
}
.story__photo img{
  width:100%;
  height:100%;
  min-height:420px;
  object-fit:cover;
  object-position:center 55%;
}

@media(max-width:640px){
  .cover-photo img{object-position:center 32%}
  .story__photo,.story__photo img{min-height:300px}
}

/* =========================
   HERO PHOTO CAPTION FIX
========================= */
.cover-stage{
  padding:38px 28px 46px;
}

.cover-photo{
  width:min(62%,520px);
  height:min(88%,690px);
  aspect-ratio:auto;
  margin:0 0 0 21%;
  display:grid;
  grid-template-rows:minmax(0,1fr) 54px;
  align-self:center;
  box-shadow:0 28px 80px color-mix(in srgb,var(--ink) 18%,transparent);
}

.cover-photo img{
  min-height:0;
  height:100%;
  object-fit:cover;
}

.cover-photo figcaption{
  position:static;
  min-height:54px;
  padding:14px 2px 0;
  display:grid;
  grid-template-columns:1fr auto;
  align-items:start;
  gap:18px;
  color:var(--ink);
  background:transparent;
}

.cover-photo figcaption b,
.cover-photo figcaption span{
  line-height:1.25;
  white-space:nowrap;
}

.cover-photo figcaption b{
  font-size:10px;
}

.cover-photo figcaption span{
  font-size:7px;
  text-align:right;
}

.cover-index{
  bottom:28px;
}

.cover-coordinate--side{
  bottom:78px;
}

@media(max-width:1100px){
  .cover-stage{
    padding-bottom:42px;
  }

  .cover-photo{
    width:min(58%,500px);
    height:min(86%,650px);
    margin-left:20%;
  }
}

@media(max-width:640px){
  .cover-stage{
    padding:22px 14px 30px;
  }

  .cover-photo{
    width:66%;
    height:430px;
    margin-left:19%;
    grid-template-rows:minmax(0,1fr) 62px;
  }

  .cover-photo figcaption{
    min-height:62px;
    padding-top:12px;
    grid-template-columns:1fr;
    gap:4px;
  }

  .cover-photo figcaption b,
  .cover-photo figcaption span{
    white-space:normal;
  }

  .cover-photo figcaption span{
    text-align:left;
  }

  .cover-coordinate--side{
    bottom:66px;
  }
}


/* Additional dark themes: shared contrast treatment */
body:is([data-theme="burgundy"],[data-theme="forest"],[data-theme="plum"],[data-theme="navy"],[data-theme="charcoal"]) .cover-photo::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg,transparent 58%,rgba(0,0,0,.22));
}
body:is([data-theme="burgundy"],[data-theme="forest"],[data-theme="plum"],[data-theme="navy"],[data-theme="charcoal"]) .cover-button{
  background:var(--accent);
  color:var(--button-text);
}
body:is([data-theme="burgundy"],[data-theme="forest"],[data-theme="plum"],[data-theme="navy"],[data-theme="charcoal"]) .tickets article:nth-child(n+2){
  color:#fff;
}
body:is([data-theme="burgundy"],[data-theme="forest"],[data-theme="plum"],[data-theme="navy"],[data-theme="charcoal"]) select option{
  background:var(--surface);
  color:var(--ink);
}

/* =========================================================
   DARK THEME READABILITY + DEEP MOBILE ADAPTATION (FINAL)
========================================================= */
:root{
  --on-ink:#fff;
  --on-accent:#fff;
  --field-placeholder:color-mix(in srgb,var(--ink) 48%,transparent);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
){
  --on-ink:#f8f5ef;
  --on-accent:#111;
  --field-placeholder:rgba(248,245,239,.48);
}

/* Blocks that deliberately use the ink background must always use light text. */
.postcard,
.place__ticket,
.rsvp,
.ticker{
  color:var(--on-ink) !important;
}

.postcard h2,
.place__ticket h2,
.place__ticket p,
.place__ticket .text-link,
.rsvp h2,
.rsvp form,
.rsvp input,
.rsvp select,
.rsvp textarea,
.ticker__track{
  color:var(--on-ink) !important;
}

.postcard>span,
.postcard p,
.place__ticket>span,
.place__ticket small,
.rsvp .kicker,
.rsvp__note>p:last-child,
.rsvp label span{
  color:color-mix(in srgb,var(--on-ink) 68%,transparent) !important;
}

.rsvp input::placeholder,
.rsvp textarea::placeholder{
  color:color-mix(in srgb,var(--on-ink) 48%,transparent) !important;
  opacity:1;
}

.rsvp select{
  color-scheme:dark;
}

.rsvp select option{
  background:var(--surface) !important;
  color:var(--ink) !important;
}

/* Buttons and strong accent surfaces. */
.cover-button,
.rsvp button{
  color:var(--on-accent) !important;
}

body:is(
  [data-theme="classic"],
  [data-theme="olive"],
  [data-theme="wine"],
  [data-theme="blue"],
  [data-theme="mono"]
) .cover-button{
  color:#fff !important;
}

/* Program cards: explicit foreground colors remove palette-dependent failures. */
.tickets article{
  color:var(--ink);
  border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);
}

.tickets article:nth-child(2){
  color:color-mix(in srgb,var(--ink) 94%,#000);
}

.tickets article:nth-child(3),
.tickets article:nth-child(4){
  color:#fff !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .tickets article:nth-child(1){
  background:color-mix(in srgb,var(--surface) 92%,#fff 8%);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .tickets article:nth-child(2){
  background:color-mix(in srgb,var(--accent-2) 74%,#fff 26%);
  color:#151515 !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .tickets article:nth-child(3){
  background:color-mix(in srgb,var(--accent-3) 80%,#000 20%);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .tickets article:nth-child(4){
  background:color-mix(in srgb,var(--accent-4) 80%,#000 20%);
}

/* Dark theme borders, secondary text and technical captions. */
body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) :is(.cover-meta,.theme-switcher,footer){
  border-color:rgba(255,255,255,.16);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) :is(.cover-meta,.cover-kicker,.cover-lead,.cover-note,.cover-coordinate,.cover-photo figcaption span,.section__number,.kicker,footer){
  color:color-mix(in srgb,var(--ink) 74%,transparent);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .cover-stage{
  background:color-mix(in srgb,var(--surface) 86%,var(--paper));
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .cover-photo figcaption{
  color:var(--ink);
}

/* Touch ergonomics and resilient wrapping. */
.cover-button,
.rsvp button,
.text-link,
.theme-dot{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}

.cover-button,
.rsvp button{
  min-height:56px;
}

.cover-copy h1,
.section h2,
.tickets b,
.place__ticket h2{
  overflow-wrap:anywhere;
}

/* Tablet and small laptop */
@media(max-width:1100px){
  :root{--page:min(100% - 28px,920px)}

  .hero-cover{
    width:var(--page) !important;
  }

  .cover-stage{
    min-height:clamp(580px,78vw,700px);
  }

  .cover-copy{
    padding:58px clamp(26px,6vw,64px) 72px;
  }

  .story,
  .place,
  .dress,
  .rsvp{
    gap:28px;
  }

  .tickets{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .tickets article{
    min-height:230px;
  }
}

/* Phones and narrow tablets */
@media(max-width:640px){
  :root{--page:calc(100% - 20px)}

  body{
    min-width:320px;
  }

  .theme-switcher{
    width:100%;
    min-height:62px;
    padding:0 10px;
    gap:10px;
    scroll-padding-inline:10px;
  }

  .theme-switcher__buttons{
    flex:0 0 auto;
    gap:6px;
  }

  .theme-dot{
    width:34px;
    height:34px;
    flex:0 0 34px;
  }

  .theme-switcher__name{
    position:sticky;
    right:0;
    padding:8px 8px 8px 14px;
    background:linear-gradient(90deg,transparent,var(--paper) 24%);
    font-size:10px;
  }

  .ticker__track{
    padding:10px 0;
    font-size:9px;
  }

  .hero-cover{
    width:var(--page) !important;
    min-height:0 !important;
    grid-template-rows:46px auto auto !important;
  }

  .cover-meta{
    min-height:46px;
    padding-inline:10px;
    gap:10px;
    letter-spacing:.11em;
  }

  .cover-stage{
    min-height:clamp(430px,132vw,540px);
    padding:20px 10px 24px;
  }

  .cover-stage::before{
    inset:10px;
  }

  .cover-stage::after{
    background-size:30px 30px;
  }

  .cover-photo{
    width:min(70%,340px);
    height:clamp(360px,108vw,455px);
    margin-left:18%;
    grid-template-rows:minmax(0,1fr) 58px;
  }

  .cover-photo figcaption{
    padding-top:10px;
    min-height:58px;
  }

  .cover-photo figcaption b{
    font-size:9px;
  }

  .cover-photo figcaption span{
    font-size:7px;
  }

  .crop{
    width:20px;
    height:20px;
  }

  .crop::before{width:20px}
  .crop::after{height:20px}

  .cover-coordinate--top{
    right:16px;
    top:18px;
  }

  .cover-coordinate--side{
    left:12px;
    bottom:60px;
  }

  .cover-index{
    right:14px;
    bottom:16px;
    font-size:36px;
  }

  .cover-copy{
    padding:38px 16px 50px;
  }

  .cover-name-wrap{
    min-height:clamp(210px,64vw,255px) !important;
  }

  .cover-copy h1{
    font-size:clamp(62px,21vw,96px);
    line-height:.82;
  }

  .cover-age-visible{
    left:0 !important;
    top:88px !important;
    gap:5px !important;
  }

  .cover-age-visible span{
    font-size:clamp(126px,42vw,180px) !important;
  }

  .cover-lead{
    max-width:34rem;
    margin-top:16px !important;
    font-size:15px;
    line-height:1.62;
  }

  .cover-actions{
    width:100%;
    margin-top:26px;
    gap:16px;
  }

  .cover-button{
    width:100%;
    min-width:0;
  }

  .cover-note{
    padding-left:2px;
  }

  .section{
    padding:68px 0;
  }

  .section__number{
    top:20px;
    font-size:9px;
  }

  .section h2{
    font-size:clamp(42px,14vw,64px);
    line-height:.98;
  }

  .story,
  .place,
  .dress,
  .rsvp{
    grid-template-columns:minmax(0,1fr);
    gap:20px;
  }

  .postcard{
    padding:34px 22px;
    min-height:340px;
  }

  .postcard p,
  .dress>div>p:last-child{
    font-size:15px;
    line-height:1.7;
  }

  .story__photo,
  .story__photo img{
    min-height:clamp(280px,85vw,390px);
  }

  .section__head{
    gap:10px;
  }

  .tickets{
    grid-template-columns:minmax(0,1fr);
    gap:10px;
    margin-top:30px;
  }

  .tickets article{
    min-height:180px;
    padding:22px;
  }

  .tickets b{
    font-size:28px;
  }

  .place__ticket{
    min-height:330px;
    padding:32px 22px;
  }

  .place__ticket h2{
    font-size:clamp(46px,15vw,68px);
  }

  .place__map{
    min-height:300px;
  }

  .pin{
    width:60px;
    height:60px;
  }

  .swatches{
    gap:4px;
    overflow:hidden;
  }

  .swatches span{
    min-height:150px;
  }

  .swatches span:nth-child(odd){
    transform:translateY(6px);
  }

  .rsvp{
    width:100%;
    padding:46px 20px 28px;
  }

  .rsvp form{
    gap:18px;
  }

  .rsvp input,
  .rsvp select,
  .rsvp textarea{
    min-height:48px;
    font-size:16px; /* prevents iOS zoom */
  }

  .rsvp textarea{
    min-height:110px;
    resize:vertical;
  }

  footer{
    padding:26px 0 max(26px,env(safe-area-inset-bottom));
    flex-direction:column;
    gap:10px;
    line-height:1.5;
  }
}

/* Compact phones */
@media(max-width:420px){
  :root{--page:calc(100% - 14px)}

  .theme-switcher{
    padding-inline:7px;
  }

  .theme-dot{
    width:32px;
    height:32px;
    flex-basis:32px;
  }

  .theme-switcher__name{
    max-width:118px;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  .cover-meta{
    font-size:6.5px;
  }

  .cover-stage{
    min-height:430px;
  }

  .cover-photo{
    width:72%;
    height:365px;
    margin-left:16%;
  }

  .cover-copy{
    padding-inline:13px;
  }

  .cover-kicker{
    font-size:9px;
    letter-spacing:.13em;
  }

  .cover-copy h1{
    font-size:clamp(58px,20.5vw,82px);
  }

  .cover-name-wrap{
    min-height:205px !important;
  }

  .cover-age-visible{
    top:84px !important;
  }

  .cover-age-visible span{
    font-size:clamp(116px,41vw,160px) !important;
  }

  .section{
    padding:60px 0;
  }

  .postcard,
  .place__ticket{
    padding-inline:19px;
  }

  .swatches i{
    left:7px;
    bottom:8px;
  }
}

/* Very narrow devices */
@media(max-width:360px){
  .cover-meta span:first-child{
    max-width:150px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  .cover-photo{
    width:74%;
    height:338px;
    margin-left:14%;
  }

  .cover-coordinate--side{
    display:none;
  }

  .cover-copy h1{
    font-size:58px;
  }

  .cover-age-visible span{
    font-size:116px !important;
  }

  .section h2{
    font-size:42px;
  }

  .rsvp{
    padding-inline:16px;
  }
}

/* Landscape phones: avoid a giant first screen. */
@media(max-height:520px) and (orientation:landscape) and (max-width:950px){
  .hero-cover{
    grid-template-columns:.9fr 1.1fr !important;
    grid-template-rows:42px minmax(430px,1fr) !important;
  }

  .cover-meta{
    grid-column:1/-1;
    min-height:42px;
  }

  .cover-stage{
    grid-column:2;
    grid-row:2;
    min-height:430px;
  }

  .cover-copy{
    grid-column:1;
    grid-row:2;
    padding:34px 24px;
  }

  .cover-name-wrap{
    min-height:190px !important;
  }

  .cover-copy h1{
    font-size:clamp(58px,10vw,90px);
  }

  .cover-age-visible{
    top:82px !important;
  }

  .cover-age-visible span{
    font-size:clamp(110px,18vw,160px) !important;
  }

  .cover-lead{
    font-size:14px;
    margin-top:8px !important;
  }

  .cover-actions{
    margin-top:16px;
  }

  .cover-note{
    display:none;
  }

  .cover-photo{
    height:340px;
  }
}

/* =========================================================
   TRUE DARK SURFACES FIX
   In dark palettes --ink is a light text color, so it must not
   be reused as a section background.
========================================================= */
body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) :is(.postcard,.place__ticket,.rsvp){
  background:var(--surface-soft) !important;
  color:var(--ink) !important;
  border:1px solid var(--line);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) :is(
  .postcard h2,
  .place__ticket h2,
  .place__ticket p,
  .place__ticket .text-link,
  .rsvp h2,
  .rsvp form,
  .rsvp input,
  .rsvp select,
  .rsvp textarea
){
  color:var(--ink) !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) :is(
  .postcard>span,
  .postcard p,
  .place__ticket>span,
  .place__ticket small,
  .rsvp .kicker,
  .rsvp__note>p:last-child,
  .rsvp label span
){
  color:var(--muted) !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .rsvp :is(input,select,textarea){
  border-bottom-color:var(--input-line) !important;
  caret-color:var(--accent);
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .rsvp :is(input,textarea)::placeholder{
  color:color-mix(in srgb,var(--muted) 72%,transparent) !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .rsvp button{
  background:var(--accent) !important;
  color:var(--button-text) !important;
}

body:is(
  [data-theme="espresso"],
  [data-theme="graphite"],
  [data-theme="burgundy"],
  [data-theme="forest"],
  [data-theme="plum"],
  [data-theme="navy"],
  [data-theme="charcoal"]
) .place__map{
  border:1px solid var(--line);
}

@media (max-width:640px){
  body:is(
    [data-theme="espresso"],
    [data-theme="graphite"],
    [data-theme="burgundy"],
    [data-theme="forest"],
    [data-theme="plum"],
    [data-theme="navy"],
    [data-theme="charcoal"]
  ) :is(.postcard,.place__ticket,.rsvp){
    border-left:0;
    border-right:0;
  }
}

/* =========================================================
   ADAPTIVE HERO NAME · FINAL
   Keeps short and long names on one clean line without
   overflowing the copy column. JS sets --hero-name-size.
========================================================= */
.cover-name-wrap h1{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  white-space:nowrap !important;
  overflow:visible !important;
  overflow-wrap:normal !important;
  word-break:normal !important;
  text-wrap:nowrap !important;
  font-size:var(--hero-name-size,clamp(92px,10.5vw,170px)) !important;
  line-height:.78 !important;
  letter-spacing:-.085em !important;
  transform-origin:left center;
}

/* Give the fitter the real usable width, not the age artwork. */
.cover-name-wrap{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
}

@media(max-width:1100px){
  .cover-name-wrap h1{
    font-size:var(--hero-name-size,clamp(76px,13vw,130px)) !important;
  }
}

@media(max-width:640px){
  .cover-name-wrap h1{
    font-size:var(--hero-name-size,clamp(58px,21vw,110px)) !important;
    letter-spacing:-.075em !important;
  }
}

@media(max-width:420px){
  .cover-name-wrap h1{
    font-size:var(--hero-name-size,clamp(48px,20vw,82px)) !important;
    letter-spacing:-.065em !important;
  }
}

@media(max-width:360px){
  .cover-name-wrap h1{
    font-size:var(--hero-name-size,58px) !important;
  }
}


/* Production integration */
body.ivi-production-template .theme-switcher{display:none!important}
body.ivi-production-template .ticker{margin-top:0}
.ivi-empty{padding:24px;border:1px dashed var(--line);color:var(--muted);font:600 13px Manrope,sans-serif}
.cover-photo--empty{display:grid;place-items:center;min-height:540px;background:var(--surface-soft);color:var(--muted);text-align:center;padding:30px}
.story__photo--empty{min-height:360px;display:grid;place-items:center;background:var(--surface-soft)}
.place__ticket .text-link[aria-disabled="true"]{opacity:.45;pointer-events:none}
.rsvp .birthday-rsvp,.rsvp .rsvp-card,.rsvp .rsvp-form{width:100%;max-width:none;background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}
.rsvp input,.rsvp select,.rsvp textarea{font:inherit}
@media(max-width:640px){.cover-photo--empty{min-height:390px}.story__photo--empty{min-height:240px}}


/* Production blocks: gallery, gifts, music */
.gallery{background:var(--paper2);color:var(--ink);display:block;padding:clamp(72px,8vw,140px) clamp(22px,5vw,88px)}
.gallery .section__head{max-width:760px;margin-bottom:clamp(30px,5vw,70px)}
.gallery .section__head>p:last-child{max-width:660px;color:var(--muted);font-size:clamp(15px,1.25vw,19px);line-height:1.7}
.gallery__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(8px,1.2vw,18px)}
.gallery__item{grid-column:span 4;margin:0;min-height:280px;overflow:hidden;background:var(--surface-soft)}
.gallery__item:nth-child(5n+1),.gallery__item:nth-child(5n+4){grid-column:span 7}
.gallery__item:nth-child(5n+2),.gallery__item:nth-child(5n+5){grid-column:span 5}
.gallery__item img{width:100%;height:100%;min-height:inherit;display:block;object-fit:cover;transition:transform .7s ease}
.gallery__item:hover img{transform:scale(1.025)}
.gallery__empty{min-height:220px;display:grid;place-items:center;border:1px solid var(--line);color:var(--muted)}
.gifts{background:var(--paper);color:var(--ink);display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.55fr);gap:clamp(30px,7vw,120px);align-items:center;padding:clamp(72px,9vw,150px) clamp(22px,7vw,120px)}
.gifts__card{max-width:780px}
.gifts__card h2{font-family:Syne,sans-serif;font-size:clamp(46px,7vw,112px);line-height:.9;letter-spacing:-.065em;margin:14px 0 24px}
.gifts__card h3{font:600 clamp(18px,2vw,30px)/1.2 Manrope,sans-serif;margin:0 0 20px;color:var(--accent)}
.gifts__card>p:last-child{max-width:680px;color:var(--muted);font-size:clamp(15px,1.2vw,19px);line-height:1.75}
.gifts__mark{justify-self:end;border:1px solid var(--line);width:min(28vw,330px);aspect-ratio:1;display:grid;place-items:center;text-align:center;font:800 clamp(34px,5vw,74px)/.85 Syne,sans-serif;letter-spacing:-.06em;color:var(--accent);transform:rotate(4deg)}
.tp-music{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:80;display:flex;align-items:center;gap:10px;min-height:48px;padding:9px 15px 9px 9px;border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:0 12px 40px rgba(0,0,0,.18);cursor:pointer}
.tp-music span{width:30px;height:30px;display:grid;place-items:center;background:var(--accent);color:var(--button-text);font-size:12px}
.tp-music b{font:700 11px/1 Manrope,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.tp-music.is-playing span{animation:tpPulse 1.2s ease-in-out infinite}
@keyframes tpPulse{50%{transform:scale(.86)}}
@media(max-width:760px){.gallery{padding-left:16px;padding-right:16px}.gallery__grid{grid-template-columns:1fr 1fr}.gallery__item,.gallery__item:nth-child(n){grid-column:auto;min-height:210px}.gallery__item:nth-child(3n+1){grid-column:1/-1;min-height:300px}.gifts{grid-template-columns:1fr;padding-left:20px;padding-right:20px}.gifts__mark{justify-self:start;width:min(62vw,260px)}.tp-music b{display:none}.tp-music{padding:8px}}
@media(max-width:420px){.gallery__grid{grid-template-columns:1fr}.gallery__item,.gallery__item:nth-child(n){grid-column:1;min-height:280px}.gifts__card h2{font-size:clamp(44px,17vw,72px)}}

/* Production fixes: text-only details and single-column RSVP */
.story.story--text-only{
  display:block;
}
.story--text-only .postcard{
  width:min(100%, 1040px);
  margin-inline:auto;
}
.postcard__lead{
  margin:26px 0 0;
  max-width:760px;
  color:var(--ink) !important;
  font-size:clamp(20px,2.2vw,32px);
  line-height:1.35 !important;
  font-weight:650;
}
.postcard__text{
  margin:24px 0 0;
  max-width:820px;
  white-space:pre-line;
}
.rsvp.rsvp--single{
  display:block;
}
.rsvp--single .rsvp__content{
  width:min(100%, 980px);
  margin-inline:auto;
}
.rsvp--single .rsvp__head{
  margin:0 0 42px;
  text-align:left;
}
.rsvp--single .rsvp__head h2{
  max-width:820px;
  margin:10px 0 0;
}
.rsvp--single .rsvp__head>p:last-child{
  max-width:760px;
  margin:18px 0 0;
  color:var(--muted);
  font-size:clamp(16px,1.5vw,20px);
  line-height:1.6;
}
.rsvp--single .rsvp__form-wrap{
  width:100%;
}
.rsvp--single .rsvp__form-wrap :is(.rsvpTitle,.iviRsvpTitle,.rsvpHint,.iviRsvpHint,.rose-line-svg){
  display:none !important;
}
.rsvp--single .rsvp__form-wrap :is(.rsvp,.iviRsvp,.rsvpBox,.rsvpForm){
  width:100%;
  max-width:none;
  margin:0 !important;
}
@media(max-width:640px){
  .story--text-only .postcard{padding:30px 22px}
  .postcard__lead{font-size:20px}
  .rsvp--single .rsvp__head{margin-bottom:28px}
  .rsvp--single .rsvp__head h2{font-size:clamp(42px,15vw,68px)}
}

/* Final production polish: location photo, editorial gallery, gifts and RSVP */
.place__photo{margin:0;min-height:430px;overflow:hidden;border:1px solid var(--line);background:var(--surface-soft)}
.place__photo img{width:100%;height:100%;min-height:430px;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1),filter .4s ease}
.place__photo:hover img{transform:scale(1.025)}
.place.place--no-photo{grid-template-columns:1fr}
.place.place--no-photo .place__ticket{min-height:430px;width:min(100%,900px)}

.gallery{overflow:hidden}
.gallery__head{display:grid;grid-template-columns:minmax(130px,.32fr) minmax(0,1fr);column-gap:clamp(24px,6vw,100px);align-items:start;margin-bottom:clamp(38px,6vw,86px)}
.gallery__head .kicker{margin-top:10px}
.gallery__head h2{max-width:900px;font-family:Syne,sans-serif;font-size:clamp(58px,8vw,126px);line-height:.83;letter-spacing:-.07em}
.gallery__head>p:last-child{grid-column:1;max-width:260px;color:var(--muted);font-size:clamp(15px,1.2vw,18px);line-height:1.65;margin-top:36px}
.gallery__grid{grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:dense;gap:clamp(10px,1.35vw,22px)}
.gallery__item{position:relative;display:block;grid-column:span 4;min-height:360px;aspect-ratio:auto;text-decoration:none;border:1px solid var(--line);background:var(--surface-soft);overflow:hidden}
.gallery__item--1,.gallery__item--6{grid-column:span 7;min-height:660px}
.gallery__item--2,.gallery__item--5{grid-column:span 5;min-height:660px}
.gallery__item--3,.gallery__item--4{grid-column:span 6;min-height:430px}
.gallery__item img{width:100%;height:100%;min-height:inherit;object-fit:cover;transition:transform .85s cubic-bezier(.2,.7,.2,1),filter .35s ease}
.gallery__item::after{content:"";position:absolute;inset:auto 0 0;height:34%;background:linear-gradient(transparent,rgba(0,0,0,.42));opacity:.65;transition:opacity .3s ease}
.gallery__item>span{position:absolute;left:18px;bottom:15px;z-index:2;color:#fff;font:700 10px Manrope,sans-serif;letter-spacing:.18em}
.gallery__item:hover img{transform:scale(1.035)}
.gallery__item:hover::after{opacity:1}

.gifts{display:block}
.gifts__card{max-width:980px}
.gifts__card>p:last-child{max-width:850px}

.rsvp.rsvp--single{padding:clamp(62px,8vw,120px) clamp(16px,5vw,72px)}
.rsvp--single .rsvp__content{width:min(100%,1040px)}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{width:100%;max-width:none;padding:clamp(22px,4vw,44px);border-radius:24px;background:color-mix(in srgb,var(--surface) 92%,transparent);border-color:var(--line);box-shadow:0 28px 80px rgba(0,0,0,.2)}
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm{gap:26px}
.rsvp--single .rsvp__form-wrap .rsvpSection .field,
.rsvp--single .rsvp__form-wrap .rsvpSection .chip,
.rsvp--single .rsvp__form-wrap .rsvpSection .consent{background:color-mix(in srgb,var(--paper2) 88%,transparent);border-color:var(--input-line);color:var(--ink)}
.rsvp--single .rsvp__form-wrap .rsvpSection .field:focus{background:var(--paper2);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}
.rsvp--single .rsvp__form-wrap .rsvpSection .field::placeholder{color:var(--muted);opacity:.75}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip{position:relative;box-shadow:none;transform:none}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip:hover{border-color:var(--accent);transform:translateY(-1px)}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip[data-active="true"],
.rsvp--single .rsvp__form-wrap .rsvpSection .chip.is-active,
.rsvp--single .rsvp__form-wrap .rsvpSection .chip.active{background:var(--accent)!important;border-color:var(--accent)!important;color:var(--button-text)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent),0 12px 28px color-mix(in srgb,var(--accent) 20%,transparent)!important;font-weight:700}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip[data-active="true"]::after{content:"✓";margin-left:10px;font-weight:900}
.rsvp--single .rsvp__form-wrap .rsvpSection .btn.btn-full,
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm button[type="submit"]{background:var(--accent);color:var(--button-text);border-radius:4px;min-height:62px;box-shadow:none;text-transform:uppercase;letter-spacing:.06em}
.rsvp--single .rsvp__form-wrap .rsvpSection .btn.btn-full:hover,
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm button[type="submit"]:hover{transform:translateY(-2px);filter:brightness(1.04);box-shadow:0 14px 34px color-mix(in srgb,var(--accent) 24%,transparent)}
.rsvp--single .rsvp__form-wrap .rsvpSection .btn.btn-full:active,
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm button[type="submit"]:active{transform:translateY(1px) scale(.995);filter:brightness(.92)}
.rsvp--single .rsvp__form-wrap .rsvpSection .consent input{accent-color:var(--accent)}
.rsvp--single .rsvp__form-wrap .rsvpSection .label{color:var(--ink)}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpTotal{border-color:var(--line);color:var(--ink)}

@media(max-width:960px){
  .place__photo,.place__photo img{min-height:520px}
  .gallery__head{grid-template-columns:1fr}
  .gallery__head>p:last-child{grid-column:1;max-width:620px;margin-top:20px}
  .gallery__item--1,.gallery__item--2,.gallery__item--5,.gallery__item--6{min-height:500px}
}
@media(max-width:700px){
  .place__photo,.place__photo img{min-height:390px}
  .gallery{padding-inline:12px}
  .gallery__head h2{font-size:clamp(50px,17vw,82px)}
  .gallery__grid{grid-template-columns:1fr 1fr;gap:10px}
  .gallery__item,.gallery__item:nth-child(n){grid-column:auto;min-height:250px}
  .gallery__item:nth-child(3n+1){grid-column:1/-1;min-height:390px}
  .rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{padding:20px 14px;border-radius:18px}
}
@media(max-width:430px){
  .gallery__grid{grid-template-columns:1fr}
  .gallery__item,.gallery__item:nth-child(n){grid-column:1;min-height:360px}
  .rsvp.rsvp--single{padding-inline:10px}
  .rsvp--single .rsvp__head{padding-inline:8px}
  .rsvp--single .rsvp__form-wrap .rsvpSection .chip{min-height:54px}
}

/* 2026-06-28: compact gallery, Studio text coverage and RSVP layout repair */
.dress__subtitle{margin:16px 0 10px;color:var(--ink)!important;font-size:clamp(18px,2vw,28px);font-weight:700;line-height:1.35}
.dress__text{margin:0;max-width:620px;color:var(--muted);font-size:clamp(15px,1.2vw,19px);line-height:1.75}

.gallery__head{margin-bottom:clamp(28px,4vw,54px)}
.gallery__head h2{font-size:clamp(48px,6.5vw,96px);line-height:.88}
.gallery__grid{gap:clamp(8px,1vw,14px);max-width:1180px;margin-inline:auto}
.gallery__item,
.gallery__item:nth-child(n){min-height:0!important;aspect-ratio:4/5}
.gallery__item--1,.gallery__item--6{grid-column:span 5;aspect-ratio:4/5}
.gallery__item--2,.gallery__item--5{grid-column:span 4;aspect-ratio:4/5}
.gallery__item--3,.gallery__item--4{grid-column:span 3;aspect-ratio:4/5}
.gallery__item img{min-height:0;height:100%;object-fit:cover}

.rsvp.rsvp--single{display:block!important;padding:clamp(56px,7vw,94px) clamp(14px,4vw,48px)!important}
.rsvp--single .rsvp__content{width:min(100%,920px)!important;margin-inline:auto}
.rsvp--single .rsvp__head{max-width:760px;margin:0 0 30px}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpGrid{display:block!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{width:100%!important;max-width:920px!important;margin:0 auto!important;padding:30px!important;border-radius:22px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm{display:grid!important;grid-template-columns:1fr!important;gap:20px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm>*{grid-column:1!important;min-width:0}
.rsvp--single .rsvp__form-wrap .rsvpSection .row2{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .formRow{gap:9px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpAttendanceFields{gap:20px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .field{min-height:48px!important;padding:11px 14px!important;border-radius:12px!important;font-size:15px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection textarea.field{min-height:96px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .chips{gap:10px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip{flex:1 1 150px!important;min-height:46px!important;padding:10px 16px!important;border-radius:999px!important;font-size:14px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .label{font-size:14px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpTotal{min-height:34px!important;font-size:13px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .consent{display:grid!important;grid-template-columns:22px minmax(0,1fr)!important;align-items:start!important;gap:12px!important;min-height:0!important;padding:14px 16px!important;border-radius:14px!important;font-size:13px!important;line-height:1.5!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .consent input{width:20px!important;height:20px!important;min-height:20px!important;margin:1px 0 0!important;padding:0!important;border-radius:4px!important;background:#fff!important;appearance:auto!important;-webkit-appearance:checkbox!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .consent>span{display:block!important;color:var(--ink)!important;font-size:13px!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .consent small{font-size:11px!important;line-height:1.45!important}
.rsvp--single .rsvp__form-wrap .rsvpSection .btn.btn-full,
.rsvp--single .rsvp__form-wrap .rsvpSection #rsvpForm button[type="submit"]{min-height:54px!important;margin-top:0!important;font-size:15px!important;border-radius:12px!important}

@media(max-width:900px){
  .gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gallery__item,.gallery__item:nth-child(n){grid-column:auto!important;aspect-ratio:4/5!important}
  .gallery__item:nth-child(3n+1){grid-column:1/-1!important;aspect-ratio:16/10!important}
}
@media(max-width:700px){
  .rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{padding:20px 14px!important}
  .rsvp--single .rsvp__form-wrap .rsvpSection .row2{grid-template-columns:1fr!important}
  .rsvp--single .rsvp__form-wrap .rsvpSection .chips{display:grid!important;grid-template-columns:1fr!important}
  .rsvp--single .rsvp__form-wrap .rsvpSection .chip{width:100%!important;min-height:48px!important}
}
@media(max-width:430px){
  .gallery__grid{grid-template-columns:1fr}
  .gallery__item,.gallery__item:nth-child(n){grid-column:1!important;aspect-ratio:4/5!important}
  .gallery__item:nth-child(3n+1){aspect-ratio:4/5!important}
  .gallery__head h2{font-size:clamp(44px,15vw,68px)}
  .rsvp--single .rsvp__form-wrap .rsvpSection .consent{padding:13px!important}
}


/* Gallery heading: only Studio title and description, without static numbering/kicker. */
.gallery__head.gallery__head--studio{grid-template-columns:minmax(0,1fr);}
.gallery__head.gallery__head--studio h2{grid-column:1;max-width:100%;}
.gallery__head.gallery__head--studio>p:last-child{grid-column:1;max-width:680px;margin-top:24px;}

/* 2026-06-28: align Gallery typography with Dress code */
.gallery.section{
  width:var(--page);
  margin-inline:auto;
  padding:96px 0;
  background:transparent;
  box-sizing:border-box;
}

.gallery__head.gallery__head--studio{
  display:block;
  width:min(100%,620px);
  max-width:620px;
  margin:0 0 clamp(34px,5vw,64px);
}

.gallery__head.gallery__head--studio h2{
  width:100%;
  max-width:none;
  margin:0;
  font-family:Syne,sans-serif;
  font-size:clamp(52px,7vw,94px);
  font-weight:600;
  line-height:.96;
  letter-spacing:-.045em;
  overflow-wrap:anywhere;
}

.gallery__head.gallery__head--studio > p:last-child{
  width:100%;
  max-width:560px;
  margin:20px 0 0;
  color:var(--muted);
  font-size:clamp(15px,1.2vw,19px);
  line-height:1.75;
}

@media(max-width:960px){
  .gallery.section{padding:78px 0}
  .gallery__head.gallery__head--studio{width:100%;max-width:620px}
}

@media(max-width:640px){
  .gallery.section{padding:68px 0}
  .gallery__head.gallery__head--studio{margin-bottom:32px}
  .gallery__head.gallery__head--studio h2{
    font-size:clamp(42px,14vw,64px);
    line-height:.98;
  }
  .gallery__head.gallery__head--studio > p:last-child{
    margin-top:16px;
    font-size:15px;
    line-height:1.7;
  }
}

/* Program heading: after removing the static left label, use the full row. */
.program .section__head{
  display:block;
  width:100%;
  max-width:none;
}

.program .section__head h2{
  width:100%;
  max-width:none;
  white-space:nowrap;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}

@media(max-width:700px){
  .program .section__head h2{
    white-space:normal;
    text-wrap:balance;
    overflow-wrap:normal;
    word-break:normal;
  }
}


/* =========================================================
   FINAL THEME CONTRAST: RSVP + DRESS CODE
   Theme switching must never make controls or text disappear.
========================================================= */
.dress,
.dress h2,
.dress .kicker,
.dress__subtitle,
.dress__text{
  color:var(--ink) !important;
}
.dress .kicker,
.dress__subtitle,
.dress__text{
  color:var(--muted) !important;
  opacity:1 !important;
}
.dress h2{
  opacity:1 !important;
}

/* The shared RSVP block has its own glass styles. Normalize them to the
   current template palette instead of mixing white text with pale fields. */
.rsvp .rsvpSection{
  color:var(--ink) !important;
}
.rsvp .rsvpSection .rsvpFormCard{
  background:var(--surface) !important;
  border-color:var(--line) !important;
  color:var(--ink) !important;
  box-shadow:0 24px 70px color-mix(in srgb,var(--ink) 10%,transparent) !important;
}
.rsvp .rsvpSection :is(.label,.rsvpTotal,.consent,.statusBoxText,.previewLockText){
  color:var(--ink) !important;
}
.rsvp .rsvpSection :is(.field,textarea.field,select.field){
  background:var(--surface-soft) !important;
  border-color:var(--input-line) !important;
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
  opacity:1 !important;
}
.rsvp .rsvpSection :is(.field,textarea.field)::placeholder{
  color:color-mix(in srgb,var(--ink) 52%,transparent) !important;
  -webkit-text-fill-color:color-mix(in srgb,var(--ink) 52%,transparent) !important;
  opacity:1 !important;
}
.rsvp .rsvpSection .chip{
  background:var(--surface-soft) !important;
  border-color:var(--input-line) !important;
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
  opacity:1 !important;
}
.rsvp .rsvpSection .chip:hover{
  border-color:var(--accent) !important;
  background:color-mix(in srgb,var(--surface-soft) 82%,var(--accent) 18%) !important;
}
.rsvp .rsvpSection .chip[data-active="true"],
.rsvp .rsvpSection .chip.is-active,
.rsvp .rsvpSection .chip.active{
  background:var(--accent) !important;
  border-color:var(--accent) !important;
  color:var(--button-text) !important;
  -webkit-text-fill-color:var(--button-text) !important;
  box-shadow:0 10px 24px color-mix(in srgb,var(--accent) 28%,transparent) !important;
}
.rsvp .rsvpSection .consent{
  background:var(--surface-soft) !important;
  border-color:var(--input-line) !important;
  color:var(--ink) !important;
}
.rsvp .rsvpSection .consent span,
.rsvp .rsvpSection .consent small,
.rsvp .rsvpSection .consent a{
  color:var(--ink) !important;
  opacity:1 !important;
}
.rsvp .rsvpSection .btn.btn-full,
.rsvp .rsvpSection #rsvpForm button[type="submit"]{
  background:var(--accent) !important;
  color:var(--button-text) !important;
  -webkit-text-fill-color:var(--button-text) !important;
}
.rsvp .rsvpSection input[type="checkbox"]{
  accent-color:var(--accent) !important;
}

html[data-dark="1"] .rsvp .rsvpSection .rsvpFormCard{
  background:var(--surface) !important;
}
html[data-dark="1"] .rsvp .rsvpSection :is(.field,textarea.field,select.field,.chip,.consent){
  background:var(--surface-soft) !important;
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
}
html[data-dark="1"] .rsvp .rsvpSection .chip[data-active="true"],
html[data-dark="1"] .rsvp .rsvpSection .chip.is-active,
html[data-dark="1"] .rsvp .rsvpSection .chip.active{
  background:var(--accent) !important;
  color:var(--button-text) !important;
  -webkit-text-fill-color:var(--button-text) !important;
}

/* =========================================================
   FINAL THEME CONTRAST GUARANTEE
   Every text surface uses its own palette foreground.
   Works for all current and future light/dark presets.
========================================================= */
.postcard,
.place__ticket,
.rsvp.rsvp--single,
.gallery,
.gifts{
  color:var(--ink) !important;
}

.postcard,
.place__ticket{
  background:var(--surface-soft) !important;
  border-color:var(--line) !important;
}

.postcard :is(h2,h3,.postcard__lead,.postcard__text),
.place__ticket :is(h2,h3,p,.text-link),
.rsvp--single .rsvp__head :is(h2,h3),
.gallery__head :is(h2,h3),
.gifts__card :is(h2,h3){
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
}

.postcard :is(>span,p),
.place__ticket :is(>span,small),
.rsvp--single .rsvp__head :is(.kicker,>p:last-child),
.gallery__head>p,
.gifts__card :is(.kicker,p){
  color:var(--muted) !important;
  -webkit-text-fill-color:var(--muted) !important;
  opacity:1 !important;
}

/* RSVP outer section and the shared production form must share one palette. */
.rsvp.rsvp--single{
  background:var(--surface-soft) !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection,
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{
  color:var(--ink) !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection .rsvpFormCard{
  background:var(--surface) !important;
  border-color:var(--line) !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection :is(.label,.rsvpTotal,.consent,.consent span,.consent small,.consent a){
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
  opacity:1 !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection :is(.field,textarea.field,select.field,.chip,.consent){
  background:var(--paper2) !important;
  border-color:var(--input-line) !important;
  color:var(--ink) !important;
  -webkit-text-fill-color:var(--ink) !important;
  opacity:1 !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection :is(.field,textarea.field)::placeholder{
  color:var(--muted) !important;
  -webkit-text-fill-color:var(--muted) !important;
  opacity:.82 !important;
}
.rsvp--single .rsvp__form-wrap .rsvpSection .chip[data-active="true"],
.rsvp--single .rsvp__form-wrap .rsvpSection .chip.is-active,
.rsvp--single .rsvp__form-wrap .rsvpSection .chip.active,
.rsvp--single .rsvp__form-wrap .rsvpSection :is(.btn.btn-full,#rsvpForm button[type="submit"]){
  background:var(--accent) !important;
  border-color:var(--accent) !important;
  color:var(--button-text) !important;
  -webkit-text-fill-color:var(--button-text) !important;
}

/* New photo-inspired dark palettes were added after the old theme lists. */
body:is([data-theme="lagoon"],[data-theme="scarlet-sunset"],[data-theme="amber-tide"]){
  color-scheme:dark;
}
body:is([data-theme="lagoon"],[data-theme="scarlet-sunset"],[data-theme="amber-tide"]) :is(.cover-meta,.cover-kicker,.cover-lead,.cover-coordinate,.section__number,.kicker,footer){
  color:var(--muted) !important;
}
body:is([data-theme="lagoon"],[data-theme="scarlet-sunset"],[data-theme="amber-tide"]) select option{
  background:var(--surface) !important;
  color:var(--ink) !important;
}
