@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300..700&family=Manrope:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap');

:root{
  --bg:#eef4fb;
  --bg-soft:#f6f9fd;
  --paper:#ffffff;

  --navy:#101a30;
  --navy-rgb:16,26,48;

  --text:#1b2740;
  --text-rgb:27,39,64;
  --dim:#62708a;
  --cream:#f8fbff;

  --border: rgba(var(--text-rgb), .10);
  --border-strong: rgba(var(--text-rgb), .18);

  --accent:#7fa6e6;
  --accent-rgb:127,166,230;
  --accent-bright:#4f7fd6;
  --accent-bright-rgb:79,127,214;
  --accent-deep:#33538f;
  --accent-deep-rgb:51,83,143;
  --accent-soft:#dbe8fb;

  --gold:#c9a668;
  --gold-rgb:201,166,104;
  --gold-soft:#ecdcb2;

  --emerald:#2f9c76;
  --rose:#d2577a;
  --wine:#8a3355;
  --wine-rgb:138,51,85;
  --amethyst:#7256a8;

  color-scheme: light;
}

*{box-sizing:border-box;}
html,body{height:auto;}
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:'Manrope', system-ui, sans-serif;
  overflow-x:hidden; -webkit-font-smoothing:antialiased;
}
::selection{background:var(--accent-soft); color:var(--text);}
a{color:inherit;}
.mono{font-family:'Space Mono', ui-monospace, monospace;}
.serif{font-family:'Fraunces', Georgia, serif;}

::-webkit-scrollbar{width:10px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--accent-soft); border-radius:6px; border:2px solid var(--bg);}
::-webkit-scrollbar-thumb:hover{background:var(--accent-bright);}

#glow{
  position:fixed; inset:0; pointer-events:none; z-index:2;
  background:radial-gradient(560px circle at var(--x,50%) var(--y,50%), rgba(var(--accent-bright-rgb),0.14), transparent 42%);
}

