﻿/* ============================================================
   TOKENS
   ============================================================ */
:root{
  --ink:#0a0c0e;
  --ink-2:#0f1317;
  --ink-3:#151b21;
  --gold:#c9a96e;
  --gold-2:#e8d6ab;
  --gold-soft:rgba(201,169,110,.35);
  --line:rgba(201,169,110,.20);
  --line-soft:rgba(255,255,255,.07);
  --cream:#efeae1;
  --muted:#98a1aa;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'Jost',system-ui,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --pad:clamp(20px,5vw,48px);
}

/* ============================================================
   RESET
   ============================================================ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--ink);
  color:var(--cream);
  font-family:var(--sans);
  font-weight:300;
  font-size:16px;
  line-height:1.75;
  letter-spacing:.01em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
ul{list-style:none}
::selection{background:var(--gold);color:var(--ink)}

::-webkit-scrollbar{width:9px}
::-webkit-scrollbar-track{background:#07090a}
::-webkit-scrollbar-thumb{background:#2a2f36;border-radius:9px}
::-webkit-scrollbar-thumb:hover{background:var(--gold-soft)}

/* ============================================================
   ATMOSPHERE
   ============================================================ */
.grain{
  position:fixed;inset:0;z-index:900;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}
.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:950;background:transparent;pointer-events:none}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold-soft),var(--gold));transition:width .12s linear}

/* ============================================================
   LAYOUT HELPERS
   ============================================================ */
.wrap{width:100%;max-width:1280px;margin:0 auto;padding:0 var(--pad)}
.section{padding:clamp(70px,11vw,140px) 0}
.section.tight{padding:clamp(50px,7vw,80px) 0}

.label{
  font-size:.66rem;letter-spacing:.42em;text-transform:uppercase;
  color:var(--gold);font-weight:400;margin-bottom:22px;
}
.label.muted{color:var(--muted)}

h1,h2,h3,h4{font-family:var(--serif);font-weight:300;line-height:1.1;letter-spacing:.005em}
.h1{font-size:clamp(2.8rem,8.5vw,7.5rem)}
.h2{font-size:clamp(1.9rem,4.3vw,3.5rem);line-height:1.13}
.h3{font-size:clamp(1.35rem,2.2vw,1.9rem)}
.h4{font-size:1.15rem}
em,.it{font-style:italic;color:var(--gold-2)}
.lede{font-size:clamp(1rem,1.4vw,1.15rem);color:#c9c3ba;max-width:62ch}
p+p{margin-top:1.1em}
.muted{color:var(--muted)}

.rule{height:1px;background:var(--line);border:0;margin:0}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;gap:12px;
  padding:15px 34px;border:1px solid var(--gold-soft);
  font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;font-weight:400;
  color:var(--gold-2);background:transparent;position:relative;overflow:hidden;
  cursor:pointer;transition:color .5s var(--ease),border-color .5s var(--ease);
}
.btn::before{
  content:'';position:absolute;inset:0;background:var(--gold);
  transform:translateY(101%);transition:transform .55s var(--ease);z-index:-1;
}
.btn>*{position:relative;z-index:1}
.btn:hover{color:var(--ink);border-color:var(--gold)}
.btn:hover::before{transform:translateY(0)}
.btn.solid{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.btn.solid::before{background:var(--cream)}
.btn.solid:hover{color:var(--ink)}
.btn-sm{padding:11px 24px;font-size:.62rem;letter-spacing:.24em}

.link{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);
  padding-bottom:6px;border-bottom:1px solid transparent;
  transition:border-color .5s var(--ease),gap .5s var(--ease);
}
.link:hover{border-color:var(--gold);gap:18px}

/* ============================================================
   REVEAL
   ============================================================ */
