@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400;1,600&family=Montserrat:wght@300;400;500&display=swap');

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  --gold: #c9a96e;
  --gold-light: #e8d5a3;
  --gold-dim: rgba(201,169,110,0.15);
  --dark: #0d0b08;
  --dark-2: #131108;
  --dark-3: #1b1710;
  --dark-4: #242018;
  --cream: #f5eedf;
  --muted: #9e9078;
  --serif: 'Cormorant Garamond', Georgia, serif;
  --sans: 'Montserrat', sans-serif;
}

html { scroll-behavior: smooth; }
body {
  background: var(--dark); color: var(--cream);
  font-family: var(--sans); font-weight: 300;
  overflow-x: hidden; min-height: 100vh;
}

/* ════════════════════
   KEYFRAMES
════════════════════ */
@keyframes revealUp   { from { opacity:0; transform:translateY(42px) }  to { opacity:1; transform:none } }
@keyframes revealLeft { from { opacity:0; transform:translateX(-32px) } to { opacity:1; transform:none } }
@keyframes fadeIn     { from { opacity:0 } to { opacity:1 } }
@keyframes shimmer    { 0%{background-position:-200% center} 100%{background-position:200% center} }
@keyframes pulse      { 0%,100%{opacity:1;transform:scaleY(1)} 50%{opacity:.2;transform:scaleY(.4)} }
@keyframes float      { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }
@keyframes curtainOut { from{transform:scaleY(1);transform-origin:top} to{transform:scaleY(0);transform-origin:top} }
@keyframes curtainIn  { from{transform:scaleY(0);transform-origin:bottom} to{transform:scaleY(1);transform-origin:bottom} }
@keyframes goldPulse  { 0%,100%{box-shadow:0 0 0 0 rgba(201,169,110,0)} 50%{box-shadow:0 0 28px 4px rgba(201,169,110,0.1)} }

/* ════════════════════
   SCROLL REVEAL
════════════════════ */
.reveal {
  opacity: 0; transform: translateY(38px);
  transition: opacity .85s cubic-bezier(.16,1,.3,1), transform .85s cubic-bezier(.16,1,.3,1);
}
.reveal.from-left  { transform: translateX(-38px); }
.reveal.from-right { transform: translateX(38px); }
.reveal.scale-in   { transform: scale(0.93); }
.reveal.visible    { opacity: 1; transform: none; }

.stagger > * {
  opacity: 0; transform: translateY(28px);
  transition: opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1);
}
.stagger.visible > *:nth-child(1) { transition-delay:.00s; opacity:1; transform:none }
.stagger.visible > *:nth-child(2) { transition-delay:.11s; opacity:1; transform:none }
.stagger.visible > *:nth-child(3) { transition-delay:.22s; opacity:1; transform:none }
.stagger.visible > *:nth-child(4) { transition-delay:.33s; opacity:1; transform:none }
.stagger.visible > *:nth-child(5) { transition-delay:.44s; opacity:1; transform:none }
.stagger.visible > *:nth-child(6) { transition-delay:.55s; opacity:1; transform:none }
.stagger.visible > *:nth-child(7) { transition-delay:.66s; opacity:1; transform:none }
.stagger.visible > *:nth-child(8) { transition-delay:.77s; opacity:1; transform:none }

/* Hero entrance */
.fade-up   { opacity:0; animation: revealUp 1s cubic-bezier(.16,1,.3,1) forwards; }
.fade-up-1 { animation-delay:.1s }
.fade-up-2 { animation-delay:.32s }
.fade-up-3 { animation-delay:.56s }
.fade-up-4 { animation-delay:.78s }
.fade-up-5 { animation-delay:1s }

/* ════════════════════
   CURSOR
════════════════════ */
.cursor-dot {
  width:6px; height:6px; border-radius:50%; background:var(--gold);
  position:fixed; pointer-events:none; z-index:9999;
  transition:transform .12s, opacity .3s; mix-blend-mode:screen; opacity:.9;
  transform:translate(-50%,-50%);
}
.cursor-ring {
  width:34px; height:34px; border-radius:50%;
  border:1px solid rgba(201,169,110,.45); position:fixed; pointer-events:none; z-index:9998;
  transition:transform .55s cubic-bezier(.16,1,.3,1), width .35s, height .35s, opacity .3s, border-color .3s;
  opacity:.5; transform:translate(-50%,-50%);
}
.cursor-ring.hovered { width:54px; height:54px; opacity:.22; border-color:rgba(201,169,110,.7); }
.cursor-ring.clicked { width:22px; height:22px; opacity:.9; }

