@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@0,600;1,600&display=swap');

:root {
  --forest: #12261f;
  --forest-2: #1c342b;
  --ink: #14211c;
  --ivory: #f3ecdf;
  --paper: #e8dece;
  --gold: #b89c62;
  --white: #fffaf0;
  --line: rgba(20,33,28,.18);
  --serif: "Playfair Display", Georgia, serif;
  --sans: "DM Sans", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--ivory);
  color: var(--ink);
  font-family: var(--sans);
  overflow-x: hidden;
}
button, input { font: inherit; }
button:disabled { cursor:not-allowed; opacity:.48; }
a { color: inherit; text-decoration: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.grain {
  position: fixed; inset: 0; pointer-events: none; z-index: 99; opacity: .035;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.75'/%3E%3C/svg%3E");
}

.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  display: flex; justify-content: space-between; align-items: center;
  padding: 20px clamp(22px, 4vw, 64px); color: var(--white);
  transition: background .3s, backdrop-filter .3s;
}
.site-header.scrolled { background: rgba(18,38,31,.88); backdrop-filter: blur(14px); }
.brand { font-family: var(--serif); font-size: 22px; letter-spacing: .06em; }
.site-nav { display: flex; align-items: center; gap: 28px; font-size: 13px; text-transform: uppercase; letter-spacing: .12em; }
.site-nav a { opacity: .8; transition: opacity .2s; }
.site-nav a:hover { opacity: 1; }
.nav-rsvp { border: 1px solid rgba(255,255,255,.55); padding: 10px 16px; border-radius: 999px; }
.menu-toggle { display: none; background: none; border: 0; padding: 8px; }
.menu-toggle span:not(.sr-only) { display: block; width: 24px; height: 1px; background: white; margin: 6px 0; }

