:root {
  --bg: #0d0c0d;
  --bg-soft: #151316;
  --bg-card: #1b181b;
  --text: #f7f3ef;
  --muted: #d2cbc6;
  --line: rgba(255,255,255,.12);
  --bordeaux: #7b1837;
  --bordeaux-2: #941f46;
  --cream: #f3e5bc;
  --sage: #86917f;
  --max: 1240px;
  --radius: 2px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button, input, textarea { font: inherit; }

.container { width: min(var(--max), calc(100% - 48px)); margin: 0 auto; }
.section { padding: 100px 0; }
.section--soft { background: var(--bg-soft); }
.eyebrow {
  margin: 0 0 16px;
  color: var(--bordeaux-2);
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.display {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.15rem, 3.45vw, 4.0rem);
  font-weight: 400;
  line-height: 1.12;
  letter-spacing: -.025em;
}
.h2 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2rem, 3.2vw, 3.5rem);
  font-weight: 400;
  line-height: 1.08;
}
.h3 {
  margin: 0 0 10px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.45rem, 2.1vw, 2.1rem);
  font-weight: 400;
  line-height: 1.14;
}
.lead {
  color: var(--muted);
  font-size: clamp(1.05rem, 1.45vw, 1.28rem);
  max-width: 830px;
}

/* Header */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(7,6,7,.96);
  border-bottom: 1px solid rgba(255,255,255,.05);
  backdrop-filter: blur(14px);
}
.nav {
  height: 92px;
  display: flex;
  align-items: center;
  gap: 28px;
}
.brand { flex: 0 0 auto; }
.brand img { width: 180px; max-height: 76px; object-fit: contain; object-position: left center; }
.nav-links {
  display: flex;
  align-items: center;
  gap: 26px;
  margin-left: auto;
  font-size: .96rem;
}
.nav-link, .dropdown-toggle { color: #f3efec; transition: color .2s ease; white-space: nowrap; }
.nav-link:hover, .dropdown-toggle:hover { color: #fff; }
.nav-cta {
  padding: 12px 17px;
  border: 1px solid var(--bordeaux-2);
  color: #fff;
  transition: background .2s ease;
}
.nav-cta:hover { background: var(--bordeaux); }
.dropdown { position: relative; }
.dropdown-toggle { background: none; border: 0; cursor: pointer; padding: 18px 0; }
.dropdown-menu {
  position: absolute;
  top: calc(100% + 8px);
  left: -18px;
  min-width: 260px;
  background: #111012;
  border-top: 2px solid var(--bordeaux-2);
  box-shadow: 0 18px 50px rgba(0,0,0,.4);
  padding: 10px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: .2s ease;
}
.dropdown:hover .dropdown-menu, .dropdown:focus-within .dropdown-menu, .dropdown.is-open .dropdown-menu {
  opacity: 1; visibility: visible; transform: translateY(0);
}
.dropdown-menu a { display:block; padding: 11px 18px; color: #eee8e4; }
.dropdown-menu a:hover { background: rgba(123,24,55,.2); }
.menu-toggle { display:none; margin-left:auto; background:none; border:1px solid var(--line); color:white; padding:9px 11px; }

/* Hero */
.hero {
  min-height: calc(100svh - 92px);
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
}
.hero-media { position:absolute; inset:0; }
.hero-media img {
  width:100%; height:100%; object-fit: cover; object-position: center center;
}
.hero-media::after {
  content:""; position:absolute; inset:0;
  background: linear-gradient(90deg, rgba(7,6,7,.92) 0%, rgba(7,6,7,.72) 36%, rgba(7,6,7,.22) 70%, rgba(7,6,7,.08) 100%);
}
.hero-inner { position: relative; z-index: 2; padding: 72px 0 84px; }
.hero-copy { max-width: 760px; }
.hero .display { max-width: 750px; text-shadow: 0 3px 24px rgba(0,0,0,.35); }
.hero .lead { max-width: 660px; margin: 26px 0 32px; }
.accent-line { width: 112px; height: 4px; background: var(--bordeaux-2); margin: 24px 0 0; }
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height: 52px; padding: 0 23px;
  border: 1px solid var(--bordeaux-2);
  background: var(--bordeaux);
  color: white; font-weight: 650;
  transition: transform .18s ease, background .18s ease;
}
.btn:hover { background: var(--bordeaux-2); transform: translateY(-1px); }
.btn--ghost { background: transparent; border-color: rgba(255,255,255,.52); }
.btn--ghost:hover { background: rgba(255,255,255,.08); }

/* Business */
.section-intro { display:flex; gap:46px; justify-content:space-between; align-items:end; margin-bottom:46px; }
.section-intro > div:first-child { max-width: 760px; }
.business-grid { display:grid; grid-template-columns: repeat(2, 1fr); gap: 26px; }
.card {
  background: var(--bg-card);
  border: 1px solid rgba(255,255,255,.08);
  min-width:0;
}
.card-image { aspect-ratio: 16 / 10; overflow:hidden; background:#111; }
.card-image img { width:100%; height:100%; object-fit:cover; transition: transform .45s ease; }
.card:hover .card-image img { transform: scale(1.025); }
.card-body { padding: 27px 28px 30px; }
.card-body p { margin:0 0 16px; color:var(--muted); }
.text-link { color:#fff; font-weight:650; }
.text-link::after { content:"  →"; color:var(--bordeaux-2); }
.business-cta { margin-top: 34px; text-align:center; }

/* Celebrations */
.split-grid { display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 28px; margin-top: 44px; }
.feature-card { position:relative; min-height: 610px; overflow:hidden; background:#111; }
.feature-card img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.feature-card::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.04) 25%, rgba(0,0,0,.88) 100%); }
.feature-content { position:absolute; z-index:2; left:0; right:0; bottom:0; padding:38px; }
.feature-content p { color:#e6dfda; max-width:560px; }

/* Own events */
.events-layout { display:grid; grid-template-columns: 1.18fr .82fr; gap: 24px; margin-top: 46px; }
.event-panel { position:relative; overflow:hidden; background:#121012; border:1px solid rgba(255,255,255,.08); }
.event-panel--large { min-height: 650px; }
.event-panel--small { min-height: 313px; }
.event-panel > img.event-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.event-panel::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.87)); }
.event-panel-inner { position:absolute; z-index:2; inset:auto 0 0 0; padding:30px; }
.event-logo { max-width: 300px; max-height: 120px; width:auto; height:auto; object-fit:contain; margin-bottom:18px; }
.event-panel p { color:#eee7e1; max-width:620px; }
.event-date { font-weight:750; letter-spacing:.02em; margin-top:14px; }
.event-stack { display:grid; gap:24px; }
.event-panel--wedding { background:#f6f2e9; color:#161417; }
.event-panel--wedding::after { display:none; }
.event-panel--wedding .event-panel-inner { position:relative; min-height:313px; display:flex; flex-direction:column; justify-content:center; }
.event-panel--wedding p { color:#5f5a56; }
.event-panel--wedding .event-logo { width:min(100%,360px); max-width:360px; max-height:none; height:auto; object-fit:contain; }
.event-panel--wedding .text-link { color:#241f22; }

/* Location */
.location-grid { display:grid; grid-template-columns: 1.05fr .95fr; gap:58px; align-items:start; }
.location-photo { background:#111; margin-top:42px; }
.location-photo img { width:100%; height:auto; }
.facts { list-style:none; padding:0; margin:32px 0 0; display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px 28px; }
.facts li { padding:12px 0 12px 20px; border-bottom:1px solid var(--line); position:relative; color:#ece5df; }
.facts li::before { content:""; width:6px; height:6px; border-radius:50%; background:var(--bordeaux-2); position:absolute; left:0; top:22px; }

.wineworld-note {
  margin-top: 28px;
  padding: 20px 22px;
  border-left: 2px solid var(--bordeaux-2);
  background: rgba(255,255,255,.025);
}
.wineworld-note p { margin:0 0 8px; color:var(--muted); }

/* Personal */
.personal-grid { display:grid; grid-template-columns:.78fr 1.22fr; gap:64px; align-items:center; }
.personal-photo { max-width: 470px; }
.personal-photo img { width:100%; height:auto; }
.personal-copy p { color:var(--muted); font-size:1.13rem; max-width:700px; }

/* Gallery */
.gallery-grid { display:grid; grid-template-columns:repeat(12, 1fr); grid-auto-rows:160px; gap:14px; margin-top:42px; }
.gallery-item { overflow:hidden; background:#111; }
.gallery-item img { width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.gallery-item:hover img { transform:scale(1.025); }
.gallery-item:nth-child(1){ grid-column: span 7; grid-row: span 2; }
.gallery-item:nth-child(2){ grid-column: span 5; grid-row: span 2; }
.gallery-item:nth-child(3){ grid-column: span 4; grid-row: span 2; }
.gallery-item:nth-child(4){ grid-column: span 4; grid-row: span 2; }
.gallery-item:nth-child(5){ grid-column: span 4; grid-row: span 2; }
.gallery-item:nth-child(6){ grid-column: span 12; grid-row: span 2; }

/* CTA */
.final-cta { text-align:center; padding:110px 0; background:linear-gradient(180deg,#111012,#080708); }
.final-cta .h2 { max-width:850px; margin:0 auto; }
.final-cta p { max-width:680px; margin:22px auto 30px; color:var(--muted); }

/* Footer */
.footer { background:#050505; border-top:1px solid rgba(255,255,255,.06); padding:62px 0 24px; }
.footer-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:40px; }
.footer-grid--wide { grid-template-columns:1.25fr .95fr .95fr 1fr .75fr; gap:32px; }
.footer-logo { width:190px; margin-bottom:18px; }
.footer h4 { margin:0 0 14px; font-size:.86rem; letter-spacing:.12em; text-transform:uppercase; color:#d7cec7; }
.footer p, .footer a { color:#bcb3ad; font-size:.94rem; }
.footer a:hover { color:white; }
.footer-links { display:grid; gap:7px; }
.footer-bottom { display:flex; justify-content:space-between; gap:20px; border-top:1px solid var(--line); margin-top:46px; padding-top:20px; color:#8f8782; font-size:.86rem; }

/* Simple pages */
.page-hero { padding:92px 0 70px; background:linear-gradient(180deg,#111012,#0d0c0d); }
.page-main { padding:70px 0 100px; }
.content-narrow { max-width:860px; }
.content-narrow h2, .content-narrow h3 { font-family:Georgia,serif; font-weight:400; }
.content-narrow p, .content-narrow li { color:#d0c8c2; }
.contact-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-top:36px; }
.contact-card { background:#171417; border:1px solid var(--line); padding:28px; }
.contact-card strong { display:block; margin-bottom:8px; }
.legal-note { padding:16px 18px; border-left:3px solid var(--bordeaux-2); background:#171417; color:#d7cec7; margin-bottom:28px; }

/* Save-the-date page */
.save-date { min-height:calc(100svh - 92px); display:grid; place-items:center; background:#f7f4ec; color:#19161a; padding:70px 0; text-align:center; }
.save-date-inner { width:min(900px, calc(100% - 40px)); }
.save-date-logo { max-width:680px; margin:0 auto 30px; }
.save-date .eyebrow { color:#9b6d2c; }
.save-date h1 { font-family:Georgia,serif; font-weight:400; font-size:clamp(2.2rem,5vw,4.6rem); margin:0 0 16px; }
.save-date .date { font-size:clamp(1.3rem,2.3vw,2rem); font-weight:700; margin:18px 0; }
.save-date p { color:#625c58; max-width:720px; margin:0 auto 28px; font-size:1.12rem; }

@media (max-width: 1120px) {
  .footer-grid--wide { grid-template-columns:repeat(3,1fr); }
  .nav-links { gap:16px; font-size:.9rem; }
  .brand img { width:155px; }
  .events-layout { grid-template-columns:1fr; }
  .event-stack { grid-template-columns:1fr 1fr; }
}
@media (max-width: 900px) {
  .container { width:min(var(--max), calc(100% - 32px)); }
  .menu-toggle { display:block; }
  .nav { height:78px; }
  .brand img { width:150px; max-height:64px; }
  .nav-links {
    display:none; position:absolute; top:78px; left:0; right:0; background:#090809; border-top:1px solid var(--line);
    margin:0; padding:18px 22px 26px; flex-direction:column; align-items:stretch; gap:0;
  }
  .nav-links.is-open { display:flex; }
  .nav-link, .dropdown-toggle, .nav-cta { padding:13px 0; border-bottom:1px solid rgba(255,255,255,.06); }
  .nav-cta { border:0; border-bottom:1px solid rgba(255,255,255,.06); }
  .dropdown-menu { position:static; opacity:1; visibility:visible; transform:none; display:none; box-shadow:none; border-top:0; background:#111012; margin:4px 0 8px; }
  .dropdown.is-open .dropdown-menu { display:block; }
  .hero { min-height: 760px; }
  .hero-media::after { background:linear-gradient(90deg, rgba(7,6,7,.9), rgba(7,6,7,.55)); }
  .section { padding:76px 0; }
  .business-grid, .split-grid, .location-grid, .personal-grid { grid-template-columns:1fr; }
  .feature-card { min-height:520px; }
  .event-stack { grid-template-columns:1fr; }
  .location-grid, .personal-grid { gap:38px; }
  .location-photo { margin-top:0; }
  .personal-photo { max-width:560px; }
  .footer-grid, .footer-grid--wide { grid-template-columns:repeat(2,1fr); }
  .contact-cards { grid-template-columns:1fr; }
}
@media (max-width: 620px) {
  .container { width:calc(100% - 24px); }
  .section-intro { display:block; }
  .business-grid { grid-template-columns:1fr; }
  .feature-card { min-height:470px; }
  .feature-content { padding:26px; }
  .facts { grid-template-columns:1fr; }
  .gallery-grid { display:grid; grid-template-columns:1fr; grid-auto-rows:auto; }
  .gallery-item, .gallery-item:nth-child(n) { grid-column:auto; grid-row:auto; aspect-ratio:4/3; }
  .footer-grid, .footer-grid--wide { grid-template-columns:1fr; }
  .footer-bottom { flex-direction:column; }
  .hero .lead { font-size:1.05rem; }
  .event-panel--large { min-height:520px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { transition:none!important; animation:none!important; }
}

.external-link-row { display:flex; flex-wrap:wrap; gap:18px 28px; margin-top:18px; }
.contact-external { padding-top:4px; }


/* Privacy / consent */
.consent-open { overflow:hidden; }
.consent-banner[hidden], .consent-modal[hidden] { display:none !important; }
.consent-banner {
  position:fixed;
  z-index:9999;
  left:20px;
  right:20px;
  bottom:20px;
  color:#f7f3ef;
}
.consent-banner__inner {
  max-width:1180px;
  margin:0 auto;
  display:grid;
  grid-template-columns:1fr auto;
  gap:34px;
  align-items:center;
  padding:24px 26px;
  background:rgba(17,15,16,.98);
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 18px 55px rgba(0,0,0,.45);
  border-radius:10px;
}
.consent-banner__copy { max-width:760px; }
.consent-eyebrow {
  margin:0 0 6px;
  color:#9a2949;
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.13em;
}
.consent-banner h2, .consent-modal h2 {
  margin:0 0 8px;
  color:#fff;
  font-size:1.25rem;
  line-height:1.25;
}
.consent-banner p { margin:0 0 6px; color:#d9d4d0; font-size:.95rem; line-height:1.5; }
.consent-banner a { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.consent-banner__actions {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9px;
  min-width:320px;
}
.consent-btn {
  appearance:none;
  border:1px solid rgba(255,255,255,.42);
  border-radius:4px;
  background:transparent;
  color:#fff;
  padding:12px 15px;
  font:inherit;
  font-weight:650;
  cursor:pointer;
}
.consent-btn:hover { border-color:#fff; }
.consent-btn--primary { background:#7d1833; border-color:#7d1833; }
.consent-btn--primary:hover { background:#8c1d3b; border-color:#8c1d3b; }
.consent-btn--text {
  grid-column:1 / -1;
  border-color:transparent;
  text-decoration:underline;
  text-underline-offset:3px;
  padding:6px 12px;
  font-weight:500;
}
.consent-modal {
  position:fixed;
  inset:0;
  z-index:10000;
  display:grid;
  place-items:center;
  padding:20px;
}
.consent-modal__backdrop {
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.72);
}
.consent-modal__panel {
  position:relative;
  width:min(680px, 100%);
  max-height:min(760px, calc(100vh - 40px));
  overflow:auto;
  background:#141213;
  color:#eee9e4;
  border:1px solid rgba(255,255,255,.13);
  border-radius:10px;
  box-shadow:0 25px 80px rgba(0,0,0,.55);
  padding:30px;
}
.consent-modal__panel > p { color:#cfc8c4; }
.consent-modal__close {
  position:absolute;
  right:16px;
  top:13px;
  background:none;
  border:0;
  color:#fff;
  font-size:1.8rem;
  cursor:pointer;
}
.consent-option {
  margin-top:18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:18px 0;
  border-top:1px solid rgba(255,255,255,.12);
}
.consent-option strong { color:#fff; }
.consent-option p { margin:5px 0 0; color:#bfb8b4; font-size:.9rem; }
.consent-always-on {
  white-space:nowrap;
  color:#bdb6b1;
  font-size:.82rem;
}
.consent-switch { position:relative; flex:0 0 auto; }
.consent-switch input { position:absolute; opacity:0; pointer-events:none; }
.consent-switch span {
  display:block;
  width:48px;
  height:27px;
  border-radius:999px;
  background:#50494c;
  position:relative;
  transition:.2s ease;
  cursor:pointer;
}
.consent-switch span::after {
  content:"";
  position:absolute;
  width:21px;
  height:21px;
  border-radius:50%;
  background:#fff;
  left:3px;
  top:3px;
  transition:.2s ease;
}
.consent-switch input:checked + span { background:#7d1833; }
.consent-switch input:checked + span::after { transform:translateX(21px); }
.consent-modal__actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.consent-small { margin-top:16px !important; font-size:.82rem; }
.cookie-settings-link {
  appearance:none;
  border:0;
  background:none;
  color:inherit;
  font:inherit;
  cursor:pointer;
  text-decoration:underline;
  text-underline-offset:3px;
  opacity:.86;
}

@media (max-width: 760px) {
  .consent-banner { left:10px; right:10px; bottom:10px; }
  .consent-banner__inner { grid-template-columns:1fr; gap:16px; padding:20px; }
  .consent-banner__actions { min-width:0; width:100%; }
  .consent-modal__panel { padding:26px 20px 22px; }
}