/* ════════════════════
   PAGE CURTAIN
════════════════════ */
.page-curtain {
  position:fixed; inset:0; z-index:1000; background:var(--dark-2);
  transform-origin:top;
  animation: curtainOut .75s cubic-bezier(.76,0,.24,1) forwards;
}
.page-curtain.leaving {
  animation: curtainIn .5s cubic-bezier(.76,0,.24,1) forwards;
}

/* ════════════════════
   NAV
════════════════════ */
nav {
  position:fixed; top:0; left:0; right:0; z-index:200;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.4rem 5rem;
  transition:background .5s, padding .4s, border-color .5s, box-shadow .5s;
}
nav.scrolled {
  background:rgba(13,11,8,.97); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  padding:.95rem 5rem; border-bottom:1px solid rgba(201,169,110,.1);
  box-shadow:0 4px 40px rgba(0,0,0,.4);
}
nav.solid {
  background:rgba(13,11,8,.97); border-bottom:1px solid rgba(201,169,110,.1);
}
.nav-logo {
  font-family:var(--serif); font-size:1.55rem; font-weight:300;
  color:var(--gold); letter-spacing:.12em; text-decoration:none; flex-shrink:0;
  transition:opacity .3s, letter-spacing .4s;
  display:flex; align-items:center; gap:.5rem;
}
.nav-logo:hover { opacity:.75; letter-spacing:.16em; }
.nav-logo em { font-style:italic; font-weight:400; }
.nav-logo img { height:36px; width:auto; object-fit:contain; }

.nav-links { display:flex; gap:2.5rem; list-style:none; align-items:center; }
.nav-links a {
  font-size:.65rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--cream); text-decoration:none; opacity:.7;
  transition:opacity .3s, color .3s; position:relative;
}
.nav-links a::after {
  content:''; position:absolute; bottom:-4px; left:0; right:0; height:1px;
  background:var(--gold); transform:scaleX(0); transform-origin:left;
  transition:transform .38s cubic-bezier(.16,1,.3,1);
}
.nav-links a:hover, .nav-links a.active { opacity:1; color:var(--gold); }
.nav-links a:hover::after, .nav-links a.active::after { transform:scaleX(1); }

/* Hamburger */
.hamburger {
  display:none; flex-direction:column; gap:5px; cursor:pointer;
  background:none; border:none; padding:4px;
}
.hamburger span {
  display:block; width:24px; height:1px; background:var(--gold);
  transition:transform .4s cubic-bezier(.16,1,.3,1), opacity .3s, width .3s;
}
.hamburger.open span:nth-child(1) { transform:translateY(6px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity:0; width:0; }
.hamburger.open span:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }

.mobile-menu {
  display:none; position:fixed; inset:0; z-index:190;
  background:rgba(13,11,8,.99); flex-direction:column;
  align-items:center; justify-content:center; gap:2.5rem;
}
.mobile-menu.open { display:flex; animation:fadeIn .35s forwards; }
.mobile-menu a {
  font-family:var(--serif); font-size:2.4rem; font-weight:300;
  color:var(--cream); text-decoration:none; letter-spacing:.05em;
  transition:color .3s, letter-spacing .35s; position:relative;
}
.mobile-menu a::after {
  content:''; position:absolute; bottom:-4px;
  left:50%; right:50%; height:1px; background:var(--gold);
  transition:left .38s cubic-bezier(.16,1,.3,1), right .38s cubic-bezier(.16,1,.3,1);
}
.mobile-menu a:hover, .mobile-menu a.active { color:var(--gold); letter-spacing:.08em; }
.mobile-menu a:hover::after, .mobile-menu a.active::after { left:0; right:0; }