[data-reveal]{
  opacity:0;transform:translateY(36px);
  transition:opacity 1.1s var(--ease),transform 1.2s var(--ease);
  transition-delay:var(--d,0s);
}
[data-reveal].in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{opacity:1!important;transform:none!important}
  *{animation-duration:.001s!important;transition-duration:.001s!important}
}

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:800;
  padding:26px 0;transition:padding .55s var(--ease),background .55s var(--ease),border-color .55s;
  border-bottom:1px solid transparent;
}
.nav.scrolled{
  padding:14px 0;
  background:rgba(10,12,14,.82);
  backdrop-filter:blur(18px) saturate(140%);
  -webkit-backdrop-filter:blur(18px) saturate(140%);
  border-bottom-color:var(--line);
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:28px}
.brand{
  font-family:var(--serif);font-size:clamp(1.05rem,1.6vw,1.35rem);
  letter-spacing:.42em;text-transform:uppercase;color:var(--cream);
  padding-left:.42em;white-space:nowrap;
}
.brand span{color:var(--gold)}
.nav-links{display:flex;align-items:center;gap:clamp(16px,2.1vw,32px)}
.nav-links a{
  font-size:.66rem;letter-spacing:.19em;text-transform:uppercase;
  color:#b9b3aa;position:relative;padding:6px 0;transition:color .4s;
  white-space:nowrap;
}
.nav-links a::after{
  content:'';position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--gold);transform:scaleX(0);transform-origin:right;
  transition:transform .5s var(--ease);
}
.nav-links a:hover{color:var(--cream)}
.nav-links a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-links a.active{color:var(--gold)}
.nav-links a.active::after{transform:scaleX(1)}

.burger{
  display:none;width:44px;height:44px;background:none;border:1px solid var(--line-soft);
  cursor:pointer;position:relative;
}
.burger span{
  position:absolute;left:50%;width:20px;height:1px;background:var(--cream);
  transform:translateX(-50%);transition:.45s var(--ease);
}
.burger span:nth-child(1){top:18px}
.burger span:nth-child(2){top:25px}
body.menu-open .burger span:nth-child(1){top:21px;transform:translateX(-50%) rotate(45deg)}
body.menu-open .burger span:nth-child(2){top:21px;transform:translateX(-50%) rotate(-45deg)}

.mobile-menu{
  position:fixed;inset:0;z-index:790;background:rgba(8,10,12,.97);
  backdrop-filter:blur(20px);display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .6s var(--ease),visibility .6s;
}
body.menu-open .mobile-menu{opacity:1;visibility:visible}
.mobile-menu ul{text-align:center;display:flex;flex-direction:column;gap:8px}
.mobile-menu a{
  font-family:var(--serif);font-size:clamp(1.9rem,8vw,3rem);
  letter-spacing:.06em;color:#cfc9c0;transition:color .4s;
  display:inline-block;transform:translateY(22px);opacity:0;
}
body.menu-open .mobile-menu a{transform:none;opacity:1;transition:transform .7s var(--ease),opacity .7s var(--ease),color .4s}
.mobile-menu a:hover{color:var(--gold)}

@media(max-width:1080px){
  .nav-links,.nav-cta{display:none}
  .burger{display:block}
}

/* ============================================================
   PAGE ROUTER
   ============================================================ */
.page{display:none}
.page.active{display:block;animation:pageIn .8s var(--ease) both}
@keyframes pageIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ============================================================
   HERO (home)
   ============================================================ */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:center;
  justify-content:center;text-align:center;overflow:hidden;isolation:isolate;
}
.hero-bg{
  position:absolute;inset:-8% 0;z-index:-2;
  background-size:cover;background-position:center;
  animation:kenburns 26s ease-in-out infinite alternate;
  will-change:transform;
}
@keyframes kenburns{from{transform:scale(1.04)}to{transform:scale(1.16)}}
.hero-veil{
  position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(120% 90% at 50% 20%,rgba(10,12,14,.15) 0%,rgba(10,12,14,.72) 62%,rgba(10,12,14,.97) 100%),
    linear-gradient(180deg,rgba(10,12,14,.75) 0%,rgba(10,12,14,.25) 30%,rgba(10,12,14,.9) 100%);
}
.hero-inner{padding:120px var(--pad) 90px;max-width:1000px}
.hero-title{
  font-size:clamp(3rem,10vw,8.5rem);line-height:.98;letter-spacing:.01em;
  margin-bottom:30px;
}
.hero-title .line{display:block;overflow:hidden}
.hero-title .line>span{display:block;transform:translateY(110%);animation:rise 1.35s var(--ease) forwards}
.hero-title .line:nth-child(2)>span{animation-delay:.16s}
.hero-title .line:nth-child(3)>span{animation-delay:.32s}
@keyframes rise{to{transform:translateY(0)}}
.hero-sub{
  max-width:600px;margin:0 auto 42px;color:#c4bfb6;
  font-size:clamp(.95rem,1.35vw,1.12rem);font-weight:200;
  opacity:0;animation:fadeUp 1.2s var(--ease) .75s forwards;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.hero-actions{
  display:flex;gap:16px;justify-content:center;flex-wrap:wrap;
  opacity:0;animation:fadeUp 1.2s var(--ease) .95s forwards;
}
.hero-eyebrow{
  opacity:0;animation:fadeUp 1.2s var(--ease) .55s forwards;
}
.scroll-cue{
  position:absolute;bottom:34px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:14px;
  font-size:.58rem;letter-spacing:.42em;text-transform:uppercase;color:#8c949c;
  opacity:0;animation:fadeUp 1s var(--ease) 1.3s forwards;
}
.scroll-cue i{display:block;width:1px;height:56px;background:linear-gradient(180deg,transparent,var(--gold));position:relative;overflow:hidden}
.scroll-cue i::after{content:'';position:absolute;inset:0;background:var(--ink);animation:cue 2.4s var(--ease) infinite}
@keyframes cue{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}

/* ============================================================
   PAGE HERO (inner pages)
   ============================================================ */
.page-hero{
  position:relative;min-height:clamp(420px,62vh,640px);
  display:flex;align-items:flex-end;overflow:hidden;isolation:isolate;
  padding-bottom:clamp(50px,7vw,84px);padding-top:160px;
}
.page-hero .ph-bg{
  position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center;
  transform:scale(1.06);animation:slowzoom 22s ease-in-out infinite alternate;
}
@keyframes slowzoom{to{transform:scale(1.14)}}
.page-hero::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(10,12,14,.86) 0%,rgba(10,12,14,.42) 40%,rgba(10,12,14,.96) 100%);
}
.page-hero .wrap{position:relative;z-index:2}
.page-hero .h1{font-size:clamp(2.6rem,7vw,5.6rem)}
.crumbs{
  font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;color:#8d959d;
  margin-bottom:20px;display:flex;gap:12px;align-items:center;
}
.crumbs a:hover{color:var(--gold)}
.crumbs span{color:var(--gold)}

