:root {
  --gsv-bg: #070708;
  --gsv-bg-2: #0c0c0e;
  --gsv-elev: #141416;
  --gsv-cream: #efe8d8;
  --gsv-cream-2: #d4cbb8;
  --gsv-muted: #8f8778;
  --gsv-gold: #c4a574;
  --gsv-red: #c44536;
  --gsv-line: rgba(239, 232, 216, 0.12);
  --serif: "Cormorant Garamond", Georgia, serif;
  --sans: "Outfit", system-ui, sans-serif;
}

html { scroll-behavior: smooth; }
body {
  background: var(--gsv-bg);
  color: var(--gsv-cream);
  font-family: var(--sans);
  font-weight: 300;
  letter-spacing: .01em;
}

img { max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--gsv-cream); }

.serif { font-family: var(--serif); font-weight: 400; }
.kicker {
  font-size: .72rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gsv-gold);
}
.display-hero {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(3.2rem, 8vw, 7.2rem);
  line-height: .9;
  letter-spacing: -.02em;
}
.display-hero em { font-style: italic; }
.page-display {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(2.6rem, 6vw, 5.4rem);
  line-height: .95;
}
.section-title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(2.1rem, 4.4vw, 4.2rem);
  line-height: 1.04;
}
.gold { color: var(--gsv-gold); }
.cream-2 { color: var(--gsv-cream-2); }
.muted-gsv { color: var(--gsv-muted); }
.rule { width: 64px; height: 1px; background: var(--gsv-gold); }

.gsv-nav {
  background: transparent;
  transition: background .35s ease, border-color .35s ease, backdrop-filter .35s ease;
  border-bottom: 1px solid transparent;
  padding-top: .85rem;
  padding-bottom: .85rem;
}
.gsv-nav.scrolled {
  background: rgba(7,7,8,.86);
  backdrop-filter: blur(18px);
  border-bottom-color: var(--gsv-line);
}
.brand-mark {
  font-size: .72rem;
  letter-spacing: .28em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--gsv-cream);
}
.brand-mark em { font-style: normal; color: var(--gsv-red); font-weight: 600; }
.gsv-nav .nav-link {
  color: var(--gsv-cream-2) !important;
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  padding: .4rem .7rem !important;
}
.gsv-nav .nav-link.active,
.gsv-nav .nav-link:hover { color: var(--gsv-cream) !important; }
.btn-gsv {
  border: 1px solid var(--gsv-cream);
  color: var(--gsv-cream);
  background: transparent;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: .72rem;
  border-radius: 0;
  padding: .85rem 1.25rem;
  transition: .3s ease;
}
.btn-gsv:hover { background: var(--gsv-cream); color: #111; }
.btn-gsv-fill {
  background: var(--gsv-cream);
  color: #111;
  border: 1px solid var(--gsv-cream);
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: .72rem;
  border-radius: 0;
  padding: .85rem 1.25rem;
}
.btn-gsv-fill:hover { background: transparent; color: var(--gsv-cream); }
.navbar-toggler { border: 0; }
.navbar-toggler:focus { box-shadow: none; }
.navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(239,232,216, .95)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='1.5' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.offcanvas { background: #0b0b0c; color: var(--gsv-cream); }
.offcanvas .nav-link {
  font-family: var(--serif);
  font-size: 2rem;
  padding: .4rem 0;
  border-bottom: 1px solid var(--gsv-line);
  color: var(--gsv-cream) !important;
}

.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.hero-media, .page-hero-media { position: absolute; inset: 0; }
.hero-media video, .hero-media img,
.page-hero-media img, .page-hero-media video {
  width: 100%; height: 100%; object-fit: cover;
}
.hero-media::after, .page-hero-media::after {
  content: "";
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(7,7,8,.2) 0%, rgba(7,7,8,.15) 40%, rgba(7,7,8,.88) 100%),
    linear-gradient(90deg, rgba(7,7,8,.4) 0%, transparent 55%);
}
.hero-copy, .page-hero-copy { position: relative; z-index: 2; }
.page-hero {
  position: relative;
  min-height: 72vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}

.media-frame {
  position: relative;
  overflow: hidden;
  min-height: 420px;
  background: #111;
}
.media-frame img, .media-frame video {
  width: 100%;
  height: 100%;
  min-height: 420px;
  object-fit: cover;
  transition: transform 1.3s ease;
}
.media-frame:hover img { transform: scale(1.05); }
.media-cap {
  position: absolute; left: 1rem; bottom: .9rem;
  font-size: .68rem; letter-spacing: .22em; text-transform: uppercase;
}

.gsv-card {
  background: var(--gsv-elev);
  border: 1px solid var(--gsv-line);
  border-radius: 0;
  height: 100%;
  overflow: hidden;
  transition: transform .35s ease, border-color .35s ease;
}
.gsv-card:hover { transform: translateY(-4px); border-color: rgba(239,232,216,.28); }
.gsv-card img { width: 100%; height: 240px; object-fit: cover; }
.gsv-card .body { padding: 1.5rem 1.35rem 1.7rem; }
.gsv-card h3 { font-family: var(--serif); font-size: 1.65rem; }

.film {
  position: relative;
  overflow: hidden;
  min-height: 280px;
  cursor: pointer;
  background: #111;
}
.film.tall { min-height: 560px; }
.film img, .film video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.film .veil {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 28%, rgba(0,0,0,.8) 100%);
}
.film-meta { position: absolute; left: 1.25rem; right: 1.25rem; bottom: 1.25rem; z-index: 2; }
.play-btn {
  width: 52px; height: 52px; border-radius: 50%;
  border: 1px solid var(--gsv-cream);
  display: grid; place-items: center;
  background: rgba(0,0,0,.3);
  margin-bottom: .8rem;
}

