/* Chalet Saint-Adolphe — editorial/nature stylesheet */

:root{
  --clay:#B5651D;
  --terracotta:#C67B5C;
  --sand:#D9C6A5;
  --olive:#5B6B45;
  --olive-soft:#E7EAD8;
  --lake:#3E6E7E;
  --cream:#F6F0E4;
  --surface:#FCFAF3;
  --ink:#2A2015;
  --text:#2E241A;
  --text-muted:#75664F;
  --line:#E3D4B8;
  --on-clay:#FFFDF8;
  --band-bg:#2A2015; --band-text:#FFFDF8; --band-text-muted:#D9CBB2;
  --band-text-dim:#A9977A; --band-text-faint:#9C8968; --band-line:rgba(255,253,248,.14);
  --selection-text:#2A2015;
  --shadow: 0 1px 2px rgba(42,32,21,.06), 0 14px 34px -18px rgba(42,32,21,.35);
  --shadow-lg: 0 40px 80px -36px rgba(42,32,21,.4);
  --radius-s:8px; --radius-m:14px; --radius-l:0px 48px 0px 48px;
  --content-w:1240px;
  --font-display:'Calistoga','Georgia',serif;
  --font-body:'Inter','Segoe UI',Arial,sans-serif;
  --ease: cubic-bezier(.2,.7,.15,1);
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --cream:#1C160F; --surface:#241D14; --ink:#F3E9D6;
    --text:#F0E6D2; --text-muted:#B7A98D; --line:#3A3021;
    --clay:#E08A3E; --terracotta:#D99873; --olive:#8FA870; --lake:#7FB6C7;
    --on-clay:#1C160F;
    --shadow: 0 1px 2px rgba(0,0,0,.4), 0 14px 34px -18px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  --cream:#1C160F; --surface:#241D14; --ink:#F3E9D6;
  --text:#F0E6D2; --text-muted:#B7A98D; --line:#3A3021;
  --clay:#E08A3E; --terracotta:#D99873; --olive:#8FA870; --lake:#7FB6C7;
  --on-clay:#1C160F;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 14px 34px -18px rgba(0,0,0,.6);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--cream); color:var(--text);
  font-family:var(--font-body); font-size:16px; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
button{ font-family:inherit; }
.wrap{ max-width:var(--content-w); margin-inline:auto; padding-inline:clamp(1.25rem,4vw,3rem); }

h1,h2,h3{ font-family:var(--font-display); font-weight:400; line-height:1.05; margin:0; letter-spacing:-.01em; }
h2{ font-size:clamp(1.9rem,3.6vw,3rem); }
h3{ font-size:1.3rem; }
.icon{ width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }

.kicker{ display:flex; align-items:center; gap:.7rem; font-weight:600; font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; color:var(--clay); }
.kicker::before{ content:""; width:26px; height:1px; background:var(--clay); }

.btn{ display:inline-flex; align-items:center; gap:.55rem; padding:.9rem 1.7rem; font-weight:600; font-size:.95rem; text-decoration:none; cursor:pointer; transition:background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .15s var(--ease); border:1px solid transparent; }
.btn:active{ transform:scale(.98); }
.btn-clay{ background:var(--clay); color:var(--on-clay); border-radius:2px 14px 2px 14px; box-shadow:var(--shadow); }
.btn-clay:hover{ background:var(--terracotta); }
.btn-line{ background:transparent; color:var(--text); border-bottom:1px solid var(--text); padding:.9rem .1rem; border-radius:0; }
.btn-line:hover{ color:var(--clay); border-color:var(--clay); }

/* ---------- Top bar ---------- */
.topbar{ display:flex; align-items:center; justify-content:space-between; padding-block:1.4rem; gap:1rem; }
.brand{ display:flex; align-items:center; gap:.7rem; text-decoration:none; color:var(--text); }
.brand-mark{ width:40px; height:40px; flex:none; }
.brand-name{ font-family:var(--font-display); font-size:1.15rem; line-height:1.1; }
.brand-name small{ display:block; font-family:var(--font-body); font-weight:500; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); margin-top:.15rem; }
.nav-links{ display:flex; align-items:center; gap:2.1rem; font-size:.92rem; font-weight:500; }
.nav-links a{ text-decoration:none; color:var(--text-muted); position:relative; padding-block:.3rem; transition:color .2s var(--ease); }
.nav-links a::after{ content:""; position:absolute; left:0; right:100%; bottom:-1px; height:2px; background:var(--clay); transition:right .25s var(--ease); }
.nav-links a:hover, .nav-links a.is-active{ color:var(--text); }
.nav-links a.is-active::after, .nav-links a:hover::after{ right:0; }
.topbar-cta{ display:flex; align-items:center; gap:.7rem; }
.menu-btn{ display:none; width:42px; height:42px; border-radius:2px; border:1px solid var(--line); background:var(--surface); align-items:center; justify-content:center; cursor:pointer; }
@media (max-width:880px){
  .nav-links{ display:none; }
  .menu-btn{ display:flex; }
  .topbar-cta .btn-clay span{ display:none; }
  .topbar-cta .btn-clay{ padding:.8rem; border-radius:999px; }
}
.mobile-panel{ display:none; padding-block:1rem 1.4rem; border-top:1px solid var(--line); }
.js .mobile-panel{ flex-direction:column; }
body.nav-open .mobile-panel{ display:flex; }
.mobile-panel a{ color:var(--text); text-decoration:none; font-weight:600; padding:.85rem 0; border-bottom:1px solid var(--line); font-family:var(--font-display); font-size:1.1rem; }
.mobile-panel a:last-child{ border-bottom:none; }
.mobile-panel a.is-active{ color:var(--clay); }

