/* ═══════════════════════════════════════════════════════════
   MAISON DORÉE — Shared Stylesheet
   ═══════════════════════════════════════════════════════════ */

/* ── TOKENS ─────────────────────────────────────────────── */
:root {
  --gold:       #C9A96E;
  --gold-lt:    #E2C898;
  --gold-dk:    #9A7B4F;
  --gold-glow:  rgba(201,169,110,.16);
  --black:      #080808;
  --dark:       #111111;
  --dark2:      #181818;
  --dark3:      #222222;
  --white:      #FAF8F3;
  --w7:         rgba(250,248,243,.7);
  --w6:         rgba(250,248,243,.6);
  --w4:         rgba(250,248,243,.4);
  --w2:         rgba(250,248,243,.2);
  --w1:         rgba(250,248,243,.1);
  --glass:      rgba(250,248,243,.04);
  --glass-b:    rgba(201,169,110,.18);
  --sv:         128px;
  --ff-d:       'Playfair Display', Georgia, serif;
  --ff-e:       'Cormorant Garamond', Georgia, serif;
  --ff-b:       'Inter', system-ui, sans-serif;
  --eo:         cubic-bezier(.22,1,.36,1);
  --eio:        cubic-bezier(.4,0,.2,1);
}

/* ── RESET ───────────────────────────────────────────────── */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html  { scroll-behavior:smooth; font-size:16px; }
body  {
  background:var(--black); color:var(--white);
  font-family:var(--ff-b); font-weight:300; line-height:1.7;
  overflow-x:hidden; cursor:none;
}
img    { display:block; max-width:100%; }
a      { text-decoration:none; color:inherit; }
button { cursor:none; border:none; background:none; font-family:inherit; color:inherit; }

/* ── CURSOR ──────────────────────────────────────────────── */
#cur-dot {
  position:fixed; width:8px; height:8px;
  background:var(--gold); border-radius:50%;
  pointer-events:none; z-index:99999;
  transform:translate(-50%,-50%);
  transition:width .2s, height .2s, opacity .2s;
}
#cur-ring {
  position:fixed; width:38px; height:38px;
  border:1px solid rgba(201,169,110,.5); border-radius:50%;
  pointer-events:none; z-index:99998;
  transform:translate(-50%,-50%);
  transition:border-color .3s;
}
body.ch #cur-dot  { width:14px; height:14px; opacity:.7; }
body.ch #cur-ring { border-color:var(--gold); transform:translate(-50%,-50%) scale(1.8); }

/* ── LOADER ──────────────────────────────────────────────── */
#loader {
  position:fixed; inset:0; background:var(--black);
  z-index:9999; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:22px;
  transition:opacity .9s var(--eo), visibility .9s;
}
#loader.out { opacity:0; visibility:hidden; pointer-events:none; }
.ld-logo {
  font-family:var(--ff-d); font-size:clamp(1.8rem,4.5vw,3.4rem);
  color:var(--gold); letter-spacing:.28em; text-transform:uppercase;
  animation:fadeUp .9s var(--eo) both;
}
.ld-sub {
  font-family:var(--ff-e); font-size:.85rem; font-style:italic;
  letter-spacing:.3em; color:var(--gold-dk);
  animation:fadeUp .9s var(--eo) .12s both;
}
.ld-bar-wrap { width:200px; height:1px; background:var(--w1); animation:fadeIn .5s .35s both; }
.ld-bar { height:100%; width:0%; background:linear-gradient(90deg,transparent,var(--gold),transparent); transition:width .06s linear; }
.ld-pct { font-size:.62rem; letter-spacing:.3em; color:var(--gold-dk); animation:fadeIn .5s .35s both; }

/* ── NAV ─────────────────────────────────────────────────── */
#nav {
  position:fixed; top:0; left:0; right:0; z-index:900;
  display:flex; align-items:center; justify-content:space-between;
  padding:30px 64px;
  transition:padding .5s var(--eio), background .5s, border-color .5s;
  border-bottom:1px solid transparent;
}
#nav.scrolled {
  background:rgba(8,8,8,.94); backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  padding:18px 64px; border-color:rgba(201,169,110,.1);
}
#nav.solid {
  background:rgba(8,8,8,.96); border-color:rgba(201,169,110,.1);
}
.nav-brand { display:flex; flex-direction:column; gap:2px; }
.nav-logo {
  font-family:var(--ff-d); font-size:1.4rem; font-weight:600;
  color:var(--gold); letter-spacing:.12em; text-transform:uppercase;
}
.nav-tagline {
  font-family:var(--ff-e); font-size:.6rem; font-style:italic;
  letter-spacing:.35em; color:var(--gold-dk); text-transform:uppercase;
}
.nav-links { display:flex; gap:44px; list-style:none; }
.nav-links a {
  font-size:.7rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--w6); transition:color .3s; position:relative; padding-bottom:4px;
}
.nav-links a::after {
  content:''; position:absolute; bottom:0; left:0;
  width:0; height:1px; background:var(--gold); transition:width .3s;
}
.nav-links a:hover,
.nav-links a.active { color:var(--gold); }
.nav-links a.active::after,
.nav-links a:hover::after { width:100%; }
.nav-cta {
  font-size:.7rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--gold); border:1px solid rgba(201,169,110,.4);
  padding:12px 28px; transition:all .3s;
}
.nav-cta:hover { background:var(--gold); color:var(--black); }
.nav-ham { display:none; flex-direction:column; gap:6px; cursor:none; }
.nav-ham span { display:block; width:26px; height:1px; background:var(--gold); transition:all .3s; }