.hero {
  min-height: 100svh; position: relative; overflow: hidden;
  display: grid; place-items: center; text-align: center;
  background:
    radial-gradient(circle at 50% 32%, rgba(184,156,98,.22), transparent 24%),
    linear-gradient(180deg, #244237 0%, #12261f 68%, #0c1915 100%);
  color: var(--white);
}
.hero-art { position: absolute; inset: 0; overflow: hidden; opacity: .88; }
.tree {
  position: absolute; bottom: -4vh; width: 12vw; min-width: 110px; height: 72vh;
  background: linear-gradient(90deg, transparent 43%, rgba(6,18,14,.75) 44% 56%, transparent 57%);
}
.tree::before, .tree::after {
  content:""; position:absolute; left:50%; transform:translateX(-50%);
  border-left: 8vw solid transparent; border-right: 8vw solid transparent; border-bottom: 26vh solid rgba(8,24,18,.62);
}
.tree::before { bottom: 20vh; }
.tree::after { bottom: 36vh; transform: translateX(-50%) scale(.76); }
.tree-a { left: -1vw; transform: scale(1.35); opacity:.75; }
.tree-b { left: 18vw; transform: scale(.82); opacity:.44; }
.tree-c { right: 17vw; transform: scale(.92); opacity:.5; }
.tree-d { right: -1vw; transform: scale(1.42); opacity:.78; }
.mist { position:absolute; left:-15%; width:130%; height:20vh; border-radius:50%; background:rgba(255,255,255,.055); filter:blur(30px); }
.mist-a { bottom: 20vh; transform: rotate(-3deg); }
.mist-b { bottom: 7vh; transform: rotate(4deg); opacity:.55; }

.hero-content { position: relative; z-index: 2; padding: 90px 20px 120px; max-width: 1100px; }
.eyebrow, .kicker {
  text-transform: uppercase; letter-spacing: .24em; font-weight: 600; font-size: 11px;
}
.hero-content .eyebrow { color: rgba(255,250,240,.72); margin-bottom: 18px; }
h1, h2, h3, p { margin-top: 0; }
h1 {
  font-family: var(--serif); font-size: clamp(52px, 10vw, 132px); line-height: .86;
  letter-spacing: -.045em; margin-bottom: 26px; font-weight: 600;
}
h1 span { color: var(--gold); font-style: italic; font-size: .62em; vertical-align: 15%; }
.hero-line { font-family: var(--serif); font-style: italic; font-size: clamp(22px,3vw,34px); margin-bottom: 38px; }
.hero-meta { display: flex; justify-content: center; gap: clamp(18px, 5vw, 58px); flex-wrap: wrap; }
.hero-meta p { margin: 0; font-size: 14px; }
.hero-meta span { display:block; text-transform:uppercase; letter-spacing:.18em; font-size:9px; opacity:.62; margin-bottom:5px; }
.scroll-cue {
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  z-index:2; font-size:10px; text-transform:uppercase; letter-spacing:.17em; opacity:.72; white-space:nowrap;
}
.scroll-cue span { display:block; font-size:18px; margin-top:7px; animation: bob 1.7s ease-in-out infinite; }
@keyframes bob { 50% { transform: translateY(5px); } }

.section { padding: clamp(90px, 12vw, 160px) 0; }
.wrap { width: min(1180px, calc(100% - 42px)); margin: 0 auto; }
.wrap.narrow { width: min(780px, calc(100% - 42px)); }
.intro { text-align:center; background:var(--ivory); }
.kicker { color: #7f6941; margin-bottom: 16px; }
h2 {
  font-family:var(--serif); font-size:clamp(48px,7vw,92px); line-height:.94;
  letter-spacing:-.04em; font-weight:600; margin-bottom:30px;
}
.lead { font-size:clamp(18px,2.2vw,24px); line-height:1.55; max-width:760px; margin:0 auto 20px; }
.lead.small { font-size:18px; max-width:680px; }
.muted { color:rgba(20,33,28,.6); line-height:1.6; }
.button {
  display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--forest);
  background:var(--forest); color:var(--white); padding:14px 22px; border-radius:999px;
  text-transform:uppercase; letter-spacing:.12em; font-size:11px; font-weight:600; cursor:pointer;
}
.button.ghost { margin-top:14px; background:transparent; color:var(--forest); }
.button.disabled { opacity:.45; cursor:default; }

.photo-break { background:#0e1d18; padding:0; position:relative; color:white; }
.photo-placeholder {
  width:100%; min-height:76svh; display:grid; place-items:center; text-align:center;
  background:
    linear-gradient(rgba(9,21,16,.28), rgba(9,21,16,.56)),
    radial-gradient(circle at 60% 32%, rgba(184,156,98,.28), transparent 20%),
    linear-gradient(120deg, #314a3d, #13271f 60%, #0b1612);
}
.photo-copy p { font-family:var(--serif); font-size:clamp(28px,5vw,58px); margin-bottom:8px; }
.photo-copy span { opacity:.6; text-transform:uppercase; letter-spacing:.18em; font-size:9px; }
.photo-caption { position:absolute; right:clamp(18px,4vw,55px); bottom:25px; margin:0; font-family:var(--serif); font-style:italic; opacity:.82; }

.save-date-section { background:var(--ivory); }
.save-date-layout {
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:stretch;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.save-date-date { padding:clamp(34px,5vw,68px) clamp(24px,5vw,70px) clamp(34px,5vw,68px) 0; border-right:1px solid var(--line); }
.save-date-weekday { margin-bottom:18px; color:#7f6941; font-size:11px; font-weight:600; letter-spacing:.22em; text-transform:uppercase; }
.save-date-numerals { display:flex; align-items:center; gap:clamp(18px,3vw,38px); }
.save-date-numerals strong { font-family:var(--serif); font-size:clamp(110px,17vw,220px); font-weight:600; line-height:.72; letter-spacing:-.08em; }
.save-date-numerals span { color:#7f6941; font-family:var(--serif); font-size:clamp(24px,3.5vw,46px); font-style:italic; line-height:1.05; }
.save-date-location { margin:36px 0 0; font-size:14px; line-height:1.6; }
.save-date-copy { display:flex; flex-direction:column; justify-content:center; padding:clamp(34px,5vw,68px) 0 clamp(34px,5vw,68px) clamp(24px,5vw,70px); }
.save-date-copy > p { max-width:560px; color:rgba(20,33,28,.72); font-size:16px; line-height:1.7; }
.save-date-copy .save-date-lead { color:var(--ink); font-family:var(--serif); font-size:clamp(28px,3.5vw,44px); line-height:1.12; }
.save-date-copy .calendar-actions { width:min(100%,520px); margin-top:18px; }
.save-date-copy .calendar-service-links { justify-content:flex-start; }
.calendar-note { margin:0; color:rgba(20,33,28,.72); font-size:11px; line-height:1.5; }

.cards-section { background:var(--paper); }
.section-heading { margin-bottom:52px; }
.card-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.info-card { min-height:390px; border:1px solid var(--line); padding:30px; display:flex; flex-direction:column; transition: transform .25s, background .25s; }
.info-card:hover { transform:translateY(-6px); background:rgba(255,255,255,.25); }
.info-card-link:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.info-card-link .text-link { margin-top:auto; }
.card-number { font-size:11px; letter-spacing:.16em; opacity:.5; margin-bottom:auto; }
.info-card h3 { font-family:var(--serif); font-size:36px; margin:42px 0 18px; }
.info-card p { line-height:1.65; color:rgba(20,33,28,.72); }
.info-card p strong { color:var(--ink); font-weight:600; }
.text-link { border:0; background:none; padding:12px 0 0; text-align:left; cursor:pointer; font-size:12px; text-transform:uppercase; letter-spacing:.11em; font-weight:600; }
.calendar-actions { display:grid; gap:6px; padding-top:8px; }
.calendar-primary { width:100%; }
.calendar-service-links { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:0 10px; font-size:10px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; }
.calendar-service-links a { min-height:44px; display:inline-flex; align-items:center; text-decoration:underline; text-underline-offset:4px; }
.calendar-service-links span { opacity:.35; }

.story-section { background:var(--forest); color:var(--white); }
.story-section .kicker { color:var(--gold); }
.timeline { border-top:1px solid rgba(255,255,255,.18); }
.timeline-item {
  display:grid; grid-template-columns:70px 1fr 1fr; gap:30px; align-items:center;
  border-bottom:1px solid rgba(255,255,255,.18); padding:30px 0;
}
.timeline-item span { color:var(--gold); font-size:11px; letter-spacing:.15em; }
.timeline-item h3 { font-family:var(--serif); font-size:clamp(30px,4vw,48px); margin:0; }
.timeline-item p { margin:0; line-height:1.55; opacity:.65; }
.timeline-item-video { align-items:start; padding:48px 0; }
.proposal-video { grid-column:2 / -1; min-width:0; width:100%; margin:18px 0 0; }
.video-frame { position:relative; aspect-ratio:16/9; overflow:hidden; border:1px solid rgba(255,255,255,.18); background:#08110e; }
.video-frame iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
.proposal-video figcaption { margin-top:12px; color:rgba(255,250,240,.62); font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.proposal-video a { min-height:44px; display:inline-flex; align-items:center; text-decoration:underline; text-underline-offset:4px; }
.proposal-video a:hover, .proposal-video a:focus-visible { color:var(--white); }

.crew-section { background:var(--ivory); }
.crew-intro { max-width:820px; }
.crew-intro .lead { margin-left:0; }
.crew-teams { margin-top:58px; display:grid; gap:70px; }
.crew-group-heading { font-family:var(--serif); font-size:clamp(30px,4vw,46px); margin-bottom:24px; }
.crew-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:14px; }
.crew-card {
  min-height:350px; padding:24px; border:1px solid var(--line);
  display:flex; flex-direction:column; transition:transform .25s, background .25s;
}
.crew-card:hover { transform:translateY(-6px); background:rgba(255,255,255,.28); }
.crew-initials {
  width:70px; aspect-ratio:1; border-radius:50%; display:grid; place-items:center;
  background:var(--forest); color:var(--gold); font-family:var(--serif); font-size:32px;
  margin-bottom:0;
}
.crew-role { margin:34px 0 8px; color:#7f6941; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.16em; }
.crew-card h3 { font-family:var(--serif); font-size:36px; margin-bottom:14px; }
.crew-card > p:last-child { margin:0; color:rgba(20,33,28,.7); line-height:1.6; }

.song-section { background:var(--paper); text-align:center; }
.song-form { text-align:left; display:grid; gap:18px; margin:38px auto 0; max-width:650px; }
.song-form label { display:grid; gap:8px; font-size:11px; text-transform:uppercase; letter-spacing:.12em; font-weight:600; }
.song-form input { width:100%; border:0; border-bottom:1px solid rgba(20,33,28,.35); background:transparent; padding:15px 0; outline:none; font-size:17px; text-transform:none; letter-spacing:0; }
.song-form input:focus { border-color:var(--forest); }
.song-form .button { justify-self:center; margin-top:10px; }
.song-search-field { display:grid; gap:8px; }
.song-search-row { display:grid; }
.song-results { display:grid; gap:8px; margin-top:4px; }
.song-result {
  width:100%; display:grid; grid-template-columns:54px 1fr auto; gap:14px; align-items:center;
  border:1px solid var(--line); background:rgba(255,255,255,.2); color:var(--ink); padding:10px;
  text-align:left; cursor:pointer; transition:background .2s, transform .2s;
}
.song-result:hover, .song-result:focus-visible { background:rgba(255,255,255,.52); transform:translateY(-2px); }
.song-result img, .track-art-placeholder { width:54px; aspect-ratio:1; object-fit:cover; background:var(--forest); }
.song-result-copy { min-width:0; }
.song-result-title { display:block; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.song-result-meta { display:block; margin-top:4px; color:rgba(20,33,28,.62); font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.song-result-action { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; }
.selected-track {
  display:grid; grid-template-columns:64px 1fr; gap:16px; align-items:center;
  padding:14px; border:1px solid rgba(18,38,31,.32); background:rgba(255,255,255,.34);
}
.selected-track[hidden] { display:none; }
.selected-track img, .selected-track .track-art-placeholder { width:64px; }
.selected-track strong, .selected-track span { display:block; }
.selected-track span { margin-top:4px; color:rgba(20,33,28,.62); font-size:14px; }
.song-honeypot { position:absolute !important; left:-9999px !important; width:1px !important; height:1px !important; opacity:0 !important; }
.form-note { font-size:11px; opacity:.55; margin-top:22px; line-height:1.5; }
.form-note.error { color:#8c2f21; opacity:.9; }
.song-privacy { max-width:520px; margin:9px auto 0; color:rgba(20,33,28,.52); font-size:11px; line-height:1.5; }
.playlist-link { display:inline-block; margin-top:14px; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; text-decoration:underline; text-underline-offset:4px; }

.rsvp-section { background:#0d1d17; color:var(--white); text-align:center; }
.rsvp-section .kicker { color:var(--gold); }
.rsvp-box { border:1px solid rgba(255,255,255,.2); padding:40px 30px; margin-top:42px; }
.rsvp-big { font-family:var(--serif); font-size:30px; margin-bottom:8px; }
.rsvp-box > p:nth-child(2) { opacity:.72; }
.rsvp-box span { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.12em; opacity:.44; margin-top:28px; line-height:1.6; }

.footer {
  display:flex; align-items:flex-end; justify-content:space-between; gap:30px;
  background:#08110e; color:rgba(255,250,240,.62); padding:50px clamp(22px,4vw,64px);
}
.footer-brand { color:var(--white); font-family:var(--serif); font-size:24px; margin-bottom:10px; }
.footer > div > p:last-child { margin:0; font-size:12px; }
.version { background:none; border:0; color:var(--gold); font-size:12px; cursor:pointer; padding:8px; text-decoration:underline; text-underline-offset:4px; }
.footer-actions { display:flex; align-items:center; gap:18px; }
.footer-admin { min-height:44px; display:inline-flex; align-items:center; color:rgba(255,250,240,.72); font-size:11px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; text-decoration:underline; text-underline-offset:4px; }
.footer-admin:hover, .footer-admin:focus-visible { color:var(--white); }

dialog {
  width:min(680px, calc(100% - 32px)); background:var(--ivory); color:var(--ink);
  border:0; padding:clamp(30px,5vw,55px); box-shadow:0 28px 90px rgba(0,0,0,.4);
}
dialog::backdrop { background:rgba(3,10,7,.76); backdrop-filter:blur(8px); }
dialog h2 { font-size:clamp(42px,6vw,68px); }
dialog ul { list-style:none; padding:0; margin:30px 0; }
dialog li { padding:10px 0; border-bottom:1px solid var(--line); line-height:1.4; }
.dialog-close { position:absolute; top:15px; right:18px; border:0; background:none; font-size:34px; cursor:pointer; opacity:.55; }
.patch-foot { font-size:13px; opacity:.7; }

.toast {
  position:fixed; z-index:80; left:50%; bottom:28px; transform:translate(-50%, 30px);
  background:var(--ink); color:white; padding:12px 18px; border-radius:999px; font-size:12px;
  opacity:0; pointer-events:none; transition:.25s; white-space:nowrap; max-width:calc(100% - 32px);
}
.toast.show { opacity:1; transform:translate(-50%,0); }

.skip-link {
  position:fixed; top:12px; left:12px; z-index:120; transform:translateY(-160%);
  background:var(--white); color:var(--ink); padding:12px 16px; font-size:12px; font-weight:600;
}
.skip-link:focus { transform:none; }
.venue-page { background:var(--ivory); }
.venue-header {
  position:absolute; inset:0 0 auto; z-index:10; display:flex; justify-content:space-between; align-items:center;
  padding:20px clamp(22px,4vw,64px); color:var(--white);
}
.venue-back {
  min-height:44px; display:inline-flex; align-items:center; border-bottom:1px solid rgba(255,255,255,.5);
  font-size:11px; font-weight:600; letter-spacing:.11em; text-transform:uppercase;
}
.venue-back:hover, .venue-back:focus-visible { border-color:var(--white); }
.venue-hero { min-height:min(850px,92svh); position:relative; display:flex; align-items:flex-end; overflow:hidden; background:var(--forest); color:var(--white); }
.venue-hero > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 42%; }
.venue-hero-shade { position:absolute; inset:0; background:linear-gradient(180deg,rgba(4,12,9,.2) 20%,rgba(6,16,12,.86) 100%); }
.venue-hero-copy { position:relative; z-index:1; padding-bottom:clamp(54px,8vw,100px); }
.venue-hero .eyebrow { color:rgba(255,250,240,.74); margin-bottom:18px; }
.venue-hero h1 { max-width:1050px; margin-bottom:24px; font-size:clamp(64px,11vw,145px); }
.venue-hero h1 em { display:block; color:var(--gold); font-size:.47em; line-height:1.12; letter-spacing:-.025em; }
.venue-subtitle { margin:0; font-size:clamp(14px,2vw,20px); letter-spacing:.04em; }
.venue-intro { background:var(--ivory); }
.venue-intro-grid { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr); gap:clamp(42px,8vw,110px); align-items:start; }
.venue-intro h2 { margin-bottom:0; }
.venue-intro-copy { padding-top:34px; }
.venue-intro-copy > p { color:rgba(20,33,28,.7); line-height:1.75; }
.venue-intro-copy .venue-pullquote { color:var(--ink); font-family:var(--serif); font-size:clamp(25px,3vw,38px); line-height:1.22; }
.venue-gallery-section { background:var(--forest); color:var(--white); padding:clamp(90px,12vw,160px) 0; }
.venue-gallery-heading { margin-bottom:52px; }
.venue-gallery-heading .kicker { color:var(--gold); }
.venue-gallery { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:18px; }
.venue-photo { margin:0; }
.venue-photo-wide { grid-column:span 6; }
.venue-photo-square { grid-column:span 3; }
.venue-photo img { display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; background:#0b1713; }
.venue-photo-wide img { aspect-ratio:2/1; }
.venue-photo-square img { aspect-ratio:1; }
.venue-photo figcaption { margin-top:12px; color:rgba(255,250,240,.65); font-size:12px; line-height:1.5; }
.venue-photo-credit { margin:34px 0 0; color:rgba(255,250,240,.52); font-size:11px; }
.venue-photo-credit a { text-decoration:underline; text-underline-offset:4px; }
.venue-details { background:var(--paper); }
.venue-details-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.venue-detail { min-height:300px; padding:34px clamp(20px,3vw,40px); border-right:1px solid var(--line); }
.venue-detail:first-child { padding-left:0; }
.venue-detail:last-child { border-right:0; padding-right:0; }
.venue-detail > span { color:#7f6941; font-size:11px; letter-spacing:.16em; }
.venue-detail h3 { margin:68px 0 18px; font-family:var(--serif); font-size:34px; }
.venue-detail p, .venue-detail address { margin:0; color:rgba(20,33,28,.7); font:inherit; font-style:normal; line-height:1.7; }
.venue-actions { display:flex; align-items:center; flex-wrap:wrap; gap:14px 20px; margin-top:42px; }
.venue-actions .button.ghost { margin-top:0; }
.venue-actions .text-link { margin-left:auto; }
.venue-footer .version { min-height:44px; display:inline-flex; align-items:center; }

.reveal { opacity:0; transform:translateY(22px); transition: opacity .8s ease, transform .8s ease; }
.reveal.visible { opacity:1; transform:none; }

@media (max-width: 820px) {
  .site-header.scrolled {
    background:rgba(18,38,31,.94);
    backdrop-filter:none;
  }
  .site-nav {
    position:fixed; inset:0; background:rgba(8,17,14,.97); display:flex; flex-direction:column;
    justify-content:center; gap:30px; overflow-y:auto; padding:96px 24px 40px; font-size:16px;
    transform:translateY(-100%); visibility:hidden; pointer-events:none;
    transition:transform .35s, visibility 0s linear .35s;
  }
  .site-nav.open { transform:none; visibility:visible; pointer-events:auto; transition-delay:0s; }
  .menu-toggle { display:block; position:relative; z-index:2; }
  .brand { position:relative; z-index:2; }
  .hero-meta { gap:24px; }
  .card-grid { grid-template-columns:1fr; }
  .info-card { min-height:280px; }
  .save-date-layout { grid-template-columns:1fr; }
  .save-date-date { padding:42px 0; border-right:0; border-bottom:1px solid var(--line); }
  .save-date-copy { padding:42px 0; }
  .save-date-copy .calendar-service-links { justify-content:center; }
  .save-date-copy .calendar-note { text-align:center; }
  .timeline-item { grid-template-columns:42px 1fr; gap:14px; }
  .timeline-item p { grid-column:2; }
  .proposal-video { grid-column:1 / -1; margin-top:12px; }
  .crew-grid { grid-template-columns:repeat(2,1fr); }
  .crew-card:last-child { grid-column:1 / -1; width:calc(50% - 7px); justify-self:center; }
  .venue-intro-grid { grid-template-columns:1fr; }
  .venue-intro-copy { padding-top:0; }
  .venue-photo-wide, .venue-photo-square, .venue-photo:last-child { grid-column:1 / -1; }
  .venue-photo img, .venue-photo-square img { aspect-ratio:16/11; }
  .venue-details-grid { grid-template-columns:1fr; }
  .venue-detail, .venue-detail:first-child, .venue-detail:last-child { min-height:0; padding:30px 0; border-right:0; border-bottom:1px solid var(--line); }
  .venue-detail:last-child { border-bottom:0; }
  .venue-detail h3 { margin-top:28px; }
  .venue-actions .text-link { width:100%; margin-left:0; }
}

@media (max-width: 820px) and (max-height: 550px) {
  .site-nav { justify-content:flex-start; }
}

@media (max-width: 520px) {
  .hero-meta { display:grid; grid-template-columns:repeat(3,1fr); width:100%; gap:10px; }
  .hero-meta p { font-size:12px; }
  .scroll-cue { white-space:normal; width:90%; }
  .footer { align-items:flex-start; flex-direction:column; }
  .footer-actions { width:100%; justify-content:space-between; }
  .toast { white-space:normal; text-align:center; }
  .crew-grid { grid-template-columns:1fr; }
  .crew-card, .crew-card:last-child { grid-column:auto; width:auto; }
  .crew-card { min-height:310px; }
  .song-result { grid-template-columns:50px 1fr; }
  .song-result img, .track-art-placeholder { width:50px; }
  .song-result-action { grid-column:2; }
  .timeline-item-video { padding:36px 0; }
  .video-frame { min-height:200px; }
  .venue-header { align-items:flex-start; }
  .venue-back { max-width:160px; justify-content:flex-end; text-align:right; line-height:1.35; }
  .venue-hero { min-height:82svh; }
  .venue-hero h1 { font-size:clamp(58px,20vw,84px); }
  .venue-photo img, .venue-photo-square img { aspect-ratio:4/3; }
  .venue-actions .button { width:100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.001ms !important; transition-duration:.001ms !important; }
  .reveal { opacity:1; transform:none; }
}
