/* =====================================================================
   THE GRACE VENUE — Design System
   Type:    Instrument Serif (display) · Jost (text & UI)
   Palette: Ivory · Wine · Champagne Gold · Warm Ink
   ===================================================================== */

@font-face{font-family:"Instrument Serif";src:url("../fonts/instrument-serif-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url("../fonts/instrument-serif-latin-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Jost";src:url("../fonts/jost-latin-wght-normal.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

:root{
  --ivory:#F5EFE6;
  --paper:#FBF7F1;
  --sand:#E9DFD1;
  --ink:#1F1613;
  --ink-soft:#4B3E38;
  --muted:#85766C;
  --wine:#6B1626;
  --wine-mid:#4A0F1B;
  --wine-deep:#2A0910;
  --rose:#C24A52;
  --gold:#B8925A;
  --gold-light:#DDC59B;
  --line:rgba(31,22,19,.14);
  --line-light:rgba(245,239,230,.16);

  --serif:"Instrument Serif","Times New Roman",Georgia,serif;
  --sans:"Jost",system-ui,-apple-system,"Segoe UI",sans-serif;

  --ease:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.76,0,.24,1);
  --gutter:clamp(1.1rem,4vw,3.5rem);
  --max:1440px;
  --radius:18px;
  --nav-h:104px;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{
  font-family:var(--sans);font-weight:400;font-size:1.0625rem;line-height:1.65;
  color:var(--ink);background:var(--ivory);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video,canvas{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
::selection{background:var(--wine);color:var(--ivory)}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:1rem;top:-4rem;z-index:1000;background:var(--wine);color:var(--ivory);padding:.7rem 1.1rem;border-radius:99px;transition:top .3s}
.skip:focus{top:1rem}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.section{position:relative;padding-block:clamp(5rem,12vw,10rem)}
.section--tight{padding-block:clamp(4rem,8vw,7rem)}
.dark{background:var(--wine-deep);color:var(--ivory)}
.wine{background:var(--wine);color:var(--ivory)}
.paper{background:var(--paper)}
.center{text-align:center}

/* ---------- Type ---------- */
.eyebrow{
  display:inline-flex;align-items:center;gap:.8rem;
  font-family:var(--sans);font-weight:500;font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;
  color:var(--wine);
}
.eyebrow::before{content:"";width:28px;height:1px;background:currentColor;opacity:.6}
.dark .eyebrow,.wine .eyebrow{color:var(--gold-light)}
.center .eyebrow::after{content:"";width:28px;height:1px;background:currentColor;opacity:.6}

.display,.title,.h3{font-family:var(--serif);font-weight:400;letter-spacing:-.015em}
.display{font-size:clamp(3.1rem,9.2vw,9.8rem);line-height:.92}
.title{font-size:clamp(2.5rem,5.6vw,5.6rem);line-height:1}
.h3{font-size:clamp(1.7rem,2.6vw,2.5rem);line-height:1.08}
.display em,.title em,.h3 em{font-style:italic;color:var(--wine)}
.dark .title em,.wine .title em,.dark .display em,.dark .h3 em,.wine .h3 em{color:var(--gold-light)}
.lead{font-size:clamp(1.1rem,1.5vw,1.3rem);line-height:1.6;color:var(--ink-soft);max-width:38ch}
.dark .lead,.wine .lead{color:rgba(245,239,230,.78)}
.muted{color:var(--muted)}
.section-head{display:grid;gap:1.4rem;margin-bottom:clamp(3rem,6vw,5rem)}
.section-head.center{justify-items:center}
.section-head.split{grid-template-columns:1.2fr .8fr;align-items:end;gap:2rem 4rem}
.section-head .lead{max-width:44ch}
@media (max-width:860px){.section-head.split{grid-template-columns:1fr}}

/* Split-text helpers */
.line-mask{overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
[data-split]{font-kerning:none}
.js [data-split]:not(.is-split){visibility:hidden}
.js [data-fade]{opacity:0}

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--wine);--fg:var(--ivory);--fill:var(--wine-deep);
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.8rem;
  padding:1.05rem 2rem;border-radius:999px;overflow:hidden;isolation:isolate;
  background:var(--bg);color:var(--fg);
  font-family:var(--sans);font-weight:500;font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;line-height:1;
  transition:color .5s var(--ease),border-color .5s var(--ease);
  white-space:nowrap;
}
.btn::before{
  content:"";position:absolute;z-index:-1;left:var(--x,50%);top:var(--y,50%);
  width:0;height:0;border-radius:50%;background:var(--fill);
  transform:translate(-50%,-50%);transition:width .6s var(--ease),height .6s var(--ease);
}
.btn:hover::before{width:260%;height:560%}
.btn .roll{display:block;overflow:hidden;height:1em;position:relative}
.btn .roll span{display:block;transition:transform .55s var(--ease)}
.btn .roll span::after{content:attr(data-text);position:absolute;left:0;top:100%}
.btn:hover .roll span{transform:translateY(-100%)}
.btn svg{width:16px;height:16px;flex:none;transition:transform .5s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn--gold{--bg:var(--gold);--fg:var(--wine-deep);--fill:var(--gold-light)}
.btn--ghost{--bg:transparent;--fg:var(--ink);--fill:var(--ink);border:1px solid var(--line)}
.btn--ghost:hover{--fg:var(--ivory);color:var(--ivory)}
.btn--ghost-light{--bg:transparent;--fg:var(--ivory);--fill:var(--ivory);border:1px solid var(--line-light)}
.btn--ghost-light:hover{color:var(--wine-deep)}
.btn--block{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}

.link{
  position:relative;display:inline-flex;align-items:center;gap:.6rem;
  font-weight:500;font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;padding-bottom:.35rem;
}
.link::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform-origin:right;transition:transform .6s var(--ease)}
.link:hover::after{transform:scaleX(0);transform-origin:right;animation:link-in .6s .25s var(--ease) forwards}
@keyframes link-in{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}
.link svg{width:14px;height:14px}

/* ---------- Preloader ---------- */
.preloader{
  position:fixed;inset:0;z-index:900;background:var(--ivory);
  display:none;place-items:center;
}
.first-visit .preloader{display:grid}
.preloader.is-hidden{display:none}
.pl-inner{position:relative;display:grid;place-items:center;width:min(240px,50vw);aspect-ratio:3/4}
.pl-arch{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pl-arch path{fill:none;stroke:var(--gold);stroke-width:1;vector-effect:non-scaling-stroke}
.pl-mark{position:relative;display:grid;justify-items:center;line-height:1}
.pl-mark .s{font-size:.66rem;letter-spacing:.5em;text-transform:uppercase;font-weight:500;color:var(--ink-soft);padding-left:.5em}
.pl-mark .g{font-family:var(--serif);font-style:italic;font-size:clamp(3.2rem,8vw,4.6rem);color:var(--wine);margin:.15em 0 .2em}
.pl-mark .mask{overflow:hidden;display:block}
.pl-mark .mask>*{display:block}
.pl-count{position:absolute;right:var(--gutter);bottom:calc(var(--gutter) - .4rem);font-family:var(--serif);font-size:clamp(4rem,12vw,9rem);line-height:.8;color:var(--wine);font-variant-numeric:tabular-nums}
.pl-foot{position:absolute;left:var(--gutter);bottom:var(--gutter);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}

/* ---------- Page transition ---------- */
.transition{position:fixed;inset:0;z-index:890;pointer-events:none}
.tr-panel{position:absolute;inset:0;transform:translateY(100%)}
.tr-gold{background:var(--gold)}
.tr-wine{background:var(--wine);display:grid;place-items:center}
.tr-word{font-family:var(--serif);font-style:italic;font-size:clamp(3rem,10vw,8rem);color:var(--gold-light);opacity:0}
.is-entering .tr-panel{transform:translateY(0)}
.is-entering .tr-word{opacity:1}

/* ---------- Cursor ---------- */
.cursor{position:fixed;left:0;top:0;z-index:950;pointer-events:none;display:none}
.has-cursor .cursor{display:block}
.has-cursor,.has-cursor a,.has-cursor button,.has-cursor label,.has-cursor select{cursor:none}
.has-cursor input,.has-cursor textarea{cursor:text}
.cursor-dot,.cursor-ring{position:fixed;left:0;top:0;border-radius:50%;will-change:transform}
.cursor-dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:var(--wine);transition:opacity .3s,background .3s}
.cursor-ring{
  width:40px;height:40px;margin:-20px 0 0 -20px;border:1px solid rgba(184,146,90,.7);
  display:grid;place-items:center;
  transition:width .45s var(--ease),height .45s var(--ease),margin .45s var(--ease),background .45s var(--ease),border-color .45s var(--ease),opacity .3s;
}
.cursor-label{font-size:.62rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ivory);opacity:0;transform:scale(.6);transition:opacity .3s,transform .45s var(--ease)}
.cursor.is-link .cursor-ring{width:64px;height:64px;margin:-32px 0 0 -32px;background:rgba(184,146,90,.14);border-color:rgba(184,146,90,.5)}
.cursor.is-link .cursor-dot{opacity:0}
.cursor.is-label .cursor-ring{width:96px;height:96px;margin:-48px 0 0 -48px;background:var(--wine);border-color:var(--wine)}
.cursor.is-label .cursor-label{opacity:1;transform:scale(1)}
.cursor.is-label .cursor-dot{opacity:0}
.cursor.is-hidden .cursor-ring,.cursor.is-hidden .cursor-dot{opacity:0}
.cursor.on-dark .cursor-dot{background:var(--gold-light)}
.cursor.is-down .cursor-ring{width:30px;height:30px;margin:-15px 0 0 -15px}

/* ---------- Scroll progress & grain ---------- */
.progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:120;background:var(--gold);transform-origin:left;transform:scaleX(0)}
.grain{position:fixed;inset:-50%;z-index:800;pointer-events:none;opacity:.05;
  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='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-4%)}60%{transform:translate(-4%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}

/* ---------- Navigation ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:110;height:var(--nav-h);
  display:flex;align-items:center;
  transition:transform .7s var(--ease),background .5s var(--ease),height .5s var(--ease),box-shadow .5s;
}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:2rem}
.nav.is-scrolled{--nav-h:70px;background:rgba(245,239,230,.82);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);box-shadow:0 1px 0 var(--line)}
.nav.is-hidden{transform:translateY(-100%)}
.logo{display:flex;align-items:baseline;gap:.45rem;line-height:1;z-index:2}
.logo .s{font-size:.6rem;font-weight:500;letter-spacing:.38em;text-transform:uppercase;color:var(--ink-soft)}
.logo .g{font-family:var(--serif);font-style:italic;font-size:1.9rem;color:var(--wine);transform:translateY(.08em)}
.nav-links{display:flex;gap:2.2rem;align-items:center}
.nav-links a{position:relative;font-size:.76rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;display:block;overflow:hidden;height:1.2em;line-height:1.2em}
.nav-links a span{display:block;transition:transform .55s var(--ease)}
.nav-links a span::after{content:attr(data-text);position:absolute;left:0;top:100%;color:var(--wine)}
.nav-links a:hover span{transform:translateY(-100%)}
.nav-links a[aria-current="page"]{color:var(--wine)}
.nav-links a[aria-current="page"]::before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--wine)}
.nav-right{display:flex;align-items:center;gap:1.2rem}
.nav-cta{padding:.9rem 1.5rem}
.menu-btn{display:none;align-items:center;gap:.8rem;font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;z-index:2;padding:.6rem 0}
.menu-btn .bars{position:relative;width:26px;height:10px}
.menu-btn .bars i{position:absolute;left:0;width:100%;height:1.5px;background:currentColor;transition:transform .6s var(--ease),top .6s var(--ease)}
.menu-btn .bars i:first-child{top:0}
.menu-btn .bars i:last-child{top:8.5px}
.menu-open .menu-btn .bars i:first-child{top:4.25px;transform:rotate(45deg)}
.menu-open .menu-btn .bars i:last-child{top:4.25px;transform:rotate(-45deg)}
.menu-open .nav{background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;color:var(--ivory)}
.menu-open .nav .logo .g{color:var(--gold-light)}
.menu-open .nav .logo .s{color:var(--ivory)}
@media (max-width:1080px){
  .nav-links,.nav-cta{display:none}
  .menu-btn{display:flex}
}

/* Full-screen menu */
.menu{
  position:fixed;inset:0;z-index:105;background:var(--wine-deep);color:var(--ivory);
  clip-path:inset(0 0 100% 0);visibility:hidden;
  display:grid;grid-template-rows:1fr auto;padding:calc(var(--nav-h) + 2rem) var(--gutter) var(--gutter);
}
.menu-list{display:grid;align-content:center;gap:.2rem}
.menu-list li{overflow:hidden}
.menu-list a{display:flex;align-items:baseline;gap:1rem;font-family:var(--serif);font-size:clamp(2.6rem,9vw,5rem);line-height:1.1;transition:color .4s,padding .5s var(--ease)}
.menu-list a small{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;color:var(--gold);transform:translateY(-1.2em)}
.menu-list a:hover{color:var(--gold-light);padding-left:.6rem}
.menu-foot{display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between;font-size:.85rem;color:rgba(245,239,230,.7);border-top:1px solid var(--line-light);padding-top:1.4rem}

/* ---------- Reveal helpers ---------- */
.reveal-img{position:relative;overflow:hidden;border-radius:var(--radius)}
.reveal-img img{width:100%;height:100%;object-fit:cover;transform-origin:center}
.js .reveal-img{clip-path:inset(100% 0 0 0 round var(--radius))}
.parallax-img{overflow:hidden}
.parallax-img img{height:118%;width:100%;object-fit:cover;margin-top:-9%}
.arch{border-radius:999px 999px var(--radius) var(--radius)!important}
.js .arch.reveal-img{clip-path:inset(100% 0 0 0 round 999px 999px var(--radius) var(--radius))}

/* Ornament */
.ornament{display:flex;align-items:center;gap:.9rem;color:var(--gold)}
.ornament::before,.ornament::after{content:"";height:1px;width:48px;background:currentColor;opacity:.6}
.ornament svg{width:14px;height:14px}

/* ---------- Marquee ---------- */
.marquee{position:relative;overflow:hidden;background:var(--wine);color:var(--ivory);padding-block:1.6rem;transform:rotate(-2deg) scale(1.04);margin-block:-1rem;z-index:3}
.marquee--alt{background:transparent;color:var(--wine);transform:rotate(1.5deg) scale(1.04);z-index:2}
.marquee-track{display:flex;width:max-content;will-change:transform}
.marquee-item{display:flex;align-items:center;gap:2.4rem;padding-right:2.4rem;font-family:var(--serif);font-size:clamp(2rem,4.6vw,4.2rem);line-height:1;white-space:nowrap}
.marquee-item em{font-style:italic;color:var(--gold-light)}
.marquee--alt .marquee-item{-webkit-text-stroke:1px var(--wine);color:transparent}
.marquee--alt .marquee-item em{color:var(--wine);-webkit-text-stroke:0}
.marquee-item svg{width:clamp(18px,2vw,28px);height:auto;color:var(--gold)}

/* ---------- Rotating badge ---------- */
.badge{position:relative;width:clamp(120px,12vw,168px);aspect-ratio:1;display:grid;place-items:center}
.badge svg.ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.badge text{font-family:var(--sans);font-size:9.6px;letter-spacing:3.4px;text-transform:uppercase;fill:currentColor;font-weight:500}
.badge .core{width:44%;aspect-ratio:1;border-radius:50%;background:var(--wine);color:var(--gold-light);display:grid;place-items:center;font-family:var(--serif);font-style:italic;font-size:clamp(1.6rem,2.4vw,2.2rem)}

/* ---------- Forms ---------- */
.field{position:relative;display:block}
.field input,.field select,.field textarea{
  width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);
  padding:1.6rem 0 .7rem;font-size:1.05rem;color:var(--ink);border-radius:0;outline:none;
  -webkit-appearance:none;appearance:none;
}
.field textarea{resize:vertical;min-height:120px}
.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B1626' stroke-width='1.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .2rem center;background-size:16px;padding-right:2rem}
.field label{position:absolute;left:0;top:1.6rem;font-size:1.02rem;color:var(--muted);pointer-events:none;transform-origin:left top;transition:transform .45s var(--ease),color .3s}
.field::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--wine);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}
.field:focus-within::after{transform:scaleX(1)}
.field input:focus+label,.field input:not(:placeholder-shown)+label,
.field textarea:focus+label,.field textarea:not(:placeholder-shown)+label,
.field.is-select label{transform:translateY(-1.25rem) scale(.72);color:var(--wine);letter-spacing:.08em}
.field.is-invalid::after{transform:scaleX(1);background:var(--rose)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 2rem}
.form-grid .full{grid-column:1/-1}
@media (max-width:640px){.form-grid{grid-template-columns:1fr}}
.checks{display:flex;flex-wrap:wrap;gap:.8rem}
.check{position:relative}
.check input{position:absolute;opacity:0;pointer-events:none}
.check span{display:inline-flex;align-items:center;gap:.6rem;padding:.75rem 1.1rem;border:1px solid var(--line);border-radius:999px;font-size:.88rem;transition:all .4s var(--ease)}
.check span::before{content:"";width:14px;height:14px;border-radius:50%;border:1px solid var(--gold);transition:all .4s var(--ease)}
.check input:checked+span{background:var(--wine);border-color:var(--wine);color:var(--ivory)}
.check input:checked+span::before{background:var(--gold-light);border-color:var(--gold-light);box-shadow:inset 0 0 0 3px var(--wine)}
.check input:focus-visible+span{outline:2px solid var(--gold);outline-offset:2px}
.form-msg{padding:1rem 1.2rem;border-radius:12px;font-size:.95rem;margin-bottom:1.5rem}
.form-msg.ok{background:rgba(107,22,38,.08);color:var(--wine)}
.form-msg.err{background:rgba(194,74,82,.12);color:var(--rose)}
.fine{font-size:.82rem;color:var(--muted)}