/* ---------- Poster hero (full-bleed photo, oversized stacked type) ---------- */
.hero-poster{ position:relative; min-height:80vh; display:flex; align-items:flex-end; overflow:hidden; }
.hero-poster-bg{ position:absolute; inset:-8% 0; z-index:0; will-change:transform; }
.hero-poster-media{
  width:100%; height:100%; object-fit:cover; display:block; background:#0d0a06;
  transform-origin:56% 46%;
  animation:heroKenBurns 40s ease-in-out infinite alternate;
}
@keyframes heroKenBurns{ from{ transform:scale(1); } to{ transform:scale(1.05); } }
.hero-poster-scrim{
  position:absolute; inset:0; z-index:0;
  background:linear-gradient(0deg, rgba(13,10,6,.88) 0%, rgba(13,10,6,.5) 40%, rgba(13,10,6,.08) 68%),
             linear-gradient(180deg, rgba(13,10,6,.55) 0%, rgba(13,10,6,0) 30%);
  animation:heroScrimBreathe 11s ease-in-out infinite;
}
@keyframes heroScrimBreathe{ 0%,100%{ opacity:.94; } 50%{ opacity:1; } }
.hero-poster-content{ position:relative; z-index:1; width:100%; padding-block:clamp(2.5rem,7vw,4rem); }
.hero-poster-play{
  display:inline-flex; align-items:center; gap:.7rem; background:rgba(255,253,248,.12); border:1px solid rgba(255,253,248,.35);
  color:#FFFDF8; padding:.4rem 1.3rem .4rem .4rem; border-radius:999px; text-decoration:none; font-weight:600; font-size:.9rem;
  margin-bottom:1.6rem; transition:background .2s var(--ease);
  opacity:0; animation:heroFadeUp .8s cubic-bezier(.16,1,.3,1) .1s forwards;
}
.hero-poster-play:hover{ background:rgba(255,253,248,.22); }
.hero-poster-play .play-circle{ width:38px; height:38px; border-radius:50%; background:var(--clay); color:#FFFDF8; display:flex; align-items:center; justify-content:center; flex:none; }
.hero-poster-title{ font-family:var(--font-display); font-weight:400; color:#FFFDF8; line-height:.96; margin:0; }
.hero-poster-title .line-mask{ display:block; overflow:hidden; }
.hero-poster-title span span{ display:block; }
.hero-poster-title .line-mask span{ transform:translateY(112%); animation:heroLineReveal .95s cubic-bezier(.16,1,.3,1) forwards; }
.hero-poster-title .line-mask:nth-child(1) span{ animation-delay:.22s; }
.hero-poster-title .line-mask:nth-child(2) span{ animation-delay:.4s; }
.hero-poster-title .line-mask:nth-child(3) span{ animation-delay:.58s; }
@keyframes heroLineReveal{ to{ transform:translateY(0); } }
.hero-poster-title .l1{ font-size:clamp(1.6rem,4vw,2.6rem); color:rgba(255,253,248,.7); }
.hero-poster-title .l2{ font-size:clamp(3.4rem,10vw,7.5rem); }
.hero-poster-title .l3{ font-size:clamp(2.6rem,7vw,5.2rem); color:var(--clay); font-style:italic; }
.hero-poster-foot{
  display:flex; justify-content:space-between; align-items:flex-end; gap:1.5rem; margin-top:2.4rem; flex-wrap:wrap;
  opacity:0; animation:heroFadeUp .8s cubic-bezier(.16,1,.3,1) .8s forwards;
}
@keyframes heroFadeUp{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:translateY(0); } }
.hero-poster-caption{ color:#F3EAD9; font-size:.85rem; letter-spacing:.03em; max-width:32ch; }
.hero-poster-scroll{ color:rgba(255,253,248,.7); font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; display:flex; align-items:center; gap:.5rem; }
@media (max-width:640px){
  .hero-poster{ min-height:78vh; }
}

/* Scroll-linked depth parallax: background drifts slower than the page, content settles back as it leaves the viewport */
@supports (animation-timeline: scroll()) {
  .hero-poster-bg{
    animation-name:heroParallaxBg; animation-timeline:scroll(root); animation-range:0 100vh; animation-fill-mode:both; animation-timing-function:linear;
  }
  @keyframes heroParallaxBg{ from{ transform:translateY(0); } to{ transform:translateY(6%); } }
  .hero-poster-content{
    animation-name:heroParallaxContent; animation-timeline:scroll(root); animation-range:0 90vh; animation-fill-mode:both; animation-timing-function:linear;
  }
  @keyframes heroParallaxContent{ from{ opacity:1; transform:translateY(0); } to{ opacity:.15; transform:translateY(-6%); } }
}

/* ---------- Hero intro (below poster) ---------- */
.hero-intro-grid{ display:grid; grid-template-columns:1.2fr .8fr; gap:clamp(2rem,5vw,3.5rem); align-items:start; }
@media (max-width:860px){ .hero-intro-grid{ grid-template-columns:1fr; } }
.hero-intro-grid .lede{ font-size:1.15rem; color:var(--text-muted); max-width:52ch; }
.hero-intro-grid .hero-actions{ margin-top:1.8rem; display:flex; align-items:center; gap:1.6rem; flex-wrap:wrap; }
.hero-link{ font-weight:600; color:var(--text); text-decoration:none; border-bottom:2px solid var(--line); padding-bottom:.15rem; transition:border-color .2s var(--ease), color .2s var(--ease); }
.hero-link:hover{ color:var(--clay); border-color:var(--clay); }

.hero-stats{ display:flex; flex-direction:column; gap:0; }
.hero-stat{ display:flex; align-items:baseline; gap:1rem; padding-block:.9rem; border-top:1px solid var(--line); }
.hero-stat:last-child{ border-bottom:1px solid var(--line); }
.hero-stat b{ font-family:var(--font-display); font-size:1.8rem; color:var(--clay); line-height:1; flex:none; width:3.2ch; }
.hero-stat span{ font-size:.9rem; color:var(--text-muted); }

/* ---------- Editorial rows (amenities) ---------- */
.row-section{ padding-block:clamp(3.5rem,7vw,6rem); }
.section-intro{ max-width:640px; margin-bottom:clamp(2.5rem,5vw,4rem); }
.section-intro h2{ margin-top:.6rem; }
.section-intro p{ color:var(--text-muted); margin-top:1rem; font-size:1.08rem; }

.editorial-row{ display:grid; grid-template-columns:.42fr .58fr; gap:clamp(2rem,5vw,4rem); align-items:center; padding-block:clamp(2.5rem,5vw,3.5rem); border-top:1px solid var(--line); }
.editorial-row:last-child{ border-bottom:1px solid var(--line); }
.editorial-row.reverse{ grid-template-columns:.58fr .42fr; }
.editorial-row.reverse .row-media{ order:2; }
@media (max-width:820px){
  .editorial-row, .editorial-row.reverse{ grid-template-columns:1fr; }
  .editorial-row.reverse .row-media{ order:0; }
}
.row-num{ font-family:var(--font-display); font-size:1rem; color:var(--clay); margin-bottom:.6rem; display:block; }
.row-media{ aspect-ratio:5/4; border-radius:var(--radius-l); overflow:hidden; background:linear-gradient(150deg,var(--olive-soft,#E7EAD8),var(--sand)); display:flex; align-items:center; justify-content:center; }
.row-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.row-media .ph-label{ display:flex; flex-direction:column; align-items:center; gap:.5rem; color:rgba(42,32,21,.5); font-size:.82rem; font-weight:600; }
.row-media .ph-label .icon{ width:30px; height:30px; opacity:.55; }
.row-text h3{ font-size:1.6rem; margin-bottom:.7rem; }
.row-text p{ color:var(--text-muted); font-size:1.02rem; max-width:48ch; }
.row-taglist{ list-style:none; margin:1.1rem 0 0; padding:0; display:flex; flex-wrap:wrap; gap:.6rem; }
.row-taglist li{ display:flex; align-items:center; gap:.4rem; font-size:.85rem; font-weight:600; color:var(--text); background:var(--surface); border:1px solid var(--line); padding:.45rem .8rem; border-radius:999px; }
.row-taglist .icon{ width:14px; height:14px; color:var(--clay); }

/* ---------- Amenity checklist grid (secondary list) ---------- */
.checklist-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:.9rem 2.4rem; margin-top:1.5rem; }
@media (max-width:640px){ .checklist-grid{ grid-template-columns:1fr; } }
.checklist-grid li{ display:flex; align-items:baseline; gap:.7rem; padding-block:.85rem; border-bottom:1px solid var(--line); font-size:1.02rem; }
.checklist-grid li .icon{ width:16px; height:16px; color:var(--clay); flex:none; transform:translateY(2px); }

/* ---------- Big CTA band ---------- */
.cta-band{ background:var(--band-bg); color:var(--band-text); padding-block:clamp(3.5rem,7vw,5.5rem); }
.cta-band .wrap{ display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; flex-wrap:wrap; }
.cta-band h2{ font-size:clamp(2rem,5vw,3.4rem); max-width:16ch; color:var(--band-text); }
.cta-band p{ color:var(--band-text-muted); margin-top:.8rem; max-width:38ch; font-size:1.05rem; }
.cta-band .btn-clay{ background:var(--clay); }
.cta-band .btn-line{ color:var(--band-text); border-color:var(--band-text); }
.cta-actions{ display:flex; gap:1.2rem; flex-wrap:wrap; }

/* ---------- Gallery ---------- */
.gallery-featured{ display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; margin-bottom:1.4rem; }
@media (max-width:760px){ .gallery-featured{ grid-template-columns:1fr; } }
.gallery-featured .gallery-item{ aspect-ratio:6/5; margin-bottom:0; }
.gallery-masonry{ column-count:3; column-gap:1.4rem; }
@media (max-width:900px){ .gallery-masonry{ column-count:2; } }
@media (max-width:560px){ .gallery-masonry{ column-gap:.8rem; } }
@media (max-width:560px){ .gallery-item{ margin-bottom:.8rem; } }
.gallery-item{ position:relative; display:block; break-inside:avoid; margin-bottom:1.4rem; border-radius:var(--radius-l); overflow:hidden; cursor:pointer; }
.gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s var(--ease); }
.gallery-item:hover img{ transform:scale(1.045); }
.gallery-item .cap{
  position:absolute; left:0; right:0; bottom:0; padding:1.6rem 1rem .9rem;
  background:linear-gradient(to top, rgba(20,15,8,.72), rgba(20,15,8,0));
  color:#FFFDF8; font-size:.85rem; font-weight:600;
}
.gallery-item .season-tag{
  position:absolute; top:.8rem; left:.8rem; padding:.3rem .7rem; border-radius:999px;
  background:rgba(20,15,8,.55); color:#FFFDF8; font-size:.7rem; font-weight:600;
  letter-spacing:.06em; text-transform:uppercase;
}

/* ---------- Season strip (environs) ---------- */
.season-strip{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.2rem; margin-top:clamp(2.5rem,5vw,3.5rem); }
@media (max-width:760px){ .season-strip{ grid-template-columns:1fr; } }
.season-strip figure{ margin:0; }
.season-strip figure .season-media{ border-radius:var(--radius-l); overflow:hidden; aspect-ratio:4/5; }
.season-strip img{ width:100%; height:100%; object-fit:cover; display:block; }
.season-strip figcaption{ margin-top:.6rem; font-size:.85rem; font-weight:600; color:var(--text-muted); text-align:center; }

/* ---------- Pull quote (environs) ---------- */
.pull-quote{ max-width:820px; margin-inline:auto; text-align:center; }
.pull-quote p{ font-family:var(--font-display); font-size:clamp(1.6rem,3.6vw,2.4rem); line-height:1.35; color:var(--text); }
.pull-quote cite{ display:block; margin-top:1.3rem; font-style:normal; font-weight:600; color:var(--text-muted); font-size:.95rem; }

.fact-strip{ display:flex; flex-wrap:wrap; gap:2.5rem; justify-content:center; margin-top:clamp(2.5rem,5vw,3.5rem); padding-top:2.5rem; border-top:1px solid var(--line); }
.fact-strip .fact{ text-align:center; max-width:220px; }
.fact-strip .fact .icon{ width:26px; height:26px; color:var(--clay); margin-inline:auto; }
.fact-strip .fact h3{ font-size:1.1rem; margin-top:.7rem; }
.fact-strip .fact p{ color:var(--text-muted); font-size:.9rem; margin-top:.35rem; }

/* ---------- Contact ---------- */
.contact-wrap{ display:grid; grid-template-columns:.44fr .56fr; gap:clamp(2rem,5vw,4rem); }
@media (max-width:860px){ .contact-wrap{ grid-template-columns:1fr; } }
.contact-list{ display:flex; flex-direction:column; gap:0; margin-top:1.6rem; }
.contact-item{ display:flex; align-items:center; gap:1rem; text-decoration:none; color:var(--text); padding-block:1.1rem; border-bottom:1px solid var(--line); }
.contact-item .icon-box{ width:44px; height:44px; border-radius:2px 12px 2px 12px; background:var(--surface); border:1px solid var(--line); display:flex; align-items:center; justify-content:center; flex:none; }
.contact-item .icon-box .icon{ width:18px; height:18px; color:var(--clay); }
.contact-item .k-label{ display:block; font-size:.74rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-muted); font-weight:600; }
.contact-item .k-value{ display:block; font-weight:600; font-size:1.05rem; margin-top:.15rem; }

.quote-card{ background:var(--surface); border:1px solid var(--line); border-radius:0 40px 0 40px; padding:clamp(1.8rem,4vw,2.6rem); box-shadow:var(--shadow-lg); }
.row2{ display:grid; grid-template-columns:1fr 1fr; gap:1.1rem; }
@media (max-width:520px){ .row2{ grid-template-columns:1fr; } }
.field{ margin-bottom:1.1rem; }
.field label{ display:block; font-size:.8rem; font-weight:600; margin-bottom:.45rem; color:var(--text-muted); }
.field input, .field textarea{
  width:100%; padding:.8rem .95rem; border-radius:6px; border:1px solid var(--line);
  background:var(--cream); color:var(--text); font-family:inherit; font-size:.96rem;
}
.field textarea{ min-height:110px; resize:vertical; }
.form-note{ color:var(--text-muted); font-size:.78rem; margin-top:1rem; text-align:center; }

/* ---------- Founder / environs intro ---------- */
.intro-block{ max-width:760px; }
.intro-block p{ font-size:1.15rem; color:var(--text-muted); line-height:1.75; }

/* ---------- Footer ---------- */
footer{ background:var(--band-bg); color:var(--band-text-muted); padding-block:clamp(3rem,6vw,4.5rem) 2rem; }
.footer-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:2.5rem; flex-wrap:wrap; padding-bottom:2.4rem; border-bottom:1px solid var(--band-line); }
.footer-brand{ display:flex; align-items:center; gap:.7rem; font-family:var(--font-display); font-size:1.3rem; color:var(--band-text); }
.footer-brand-mark{ width:38px; height:38px; }
.footer-links{ display:flex; gap:clamp(2rem,6vw,4.5rem); flex-wrap:wrap; }
.footer-col h4{ font-size:.76rem; text-transform:uppercase; letter-spacing:.1em; color:var(--band-text-dim); margin-bottom:1rem; }
.footer-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.6rem; }
.footer-col a{ text-decoration:none; color:var(--band-text-muted); font-size:.92rem; }
.footer-col a:hover{ color:var(--band-text); }
.footer-fine{ margin-top:1.6rem; font-size:.8rem; color:var(--band-text-faint); }

