:root{
  --bg-void:#17130f;
  --bg-panel:#231d17;
  --bg-panel-2:#2c241c;
  --leather:#a05a34;
  --leather-deep:#7a4326;
  --brass:#c2984f;
  --cream:#efe6d6;
  --stone:#948a7c;
  --line:#3a3128;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg-void);
  color:var(--cream);
  font-family:'Work Sans', sans-serif;
  font-weight:400;
  line-height:1.55;
}
h1,h2,h3,.display{
  font-family:'Fraunces', serif;
  font-weight:500;
  letter-spacing:-0.01em;
}
a{color:inherit;}
img{display:block; width:100%; height:100%; object-fit:cover;}
.wrap{max-width:1120px; margin:0 auto; padding:0 28px;}
a:focus-visible, button:focus-visible{ outline:2px solid var(--brass); outline-offset:3px; }
@media (prefers-reduced-motion: reduce){ *{animation:none !important; transition:none !important;} }

/* ---------- Nav ---------- */
header{
  position:relative; top:0; left:0; right:0; z-index:50;
  background:var(--bg-void);
  border-bottom:1px solid var(--line);
  padding:22px 0;
}
header.overlay{
  position:fixed;
  background:linear-gradient(to bottom, rgba(23,19,15,0.92), rgba(23,19,15,0));
  border-bottom:none;
  padding:22px 0 40px;
}
nav{display:flex; align-items:center; justify-content:space-between;}
.wordmark{font-family:'Fraunces', serif; font-size:1.15rem; letter-spacing:0.03em; text-transform:uppercase; text-decoration:none;}
.wordmark span{color:var(--brass);}
.navlinks{display:flex; gap:28px; font-size:0.85rem; letter-spacing:0.04em; text-transform:uppercase;}
.navlinks a{opacity:0.85; text-decoration:none; padding-bottom:4px; border-bottom:1px solid transparent;}
.navlinks a:hover, .navlinks a.active{border-color:var(--brass); opacity:1;}
.nav-cta{
  font-size:0.8rem; text-transform:uppercase; letter-spacing:0.05em;
  background:var(--brass); color:#17130f; padding:10px 20px; border-radius:2px;
  text-decoration:none; font-weight:600;
}
@media (max-width:820px){ .navlinks{display:none;} }

/* ---------- Page header banner (non-home pages) ---------- */
.page-banner{
  padding:170px 0 70px;
  border-bottom:1px solid var(--line);
}
.page-banner .eyebrow{ margin-bottom:16px; }
.page-banner h1{ font-size:clamp(2.2rem, 5vw, 3.2rem); max-width:20ch; }
.page-banner p{ color:var(--stone); margin-top:18px; max-width:56ch; font-size:1.05rem; }

/* ---------- Hero (home only) ---------- */
.hero{ position:relative; height:100vh; min-height:640px; display:flex; align-items:flex-end; }
.hero-img{position:absolute; inset:0;}
.hero-img img{filter:saturate(0.92) brightness(0.72); object-position:center 20%;}
.hero-scrim{ position:absolute; inset:0; background:linear-gradient(to top, var(--bg-void) 4%, rgba(23,19,15,0.35) 55%, rgba(23,19,15,0.55) 100%); }
.hero-content{position:relative; padding-bottom:88px; width:100%;}
.eyebrow{ font-size:0.8rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--brass); margin-bottom:18px; display:flex; align-items:center; gap:12px; }
.eyebrow::before{content:""; width:28px; height:1px; background:var(--brass); display:inline-block;}
.hero h1{ font-size:clamp(2.6rem, 7vw, 5rem); max-width:14ch; line-height:1.02; }
.hero-sub{ margin-top:22px; max-width:38ch; color:var(--stone); font-size:1.05rem; }
.hero-actions{margin-top:38px; display:flex; gap:18px; flex-wrap:wrap;}
.btn-primary{
  background:var(--brass); color:#17130f; font-weight:600;
  padding:15px 30px; text-decoration:none; border-radius:2px;
  font-size:0.9rem; letter-spacing:0.03em; text-transform:uppercase;
  border:1px solid var(--brass); display:inline-block; cursor:pointer;
}
.btn-ghost{
  border:1px solid var(--line); color:var(--cream);
  padding:15px 30px; text-decoration:none; border-radius:2px;
  font-size:0.9rem; letter-spacing:0.03em; text-transform:uppercase; display:inline-block;
}
.btn-ghost:hover{border-color:var(--brass);}

/* ---------- Razor divider ---------- */
.razor-rule{ display:flex; align-items:center; gap:14px; max-width:1120px; margin:0 auto; padding:0 28px; }
.razor-rule .line{flex:1; height:1px; background:var(--line);}
.razor-rule .mark{ width:7px; height:7px; border-radius:50%; background:var(--brass); }

/* ---------- Section shell ---------- */
section{padding:100px 0;}
section.tight{padding:70px 0;}
.section-head{max-width:640px; margin-bottom:56px;}
.section-head .eyebrow{margin-bottom:14px;}
.section-head h2{font-size:clamp(1.9rem, 3.4vw, 2.6rem);}
.section-head p{color:var(--stone); margin-top:16px; font-size:1.02rem;}

/* ---------- The Shop / About grid ---------- */
.shop-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.shop-copy p{color:var(--stone); margin-bottom:18px; font-size:1.02rem;}
.shop-copy p:last-child{margin-bottom:0;}
.shop-img{border-radius:3px; overflow:hidden; aspect-ratio:3/4; border:1px solid var(--line);}
.shop-img img{object-position:center center;}
@media (max-width:840px){ .shop-grid{grid-template-columns:1fr;} .shop-img{order:-1;} }