/* ---------- background texture ---------- */
#grain{
  position:fixed; inset:0; pointer-events:none; z-index:-1;
  background-image:radial-gradient(circle, rgba(var(--text-rgb),.06) 1px, transparent 1.3px);
  background-size:24px 24px;
}
#grain-spot{
  position:fixed; inset:0; pointer-events:none; z-index:-1;
  background-image:radial-gradient(circle, rgba(var(--accent-deep-rgb),.5) 1px, transparent 1.3px);
  background-size:24px 24px;
  opacity:0;
  -webkit-mask-image:radial-gradient(280px circle at var(--x,50%) var(--y,50%), #000, transparent 72%);
          mask-image:radial-gradient(280px circle at var(--x,50%) var(--y,50%), #000, transparent 72%);
  transition:opacity .5s ease;
}
#grain-spot.active{opacity:1;}
@media (max-width:820px){ #grain-spot{display:none;} }

/* ---------- header ---------- */
header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:14px clamp(20px,5vw,60px);
  padding-top:calc(14px + env(safe-area-inset-top,0px));
  background:rgba(238,244,251,0.72); backdrop-filter:blur(16px) saturate(150%);
  border-bottom:1px solid var(--border);
  transition:transform .4s ease, background .3s ease;
}
header.hide{transform:translateY(-100%);}

.brand{display:flex; align-items:center; gap:10px; text-decoration:none; flex-shrink:0;}
.crest{width:30px; height:30px; flex-shrink:0;}
.brand-name{font-family:'Fraunces', serif; font-size:1.08rem; letter-spacing:.01em; font-weight:600;}

.navlinks{display:flex; flex:1; justify-content:center;}
.navlinks ul{list-style:none; display:flex; align-items:center; gap:4px; margin:0; padding:5px; background:rgba(var(--text-rgb),0.04); border:1px solid var(--border); border-radius:4px;}
.navlinks a{
  text-decoration:none; font-size:.9rem; font-weight:500; color:var(--dim);
  padding:9px 18px; border-radius:2px; transition:color .25s ease, background .25s ease;
}
.navlinks a:hover{color:var(--text); background:rgba(var(--text-rgb),0.06);}
.navlinks a.active{color:var(--cream); background:linear-gradient(100deg, var(--accent-bright), var(--accent-deep));}

.btn{
  display:inline-flex; align-items:center; gap:9px; padding:12px 24px; border-radius:3px;
  font-size:.88rem; font-weight:600; text-decoration:none; cursor:pointer; border:1px solid transparent;
  transition:transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease, border-color .25s ease, background .25s ease;
  position:relative; overflow:hidden; -webkit-tap-highlight-color:transparent;
}
.btn.primary{background:linear-gradient(100deg, var(--accent-bright), var(--accent-deep)); color:var(--cream); border:1px solid rgba(var(--gold-rgb),.45);}
.btn.primary:hover{transform:translateY(-2px); box-shadow:0 12px 28px -10px rgba(var(--accent-deep-rgb),.55); border-color:var(--gold-soft);}
.btn.ghost{border-color:var(--border); color:var(--text); background:transparent;}
.btn.ghost:hover{border-color:var(--accent-bright); color:var(--accent-bright); transform:translateY(-2px);}
.btn:active{transform:scale(.93);}
.header-cta{padding:10px 22px; font-size:.85rem; flex-shrink:0;}
.mobile-cta{display:none;}

/* ---------- ripple ---------- */
.ripple{
  position:absolute; border-radius:50%; background:rgba(255,255,255,.45);
  transform:scale(0); pointer-events:none; animation:rippleAnim .55s ease-out forwards;
}
.btn.ghost .ripple{background:rgba(var(--text-rgb),.12);}
@keyframes rippleAnim{ to{ transform:scale(1); opacity:0; } }

/* ---------- mobile floating book button ---------- */
.fab-book{
  position:fixed; right:16px; bottom:calc(16px + env(safe-area-inset-bottom,0px)); z-index:150;
  display:none; align-items:center; gap:8px; padding:14px 20px; border-radius:3px;
  background:linear-gradient(100deg, var(--accent-bright), var(--accent-deep)); color:var(--cream);
  border:1px solid var(--gold); font-weight:700; font-size:.85rem; text-decoration:none;
  box-shadow:0 14px 32px -8px rgba(var(--accent-deep-rgb),.5);
  opacity:0; transform:translateY(30px) scale(.9); pointer-events:none;
  transition:opacity .3s ease, transform .5s cubic-bezier(.34,1.56,.64,1);
  overflow:hidden; -webkit-tap-highlight-color:transparent;
}
.fab-book.show{opacity:1; transform:translateY(0) scale(1); pointer-events:auto;}
.fab-book:active{transform:scale(.92);}
@media (max-width:820px){ .fab-book{display:inline-flex;} }

#menuBtn{display:none;}

/* ---------- layout ---------- */
section{padding:clamp(90px,14vw,130px) clamp(20px,5vw,60px) clamp(60px,8vw,96px); max-width:1180px; margin:0 auto; position:relative;}
.eyebrow{
  font-family:'Space Mono',monospace; font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent-bright); margin:0 0 16px; display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:''; width:24px; height:1px; background:var(--accent-bright);}
h2.title{font-family:'Fraunces', serif; font-size:clamp(2rem,3.6vw,2.9rem); margin:0 0 40px; font-weight:500; text-wrap:balance; color:var(--text);}

.reveal{opacity:0; transform:translateY(26px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1; transform:translateY(0);}

/* ---------- hero ---------- */
.hero{
  min-height:100svh; display:grid; grid-template-columns:1.15fr .85fr; align-items:center; gap:40px;
  padding-top:calc(clamp(90px,14vw,130px) + env(safe-area-inset-top,0px)); position:relative;
}
@media (max-width:900px){ .hero{grid-template-columns:1fr;} }

.hero-kicker{font-family:'Space Mono',monospace; color:var(--dim); font-size:.85rem; letter-spacing:.08em; margin-bottom:20px; display:flex; align-items:center; gap:10px; text-transform:uppercase;}
.hero-kicker .dot2{width:6px; height:6px; border-radius:50%; background:var(--accent-bright); box-shadow:0 0 10px var(--accent-bright); animation:pulse 2.2s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;} 50%{opacity:.35;}}