::selection{ background:var(--sand); color:var(--selection-text); }

/* ---------- Photo mosaic ---------- */
.photo-mosaic{ display:grid; grid-template-columns:1.3fr 1fr 1fr; grid-auto-rows:170px; gap:.9rem; margin-top:clamp(2rem,4vw,3rem); }
.photo-mosaic a{ display:block; position:relative; border-radius:var(--radius-l); overflow:hidden; }
.photo-mosaic a img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s var(--ease); }
.photo-mosaic a:hover img{ transform:scale(1.05); }
.photo-mosaic .mosaic-large{ grid-row:span 2; }
.mosaic-more{ position:absolute; inset:0; background:rgba(20,15,8,.5); color:#FFFDF8; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.92rem; text-align:center; padding:.5rem; opacity:0; transition:opacity .25s var(--ease); }
.photo-mosaic a:hover .mosaic-more{ opacity:1; }
.mosaic-more.is-static{ opacity:1; background:rgba(20,15,8,.6); }
@media (max-width:760px){
  .photo-mosaic{ grid-template-columns:1fr 1fr; grid-auto-rows:130px; }
  .photo-mosaic .mosaic-large{ grid-column:span 2; grid-row:span 1; height:220px; }
}

/* ---------- Room grid (chalet.html bedrooms) ---------- */
.room-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.2rem; margin-top:clamp(2rem,4vw,3rem); }
@media (max-width:760px){ .room-grid{ grid-template-columns:1fr; } }
.room-grid figure{ margin:0; }
.room-grid .room-media{ border-radius:var(--radius-l); overflow:hidden; aspect-ratio:4/3; }
.room-grid img{ width:100%; height:100%; object-fit:cover; display:block; }
.room-grid figcaption{ margin-top:.6rem; font-weight:600; font-size:.92rem; }

