/* ---------- Design tokens ---------- */
:root{
  --gold-1:#b8923f;
  --gold-2:#e3c583;
  --gold-3:#8a6a26;
  --gold-grad: linear-gradient(135deg,#c9a24b 0%,#f0d99a 45%,#a9812f 100%);
  --ink:#211d17;
  --charcoal:#3d382e;
  --grey:#6d6659;
  --cream:#faf6ee;
  --cream-2:#f3ecdd;
  --white:#ffffff;
  --line: rgba(33,29,23,0.1);
  --shadow: 0 10px 30px rgba(33,29,23,0.12);
  --radius: 4px;
  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Jost', 'Segoe UI', Helvetica, Arial, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--sans);
  color:var(--charcoal);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3{ font-family:var(--serif); color:var(--ink); margin:0 0 .4em; font-weight:600; }
p{ line-height:1.7; color:var(--grey); margin:0 0 1em; }
ul{ margin:0; padding:0; list-style:none; }
.center{ text-align:center; margin-left:auto; margin-right:auto; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-block;
  padding:.9rem 1.9rem;
  border-radius:2px;
  font-family:var(--sans);
  font-size:.85rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:500;
  border:1px solid transparent;
  transition:transform .25s ease, box-shadow .25s ease, background .25s ease, color .25s ease;
  cursor:pointer;
}
.btn-gold{ background:var(--gold-grad); color:var(--ink); box-shadow:var(--shadow); }
.btn-gold:hover{ transform:translateY(-2px); box-shadow:0 14px 34px rgba(138,106,38,.35); }
.btn-outline{ border-color:var(--gold-1); color:var(--ink); background:transparent; }
.btn-outline:hover{ background:var(--gold-1); color:var(--white); }
.btn-ghost{ color:var(--ink); font-size:.85rem; letter-spacing:.05em; }
.btn-lg{ padding:1.1rem 2.4rem; font-size:.9rem; }

/* ---------- Announce bar ---------- */
.announce-bar{
  background:var(--ink);
  color:var(--gold-2);
  text-align:center;
  font-size:.78rem;
  letter-spacing:.06em;
  padding:.55rem 1rem;
  text-transform:uppercase;
}
.announce-bar a{ color:var(--gold-2); text-decoration:underline; text-underline-offset:2px; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(250,246,238,.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.header-inner{
  max-width:1200px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between;
  padding:.5rem 1.5rem;
  gap:1rem;
}
.brand img{ height:56px; width:auto; }
.main-nav{ display:flex; gap:2rem; }
.main-nav a{
  font-size:.82rem; letter-spacing:.08em; text-transform:uppercase; color:var(--charcoal);
  position:relative; padding:.3rem 0;
}
.main-nav a::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--gold-1);
  transition:width .25s ease;
}
.main-nav a:hover::after{ width:100%; }
.header-cta{ display:flex; align-items:center; gap:1.3rem; }
.nav-toggle{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  width:34px; height:34px; background:none; border:none; cursor:pointer;
}
.nav-toggle span{ display:block; height:2px; background:var(--ink); border-radius:2px; }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  min-height:92vh;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  text-align:center;
  padding: 6rem 1.5rem 4rem;
}
.hero-bg{
  position:absolute; inset:0;
  background-size:cover; background-position:center 30%;
  transform:scale(1.02);
}
.hero-overlay{
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(17,14,9,.72) 0%, rgba(17,14,9,.55) 45%, rgba(17,14,9,.82) 100%);
}
.hero-content{ position:relative; z-index:2; max-width:760px; color:var(--white); }
.eyebrow{
  font-family:var(--sans); text-transform:uppercase; letter-spacing:.22em; font-size:.78rem;
  color:var(--gold-2); margin-bottom:1.1rem;
}
.hero h1{
  font-size:clamp(3.6rem,9vw,6.5rem);
  color:var(--white);
  margin:0;
  line-height:.95;
  background:var(--gold-grad);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent;
  filter: drop-shadow(0 2px 18px rgba(0,0,0,.35));
}
.hero-sub{
  font-family:var(--sans); text-transform:uppercase; letter-spacing:.28em; font-size:.9rem;
  color:var(--white); margin:.6rem 0 1.6rem;
}
.hero-rating{
  display:flex; align-items:center; justify-content:center; gap:.6rem;
  font-size:.85rem; color:var(--white); margin-bottom:1.4rem; letter-spacing:.03em;
}
.stars{ color:var(--gold-2); letter-spacing:.15em; }
.stars.big{ font-size:1.6rem; }
.hero-tag{
  color:rgba(255,255,255,.88); font-size:1.05rem; max-width:600px; margin:0 auto 2rem;
}
.hero-actions{ display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; margin-bottom:1.6rem; }
.hero-outline{ border-color:var(--white); }
.btn-outline{ }
.hero-content .btn-outline{ border-color:rgba(255,255,255,.6); color:var(--white); }
.hero-content .btn-outline:hover{ background:var(--white); color:var(--ink); }
.hero-location{ font-size:.85rem; color:rgba(255,255,255,.75); letter-spacing:.02em; }
.scroll-cue{
  position:absolute; bottom:1.6rem; left:50%; transform:translateX(-50%);
  color:var(--gold-2); font-size:1.4rem; z-index:2; animation:bob 2.2s ease-in-out infinite;
}
@keyframes bob{ 0%,100%{ transform:translate(-50%,0); } 50%{ transform:translate(-50%,8px); } }