h1{font-family:'Fraunces', serif; font-size:clamp(2.4rem,5.6vw,4.4rem); line-height:1.05; margin:0 0 24px; font-weight:500; letter-spacing:-.01em; text-wrap:balance; color:var(--text);}
h1 .line{display:block; overflow:hidden;}
h1 .line span{display:inline-block; transform:translateY(110%); transition:transform .9s cubic-bezier(.16,.9,.2,1);}
h1.in .line span{transform:translateY(0); font-style:italic; padding:5px 0;}
h1 .line:nth-child(1) span{transition-delay:.05s;}
h1 .line:nth-child(2) span{transition-delay:.18s;}
h1 .accent{color:var(--accent-bright); text-transform:uppercase;}

.hero p.lead{max-width:480px; color:var(--dim); font-size:clamp(1rem,1.3vw,1.12rem); line-height:1.75; margin:0 0 34px;}
.cta-row{display:flex; gap:16px; flex-wrap:wrap; align-items:center;}

/* wax seal emblem */
.seal-wrap{position:relative; display:flex; align-items:center; justify-content:center; aspect-ratio:1; max-width:420px; margin:0 auto;}
canvas#blob{position:absolute; inset:0; width:100%; height:100%; border-radius:50%;}
.seal-halo{
  position:absolute; width:84%; aspect-ratio:1; border-radius:50%;
  background:conic-gradient(from 0deg,
    var(--accent-bright), var(--emerald), var(--gold-soft), var(--rose),
    var(--wine), var(--amethyst), var(--accent), var(--accent-bright));
  filter:blur(1px) saturate(1.15);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 15px), #000 calc(100% - 14px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 15px), #000 calc(100% - 14px));
  animation:haloSpin 14s linear infinite;
  box-shadow:0 0 34px rgba(var(--accent-bright-rgb),.3);
}
@keyframes haloSpin{to{transform:rotate(360deg);}}
.seal-ring{position:relative; width:72%; aspect-ratio:1; border-radius:50%; border:1px solid rgba(var(--gold-rgb),.5); display:flex; align-items:center; justify-content:center; background:var(--navy);}
.seal-ring::before{content:''; position:absolute; inset:14px; border-radius:50%; border:1px dashed rgba(var(--gold-rgb),.4);}
.seal-core{width:64%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle at 35% 30%, var(--accent-bright), var(--accent-deep) 70%); display:flex; align-items:center; justify-content:center; box-shadow:inset 0 0 30px rgba(0,0,0,.4), 0 0 40px rgba(var(--accent-deep-rgb),.55); animation:sealspin 30s linear infinite;}
@keyframes sealspin{to{transform:rotate(360deg);}}
.seal-core svg{width:52%; height:52%;}
@media (prefers-reduced-motion: reduce){ .seal-halo{animation:none;} }

.scroll-cue{position:absolute; bottom:34px; left:clamp(20px,5vw,60px); display:flex; align-items:center; gap:10px; color:var(--dim); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; font-family:'Space Mono',monospace;}
.scroll-cue .line-drop{width:1px; height:32px; background:linear-gradient(var(--accent-bright), transparent); animation:drop 1.8s ease-in-out infinite;}
@keyframes drop{0%{transform:scaleY(0); transform-origin:top;} 50%{transform:scaleY(1); transform-origin:top;} 50.01%{transform-origin:bottom;} 100%{transform:scaleY(0); transform-origin:bottom;}}

/* ---------- ribbon banner ---------- */
.ribbon-banner{position:relative; padding:20px 0; margin:20px 0 0; overflow:hidden; transform:rotate(-1deg); background:linear-gradient(90deg, var(--accent-deep), var(--accent-bright) 50%, var(--accent-deep)); border-top:1px solid rgba(var(--gold-rgb),.4); border-bottom:1px solid rgba(var(--gold-rgb),.4);}
.ribbon-track{display:flex; width:max-content; gap:40px; animation:scroll 24s linear infinite;}
.ribbon-track:hover{animation-play-state:paused;}
@keyframes scroll{from{transform:translateX(0);} to{transform:translateX(-50%);}}
.ribbon-track span{font-family:'Space Mono',monospace; font-size:.82rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-soft); white-space:nowrap; display:flex; align-items:center; gap:40px;}
.ribbon-track span::after{content:'✦'; color:var(--cream); font-size:.7rem; margin-left:40px;}