/* ============================================================
   SPLIT
   ============================================================ */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,6.5vw,110px);align-items:center}
.split.reverse .split-media{order:2}
.split-media{position:relative}
.split-media img{
  position:relative;z-index:1;width:100%;aspect-ratio:4/5;object-fit:cover;
  filter:brightness(.92) contrast(1.03);
}
.split-media::after{
  content:'';position:absolute;inset:22px -22px -22px 22px;border:1px solid var(--line);z-index:0;
}
.split.reverse .split-media::after{inset:22px 22px -22px -22px}
.split-media.tall img{aspect-ratio:3/4}
.split-media.wide img{aspect-ratio:5/4}
.split-text .h2{margin-bottom:26px}
.split-text p{color:#b7b1a8;max-width:56ch}
.split-text .link{margin-top:34px}

@media(max-width:860px){
  .split{grid-template-columns:1fr;gap:48px}
  .split.reverse .split-media{order:0}
  .split-media::after{inset:14px -14px -14px 14px}
}

/* ============================================================
   STATS
   ============================================================ */
.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(46px,6vw,72px) 0}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;text-align:center}
.stat .num{
  display:block;font-family:var(--serif);font-size:clamp(2.2rem,4.6vw,3.6rem);
  color:var(--gold-2);line-height:1;
}
.stat .cap{
  display:block;margin-top:14px;font-size:.62rem;letter-spacing:.3em;
  text-transform:uppercase;color:var(--muted);
}
@media(max-width:700px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:40px 20px}}

/* ============================================================
   CARDS / GRIDS
   ============================================================ */