/* ── MOBILE MENU ─────────────────────────────────────────── */
#mob {
  position:fixed; inset:0; background:var(--black); z-index:998;
  display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:32px;
  opacity:0; visibility:hidden; transition:opacity .5s var(--eo), visibility .5s;
}
#mob.open { opacity:1; visibility:visible; }
.mob-x {
  position:absolute; top:28px; right:28px;
  font-size:1.5rem; color:var(--gold); line-height:1;
}
#mob a {
  font-family:var(--ff-d); font-size:2.5rem; font-weight:400;
  color:var(--w6); transition:color .25s;
}
#mob a:hover { color:var(--gold); }

/* ── STRIP ───────────────────────────────────────────────── */
.strip {
  background:var(--gold); padding:26px 64px;
  display:flex; align-items:center; justify-content:center;
  gap:52px; flex-wrap:wrap;
}
.si { display:flex; align-items:center; gap:14px; white-space:nowrap; }
.si svg { width:19px; height:19px; stroke:rgba(8,8,8,.6); fill:none; stroke-width:1.5; flex-shrink:0; }
.si span { font-size:.68rem; letter-spacing:.28em; text-transform:uppercase; color:var(--black); font-weight:500; }
.sd { width:1px; height:18px; background:rgba(8,8,8,.18); }

/* ── COMMON LAYOUT ───────────────────────────────────────── */
section { padding:var(--sv) 0; }
.ctr { max-width:1300px; margin:0 auto; padding:0 64px; }

.s-label {
  display:inline-flex; align-items:center; gap:14px;
  font-size:.63rem; letter-spacing:.48em; text-transform:uppercase;
  color:var(--gold); margin-bottom:18px;
}
.s-label::after { content:''; display:block; width:50px; height:1px; background:var(--gold); opacity:.5; }
.s-label.center { justify-content:center; }
.s-label.center::before { content:''; display:block; width:50px; height:1px; background:var(--gold); opacity:.5; }
.s-label.center::after { display:none; }

.s-title {
  font-family:var(--ff-d);
  font-size:clamp(2rem,3.8vw,3.4rem);
  font-weight:400; line-height:1.15; letter-spacing:-.01em;
}
.s-title em { font-style:italic; color:var(--gold); }
.s-body {
  font-family:var(--ff-e); font-size:1.1rem; font-style:italic;
  color:var(--w6); line-height:1.85; margin-top:20px;
}

/* ── BUTTONS ─────────────────────────────────────────────── */
.btn-gold {
  display:inline-flex; align-items:center; gap:12px;
  font-size:.72rem; letter-spacing:.24em; text-transform:uppercase;
  font-weight:500; color:var(--black); background:var(--gold);
  padding:18px 42px; transition:all .3s;
}
.btn-gold:hover {
  background:var(--gold-lt);
  box-shadow:0 18px 48px rgba(201,169,110,.26);
  transform:translateY(-2px);
}
.btn-outline {
  display:inline-flex; align-items:center; gap:12px;
  font-size:.72rem; letter-spacing:.24em; text-transform:uppercase;
  font-weight:400; color:var(--white); border:1px solid var(--w2);
  padding:18px 42px; transition:all .3s;
}
.btn-outline:hover { border-color:var(--gold); color:var(--gold); transform:translateY(-2px); }
.btn-ghost {
  display:inline-flex; align-items:center; gap:12px;
  font-size:.7rem; letter-spacing:.24em; text-transform:uppercase;
  font-weight:400; color:var(--gold); border:1px solid rgba(201,169,110,.35);
  padding:14px 32px; transition:all .3s;
}
.btn-ghost:hover { background:var(--gold); color:var(--black); }