/* ---------- services accordion ---------- */
.service-groups{display:flex; flex-direction:column; gap:16px;}
.service-group{
  border:1px solid var(--border); border-radius:16px; background:var(--paper);
  overflow:hidden; transition:border-color .3s ease, box-shadow .3s ease;
}
.service-group.open{border-color:rgba(var(--accent-bright-rgb),.4); box-shadow:0 20px 44px -28px rgba(var(--text-rgb),.28);}

.service-toggle{
  width:100%; display:grid; grid-template-columns:44px 1fr auto; align-items:center; gap:20px;
  padding:24px clamp(18px,4vw,30px); background:none; border:none; text-align:left; cursor:pointer;
  font-family:inherit; color:inherit; -webkit-tap-highlight-color:transparent; transition:background .25s ease;
}
.service-toggle:hover, .service-toggle:focus-visible{background:rgba(var(--accent-bright-rgb),.06);}
.service-toggle-num{font-family:'Fraunces',serif; font-style:italic; font-size:1.25rem; color:var(--accent-bright);}
.service-toggle-main h3{font-family:'Fraunces',serif; font-weight:500; font-size:1.4rem; margin:0 0 8px; transition:color .3s ease;}
.service-group.open .service-toggle-main h3, .service-toggle:hover .service-toggle-main h3{color:var(--accent-bright);}
.service-toggle-main p{margin:0; color:var(--dim); line-height:1.65; font-size:.92rem; max-width:520px;}
.service-toggle-icon{
  flex-shrink:0; display:inline-flex; align-items:center; gap:9px;
  padding:10px 18px 10px 20px; border-radius:999px; white-space:nowrap;
  background:var(--accent-soft); border:1px solid rgba(var(--accent-bright-rgb),.4); color:var(--accent-bright);
  transition:background .3s ease, border-color .3s ease, color .3s ease, box-shadow .3s ease, transform .25s ease;
}
.service-toggle-label{font-family:'Space Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; font-weight:700;}
.service-toggle-icon svg{width:12px; height:12px; stroke:var(--accent-bright); transition:transform .4s cubic-bezier(.34,1.56,.64,1), stroke .3s ease;}
.service-toggle:hover .service-toggle-icon{box-shadow:0 8px 20px -10px rgba(var(--accent-bright-rgb),.55); transform:translateY(-1px);}
.service-group.open .service-toggle-icon{background:var(--accent-bright); border-color:var(--accent-bright); color:var(--cream);}
.service-group.open .service-toggle-icon svg{stroke:var(--cream); transform:rotate(180deg);}

.service-panel{max-height:0; overflow:hidden; transition:max-height .45s cubic-bezier(.2,.7,.2,1);}
.service-panel-inner{padding:0 clamp(18px,4vw,30px) 32px; display:flex; flex-direction:column; gap:26px;}

.price-group-label{font-family:'Space Mono',monospace; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-bright); margin:0 0 6px; display:block;}
.price-list{display:flex; flex-direction:column;}
.price-row{display:flex; align-items:baseline; justify-content:space-between; gap:16px; padding:12px 0; border-top:1px solid var(--border);}
.price-list .price-row:first-child{border-top:none;}
.price-row .name{font-weight:600; color:var(--text);}
.price-row .name em{font-style:normal; color:var(--dim); font-weight:500;}
.price-row .desc{margin:5px 0 0; color:var(--dim); font-size:.82rem; line-height:1.65; max-width:480px;}
.price-row .price{font-family:'Space Mono',monospace; color:var(--accent-bright); font-weight:700; white-space:nowrap;}

@media (max-width:640px){
  .service-toggle{grid-template-columns:26px 1fr auto; gap:12px; padding:20px 16px;}
  .service-toggle-num{font-size:1.05rem;}
  .service-toggle-icon{padding:9px 14px 9px 16px; gap:7px;}
  .service-toggle-label{font-size:.66rem;}
}