.grid{display:grid;gap:clamp(20px,2.6vw,34px)}
.g-2{grid-template-columns:repeat(2,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.g-3,.g-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.g-2,.g-3,.g-4{grid-template-columns:1fr}}

.card{
  position:relative;overflow:hidden;background:var(--ink-2);
  border:1px solid var(--line-soft);
  transition:border-color .6s var(--ease),transform .7s var(--ease);
}
.card:hover{border-color:var(--gold-soft);transform:translateY(-6px)}
.card .media{overflow:hidden;position:relative}
.card .media img{
  width:100%;aspect-ratio:4/5;object-fit:cover;
  filter:grayscale(.28) brightness(.82);
  transition:transform 1.5s var(--ease),filter .9s var(--ease);
}
.card:hover .media img{transform:scale(1.07);filter:grayscale(0) brightness(1)}
.card .body{padding:26px 26px 30px}
.card .body h3{margin-bottom:8px}
.card .body p{font-size:.9rem;color:var(--muted)}

/* media card with overlay caption */
.media-card{position:relative;overflow:hidden;border:1px solid var(--line-soft)}
.media-card img{
  width:100%;aspect-ratio:3/4;object-fit:cover;
  filter:grayscale(.3) brightness(.72);
  transition:transform 1.6s var(--ease),filter 1s var(--ease);
}
.media-card:hover img{transform:scale(1.07);filter:grayscale(0) brightness(.92)}
.media-card .overlay{
  position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;
  padding:28px;background:linear-gradient(180deg,transparent 40%,rgba(8,10,12,.92));
}
.media-card .overlay .idx{
  position:absolute;top:22px;left:26px;font-family:var(--serif);
  font-size:.9rem;color:var(--gold);letter-spacing:.2em;
}
.media-card h3{font-size:1.4rem;margin-bottom:8px}
.media-card p{font-size:.82rem;color:#a8a29a;max-width:32ch}

/* ============================================================
   QUOTE BAND
   ============================================================ */
.band{
  position:relative;padding:clamp(90px,15vw,190px) 0;text-align:center;
  background-size:cover;background-position:center;background-attachment:fixed;
  isolation:isolate;
}
.band::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(10,12,14,.92),rgba(10,12,14,.66),rgba(10,12,14,.95));
}
.band blockquote{
  font-family:var(--serif);font-size:clamp(1.5rem,3.6vw,3rem);
  line-height:1.3;font-style:italic;max-width:22ch;margin:0 auto;
  color:var(--cream);
}
.band .attrib{
  margin-top:34px;font-size:.62rem;letter-spacing:.36em;
  text-transform:uppercase;color:var(--gold);
}
@media(max-width:900px){.band{background-attachment:scroll}}

/* ============================================================
   ROOM CARDS
   ============================================================ */
.room{
  background:var(--ink-2);border:1px solid var(--line-soft);
  transition:border-color .6s var(--ease),transform .7s var(--ease);
  display:flex;flex-direction:column;
}
.room:hover{border-color:var(--gold-soft);transform:translateY(-6px)}
.room .media{position:relative;overflow:hidden}
.room .media img{
  width:100%;aspect-ratio:3/2;object-fit:cover;
  filter:grayscale(.22) brightness(.85);
  transition:transform 1.5s var(--ease),filter .9s var(--ease);
}
.room:hover .media img{transform:scale(1.06);filter:grayscale(0) brightness(1)}
.room .price{
  position:absolute;bottom:0;right:0;background:rgba(10,12,14,.88);
  backdrop-filter:blur(8px);padding:10px 18px;border-top:1px solid var(--line);
  border-left:1px solid var(--line);font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold-2);
}
.room .body{padding:28px;display:flex;flex-direction:column;flex:1}
.room .body h3{margin-bottom:10px}
.room .meta{
  font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--gold);margin-bottom:16px;
}
.room .body p{font-size:.9rem;color:var(--muted);flex:1}
.room .body .link{margin-top:24px;align-self:flex-start}

/* filters */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:52px}
.filter{
  background:none;border:1px solid var(--line-soft);cursor:pointer;
  padding:10px 22px;font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--muted);transition:.45s var(--ease);
}
.filter:hover{color:var(--cream);border-color:var(--gold-soft)}
.filter.active{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.room.hide{display:none}

/* ============================================================
   MENU LIST (dining)
   ============================================================ */
.menu-list{max-width:820px}
.menu-item{
  display:flex;align-items:baseline;gap:18px;padding:22px 0;
  border-bottom:1px solid var(--line-soft);
}
.menu-item .name{font-family:var(--serif);font-size:1.3rem;color:var(--cream)}
.menu-item .desc{font-size:.82rem;color:var(--muted);margin-top:4px;font-family:var(--sans)}
.menu-item .dots{flex:1;border-bottom:1px dotted rgba(255,255,255,.16);transform:translateY(-4px)}
.menu-item .price{font-family:var(--serif);font-size:1.15rem;color:var(--gold-2);white-space:nowrap}

/* ============================================================
   TREATMENTS
   ============================================================ */
.treat{
  border:1px solid var(--line-soft);padding:34px 30px;background:var(--ink-2);
  transition:.6s var(--ease);position:relative;overflow:hidden;
}
.treat::before{
  content:'';position:absolute;top:0;left:0;width:100%;height:1px;
  background:linear-gradient(90deg,var(--gold),transparent);
  transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease);
}
.treat:hover::before{transform:scaleX(1)}
.treat:hover{border-color:var(--gold-soft);background:#12171c}
.treat .dur{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:16px}
.treat h3{margin-bottom:12px;font-size:1.35rem}
.treat p{font-size:.88rem;color:var(--muted)}
.treat .cost{
  margin-top:22px;font-family:var(--serif);font-size:1.5rem;color:var(--gold-2);
}

/* ============================================================
   TIMELINE / RITUAL
   ============================================================ */
.ritual{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line)}
.ritual .step{padding:44px 30px 44px 0;border-right:1px solid var(--line-soft);position:relative}
.ritual .step:last-child{border-right:0}
.ritual .step .n{
  font-family:var(--serif);font-size:2.6rem;color:var(--gold-soft);line-height:1;margin-bottom:18px;display:block;
}
.ritual .step h4{margin-bottom:10px;font-size:1.1rem}
.ritual .step p{font-size:.84rem;color:var(--muted)}
@media(max-width:900px){
  .ritual{grid-template-columns:1fr 1fr}
  .ritual .step{border-right:0;border-bottom:1px solid var(--line-soft);padding:34px 20px 34px 0}
}
@media(max-width:560px){.ritual{grid-template-columns:1fr}}