/* ---------- Trust strip ---------- */
.trust-strip{
  background:var(--ink);
  color:var(--cream-2);
  display:flex; flex-wrap:wrap; justify-content:center; gap:2.5rem;
  padding:1.4rem 1.5rem;
  font-size:.85rem; letter-spacing:.04em;
}
.trust-item{ display:flex; align-items:center; gap:.5rem; white-space:nowrap; }
.trust-item span{ color:var(--gold-2); letter-spacing:.1em; }

/* ---------- Sections generic ---------- */
section{ padding:6rem 1.5rem; }
.section-eyebrow{
  text-transform:uppercase; letter-spacing:.22em; font-size:.78rem; color:var(--gold-3);
  font-weight:600; margin-bottom:.8rem;
}
.services h2, .gallery h2, .reviews h2{ font-size:clamp(2.2rem,4vw,2.9rem); }
.section-sub{ max-width:600px; margin:0 auto 1rem; }

/* ---------- About ---------- */
.about-grid{
  max-width:1160px; margin:0 auto;
  display:grid; grid-template-columns:.9fr 1.1fr; gap:4rem; align-items:center;
}
.about-image img{ border-radius:var(--radius); box-shadow:var(--shadow); aspect-ratio:4/5; object-fit:cover; }
.about-copy h2{ font-size:clamp(2rem,4vw,2.8rem); }
.about-badges{ display:flex; gap:2.2rem; margin-top:1.6rem; }
.badge strong{ display:block; font-family:var(--serif); font-size:1.8rem; color:var(--gold-3); }
.badge span{ font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; color:var(--grey); }

/* ---------- Services ---------- */
.services{ background:var(--cream-2); }
.services-grid{
  max-width:1160px; margin:3rem auto 0;
  display:grid; grid-template-columns:repeat(4,1fr); gap:1.6rem;
}
.service-card{
  background:var(--white); padding:2.2rem 1.6rem; border-radius:var(--radius);
  border:1px solid var(--line); text-align:center; transition:transform .25s ease, box-shadow .25s ease;
}
.service-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.service-card.featured{ border-color:var(--gold-1); box-shadow:0 12px 30px rgba(138,106,38,.16); }
.service-icon{ font-size:1.9rem; margin-bottom:.8rem; }
.service-card h3{ font-size:1.35rem; margin-bottom:.5rem; }
.service-card p{ font-size:.92rem; }

/* ---------- Academy ---------- */
.academy{
  background:var(--ink);
  color:var(--cream);
  text-align:center;
}
.academy-inner{ max-width:700px; margin:0 auto; }
.academy h2{ color:var(--white); font-size:clamp(2.1rem,4vw,2.8rem); }
.academy p{ color:rgba(250,246,238,.8); }
.academy .section-eyebrow{ color:var(--gold-2); }

