:root {
  --bg: #343434;
  --bg-alt: #141418;
  --ink: #f5f5f2;
  --accent: #66001a;
  --accent-glow: #d40436;
  --line: #2a2a33;
  --focus: var(--accent);
  --radius: 2px;
  --font-body: 'Cinzel', 'Garamond', serif;
  --font-display: 'Cormorant Garamond', 'Cinzel', serif;
}

/* Basic Reset */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; font-family: var(--font-body); background: var(--bg); color: var(--ink); line-height: 1.5; -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--accent); text-decoration: none; }
a:hover, a:focus { color: var(--accent-glow); }

/* Header */
.site-header { display:flex; justify-content:space-between; align-items:center; padding: .75rem 1.25rem; background:rgba(12,12,15,.85); backdrop-filter: blur(6px); position:sticky; top:0; z-index:1000; border-bottom:1px solid var(--line); }
.site-header.minimal { position:static; background:var(--bg-alt); }
.brand { display:flex; gap:.75rem; align-items:center; }
.brand.small h1 { font-size:1.25rem; }
.logo { width:48px; height:auto; filter: drop-shadow(0 0 4px #000); }
.site-header h1 { margin:0; font-family: var(--font-display); font-weight:400; letter-spacing:2px; font-size:1.5rem; }
.site-header h1 span { color: var(--accent); }

.main-nav ul { list-style:none; display:flex; gap:1.25rem; margin:0; padding:0; }
.main-nav a { font-weight:500; letter-spacing:.5px; }
.main-nav a.book-link { padding:.4rem .9rem; border:1px solid var(--accent); border-radius:var(--radius); }
.main-nav a.book-link:hover { background:var(--accent); color:var(--ink); }
.main-nav a.active { background:var(--accent); }

.nav-toggle { display:none; background:none; border:1px solid var(--line); color:var(--ink); font-size:1.1rem; padding:.4rem .6rem; }

@media (max-width: 760px){
  .main-nav ul { position:absolute; top:100%; right:0; background:var(--bg-alt); flex-direction:column; padding:1rem; min-width:180px; border:1px solid var(--line); display:none; }
  .main-nav ul.open { display:flex; }
  .nav-toggle { display:inline-block; }
}

/* Hero */
.hero {background: var(--bg-alt) !important; min-height:70vh; position:relative; display:flex; align-items:center; justify-content:center; text-align:center; overflow:hidden; }
.hero::after {display: none !important;}
.hero-inner { position:relative; padding:2rem 1rem; max-width:720px; }
.hero h2 { font-family:var(--font-display); font-size:clamp(2.5rem,7vw,4.5rem); margin:.5rem 0; font-weight:400; letter-spacing:1px; }
.tagline { font-size:1.1rem; opacity:.85; }
.cta { display:inline-block; margin-top:1rem; background:var(--accent); color:var(--ink); padding:.75rem 1.5rem; border-radius:var(--radius); font-weight:600; letter-spacing:.5px; }
.cta:hover { background:var(--accent-glow); }

/* Sections */
.section { padding:4.5rem 1.25rem 3.5rem; max-width:1200px; margin:0 auto; }
.section-head { display:flex; flex-direction:column; align-items:flex-start; margin-bottom:2rem; }
.section-head h2 { font-family:var(--font-display); font-size:2.3rem; margin:0 0 .4rem; font-weight:500; letter-spacing:1px; }
.divider { width:90px; height:2px; background:var(--accent); box-shadow:0 0 6px var(--accent-glow); }

/* About */
.about-grid { display:grid; gap:2.5rem; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); align-items:start; }
.about-text p { margin-top:0; }
.focus-list { list-style: square; padding-left:1.25rem; display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:.35rem .75rem; font-size:.95rem; }
.about-img { margin:0; border:1px solid var(--line); background:#101015; padding:.5rem; }
.about-img img { border:1px solid var(--line); }
.about-img figcaption { font-size:.7rem; opacity:.6; margin-top:.35rem; }
.inline-book { display:inline-block; margin-top:1rem; font-weight:600; }

/* Portfolio */
.filters { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.5rem; }
.filters .filter { background:#18181d; border:1px solid var(--line); color:var(--ink); padding:.45rem .9rem; font-size:.8rem; letter-spacing:.5px; text-transform:uppercase; cursor:pointer; border-radius:var(--radius); }
.filters .filter.active, .filters .filter:hover { background:var(--accent); border-color:var(--accent); }

.gallery { --cols:4; display:grid; gap:1rem; grid-template-columns:repeat(var(--cols),1fr); }
@media (max-width:1100px){ .gallery { --cols:3; } }
@media (max-width:800px){ .gallery { --cols:2; } }
@media (max-width:520px){ .gallery { --cols:1; } }
.piece { margin:0; position:relative; overflow:hidden; border:1px solid var(--line); background:#121216; }
.piece img { width:100%; height:100%; object-fit:cover; transition: transform .6s ease, filter .6s; }
.piece:hover img { transform:scale(1.08); filter:contrast(110%); }
.piece figcaption { position:absolute; inset:auto 0 0 0; background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,0)); padding:.6rem .6rem .8rem; font-size:.75rem; letter-spacing:.5px; text-transform:uppercase; opacity:0; transition:.4s; }
.piece:hover figcaption { opacity:1; }
.more-note { text-align:center; margin-top:2.2rem; font-size:.95rem; }

/* Booking page */
.booking-page .booking-main { max-width:900px; margin:0 auto; padding:3rem 1.25rem 5rem; }
.booking-intro h2 { font-family:var(--font-display); font-weight:500; letter-spacing:1px; font-size:2.1rem; margin-top:0; }
.booking-form { display:grid; gap:2.5rem; }
.booking-form fieldset { border:1px solid var(--line); padding:1rem 1.25rem 1.35rem; border-radius:var(--radius); background:#101014; }
.booking-form legend { padding:0 .5rem; font-size:.9rem; letter-spacing:1px; text-transform:uppercase; font-weight:600; }
.booking-form label { display:flex; flex-direction:column; font-size:.8rem; gap:.35rem; margin-bottom:.9rem; letter-spacing:.5px; }
.booking-form input[type=text],
.booking-form input[type=email],
.booking-form input[type=file],
.booking-form select,
.booking-form textarea { background:#18181d; border:1px solid var(--line); color:var(--ink); padding:.6rem .7rem; font-family:inherit; font-size:.85rem; border-radius:var(--radius); }
.booking-form textarea { min-height:130px; resize:vertical; }
.checkbox { flex-direction:row; align-items:center; gap:.5rem; }
.checkbox input { width:auto; }
.form-actions { display:flex; flex-direction:column; gap:.75rem; }
#formStatus { font-size:.8rem; min-height:1.2em; }
.note { font-size:.75rem; opacity:.6; }
.booking-faq details { border:1px solid var(--line); margin-bottom:.75rem; padding:.65rem .8rem; background:#101014; border-radius:var(--radius); }
.booking-faq summary { cursor:pointer; font-weight:600; }
.booking-faq p { margin:.6rem 0 0; font-size:.85rem; }

/* Floating Book Button */
.floating-book { position:fixed; right:1rem; bottom:1rem; background:var(--accent); color:var(--ink); padding:.85rem 1.2rem; font-size:.85rem; font-weight:600; border-radius:100px; box-shadow:0 4px 12px rgba(0,0,0,.5); z-index:1200; }
.floating-book:hover { background:var(--accent-glow); }

/* Footer */
.site-footer { padding:2.5rem 1.25rem 2rem; background:#0a0a0c; border-top:1px solid var(--line); font-size:.85rem; }
.footer-grid { display:grid; gap:2rem; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); margin-bottom:1.5rem; }
.legal { text-align:center; opacity:.6; font-size:.7rem; }
.minimal-foot { text-align:center; }

/* Utility */
.hidden { display:none !important; }
.filter-hide { opacity:0; pointer-events:none; transform:scale(.95); transition:.35s; }
.filter-show { opacity:1; transform:scale(1); transition:.45s cubic-bezier(.4,.04,.2,1); }

/* Focus Styles */
:focus-visible { outline:2px solid var(--focus); outline-offset:2px; }

/* Scrollbar (webkit) */
::-webkit-scrollbar { width:10px; }
::-webkit-scrollbar-track { background:#0d0d11; }
::-webkit-scrollbar-thumb { background:#22222a; border:2px solid #0d0d11; }
::-webkit-scrollbar-thumb:hover { background:#34343c; }

.events .event {
  display: flex;
  gap: 1rem;
  margin-bottom: 2.5rem;
  align-items: flex-start;
}
.events .event img {
  width: 160px;
  height: auto;
  border: 1px solid var(--line);
}
.events .event-info h3 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.4rem;
}
.events .event-info time {
  display: block;
  color: var(--accent);
  margin: 0.3rem 0;
}
.events .event-info p {
  margin: 0.4rem 0;
}