/* ── PAGE HERO (inner pages) ─────────────────────────────── */
.pg-hero {
  position:relative; height:56vh; min-height:420px;
  display:flex; align-items:flex-end; justify-content:flex-start;
  overflow:hidden;
}
.pg-hero-bg {
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  transform:scale(1.06);
}
.pg-hero-bg::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(8,8,8,.3) 0%,rgba(8,8,8,.65) 60%,rgba(8,8,8,.88) 100%);
}
.pg-hero-content {
  position:relative; z-index:2; padding:0 64px 60px;
}
.pg-crumb {
  font-size:.62rem; letter-spacing:.32em; text-transform:uppercase;
  color:var(--w4); margin-bottom:16px; display:flex; align-items:center; gap:10px;
}
.pg-crumb a { color:var(--gold-dk); transition:color .3s; }
.pg-crumb a:hover { color:var(--gold); }
.pg-crumb span { color:var(--w2); }
.pg-eyebrow {
  font-size:.63rem; letter-spacing:.44em; text-transform:uppercase;
  color:var(--gold); margin-bottom:14px;
  display:flex; align-items:center; gap:14px;
}
.pg-eyebrow::after { content:''; display:block; width:40px; height:1px; background:var(--gold); opacity:.6; }
.pg-title {
  font-family:var(--ff-d);
  font-size:clamp(2.4rem,5vw,4.2rem);
  font-weight:400; line-height:1.08; letter-spacing:-.02em; color:var(--white);
}
.pg-title em { font-style:italic; color:var(--gold); }
.pg-sub {
  font-family:var(--ff-e); font-size:1.1rem; font-style:italic;
  color:var(--w6); margin-top:14px; line-height:1.7;
}

/* ── SCROLL REVEAL ───────────────────────────────────────── */
.rv  { opacity:0; transform:translateY(44px); transition:opacity .85s var(--eo), transform .85s var(--eo); }
.rvl { opacity:0; transform:translateX(-44px); transition:opacity .85s var(--eo), transform .85s var(--eo); }
.rvr { opacity:0; transform:translateX(44px);  transition:opacity .85s var(--eo), transform .85s var(--eo); }
.rv.in, .rvl.in, .rvr.in { opacity:1; transform:none; }

/* ── FOOTER ──────────────────────────────────────────────── */
footer {
  background:var(--black); padding:88px 0 44px;
  border-top:1px solid rgba(201,169,110,.1);
}
.foot-grid {
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr;
  gap:56px; margin-bottom:60px;
}
.foot-logo { display:block; margin-bottom:18px; }
.foot-brand p {
  font-family:var(--ff-e); font-size:.98rem; font-style:italic;
  color:var(--w4); line-height:1.85; max-width:270px;
}
.foot-col h5 {
  font-size:.62rem; letter-spacing:.3em; text-transform:uppercase;
  color:var(--gold); margin-bottom:22px;
}
.foot-links { list-style:none; display:flex; flex-direction:column; gap:12px; }
.foot-links a {
  font-family:var(--ff-e); font-size:.98rem;
  color:var(--w4); transition:color .3s;
}
.foot-links a:hover { color:var(--gold); }
.foot-bottom {
  display:flex; align-items:center; justify-content:space-between;
  padding-top:36px; border-top:1px solid rgba(201,169,110,.1);
  flex-wrap:wrap; gap:12px;
}
.foot-bottom p { font-size:.68rem; letter-spacing:.1em; color:rgba(250,248,243,.2); }

/* ── KEYFRAMES ───────────────────────────────────────────── */
@keyframes fadeUp {
  from { opacity:0; transform:translateY(22px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes fadeIn {
  from { opacity:0; } to { opacity:1; }
}

/* ── REDUCED MOTION ──────────────────────────────────────── */
@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

/* ── RESPONSIVE ──────────────────────────────────────────── */
@media (max-width:1100px) {
  :root { --sv:90px; }
  #nav, #nav.scrolled { padding-left:32px; padding-right:32px; }
  .ctr { padding:0 32px; }
  .nav-links, .nav-cta { display:none; }
  .nav-ham { display:flex; }
  .foot-grid { grid-template-columns:1fr 1fr; gap:40px; }
  .pg-hero-content { padding:0 32px 52px; }
  .strip { gap:24px; padding:20px 32px; flex-wrap:wrap; }
}
@media (max-width:768px) {
  :root { --sv:64px; }
  #nav, #nav.scrolled { padding:16px 20px; }
  .ctr { padding:0 20px; }
  .pg-hero-content { padding:0 20px 40px; }
  .pg-hero { height:46vh; min-height:320px; }
  .foot-grid { grid-template-columns:1fr; gap:32px; }
  .foot-bottom { flex-direction:column; text-align:center; gap:12px; }
  .strip { display:none; }
  /* ensure nothing overflows */
  section, header, footer { max-width:100vw; overflow-x:hidden; }
}
@media (max-width:480px) {
  :root { --sv:56px; }
  #nav, #nav.scrolled { padding:14px 16px; }
  .ctr { padding:0 16px; }
  .pg-hero { height:42vh; min-height:280px; }
  .pg-hero-content { padding:0 16px 32px; }
  .pg-title { font-size:clamp(2rem,8vw,3rem); }
  .foot-grid { gap:28px; }
}