/* ---------- Lightbox / photo album ---------- */
body.lightbox-lock{ overflow:hidden; }
.lightbox-overlay{
  position:fixed; inset:0; z-index:300; background:rgba(15,11,7,.94);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity .25s var(--ease);
}
.lightbox-overlay.is-open{ opacity:1; visibility:visible; }
.lightbox-stage{
  max-width:min(90vw,1100px); max-height:90vh; max-height:90dvh;
  display:flex; flex-direction:column; align-items:center; gap:.7rem; padding:1rem;
}
.lightbox-img{
  max-width:100%; flex:1 1 auto; min-height:0;
  max-height:62vh; max-height:62dvh;
  object-fit:contain; border-radius:8px; box-shadow:0 30px 70px -20px rgba(0,0,0,.6);
}
.lightbox-caption{ flex:none; color:#F3EAD9; font-size:.98rem; text-align:center; max-width:60ch; margin:0; }
.lightbox-counter{ flex:none; color:#A9977A; font-size:.82rem; letter-spacing:.04em; }
.lightbox-thumbs{
  flex:none; display:flex; gap:.5rem; max-width:min(90vw,1100px); overflow-x:auto; padding:.2rem .2rem .7rem;
  scrollbar-width:thin; scrollbar-color:rgba(255,253,248,.4) transparent;
}
.lightbox-thumbs::-webkit-scrollbar{ height:5px; }
.lightbox-thumbs::-webkit-scrollbar-track{ background:transparent; }
.lightbox-thumbs::-webkit-scrollbar-thumb{ background:rgba(255,253,248,.4); border-radius:999px; }
.lightbox-thumbs::-webkit-scrollbar-thumb:hover{ background:rgba(255,253,248,.6); }
.lightbox-thumbs img{
  width:56px; height:42px; object-fit:cover; border-radius:4px; flex:none; cursor:pointer;
  opacity:.5; transition:opacity .2s var(--ease), outline-color .2s var(--ease);
  outline:2px solid transparent; outline-offset:2px;
}
.lightbox-thumbs img:hover{ opacity:.8; }
.lightbox-thumbs img.is-current{ opacity:1; outline-color:var(--clay); }
@media (max-width:640px){
  .lightbox-thumbs img{ width:44px; height:34px; }
  .lightbox-stage{ gap:.5rem; padding:.75rem; }
  .lightbox-img{ max-height:52vh; max-height:52dvh; }
  .lightbox-caption{ font-size:.88rem; }
}
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background:rgba(255,253,248,.1); color:#FFFDF8; border:1px solid rgba(255,253,248,.25);
  border-radius:999px; width:46px; height:46px; display:flex; align-items:center; justify-content:center;
  font-size:1.4rem; cursor:pointer; transition:background .2s var(--ease);
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background:rgba(255,253,248,.22); }
.lightbox-close{ top:1.2rem; right:1.2rem; }
.lightbox-prev{ left:1.2rem; top:50%; transform:translateY(-50%); }
.lightbox-next{ right:1.2rem; top:50%; transform:translateY(-50%); }
@media (max-width:640px){
  .lightbox-prev{ left:.5rem; width:38px; height:38px; }
  .lightbox-next{ right:.5rem; width:38px; height:38px; }
  .lightbox-close{ top:.6rem; right:.6rem; width:38px; height:38px; }
}

/* ---------- Motion ---------- */
.reveal{ opacity:1; transform:none; }
.js .reveal{ opacity:0; transform:translateY(16px); transition:opacity .6s var(--ease), transform .6s var(--ease); }
.js .reveal.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .js .reveal{ opacity:1; transform:none; transition:none; }
  .hero-poster-bg, .hero-poster-media, .hero-poster-scrim, .hero-poster-content{ animation:none !important; }
  .hero-poster-play, .hero-poster-foot{ animation:none !important; opacity:1 !important; transform:none !important; }
  .hero-poster-title .line-mask span{ animation:none !important; transform:none !important; }
}