/* ---------- Footer ---------- */
.footer{position:relative;background:var(--wine-deep);color:var(--ivory);overflow:hidden}
.footer-inner{padding-top:clamp(5rem,10vw,8rem)}
.footer-cta{display:grid;grid-template-columns:1.4fr auto;align-items:end;gap:2rem;padding-bottom:clamp(3rem,6vw,5rem);border-bottom:1px solid var(--line-light)}
.footer-title{font-family:var(--serif);font-size:clamp(2.8rem,7vw,6.8rem);line-height:.95;letter-spacing:-.015em}
.footer-title em{color:var(--gold-light)}
.footer-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:2.5rem;padding-block:clamp(3rem,5vw,4.5rem)}
.footer-cols h4{font-size:.68rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:1.2rem}
.footer-cols li{margin-bottom:.55rem;font-size:.98rem;color:rgba(245,239,230,.78)}
.footer-cols a{position:relative;transition:color .3s}
.footer-cols a::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--gold-light);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.footer-cols a:hover{color:var(--gold-light)}
.footer-cols a:hover::after{transform:scaleX(1);transform-origin:left}
.footer-word{
  font-family:var(--serif);font-style:italic;line-height:.78;letter-spacing:-.03em;
  font-size:clamp(7rem,31vw,32rem);color:var(--wine);text-align:center;
  display:flex;justify-content:center;overflow:hidden;padding-top:.05em;user-select:none;
}
.footer-word span{display:inline-block;will-change:transform}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:1.6rem;border-top:1px solid var(--line-light);font-size:.8rem;color:rgba(245,239,230,.6)}
.footer-bottom a:hover{color:var(--gold-light)}
.to-top{display:inline-flex;align-items:center;gap:.5rem}
.to-top svg{width:14px;height:14px;transition:transform .5s var(--ease)}
.to-top:hover svg{transform:translateY(-4px)}
@media (max-width:900px){
  .footer-cta{grid-template-columns:1fr}
  .footer-cols{grid-template-columns:1fr 1fr}
}
@media (max-width:520px){.footer-cols{grid-template-columns:1fr}}