/* ---------- Gallery ---------- */
.gallery-grid{
  max-width:1160px; margin:3rem auto 0;
  display:grid; grid-template-columns:repeat(3,1fr); gap:1.2rem;
}
.gallery-grid img{ border-radius:var(--radius); aspect-ratio:4/5; object-fit:cover; box-shadow:var(--shadow); transition:transform .4s ease; }
.gallery-grid img:hover{ transform:scale(1.02); }

/* ---------- Reviews ---------- */
.reviews{ background:var(--cream-2); text-align:center; }
.reviews-inner{ max-width:560px; margin:0 auto; }
.rating-hero{ display:flex; align-items:center; justify-content:center; gap:1.2rem; margin:1.6rem 0 2rem; }
.rating-number{ font-family:var(--serif); font-size:4rem; color:var(--gold-3); line-height:1; }
.reviews p{ margin:.2rem 0 0; }

/* ---------- Contact ---------- */
.contact-grid{
  max-width:1160px; margin:0 auto;
  display:grid; grid-template-columns:1fr 1fr; gap:3.5rem; align-items:stretch;
}
.contact h2{ font-size:clamp(2rem,4vw,2.8rem); }
.contact-list{ margin:1.6rem 0 1.4rem; }
.contact-list li{ display:flex; gap:.7rem; align-items:flex-start; margin-bottom:.8rem; font-size:.98rem; color:var(--charcoal); }
.contact-list a{ text-decoration:underline; text-underline-offset:2px; color:var(--charcoal); }
.social-row{ display:flex; gap:1.2rem; margin-bottom:2rem; }
.social-row a{
  border:1px solid var(--line); padding:.5rem 1.1rem; border-radius:2px; font-size:.8rem;
  letter-spacing:.05em; text-transform:uppercase;
}
.social-row a:hover{ border-color:var(--gold-1); color:var(--gold-3); }
.contact-map{ min-height:340px; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); }
.contact-map iframe{ width:100%; height:100%; min-height:340px; border:0; }

/* ---------- Footer ---------- */
.site-footer{
  background:var(--ink); color:rgba(250,246,238,.7);
  text-align:center; padding:3rem 1.5rem 6rem;
  font-size:.85rem;
}
.footer-logo{ height:64px; margin:0 auto 1rem; filter:brightness(0) invert(1) opacity(.9); }
.site-footer a{ color:var(--gold-2); }
.copyright{ margin-top:.8rem; font-size:.75rem; opacity:.6; }

/* ---------- Sticky mobile CTA ---------- */
.sticky-cta{
  position:fixed; left:0; right:0; bottom:0; z-index:200;
  background:var(--gold-grad); color:var(--ink);
  text-align:center; padding:.9rem; font-weight:600; letter-spacing:.04em;
  text-transform:uppercase; font-size:.85rem; box-shadow:0 -6px 20px rgba(0,0,0,.15);
  display:none;
}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .main-nav{ display:none; }
  .header-cta .btn-ghost{ display:none; }
  .nav-toggle{ display:flex; }
  .about-grid, .contact-grid{ grid-template-columns:1fr; }
  .services-grid{ grid-template-columns:repeat(2,1fr); }
  .gallery-grid{ grid-template-columns:1fr 1fr; }
  .sticky-cta{ display:block; }
  body{ padding-bottom:0; }
  section{ padding:4.5rem 1.3rem; }
}
@media (max-width:960px){
  .site-header.nav-open .main-nav{
    display:flex; position:absolute; top:100%; left:0; right:0;
    background:var(--cream); flex-direction:column; padding:1.2rem 1.5rem; gap:1.2rem;
    border-bottom:1px solid var(--line);
  }
}
@media (max-width:600px){
  .services-grid{ grid-template-columns:1fr; }
  .gallery-grid{ grid-template-columns:1fr; }
  .header-cta .btn-gold{ padding:.7rem 1.1rem; font-size:.75rem; }
  .brand img{ height:44px; }
  .hero{ padding-top:5rem; }
}