/* ============================================================
   SEASONS TABLE
   ============================================================ */
.seasons{width:100%;border-collapse:collapse;font-size:.88rem}
.seasons th{
  text-align:left;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--gold);font-weight:400;padding:0 0 20px;border-bottom:1px solid var(--line);
}
.seasons td{padding:24px 0;border-bottom:1px solid var(--line-soft);color:#b7b1a8;vertical-align:top}
.seasons td:first-child{font-family:var(--serif);font-size:1.2rem;color:var(--cream);width:32%}
@media(max-width:640px){
  .seasons thead{display:none}
  .seasons tr{display:block;padding:20px 0;border-bottom:1px solid var(--line-soft)}
  .seasons td{display:block;border:0;padding:4px 0}
  .seasons td:first-child{width:auto}
}

/* ============================================================
   MASONRY GALLERY
   ============================================================ */
.masonry{columns:3;column-gap:16px}
.masonry figure{
  break-inside:avoid;margin-bottom:16px;position:relative;overflow:hidden;cursor:pointer;
  border:1px solid var(--line-soft);
}
.masonry img{
  width:100%;display:block;filter:grayscale(.32) brightness(.8);
  transition:transform 1.5s var(--ease),filter .9s var(--ease);
}
.masonry figure:hover img{transform:scale(1.05);filter:grayscale(0) brightness(1)}
.masonry figcaption{
  position:absolute;inset:auto 0 0 0;padding:26px 22px 18px;
  background:linear-gradient(180deg,transparent,rgba(8,10,12,.92));
  font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
  opacity:0;transform:translateY(10px);transition:.55s var(--ease);
}
.masonry figure:hover figcaption{opacity:1;transform:none}
@media(max-width:900px){.masonry{columns:2}}
@media(max-width:560px){.masonry{columns:1}}

/* lightbox */
.lightbox{
  position:fixed;inset:0;z-index:1000;background:rgba(6,8,9,.97);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s;
  backdrop-filter:blur(12px);
}
.lightbox.open{opacity:1;visibility:visible}
.lightbox img{
  max-width:88vw;max-height:82vh;object-fit:contain;
  border:1px solid var(--line);box-shadow:0 40px 120px rgba(0,0,0,.7);
}
.lb-btn{
  position:absolute;background:none;border:1px solid var(--line-soft);
  width:52px;height:52px;cursor:pointer;color:var(--cream);
  display:flex;align-items:center;justify-content:center;font-size:1.1rem;
  transition:.4s var(--ease);
}
.lb-btn:hover{border-color:var(--gold);color:var(--gold);background:rgba(201,169,110,.08)}
.lb-prev{left:3vw}
.lb-next{right:3vw}
.lb-close{top:28px;right:3vw}
.lb-count{
  position:absolute;bottom:28px;left:50%;transform:translateX(-50%);
  font-size:.62rem;letter-spacing:.34em;color:var(--muted);
}

/* ============================================================
   FORMS
   ============================================================ */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 30px}