/* ---------- Ticket cards ---------- */
.ticket-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:22px; }
@media (max-width:840px){ .ticket-grid{grid-template-columns:1fr;} }
.ticket{ position:relative; background:var(--bg-panel); border:1px dashed var(--line); border-radius:2px; padding:30px 26px 26px; }
.ticket::before, .ticket::after{ content:""; position:absolute; width:16px; height:16px; background:var(--bg-void); border-radius:50%; top:50%; transform:translateY(-50%); }
.ticket::before{left:-9px;} .ticket::after{right:-9px;}
.ticket .num{ font-family:'Fraunces', serif; color:var(--brass); font-size:0.8rem; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:10px; display:block; }
.ticket h3{font-size:1.3rem; margin-bottom:8px;}
.ticket .price{ font-family:'Fraunces', serif; color:var(--cream); font-size:1.6rem; margin-bottom:14px; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.ticket .price span{ font-size:0.8rem; color:var(--brass); font-family:'Work Sans', sans-serif; text-transform:uppercase; letter-spacing:0.04em; font-weight:600; border:1px solid var(--leather-deep); border-radius:2px; padding:2px 8px; }
.ticket p.desc{color:var(--stone); font-size:0.92rem;}

/* ---------- Service category blocks (Services page) ---------- */
.service-block{ display:grid; grid-template-columns:0.9fr 1.1fr; gap:56px; align-items:start; padding:56px 0; border-bottom:1px solid var(--line); }
.service-block:last-child{border-bottom:none;}
.service-block h3{font-size:1.6rem; margin-bottom:14px;}
.service-block .num{ font-family:'Fraunces', serif; color:var(--brass); font-size:0.8rem; letter-spacing:0.1em; text-transform:uppercase; margin-bottom:12px; display:block; }
.service-block p{color:var(--stone); font-size:1rem;}
@media (max-width:840px){ .service-block{grid-template-columns:1fr; gap:20px;} }

/* ---------- Reviews ---------- */
.reviews{background:var(--bg-panel); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.review-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:36px; }
@media (max-width:840px){ .review-row{grid-template-columns:1fr;} }
.stars{color:var(--brass); letter-spacing:2px; margin-bottom:14px; font-size:0.95rem;}
.review blockquote{font-family:'Fraunces', serif; font-size:1.08rem; line-height:1.5; margin-bottom:14px;}
.review cite{color:var(--stone); font-style:normal; font-size:0.88rem;}
.review-grid-full{ display:grid; grid-template-columns:repeat(2,1fr); gap:28px; }
@media (max-width:840px){ .review-grid-full{grid-template-columns:1fr;} }
.review-card{ background:var(--bg-panel); border:1px solid var(--line); border-radius:3px; padding:32px; }

/* ---------- FAQ ---------- */
.faq-item{ border-bottom:1px solid var(--line); padding:22px 0; }
.faq-item h3{font-size:1.08rem; font-weight:500; margin-bottom:10px;}
.faq-item p{color:var(--stone); font-size:0.96rem; max-width:60ch;}

/* ---------- Gallery ---------- */
.gallery-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:18px; }
.gallery-grid .g-item{ border-radius:3px; overflow:hidden; border:1px solid var(--line); aspect-ratio:3/4; }
.gallery-grid .g-item.wide{ grid-column:span 2; aspect-ratio:16/9; }
@media (max-width:720px){ .gallery-grid{grid-template-columns:1fr;} .gallery-grid .g-item.wide{grid-column:span 1;} }

/* ---------- Book / hours / location / contact form ---------- */
.book-grid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:64px; }
@media (max-width:840px){ .book-grid{grid-template-columns:1fr;} }
.book-panel{ background:var(--bg-panel); border:1px solid var(--line); border-radius:3px; padding:40px; }
.hours-row{display:flex; justify-content:space-between; padding:11px 0; border-bottom:1px solid var(--line); font-size:0.95rem;}
.hours-row:last-child{border-bottom:none;}
.hours-row .day{color:var(--stone);}
.book-cta{ display:block; text-align:center; margin-top:26px; background:var(--brass); color:#17130f; font-weight:600; padding:16px; text-decoration:none; border-radius:2px; font-size:0.9rem; letter-spacing:0.03em; text-transform:uppercase; border:none; width:100%; cursor:pointer; }
.addr h3{font-size:1.3rem; margin-bottom:14px;}
.addr p{color:var(--stone); margin-bottom:6px;}
.addr .tag{ display:inline-block; margin-top:18px; font-size:0.8rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--brass); border:1px solid var(--leather-deep); padding:6px 12px; border-radius:2px; }

/* ---------- Contact form ---------- */
.form-field{margin-bottom:20px;}
.form-field label{display:block; font-size:0.82rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--brass); margin-bottom:8px;}
.form-field input, .form-field textarea{
  width:100%; background:var(--bg-void); border:1px solid var(--line); color:var(--cream);
  padding:13px 14px; border-radius:2px; font-family:'Work Sans', sans-serif; font-size:0.95rem;
}
.form-field textarea{resize:vertical; min-height:110px;}
.form-field input:focus, .form-field textarea:focus{outline:none; border-color:var(--brass);}

/* ---------- Footer ---------- */
footer{padding:48px 0; text-align:center; color:var(--stone); font-size:0.85rem;}
footer .wordmark{justify-content:center; display:flex; margin-bottom:10px; color:var(--cream);}
footer .foot-links{margin-top:14px; display:flex; gap:18px; justify-content:center; flex-wrap:wrap; font-size:0.82rem;}
footer .foot-links a{text-decoration:none; opacity:0.8;}
footer .foot-links a:hover{opacity:1; color:var(--brass);}