.pillar, .step-block {
  border-top: 1px solid var(--gsv-line);
  padding: 1.6rem 1.1rem 1.8rem;
}
.pillar h3, .step-block h3 { font-family: var(--serif); font-size: 1.7rem; }
.step-n { font-family: var(--serif); font-size: 2.2rem; color: var(--gsv-gold); line-height: 1; }

.ind-tile {
  background: var(--gsv-bg);
  border: 1px solid var(--gsv-line);
  padding: 1.6rem 1.3rem 1.8rem;
  height: 100%;
  transition: background .3s;
}
.ind-tile:hover { background: var(--gsv-elev); }
.ind-tile h3 { font-family: var(--serif); font-size: 1.55rem; }

.case-img { min-height: 520px; object-fit: cover; width: 100%; height: 100%; }
.case-copy { background: var(--gsv-bg-2); }

.form-control, .form-select, textarea.form-control {
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(239,232,216,.28);
  border-radius: 0;
  color: var(--gsv-cream);
  padding-left: 0;
  padding-right: 0;
}
.form-control:focus, .form-select:focus {
  background: transparent;
  color: var(--gsv-cream);
  box-shadow: none;
  border-bottom-color: var(--gsv-gold);
}
.form-select option { background: #111; }
.form-label {
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gsv-muted);
}

.site-footer { border-top: 1px solid var(--gsv-line); }
.site-footer a { color: var(--gsv-muted); }
.site-footer a:hover { color: var(--gsv-cream); }
.foot-head {
  font-size: .68rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gsv-gold);
}

.section-alt { background: var(--gsv-bg-2); }
.invite-band { position: relative; min-height: 78vh; display: grid; place-items: center; overflow: hidden; }
.invite-band img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.invite-band::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(7,7,8,.5), rgba(7,7,8,.82));
}
.invite-inner { position: relative; z-index: 2; }

.modal-content { background: #000; border: 0; border-radius: 0; }
.modal-header { border: 0; color: var(--gsv-cream); }
.modal-body video { width: 100%; }

@media (max-width: 767.98px) {
  .film.tall { min-height: 360px; }
  .case-img { min-height: 320px; }
}