/* ---------- Lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:700;display:grid;place-items:center;visibility:hidden;pointer-events:none}
.lightbox.is-open{visibility:visible;pointer-events:auto}
.lb-bg{position:absolute;inset:0;background:rgba(42,9,16,.94);opacity:0}
.lb-figure{position:relative;max-width:min(92vw,900px);max-height:86vh;display:grid;gap:1rem;justify-items:center}
.lb-figure img{max-height:76vh;width:auto;border-radius:12px;box-shadow:0 40px 80px -20px rgba(0,0,0,.5)}
.lb-cap{color:var(--ivory);font-family:var(--serif);font-size:1.5rem;font-style:italic;text-align:center}
.lb-count{color:var(--gold-light);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;font-family:var(--sans);font-style:normal;display:block;margin-bottom:.3rem}
.lb-btn{position:absolute;z-index:2;width:56px;height:56px;border-radius:50%;border:1px solid var(--line-light);color:var(--ivory);display:grid;place-items:center;transition:background .4s,color .4s}
.lb-btn:hover{background:var(--ivory);color:var(--wine)}
.lb-btn svg{width:18px;height:18px}
.lb-close{top:1.5rem;right:1.5rem}
.lb-prev{left:1.5rem;top:50%;transform:translateY(-50%)}
.lb-next{right:1.5rem;top:50%;transform:translateY(-50%)}
@media (max-width:700px){.lb-prev,.lb-next{top:auto;bottom:1.5rem;transform:none}}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .js [data-split]:not(.is-split){visibility:visible}
  .js [data-fade]{opacity:1}
  .js .reveal-img,.js .arch.reveal-img{clip-path:none}
  .grain{display:none}
}