/* ---------- gallery filmstrip ---------- */
.filmstrip{display:flex; gap:16px; overflow-x:auto; overflow-y:hidden; padding:8px 4px 20px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;}
.filmstrip::-webkit-scrollbar{height:8px;}
.film-tile{
  flex:0 0 200px; scroll-snap-align:start; border-radius:14px; aspect-ratio:3/4; position:relative; overflow:hidden;
  display:flex; align-items:flex-end; padding:14px; transition:transform .35s ease;
  background-color:var(--accent-soft);
  cursor:pointer;
}
.film-tile:hover{transform:translateY(-8px);}
.film-tile:active{transform:scale(.96);}
.film-tile img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;}
.film-tile::before{content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(to top, rgba(0,0,0,.6) 0%, rgba(0,0,0,.05) 45%, transparent 65%); transition:opacity .35s ease;}
.film-tile:hover::before{opacity:.75;}
.film-tile::after{content:''; position:absolute; inset:0; z-index:2; background:linear-gradient(120deg, transparent 25%, rgba(255,255,255,.22) 42%, transparent 58%); transform:translateX(-140%); transition:transform .8s ease;}
.film-tile:hover::after{transform:translateX(140%);}
.film-label{position:relative; z-index:3; font-family:'Space Mono',monospace; font-size:.66rem; letter-spacing:.05em; text-transform:uppercase; color:rgba(255,255,255,.94); background:rgba(0,0,0,.32); padding:5px 9px; border-radius:999px;}
.film-expand{
  position:absolute; top:10px; right:10px; z-index:3; width:28px; height:28px; border-radius:3px;
  background:rgba(0,0,0,.4); border:1px solid rgba(255,255,255,.25); display:flex; align-items:center; justify-content:center;
  opacity:0; transform:scale(.85); transition:opacity .25s ease, transform .25s ease, border-color .25s ease;
}
.film-tile:hover .film-expand{opacity:1; transform:scale(1); border-color:var(--accent-bright);}
.filmstrip-cta{
  flex:0 0 200px; aspect-ratio:3/4; border-radius:14px; border:1px dashed var(--border);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; text-align:center;
  text-decoration:none; padding:14px; scroll-snap-align:start;
}
.filmstrip-cta:hover{border-color:var(--accent-bright);}
.filmstrip-cta .ig-name{font-family:'Space Mono',monospace; font-size:.76rem; color:var(--accent-bright);}
.filmstrip-cta .ig-sub{font-size:.7rem; color:var(--dim);}
.drag-hint{font-family:'Space Mono',monospace; font-size:.7rem; color:var(--dim); letter-spacing:.06em; text-transform:uppercase; margin:-16px 0 26px;}

/* ---------- booking invitation ---------- */
.invite{
  position:relative; background:linear-gradient(160deg, var(--navy), var(--accent-deep));
  border:1px solid rgba(255,255,255,.08); color:var(--cream);
  padding:clamp(40px,6vw,68px); text-align:center; overflow:hidden;
  clip-path:polygon(0 12px,12px 0,calc(100% - 12px) 0,100% 12px,100% calc(100% - 12px),calc(100% - 12px) 100%,12px 100%,0 calc(100% - 12px));
}
.invite::before{content:''; position:absolute; inset:0; background:radial-gradient(circle at 15% 20%, rgba(var(--accent-bright-rgb),.35), transparent 55%), radial-gradient(circle at 85% 85%, rgba(var(--wine-rgb),.28), transparent 55%);}
.invite-inner{position:relative;}
.invite h2{font-family:'Fraunces',serif; font-size:clamp(1.9rem,4vw,2.8rem); margin:0 0 16px; text-wrap:balance; color:var(--cream);}
.invite p{color:rgba(248,251,255,.75); max-width:460px; margin:0 auto 30px; line-height:1.7;}
.contact-links{display:flex; gap:14px; justify-content:center; flex-wrap:wrap;}

.seal-btn{
  display:inline-flex; align-items:center; gap:10px; padding:14px 30px; border-radius:3px;
  background:linear-gradient(100deg, var(--accent-bright), var(--accent-deep)); color:var(--cream);
  border:1px solid var(--gold); font-weight:700; font-size:.9rem; text-decoration:none; cursor:pointer;
  transition:transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease;
  position:relative; overflow:hidden; -webkit-tap-highlight-color:transparent;
}
.seal-btn:hover{box-shadow:0 14px 30px -10px rgba(var(--accent-deep-rgb),.6);}
.seal-btn:active{transform:scale(.93);}