/* ════════════════════
   PAGE HERO
════════════════════ */
.page-hero {
  min-height:48vh; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center;
  padding:9rem 2rem 5rem; position:relative; overflow:hidden;
}
.page-hero-bg {
  position:absolute; inset:0;
  background:radial-gradient(ellipse at 50% 80%, rgba(201,169,110,.08) 0%, transparent 65%),
             linear-gradient(180deg,#0d0b08 0%,#181309 60%,#0d0b08 100%);
}
.page-hero-pattern {
  position:absolute; inset:0; opacity:.025;
  background-image:repeating-linear-gradient(45deg,var(--gold) 0,var(--gold) 1px,transparent 0,transparent 50%);
  background-size:20px 20px;
}
.page-hero-content { position:relative; z-index:2; }
.page-label {
  font-size:.6rem; letter-spacing:.4em; text-transform:uppercase;
  color:var(--gold); margin-bottom:1rem; opacity:.85; display:block;
}
.page-title {
  font-family:var(--serif); font-size:clamp(3rem,7vw,6rem);
  font-weight:300; line-height:.9; color:var(--cream);
}
.page-title em { font-style:italic; color:var(--gold); }

/* ════════════════════
   ORNAMENT
════════════════════ */
.ornament {
  display:flex; align-items:center; gap:1rem; justify-content:center; margin:2rem 0;
}
.ornament-line { width:50px; height:1px; background:var(--gold); opacity:.35; }
.ornament-diamond {
  width:5px; height:5px; background:var(--gold); transform:rotate(45deg); opacity:.6;
  transition:transform .6s cubic-bezier(.16,1,.3,1), opacity .4s;
}
.ornament:hover .ornament-diamond { transform:rotate(225deg); opacity:1; }

/* ════════════════════
   SECTION BASICS
════════════════════ */
.section-label {
  font-size:.58rem; letter-spacing:.4em; text-transform:uppercase;
  color:var(--gold); margin-bottom:.8rem; opacity:.8; display:block;
}
.section-title {
  font-family:var(--serif); font-size:clamp(2.2rem,4vw,3.5rem);
  font-weight:300; line-height:1; color:var(--cream); margin-bottom:1.2rem;
}
.section-title em { font-style:italic; color:var(--gold); }

/* ════════════════════
   BUTTONS
════════════════════ */
.btn-primary {
  display:inline-block; padding:.9rem 2.4rem; background:var(--gold); color:var(--dark);
  font-size:.62rem; letter-spacing:.25em; text-transform:uppercase;
  text-decoration:none; font-family:var(--sans);
  transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s;
  position:relative; overflow:hidden;
}
.btn-primary::before {
  content:''; position:absolute; inset:0; background:var(--gold-light);
  transform:translateX(-101%); transition:transform .42s cubic-bezier(.16,1,.3,1);
}
.btn-primary:hover { transform:translateY(-2px); box-shadow:0 10px 30px rgba(201,169,110,.22); }
.btn-primary:hover::before { transform:translateX(0); }
.btn-primary > * { position:relative; z-index:1; }

.btn-outline {
  display:inline-block; padding:.9rem 2.4rem;
  border:1px solid rgba(201,169,110,.4); color:var(--gold);
  font-size:.62rem; letter-spacing:.25em; text-transform:uppercase;
  text-decoration:none; font-family:var(--sans);
  transition:border-color .35s, transform .3s cubic-bezier(.16,1,.3,1);
  position:relative; overflow:hidden;
}
.btn-outline::before {
  content:''; position:absolute; inset:0; background:rgba(201,169,110,.07);
  transform:translateX(-101%); transition:transform .38s cubic-bezier(.16,1,.3,1);
}
.btn-outline:hover { border-color:var(--gold); transform:translateY(-1px); }
.btn-outline:hover::before { transform:translateX(0); }

/* ════════════════════
   FOOTER
════════════════════ */
footer {
  background:var(--dark); border-top:1px solid rgba(201,169,110,.1);
  padding:3rem 5rem;
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:2rem;
}
.footer-logo {
  font-family:var(--serif); font-size:1.3rem; color:var(--gold);
  font-weight:300; letter-spacing:.1em;
}
.footer-logo em { font-style:italic; }
.footer-copy { font-size:.58rem; letter-spacing:.15em; color:var(--muted); text-align:center; line-height:1.8; }
.footer-social { display:flex; gap:1.5rem; justify-content:flex-end; }
.footer-social a {
  font-size:.58rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--muted); text-decoration:none; transition:color .3s; position:relative;
}
.footer-social a::after {
  content:''; position:absolute; bottom:-3px; left:0; right:100%; height:1px; background:var(--gold);
  transition:right .38s cubic-bezier(.16,1,.3,1);
}
.footer-social a:hover { color:var(--gold); }
.footer-social a:hover::after { right:0; }

/* ════════════════════
   RESPONSIVE
════════════════════ */
@media (max-width:900px) {
  nav { padding:1.2rem 1.8rem; }
  nav.scrolled { padding:.9rem 1.8rem; }
  .nav-links { display:none; }
  .hamburger { display:flex; }
  footer { grid-template-columns:1fr; text-align:center; padding:2.5rem 2rem; }
  .footer-social { justify-content:center; }
  .cursor-dot, .cursor-ring { display:none; }
}