.field{display:flex;flex-direction:column;gap:10px;position:relative}
.field.full{grid-column:1/-1}
.field label{
  font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
}
.field input,.field select,.field textarea{
  background:transparent;border:0;border-bottom:1px solid var(--line-soft);
  padding:12px 2px;font-size:.95rem;font-weight:300;color:var(--cream);
  outline:none;transition:border-color .5s var(--ease);border-radius:0;
  font-family:var(--sans);
}
.field textarea{resize:vertical;min-height:110px;border:1px solid var(--line-soft);padding:14px}
.field select{cursor:pointer}
.field select option{background:var(--ink-2);color:var(--cream)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold)}
.field input::placeholder,.field textarea::placeholder{color:#5e666e}
.field.error input,.field.error select,.field.error textarea{border-color:#b4544a}
.field .err{
  font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:#c96b60;
  opacity:0;height:0;transition:.3s;
}
.field.error .err{opacity:1;height:auto}
.form-note{font-size:.74rem;color:#6f777f;margin-top:26px;letter-spacing:.04em}
.form-success{
  border:1px solid var(--gold-soft);padding:32px;background:rgba(201,169,110,.05);
  display:none;
}
.form-success.show{display:block;animation:fadeUp .7s var(--ease) both}
.form-success h3{color:var(--gold-2);margin-bottom:10px}
@media(max-width:640px){.form-grid{grid-template-columns:1fr}}

/* ============================================================
   INFO BLOCKS
   ============================================================ */
.info-item{padding:26px 0;border-bottom:1px solid var(--line-soft)}
.info-item .k{
  font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
  margin-bottom:10px;
}
.info-item .v{font-family:var(--serif);font-size:1.25rem;color:#ddd7cd;line-height:1.5}
.info-item .v a:hover{color:var(--gold)}

/* ============================================================
   CTA BAND
   ============================================================ */
.cta{
  position:relative;padding:clamp(90px,13vw,160px) 0;text-align:center;
  background-size:cover;background-position:center;isolation:isolate;overflow:hidden;
}
.cta::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(10,12,14,.9),rgba(10,12,14,.72));
}
.cta .h2{max-width:18ch;margin:0 auto 34px}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{border-top:1px solid var(--line);background:#08090b;padding:clamp(60px,8vw,90px) 0 34px}
.footer-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:44px}
.footer .brand{font-size:1.2rem;margin-bottom:22px;display:inline-block}
.footer p{font-size:.86rem;color:#79818a;max-width:34ch}
.footer h5{
  font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
  margin-bottom:22px;font-weight:400;font-family:var(--sans);
}
.footer li{margin-bottom:12px}
.footer li a{font-size:.86rem;color:#8b939b;transition:color .4s}
.footer li a:hover{color:var(--gold)}
.footer-bottom{
  margin-top:60px;padding-top:28px;border-top:1px solid var(--line-soft);
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:#5c646c;
}
@media(max-width:900px){.footer-top{grid-template-columns:1fr 1fr;gap:36px}}
@media(max-width:560px){.footer-top{grid-template-columns:1fr}}

/* ============================================================
   MISC
   ============================================================ */
.center{text-align:center}
.mt-l{margin-top:clamp(40px,6vw,72px)}
.mt-m{margin-top:32px}
.maxw{max-width:720px}
.maxw-c{margin-left:auto;margin-right:auto}
.sec-head{margin-bottom:clamp(44px,6vw,72px)}
.sec-head .h2{margin-bottom:18px}
.hr-gold{width:60px;height:1px;background:var(--gold);border:0;margin:26px 0}
.center .hr-gold{margin-left:auto;margin-right:auto}
/* ===== LUMEN STUDIO BRANDING (portfolio markers) ===== */
.lumen-credit { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; letter-spacing: 0; text-transform: none; }
.lumen-credit-text { opacity: 0.6; }
.lumen-credit-logo { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; opacity: 0.85; transition: opacity .2s ease; }
.lumen-credit-logo:hover { opacity: 1; }
.lumen-mark { width: 18px; height: 18px; border-radius: 4px; flex-shrink: 0; object-fit: cover; }
.lumen-credit-name { font-weight: 700; font-size: 11px; letter-spacing: 1.5px; }
.portfolio-disclaimer {
  max-width: 760px;
  margin: 40px auto 0;
  padding: 18px 22px;
  border-left: 3px solid var(--gold, #c9a96e);
  opacity: .55;
  font-size: 13px;
  line-height: 1.65;
  font-style: italic;
  color: inherit;
}
.portfolio-disclaimer a { color: inherit; text-decoration: underline; }
@media (max-width: 640px) {
  .lumen-credit-name { display: none; }
}