.copy-field{
  display:inline-flex; align-items:center; gap:10px; background:var(--navy); border:1px solid rgba(255,255,255,.14);
  padding:11px 18px; border-radius:3px; font-family:'Space Mono',monospace; font-size:.85rem; cursor:pointer; color:var(--cream);
  transition:border-color .25s, background .25s;
}
.copy-field:hover{border-color:var(--accent-bright);}
.copy-field.copied{border-color:var(--gold); background:rgba(var(--gold-rgb),.14);}

footer{text-align:center; padding:30px 20px calc(30px + env(safe-area-inset-bottom,0px)); color:var(--dim); font-size:.8rem; border-top:1px solid var(--border);}

@media (max-width:820px){
  .navlinks{
    position:fixed; inset:0 0 0 auto; width:min(78vw,300px); height:100vh;
    background:var(--paper); border-left:1px solid var(--border); border-radius:0;
    display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-start; padding:100px 30px;
    transform:translateX(100%); transition:transform .4s ease; z-index:99;
    box-shadow:-18px 0 40px -20px rgba(var(--text-rgb),.2);
  }
  .navlinks.open{transform:translateX(0);}
  .navlinks ul{flex-direction:column; align-items:flex-start; gap:10px; background:none; border:none; padding:0; width:100%;}
  .navlinks a{width:100%; padding:12px 16px; font-size:1rem;}
  .navlinks li{opacity:0; transform:translateX(24px); transition:opacity .35s ease, transform .35s ease;}
  .navlinks.open li{opacity:1; transform:translateX(0);}
  .navlinks.open li:nth-child(1){transition-delay:.06s;}
  .navlinks.open li:nth-child(2){transition-delay:.12s;}
  .navlinks.open li:nth-child(3){transition-delay:.18s;}
  .header-cta{display:none;}
  .mobile-cta{display:flex; margin-top:20px; opacity:0; transform:translateY(16px); transition:opacity .35s ease, transform .35s ease;}
  .navlinks.open .mobile-cta{opacity:1; transform:translateY(0); transition-delay:.24s;}
  #menuBtn{
    display:flex; width:38px; height:38px; align-items:center; justify-content:center;
    background:none; border:1px solid var(--border); border-radius:8px; color:var(--text);
    cursor:pointer; z-index:101; flex-direction:column; gap:5px;
  }
  #menuBtn span{width:16px; height:1.5px; background:var(--text); transition:transform .3s, opacity .3s;}
  #menuBtn.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
  #menuBtn.open span:nth-child(2){opacity:0;}
  #menuBtn.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important;}
  h1 .line span{transform:translateY(0) !important;}
}

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:200; padding:24px;
  background:rgba(var(--navy-rgb),0.92); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center;
}
.lightbox[hidden]{display:none;}
.lightbox-frame{position:relative; max-width:90vw; max-height:85vh;}
.lightbox-frame img{
  display:block; max-width:90vw; max-height:85vh; width:auto; height:auto;
  border-radius:4px; box-shadow:0 30px 80px rgba(0,0,0,.6);
  animation:lightboxIn .25s ease;
}
.lightbox-cap{
  position:absolute; left:12px; bottom:12px; font-family:'Space Mono',monospace; font-size:.7rem;
  letter-spacing:.05em; text-transform:uppercase; color:rgba(255,255,255,.94);
  background:rgba(0,0,0,.4); padding:6px 11px; border-radius:3px;
}
@keyframes lightboxIn{from{opacity:0; transform:scale(.96);} to{opacity:1; transform:scale(1);}}
.lightbox-close{
  position:fixed; top:24px; right:24px; width:42px; height:42px; border-radius:3px;
  border:1px solid rgba(255,255,255,.2); background:rgba(255,255,255,0.08); color:var(--cream);
  font-size:1.5rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:border-color .25s ease, color .25s ease;
}
.lightbox-close:hover{border-color:var(--accent-bright); color:var(--accent-bright);}
