:root {
  --bg: #f4f2eb;
  --surface: #fffdfa;
  --surface-dark: #0f1d28;
  --surface-accent: #d7e6ee;
  --text: #16212b;
  --text-muted: #52606d;
  --border: #d6d3ca;
  --brand: #c4511f;
  --brand-dark: #8b3711;
  --accent: #24536f;
  --shadow: 0 24px 60px rgba(15, 29, 40, 0.12);
  --radius: 22px;
  --shell: 1180px;
  --holiday-glow: transparent;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  color: var(--text);
  background: var(--bg);
  line-height: 1.6;
}

body[data-season-theme="christmas"] {
  --bg: #f4f0e8;
  --surface: #fffdf9;
  --surface-dark: #1f4335;
  --brand: #b63a45;
  --brand-dark: #8e2831;
  --accent: #567c68;
  --holiday-glow: rgba(209, 177, 95, 0.18);
  background:
    radial-gradient(circle at top right, var(--holiday-glow), transparent 28%),
    radial-gradient(circle at top left, rgba(86, 124, 104, 0.1), transparent 24%),
    var(--bg);
}

body[data-season-theme="halloween"] {
  --bg: #1b171b;
  --surface: #2a2228;
  --surface-dark: #171116;
  --text: #f3e9de;
  --text-muted: #d4ba9f;
  --border: #5f4335;
  --brand: #d8672c;
  --brand-dark: #b24d18;
  --accent: #7b5fd0;
  --holiday-glow: rgba(123, 95, 208, 0.14);
  background:
    radial-gradient(circle at top right, rgba(123, 95, 208, 0.15), transparent 25%),
    radial-gradient(circle at top left, rgba(216, 103, 44, 0.12), transparent 22%),
    var(--bg);
}

body[data-season-theme="thanksgiving"] {
  --bg: #f5ede3;
  --surface: #fffaf3;
  --surface-dark: #5b3828;
  --brand: #bc6734;
  --brand-dark: #965022;
  --accent: #8c713e;
  --holiday-glow: rgba(188, 103, 52, 0.14);
  background:
    radial-gradient(circle at top right, rgba(188, 103, 52, 0.14), transparent 28%),
    radial-gradient(circle at top left, rgba(140, 113, 62, 0.1), transparent 22%),
    var(--bg);
}

body[data-season-theme="new-year"] {
  --bg: #eff3f6;
  --surface: #fbfdff;
  --surface-dark: #203748;
  --brand: #3c6179;
  --brand-dark: #27485d;
  --accent: #b3924f;
  --holiday-glow: rgba(179, 146, 79, 0.14);
  background:
    radial-gradient(circle at top right, rgba(179, 146, 79, 0.15), transparent 26%),
    radial-gradient(circle at top left, rgba(60, 97, 121, 0.1), transparent 22%),
    var(--bg);
}

body[data-season-theme="fourth-of-july"] {
  --bg: #eef2f8;
  --surface: #fbfdff;
  --surface-dark: #183b6d;
  --brand: #c84444;
  --brand-dark: #9f3333;
  --accent: #2d5ea8;
  --holiday-glow: rgba(45, 94, 168, 0.16);
  background:
    radial-gradient(circle at top right, rgba(200, 68, 68, 0.13), transparent 26%),
    radial-gradient(circle at top left, rgba(45, 94, 168, 0.12), transparent 24%),
    var(--bg);
}

body[data-season-theme="christmas"]::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    radial-gradient(circle at 10% 15%, rgba(209, 177, 95, 0.3) 0 4px, transparent 5px),
    radial-gradient(circle at 24% 8%, rgba(182, 58, 69, 0.18) 0 5px, transparent 6px),
    radial-gradient(circle at 78% 12%, rgba(86, 124, 104, 0.2) 0 5px, transparent 6px),
    radial-gradient(circle at 90% 18%, rgba(209, 177, 95, 0.24) 0 4px, transparent 5px);
}

body[data-season-theme="halloween"]::before,
body[data-season-theme="thanksgiving"]::before,
body[data-season-theme="new-year"]::before,
body[data-season-theme="fourth-of-july"]::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}

body[data-season-theme="halloween"]::before {
  background-image:
    radial-gradient(circle at 12% 14%, rgba(216, 103, 44, 0.28) 0 4px, transparent 5px),
    radial-gradient(circle at 26% 7%, rgba(123, 95, 208, 0.22) 0 5px, transparent 6px),
    radial-gradient(circle at 82% 11%, rgba(216, 103, 44, 0.24) 0 5px, transparent 6px);
}

body[data-season-theme="thanksgiving"]::before {
  background-image:
    radial-gradient(circle at 10% 15%, rgba(188, 103, 52, 0.24) 0 6px, transparent 7px),
    radial-gradient(circle at 22% 8%, rgba(140, 113, 62, 0.18) 0 5px, transparent 6px),
    radial-gradient(circle at 84% 10%, rgba(215, 153, 67, 0.2) 0 5px, transparent 6px);
}

body[data-season-theme="new-year"]::before {
  background-image:
    radial-gradient(circle at 12% 15%, rgba(179, 146, 79, 0.24) 0 4px, transparent 5px),
    radial-gradient(circle at 25% 8%, rgba(60, 97, 121, 0.18) 0 5px, transparent 6px),
    radial-gradient(circle at 80% 11%, rgba(179, 146, 79, 0.22) 0 5px, transparent 6px),
    radial-gradient(circle at 90% 17%, rgba(60, 97, 121, 0.18) 0 4px, transparent 5px);
}

body[data-season-theme="fourth-of-july"]::before {
  background-image:
    radial-gradient(circle at 12% 14%, rgba(200, 68, 68, 0.22) 0 5px, transparent 6px),
    radial-gradient(circle at 25% 8%, rgba(45, 94, 168, 0.2) 0 5px, transparent 6px),
    radial-gradient(circle at 80% 10%, rgba(255, 255, 255, 0.22) 0 4px, transparent 5px);
}

img {
  max-width: 100%;
  display: block;
}

a {
  color: inherit;
}

.shell {
  width: min(calc(100% - 2rem), var(--shell));
  margin: 0 auto;
}

.seasonal-banner {
  padding: 0.85rem 1rem;
  text-align: center;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #fff;
}

body[data-season-theme="christmas"] .seasonal-banner {
  background:
    linear-gradient(90deg, #8e2831 0%, #b63a45 45%, #567c68 100%);
  box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.08);
}

body[data-season-theme="halloween"] .seasonal-banner {
  background: linear-gradient(90deg, #22181f 0%, #d8672c 52%, #7b5fd0 100%);
}

body[data-season-theme="thanksgiving"] .seasonal-banner {
  background: linear-gradient(90deg, #744a35 0%, #bc6734 45%, #8c713e 100%);
}

body[data-season-theme="new-year"] .seasonal-banner {
  background: linear-gradient(90deg, #27485d 0%, #3c6179 50%, #b3924f 100%);
}

body[data-season-theme="fourth-of-july"] .seasonal-banner {
  background: linear-gradient(90deg, #183b6d 0%, #2d5ea8 50%, #c84444 100%);
}

.topbar {
  background: var(--surface-dark);
  color: #f6f1e8;
}

body[data-season-theme="halloween"] .topbar,
body[data-season-theme="halloween"] .site-footer,
body[data-season-theme="halloween"] .section--dark {
  color: #f4eadf;
}

.topbar__inner {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  padding: 0.85rem 0;
  font-size: 0.95rem;
}

.topbar p {
  margin: 0;
}

.topbar a {
  color: #ffd8c7;
  font-weight: 700;
  text-decoration: none;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  backdrop-filter: blur(14px);
  background: rgba(244, 242, 235, 0.94);
  border-bottom: 1px solid rgba(22, 33, 43, 0.08);
}

body[data-season-theme="christmas"] .site-header {
  background: rgba(244, 240, 232, 0.94);
}

body[data-season-theme="halloween"] .site-header {
  background: rgba(27, 23, 27, 0.94);
  border-bottom-color: rgba(216, 103, 44, 0.14);
}

body[data-season-theme="thanksgiving"] .site-header {
  background: rgba(245, 237, 227, 0.94);
}

body[data-season-theme="new-year"] .site-header {
  background: rgba(239, 243, 246, 0.94);
}

body[data-season-theme="fourth-of-july"] .site-header {
  background: rgba(238, 242, 248, 0.94);
}

.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
}

.brand {
  flex-shrink: 0;
}

.nav-toggle {
  display: none;
  align-items: center;
  gap: 0.45rem;
  padding: 0.7rem 0.9rem;
  border: 1px solid rgba(22, 33, 43, 0.12);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.8);
  color: var(--text);
  font: inherit;
  font-weight: 700;
}

.nav-toggle span:not(.nav-toggle__label) {
  display: block;
  width: 16px;
  height: 2px;
  margin: 2px 0;
  background: currentColor;
}

.nav-toggle__label {
  margin-left: 0.35rem;
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.4rem;
  flex-wrap: wrap;
}

.site-nav a {
  text-decoration: none;
  color: var(--text);
  font-weight: 700;
}

.site-nav a:hover,
.site-nav a:focus-visible {
  color: var(--brand);
}

body[data-season-theme="halloween"] .site-nav a {
  color: #f4eadf;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0.75rem 1.2rem;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  transition: transform 0.2s ease, background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.button:hover {
  transform: translateY(-1px);
}

.button--primary {
  background: var(--brand);
  color: #fff;
}

.button--primary:hover {
  background: var(--brand-dark);
}

.button--secondary {
  border: 1px solid rgba(22, 33, 43, 0.18);
  background: rgba(255, 255, 255, 0.72);
  color: var(--text);
}

.section--dark .button--secondary,
.site-footer .button--secondary,
.hero-seasonal-panel .button--secondary {
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.92);
  color: #16212b;
}

.eyebrow {
  margin: 0 0 0.5rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--brand);
  font-size: 0.82rem;
  font-weight: 800;
}

.hero {
  position: relative;
  overflow: clip;
  min-height: clamp(560px, 78vh, 720px);
  display: flex;
  align-items: center;
}

.hero__image {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(15, 29, 40, 0.88) 0%, rgba(15, 29, 40, 0.68) 46%, rgba(15, 29, 40, 0.38) 100%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

.hero__season-art {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}

.season-art {
  position: absolute;
  opacity: 0;
  transition: opacity 0.35s ease, transform 0.35s ease;
}

@keyframes holidayPulse {
  0%, 100% {
    transform: scale(0.92);
    opacity: 0.68;
  }
  50% {
    transform: scale(1.16);
    opacity: 1;
  }
}

@keyframes holidayFloat {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }
  50% {
    transform: translate3d(-10px, 12px, 0) rotate(8deg);
  }
}

@keyframes holidayDrift {
  0% {
    transform: translate3d(0, 0, 0) rotate(-8deg);
  }
  50% {
    transform: translate3d(-12px, 16px, 0) rotate(14deg);
  }
  100% {
    transform: translate3d(6px, 34px, 0) rotate(-2deg);
  }
}

@keyframes sparkleBar {
  0%, 100% {
    opacity: 0.45;
  }
  50% {
    opacity: 1;
  }
}

@keyframes fireworkBurst {
  0%, 100% {
    transform: scale(0.7);
    opacity: 0.35;
    box-shadow:
      0 -32px 0 0 currentColor,
      0 32px 0 0 currentColor,
      32px 0 0 0 currentColor,
      -32px 0 0 0 currentColor,
      22px 22px 0 0 currentColor,
      -22px -22px 0 0 currentColor,
      22px -22px 0 0 currentColor,
      -22px 22px 0 0 currentColor;
  }
  45% {
    transform: scale(1.08);
    opacity: 1;
    box-shadow:
      0 -46px 0 0 currentColor,
      0 46px 0 0 currentColor,
      46px 0 0 0 currentColor,
      -46px 0 0 0 currentColor,
      32px 32px 0 0 currentColor,
      -32px -32px 0 0 currentColor,
      32px -32px 0 0 currentColor,
      -32px 32px 0 0 currentColor;
  }
}

@media (prefers-reduced-motion: reduce) {
  .season-art,
  body[data-season-theme] .hero__season-art::before,
  body[data-season-theme] .hero__season-art::after {
    animation: none !important;
  }
}

.seasonal-support {
  max-width: 44rem;
  margin: 1rem 0 0;
  color: rgba(255, 255, 255, 0.9);
  font-weight: 600;
}

body[data-season-theme="christmas"] .hero__image {
  background:
    linear-gradient(90deg, rgba(31, 67, 53, 0.74) 0%, rgba(31, 67, 53, 0.56) 46%, rgba(31, 67, 53, 0.26) 100%),
    radial-gradient(circle at top right, rgba(209, 177, 95, 0.12), transparent 25%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

body[data-season-theme="christmas"] .season-art {
  opacity: 1;
}

body[data-season-theme="christmas"] .season-art--one,
body[data-season-theme="christmas"] .season-art--two,
body[data-season-theme="christmas"] .season-art--three {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  box-shadow: 0 0 12px rgba(209, 177, 95, 0.18);
}

body[data-season-theme="christmas"] .season-art--one {
  top: 16%;
  right: 14%;
  background: #d1b15f;
  animation: holidayPulse 2.4s ease-in-out infinite;
}

body[data-season-theme="christmas"] .season-art--two {
  top: 26%;
  right: 8%;
  background: #b63a45;
  animation: holidayPulse 2.2s ease-in-out infinite 0.4s;
}

body[data-season-theme="christmas"] .season-art--three {
  top: 38%;
  right: 16%;
  background: #567c68;
  animation: holidayPulse 2.6s ease-in-out infinite 0.8s;
}

body[data-season-theme="halloween"] .hero__image {
  background:
    linear-gradient(90deg, rgba(23, 17, 22, 0.78) 0%, rgba(23, 17, 22, 0.6) 48%, rgba(23, 17, 22, 0.28) 100%),
    radial-gradient(circle at top right, rgba(123, 95, 208, 0.12), transparent 24%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

body[data-season-theme="halloween"] .season-art {
  opacity: 1;
}

body[data-season-theme="halloween"] .season-art--one {
  width: 92px;
  height: 92px;
  top: 11%;
  right: 10%;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #f0bf72 0%, #d8672c 60%, rgba(216, 103, 44, 0) 61%);
  box-shadow: 0 0 22px rgba(216, 103, 44, 0.1);
  animation: holidayPulse 3.2s ease-in-out infinite;
}

body[data-season-theme="halloween"] .season-art--two,
body[data-season-theme="halloween"] .season-art--three {
  width: 24px;
  height: 10px;
  border-radius: 20px 20px 0 0;
  background: #7b5fd0;
}

body[data-season-theme="halloween"] .season-art--two {
  top: 18%;
  right: 24%;
  transform: rotate(-18deg);
  animation: holidayFloat 3.8s ease-in-out infinite;
}

body[data-season-theme="halloween"] .season-art--three {
  transform: rotate(18deg);
  top: 22%;
  right: 28%;
  animation: holidayFloat 4.1s ease-in-out infinite 0.8s;
}

body[data-season-theme="thanksgiving"] .hero__image {
  background:
    linear-gradient(90deg, rgba(91, 56, 40, 0.74) 0%, rgba(91, 56, 40, 0.56) 48%, rgba(91, 56, 40, 0.24) 100%),
    radial-gradient(circle at top right, rgba(215, 153, 67, 0.1), transparent 25%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

body[data-season-theme="thanksgiving"] .season-art {
  opacity: 1;
}

body[data-season-theme="thanksgiving"] .season-art--one,
body[data-season-theme="thanksgiving"] .season-art--two,
body[data-season-theme="thanksgiving"] .season-art--three {
  width: 30px;
  height: 18px;
  border-radius: 100% 0 100% 0;
}

body[data-season-theme="thanksgiving"] .season-art--one {
  top: 16%;
  right: 11%;
  background: #bc6734;
  transform: rotate(22deg);
  animation: holidayDrift 5.2s ease-in-out infinite;
}

body[data-season-theme="thanksgiving"] .season-art--two {
  top: 24%;
  right: 18%;
  background: #d79943;
  transform: rotate(-18deg);
  animation: holidayDrift 4.8s ease-in-out infinite 0.5s;
}

body[data-season-theme="thanksgiving"] .season-art--three {
  top: 34%;
  right: 10%;
  background: #8c713e;
  transform: rotate(12deg);
  animation: holidayDrift 5.5s ease-in-out infinite 1s;
}

body[data-season-theme="new-year"] .hero__image {
  background:
    linear-gradient(90deg, rgba(32, 55, 72, 0.74) 0%, rgba(32, 55, 72, 0.56) 48%, rgba(32, 55, 72, 0.24) 100%),
    radial-gradient(circle at top right, rgba(179, 146, 79, 0.1), transparent 25%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

body[data-season-theme="new-year"] .season-art {
  opacity: 1;
}

body[data-season-theme="new-year"] .season-art--one,
body[data-season-theme="new-year"] .season-art--two,
body[data-season-theme="new-year"] .season-art--three {
  width: 6px;
  height: 30px;
  border-radius: 999px;
}

body[data-season-theme="new-year"] .season-art--one {
  top: 14%;
  right: 11%;
  background: #b3924f;
  transform: rotate(28deg);
  animation: sparkleBar 1.9s ease-in-out infinite;
}

body[data-season-theme="new-year"] .season-art--two {
  top: 18%;
  right: 18%;
  background: #ffffff;
  transform: rotate(-20deg);
  animation: sparkleBar 2.1s ease-in-out infinite 0.45s;
}

body[data-season-theme="new-year"] .season-art--three {
  top: 26%;
  right: 13%;
  background: #3c6179;
  transform: rotate(14deg);
  animation: sparkleBar 2s ease-in-out infinite 0.9s;
}

body[data-season-theme="fourth-of-july"] .hero__image {
  background:
    linear-gradient(90deg, rgba(24, 59, 109, 0.74) 0%, rgba(24, 59, 109, 0.54) 46%, rgba(24, 59, 109, 0.22) 100%),
    radial-gradient(circle at top right, rgba(200, 68, 68, 0.12), transparent 26%),
    url("../images/gales_wrecker2.jpg") center/cover no-repeat;
}

body[data-season-theme="fourth-of-july"] .season-art {
  opacity: 1;
}

body[data-season-theme="fourth-of-july"] .season-art--one,
body[data-season-theme="fourth-of-july"] .season-art--two,
body[data-season-theme="fourth-of-july"] .season-art--three {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  box-shadow: 0 0 18px currentColor;
}

body[data-season-theme="fourth-of-july"] .season-art--one::before,
body[data-season-theme="fourth-of-july"] .season-art--one::after,
body[data-season-theme="fourth-of-july"] .season-art--two::before,
body[data-season-theme="fourth-of-july"] .season-art--two::after,
body[data-season-theme="fourth-of-july"] .season-art--three::before,
body[data-season-theme="fourth-of-july"] .season-art--three::after {
  content: "";
  position: absolute;
  inset: 50%;
  translate: -50% -50%;
  border-radius: 50%;
  pointer-events: none;
}

body[data-season-theme="fourth-of-july"] .season-art--one {
  top: 13%;
  right: 11%;
  color: #ffffff;
  background: currentColor;
  animation: fireworkBurst 2.8s ease-out infinite;
}

body[data-season-theme="fourth-of-july"] .season-art--two {
  top: 24%;
  right: 22%;
  color: #c84444;
  background: currentColor;
  animation: fireworkBurst 3.1s ease-out infinite 0.8s;
}

body[data-season-theme="fourth-of-july"] .season-art--three {
  top: 35%;
  right: 9%;
  color: #2d5ea8;
  background: currentColor;
  animation: fireworkBurst 2.9s ease-out infinite 1.5s;
}

body[data-season-theme="fourth-of-july"] .season-art--one::before,
body[data-season-theme="fourth-of-july"] .season-art--two::before,
body[data-season-theme="fourth-of-july"] .season-art--three::before {
  width: 88px;
  height: 88px;
  background:
    radial-gradient(circle, transparent 0 32%, currentColor 33% 35%, transparent 36% 100%),
    conic-gradient(from 0deg,
      transparent 0deg 12deg,
      currentColor 12deg 18deg,
      transparent 18deg 42deg,
      currentColor 42deg 48deg,
      transparent 48deg 72deg,
      currentColor 72deg 78deg,
      transparent 78deg 102deg,
      currentColor 102deg 108deg,
      transparent 108deg 132deg,
      currentColor 132deg 138deg,
      transparent 138deg 162deg,
      currentColor 162deg 168deg,
      transparent 168deg 192deg,
      currentColor 192deg 198deg,
      transparent 198deg 222deg,
      currentColor 222deg 228deg,
      transparent 228deg 252deg,
      currentColor 252deg 258deg,
      transparent 258deg 282deg,
      currentColor 282deg 288deg,
      transparent 288deg 312deg,
      currentColor 312deg 318deg,
      transparent 318deg 342deg,
      currentColor 342deg 348deg,
      transparent 348deg 360deg);
  opacity: 0.68;
  filter: blur(0.2px);
  animation: holidayPulse 2s ease-in-out infinite;
}

body[data-season-theme="fourth-of-july"] .season-art--one::after,
body[data-season-theme="fourth-of-july"] .season-art--two::after,
body[data-season-theme="fourth-of-july"] .season-art--three::after {
  width: 126px;
  height: 126px;
  background:
    radial-gradient(circle, rgba(255, 255, 255, 0.16) 0 6%, transparent 7% 100%),
    radial-gradient(circle at 50% 0, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 100% 50%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 50% 100%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 0 50%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 82% 18%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 18% 82%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 18% 18%, currentColor 0 2px, transparent 3px),
    radial-gradient(circle at 82% 82%, currentColor 0 2px, transparent 3px);
  opacity: 0.72;
  animation: holidayPulse 2.5s ease-in-out infinite reverse;
}

@keyframes refinedTwinkle {
  0%, 100% {
    opacity: 0.52;
    filter: brightness(0.86);
  }
  45%, 60% {
    opacity: 1;
    filter: brightness(1.2);
  }
}

@keyframes snowfallDrift {
  from {
    transform: translate3d(0, -18px, 0);
  }
  to {
    transform: translate3d(-22px, 46px, 0);
  }
}

@keyframes fogSlide {
  0%, 100% {
    transform: translate3d(0, 0, 0);
    opacity: 0.28;
  }
  50% {
    transform: translate3d(-34px, 12px, 0);
    opacity: 0.48;
  }
}

@keyframes leafSweep {
  0% {
    transform: translate3d(0, -20px, 0) rotate(-14deg);
  }
  50% {
    transform: translate3d(-34px, 42px, 0) rotate(18deg);
  }
  100% {
    transform: translate3d(18px, 92px, 0) rotate(-10deg);
  }
}

@keyframes confettiFall {
  from {
    transform: translate3d(0, -48px, 0);
  }
  to {
    transform: translate3d(-20px, 90px, 0);
  }
}

@keyframes elegantBurst {
  0%, 100% {
    opacity: 0.18;
    transform: scale(0.72) rotate(var(--burst-rotate, 0deg));
  }
  35% {
    opacity: 0.95;
    transform: scale(1.04) rotate(var(--burst-rotate, 0deg));
  }
  70% {
    opacity: 0.36;
    transform: scale(1.18) rotate(var(--burst-rotate, 0deg));
  }
}

body[data-season-theme] .hero__season-art {
  overflow: hidden;
}

body[data-season-theme] .hero__season-art::before,
body[data-season-theme] .hero__season-art::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

body[data-season-theme="christmas"] .hero__season-art::before {
  top: 7%;
  right: -4rem;
  width: min(52rem, 58vw);
  height: 9rem;
  border-top: 1px solid rgba(249, 232, 174, 0.42);
  border-radius: 50%;
  transform: rotate(-7deg);
  background:
    radial-gradient(circle at 9% 17%, #f9e8ae 0 5px, transparent 6px),
    radial-gradient(circle at 23% 22%, #b63a45 0 6px, transparent 7px),
    radial-gradient(circle at 39% 16%, #f9e8ae 0 5px, transparent 6px),
    radial-gradient(circle at 55% 23%, #6f947d 0 6px, transparent 7px),
    radial-gradient(circle at 72% 16%, #f9e8ae 0 5px, transparent 6px),
    radial-gradient(circle at 88% 22%, #b63a45 0 6px, transparent 7px);
  filter: drop-shadow(0 0 18px rgba(249, 232, 174, 0.32));
  animation: refinedTwinkle 2.8s ease-in-out infinite;
}

body[data-season-theme="christmas"] .hero__season-art::after {
  inset: -2rem -2rem 0 0;
  background-image:
    radial-gradient(circle, rgba(255, 255, 255, 0.62) 0 1px, transparent 2px),
    radial-gradient(circle, rgba(249, 232, 174, 0.34) 0 1px, transparent 2px);
  background-position: 0 0, 34px 48px;
  background-size: 96px 112px, 138px 156px;
  opacity: 0.32;
  animation: snowfallDrift 12s linear infinite;
}

body[data-season-theme="christmas"] .season-art--one,
body[data-season-theme="christmas"] .season-art--two,
body[data-season-theme="christmas"] .season-art--three {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  box-shadow: 0 0 26px currentColor;
}

body[data-season-theme="christmas"] .season-art--one {
  top: 20%;
  right: 18%;
  color: #f9e8ae;
}

body[data-season-theme="christmas"] .season-art--two {
  top: 29%;
  right: 10%;
  color: #b63a45;
}

body[data-season-theme="christmas"] .season-art--three {
  top: 39%;
  right: 20%;
  color: #6f947d;
}

body[data-season-theme="halloween"] .hero__season-art::before {
  top: 9%;
  right: 10%;
  width: 8.5rem;
  height: 8.5rem;
  border-radius: 50%;
  background:
    radial-gradient(circle at 38% 34%, #f4c878 0 34%, #d8672c 62%, rgba(216, 103, 44, 0) 64%);
  box-shadow: 0 0 54px rgba(216, 103, 44, 0.36);
  animation: refinedTwinkle 4.5s ease-in-out infinite;
}

body[data-season-theme="halloween"] .hero__season-art::after {
  right: -6rem;
  bottom: 8%;
  width: 58vw;
  height: 18rem;
  background:
    linear-gradient(8deg, transparent 0 18%, rgba(123, 95, 208, 0.14) 19% 28%, transparent 29% 100%),
    linear-gradient(-7deg, transparent 0 32%, rgba(255, 255, 255, 0.08) 33% 40%, transparent 41% 100%);
  filter: blur(8px);
  animation: fogSlide 8s ease-in-out infinite;
}

body[data-season-theme="halloween"] .season-art--one,
body[data-season-theme="halloween"] .season-art--two,
body[data-season-theme="halloween"] .season-art--three {
  width: 54px;
  height: 18px;
  border-radius: 0;
  background: #171116;
  clip-path: polygon(0 48%, 18% 18%, 36% 48%, 50% 20%, 64% 48%, 82% 18%, 100% 48%, 82% 56%, 64% 46%, 50% 76%, 36% 46%, 18% 56%);
  filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.32));
  animation: holidayFloat 5.5s ease-in-out infinite;
}

body[data-season-theme="halloween"] .season-art--one {
  top: 21%;
  right: 25%;
}

body[data-season-theme="halloween"] .season-art--two {
  top: 31%;
  right: 14%;
  animation-delay: 0.8s;
}

body[data-season-theme="halloween"] .season-art--three {
  top: 17%;
  right: 34%;
  transform: scale(0.7);
  animation-delay: 1.5s;
}

body[data-season-theme="thanksgiving"] .hero__season-art::before {
  top: 8%;
  right: 0;
  width: 48vw;
  height: 72%;
  background:
    radial-gradient(ellipse at 20% 20%, rgba(215, 153, 67, 0.18), transparent 34%),
    radial-gradient(ellipse at 68% 40%, rgba(188, 103, 52, 0.16), transparent 38%);
  filter: blur(2px);
}

body[data-season-theme="thanksgiving"] .hero__season-art::after {
  top: -4rem;
  right: -2rem;
  width: min(42rem, 54vw);
  height: 100%;
  background:
    radial-gradient(ellipse at 12% 18%, #bc6734 0 11px, transparent 12px),
    radial-gradient(ellipse at 38% 28%, #d79943 0 10px, transparent 11px),
    radial-gradient(ellipse at 67% 14%, #8c713e 0 12px, transparent 13px),
    radial-gradient(ellipse at 80% 42%, #bc6734 0 10px, transparent 11px);
  background-size: 240px 260px;
  opacity: 0.42;
  animation: leafSweep 10s ease-in-out infinite;
}

body[data-season-theme="thanksgiving"] .season-art--one,
body[data-season-theme="thanksgiving"] .season-art--two,
body[data-season-theme="thanksgiving"] .season-art--three {
  width: 42px;
  height: 24px;
  border-radius: 100% 0 100% 0;
  box-shadow: 0 10px 22px rgba(91, 56, 40, 0.2);
  animation: leafSweep 8s ease-in-out infinite;
}

body[data-season-theme="thanksgiving"] .season-art--one {
  top: 17%;
  right: 14%;
}

body[data-season-theme="thanksgiving"] .season-art--two {
  top: 31%;
  right: 22%;
  animation-delay: 0.9s;
}

body[data-season-theme="thanksgiving"] .season-art--three {
  top: 43%;
  right: 10%;
  animation-delay: 1.7s;
}

body[data-season-theme="new-year"] .hero__season-art::before {
  top: 9%;
  right: 6%;
  width: min(38rem, 46vw);
  height: 20rem;
  background:
    repeating-linear-gradient(78deg, transparent 0 18px, rgba(179, 146, 79, 0.72) 19px 21px, transparent 22px 42px),
    repeating-linear-gradient(118deg, transparent 0 24px, rgba(255, 255, 255, 0.58) 25px 27px, transparent 28px 52px);
  mask-image: radial-gradient(ellipse at center, #000 0 45%, transparent 72%);
  opacity: 0.44;
  animation: refinedTwinkle 3.2s ease-in-out infinite;
}

body[data-season-theme="new-year"] .hero__season-art::after {
  inset: -5rem -1rem auto auto;
  width: min(42rem, 55vw);
  height: 26rem;
  background:
    linear-gradient(90deg, rgba(179, 146, 79, 0.68) 0 6px, transparent 7px 100%),
    linear-gradient(90deg, rgba(255, 255, 255, 0.62) 0 4px, transparent 5px 100%),
    linear-gradient(90deg, rgba(60, 97, 121, 0.78) 0 5px, transparent 6px 100%);
  background-size: 84px 16px, 110px 14px, 134px 18px;
  background-position: 0 0, 28px 52px, 64px 96px;
  opacity: 0.42;
  animation: confettiFall 7s linear infinite;
}

body[data-season-theme="new-year"] .season-art--one,
body[data-season-theme="new-year"] .season-art--two,
body[data-season-theme="new-year"] .season-art--three {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  background:
    radial-gradient(circle, currentColor 0 3px, transparent 4px),
    conic-gradient(from 0deg, transparent 0 12deg, currentColor 13deg 16deg, transparent 17deg 42deg, currentColor 43deg 46deg, transparent 47deg 72deg, currentColor 73deg 76deg, transparent 77deg 100deg, currentColor 101deg 104deg, transparent 105deg 132deg, currentColor 133deg 136deg, transparent 137deg 166deg, currentColor 167deg 170deg, transparent 171deg 198deg, currentColor 199deg 202deg, transparent 203deg 232deg, currentColor 233deg 236deg, transparent 237deg 270deg, currentColor 271deg 274deg, transparent 275deg 314deg, currentColor 315deg 318deg, transparent 319deg 360deg);
  opacity: 0.72;
  animation: elegantBurst 3.4s ease-out infinite;
}

body[data-season-theme="new-year"] .season-art--one {
  top: 12%;
  right: 13%;
  color: #b3924f;
}

body[data-season-theme="new-year"] .season-art--two {
  top: 26%;
  right: 23%;
  color: #ffffff;
  animation-delay: 0.8s;
}

body[data-season-theme="new-year"] .season-art--three {
  top: 35%;
  right: 10%;
  color: #7ea5bd;
  animation-delay: 1.45s;
}

body[data-season-theme="fourth-of-july"] .hero__season-art::before {
  top: 6%;
  right: 4%;
  width: min(42rem, 52vw);
  height: 28rem;
  background:
    radial-gradient(circle at 22% 28%, rgba(255, 255, 255, 0.9) 0 2px, transparent 3px),
    radial-gradient(circle at 58% 18%, rgba(200, 68, 68, 0.86) 0 2px, transparent 3px),
    radial-gradient(circle at 80% 46%, rgba(45, 94, 168, 0.92) 0 2px, transparent 3px),
    conic-gradient(from 10deg at 22% 28%, transparent 0 8deg, rgba(255,255,255,0.76) 9deg 11deg, transparent 12deg 35deg, rgba(255,255,255,0.62) 36deg 38deg, transparent 39deg 70deg, rgba(255,255,255,0.7) 71deg 73deg, transparent 74deg 360deg),
    conic-gradient(from 28deg at 58% 18%, transparent 0 10deg, rgba(200,68,68,0.78) 11deg 13deg, transparent 14deg 46deg, rgba(255,255,255,0.64) 47deg 49deg, transparent 50deg 92deg, rgba(200,68,68,0.72) 93deg 95deg, transparent 96deg 360deg),
    conic-gradient(from -8deg at 80% 46%, transparent 0 9deg, rgba(45,94,168,0.86) 10deg 12deg, transparent 13deg 52deg, rgba(255,255,255,0.58) 53deg 55deg, transparent 56deg 102deg, rgba(45,94,168,0.72) 103deg 105deg, transparent 106deg 360deg);
  mask-image: radial-gradient(ellipse at 64% 28%, #000 0 54%, transparent 74%);
  filter: drop-shadow(0 0 24px rgba(255, 255, 255, 0.18));
  opacity: 0.72;
  animation: refinedTwinkle 3.6s ease-in-out infinite;
}

body[data-season-theme="fourth-of-july"] .hero__season-art::after {
  top: 12%;
  right: 3%;
  width: min(38rem, 48vw);
  height: 30rem;
  background-image:
    radial-gradient(circle at 10% 8%, rgba(255, 255, 255, 0.82) 0 1px, transparent 2px),
    radial-gradient(circle at 35% 20%, rgba(200, 68, 68, 0.72) 0 1px, transparent 2px),
    radial-gradient(circle at 68% 10%, rgba(255, 255, 255, 0.72) 0 1px, transparent 2px),
    radial-gradient(circle at 88% 34%, rgba(45, 94, 168, 0.72) 0 1px, transparent 2px),
    radial-gradient(circle at 48% 58%, rgba(255, 255, 255, 0.54) 0 1px, transparent 2px);
  background-size: 150px 170px;
  opacity: 0.6;
  animation: snowfallDrift 9s linear infinite;
}

body[data-season-theme="fourth-of-july"] .season-art--one,
body[data-season-theme="fourth-of-july"] .season-art--two,
body[data-season-theme="fourth-of-july"] .season-art--three {
  border-radius: 50%;
  background:
    radial-gradient(circle, currentColor 0 2px, transparent 3px),
    conic-gradient(from var(--burst-rotate, 0deg), transparent 0 7deg, currentColor 8deg 10deg, transparent 11deg 32deg, currentColor 33deg 35deg, transparent 36deg 70deg, currentColor 71deg 73deg, transparent 74deg 112deg, currentColor 113deg 115deg, transparent 116deg 158deg, currentColor 159deg 161deg, transparent 162deg 204deg, currentColor 205deg 207deg, transparent 208deg 250deg, currentColor 251deg 253deg, transparent 254deg 306deg, currentColor 307deg 309deg, transparent 310deg 360deg);
  box-shadow: none;
  filter: drop-shadow(0 0 14px currentColor);
  opacity: 0.68;
  animation: elegantBurst 3.2s ease-out infinite;
}

body[data-season-theme="fourth-of-july"] .season-art--one::before,
body[data-season-theme="fourth-of-july"] .season-art--one::after,
body[data-season-theme="fourth-of-july"] .season-art--two::before,
body[data-season-theme="fourth-of-july"] .season-art--two::after,
body[data-season-theme="fourth-of-july"] .season-art--three::before,
body[data-season-theme="fourth-of-july"] .season-art--three::after {
  display: none;
}

body[data-season-theme="fourth-of-july"] .season-art--one {
  --burst-rotate: 12deg;
  top: 12%;
  right: 12%;
  width: 132px;
  height: 132px;
  color: rgba(255, 255, 255, 0.92);
}

body[data-season-theme="fourth-of-july"] .season-art--two {
  --burst-rotate: -18deg;
  top: 27%;
  right: 22%;
  width: 112px;
  height: 112px;
  color: rgba(200, 68, 68, 0.88);
  animation-delay: 0.75s;
}

body[data-season-theme="fourth-of-july"] .season-art--three {
  --burst-rotate: 34deg;
  top: 36%;
  right: 8%;
  width: 154px;
  height: 154px;
  color: rgba(96, 143, 213, 0.88);
  animation-delay: 1.35s;
}

@media (max-width: 760px) {
  .hero__season-art {
    display: none;
  }

  body[data-season-theme] .hero__image {
    background:
      linear-gradient(180deg, rgba(15, 29, 40, 0.86) 0%, rgba(15, 29, 40, 0.72) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }

  body[data-season-theme="christmas"] .hero__image {
    background:
      linear-gradient(180deg, rgba(31, 67, 53, 0.88) 0%, rgba(182, 58, 69, 0.46) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }

  body[data-season-theme="halloween"] .hero__image {
    background:
      linear-gradient(180deg, rgba(23, 17, 22, 0.9) 0%, rgba(123, 95, 208, 0.44) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }

  body[data-season-theme="thanksgiving"] .hero__image {
    background:
      linear-gradient(180deg, rgba(91, 56, 40, 0.88) 0%, rgba(188, 103, 52, 0.44) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }

  body[data-season-theme="new-year"] .hero__image {
    background:
      linear-gradient(180deg, rgba(32, 55, 72, 0.88) 0%, rgba(179, 146, 79, 0.34) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }

  body[data-season-theme="fourth-of-july"] .hero__image {
    background:
      linear-gradient(180deg, rgba(24, 59, 109, 0.9) 0%, rgba(200, 68, 68, 0.42) 100%),
      url("../images/gales_wrecker2.jpg") center/cover no-repeat;
  }
}

.hero__content {
  position: relative;
  z-index: 1;
  padding: 4rem 0 3rem;
  color: #fff;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
  gap: 1rem 2rem;
  align-items: center;
}

.hero__content > * {
  grid-column: 1;
}

.hero h1,
.page-hero h1,
.section-heading h2,
.intro-grid h2,
.cta-panel h2 {
  line-height: 1.05;
  letter-spacing: -0.03em;
}

.hero h1 {
  margin: 0;
  max-width: 10ch;
  font-size: clamp(2.5rem, 4.8vw, 4.35rem);
}

.hero__lead,
.page-hero__lead {
  max-width: 38rem;
  font-size: 1rem;
}

.hero__notice {
  max-width: 37rem;
  margin: 0.9rem 0 0;
  padding: 0.85rem 1rem;
  border-left: 4px solid var(--brand);
  background: rgba(255, 255, 255, 0.12);
  color: #f7f3eb;
  font-size: 0.98rem;
}

.holiday-kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 1rem;
  padding: 0.55rem 0.95rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.14);
  color: #fff5d9;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: 0.8rem;
}

body[data-season-theme="christmas"] .holiday-kicker {
  background: rgba(182, 58, 69, 0.16);
  border: 1px solid rgba(209, 177, 95, 0.22);
}

body[data-season-theme="halloween"] .holiday-kicker {
  background: rgba(123, 95, 208, 0.14);
  border: 1px solid rgba(216, 103, 44, 0.22);
}

body[data-season-theme="thanksgiving"] .holiday-kicker {
  background: rgba(188, 103, 52, 0.14);
  border: 1px solid rgba(140, 113, 62, 0.2);
}

body[data-season-theme="new-year"] .holiday-kicker {
  background: rgba(60, 97, 121, 0.14);
  border: 1px solid rgba(179, 146, 79, 0.22);
}

body[data-season-theme="fourth-of-july"] .holiday-kicker {
  background: rgba(24, 59, 109, 0.24);
  border: 1px solid rgba(200, 68, 68, 0.24);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin-top: 1.4rem;
}

.hero-seasonal-panel {
  grid-column: 2;
  grid-row: 2 / span 6;
  align-self: center;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  align-items: start;
  max-width: none;
  margin-top: 0;
  padding: 1.15rem 1.25rem;
  border-radius: var(--radius);
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.08));
  border: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(8px);
  box-shadow: var(--shadow);
}

body[data-season-theme] .hero .hero__notice,
body[data-season-theme] .hero .hero__actions {
  display: none;
}

.hero-seasonal-panel h2 {
  margin: 0;
  max-width: 14ch;
  font-size: clamp(1.35rem, 2.1vw, 2rem);
  line-height: 1.08;
}

.hero-seasonal-panel p:last-child {
  margin-bottom: 0;
}

.hero-seasonal-panel .eyebrow {
  margin-bottom: 0.4rem;
}

.hero-seasonal-panel__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 0.75rem;
}

.hero-seasonal-panel__actions .button {
  min-height: 44px;
  padding: 0.7rem 1rem;
}

.section,
.page-hero {
  padding: 5rem 0;
}

.section--dark {
  background: var(--surface-dark);
  color: #eef4f7;
}

.section--accent {
  background: linear-gradient(135deg, #dce8ea 0%, #f6efe1 100%);
}

body[data-season-theme="christmas"] .section--accent {
  background:
    radial-gradient(circle at top right, rgba(209, 177, 95, 0.1), transparent 24%),
    linear-gradient(135deg, #eef2ea 0%, #f7eee5 100%);
}

body[data-season-theme="halloween"] .section--accent {
  background:
    radial-gradient(circle at top right, rgba(123, 95, 208, 0.12), transparent 22%),
    linear-gradient(135deg, #292128 0%, #33231e 100%);
}

body[data-season-theme="thanksgiving"] .section--accent {
  background:
    radial-gradient(circle at top right, rgba(215, 153, 67, 0.1), transparent 24%),
    linear-gradient(135deg, #f0e5d8 0%, #f8efe5 100%);
}

body[data-season-theme="new-year"] .section--accent {
  background:
    radial-gradient(circle at top right, rgba(179, 146, 79, 0.1), transparent 24%),
    linear-gradient(135deg, #e9f0f4 0%, #f7f4ec 100%);
}

body[data-season-theme="fourth-of-july"] .section--accent {
  background:
    radial-gradient(circle at top right, rgba(200, 68, 68, 0.1), transparent 24%),
    linear-gradient(135deg, #ecf1f8 0%, #f8f6f2 100%);
}

.section-heading {
  max-width: 48rem;
  margin-bottom: 2.25rem;
}

.section-heading h2,
.intro-grid h2,
.cta-panel h2,
.page-hero h1 {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3.8rem);
}

.section-heading p:last-child {
  margin-bottom: 0;
}

.intro-grid {
  display: grid;
  gap: 2rem;
  grid-template-columns: 1.1fr 1fr;
  align-items: start;
}

.intro-copy {
  max-width: 34rem;
  margin-left: auto;
  padding-top: 1.75rem;
}

.intro-copy p {
  margin-top: 0;
}

.intro-copy p + p {
  margin-top: 1.4rem;
}

.service-grid,
.review-grid,
.service-area-grid,
.location-grid,
.footer-grid {
  display: grid;
  gap: 1.5rem;
}

.service-grid,
.service-area-grid,
.location-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.review-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.location-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.service-card,
.review-card,
.service-area-card,
.location-card,
.feature-panel,
.cta-panel,
.utility-card {
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.service-card,
.review-card,
.service-area-card,
.location-card {
  overflow: hidden;
  background: var(--surface);
  color: var(--text);
}

.service-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.service-card__body,
.review-card,
.service-area-card,
.location-card {
  padding: 1.5rem;
}

.service-card__body {
  display: grid;
  flex: 1 1 auto;
  grid-template-rows: auto auto 1fr auto;
  align-items: start;
  row-gap: 0;
}

.dispatch-card {
  width: 100%;
  padding: clamp(1.5rem, 2vw, 2.25rem);
  background: var(--surface);
  color: var(--text);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.dispatch-form {
  display: grid;
  gap: 1rem;
  width: 100%;
}

.dispatch-intro {
  max-width: 52rem;
  margin-bottom: 1.5rem;
}

.dispatch-success {
  margin-bottom: 1.5rem;
  padding: 1rem 1.1rem;
  border-radius: 18px;
  background: rgba(27, 94, 58, 0.1);
  border: 1px solid rgba(27, 94, 58, 0.22);
  color: #12472c;
  font-weight: 600;
}

.dispatch-success a {
  color: inherit;
}

.dispatch-honeypot {
  position: absolute;
  left: -9999px;
}

.dispatch-form__grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.field-group {
  display: grid;
  gap: 0.45rem;
}

.field-group--full {
  grid-column: 1 / -1;
}

.field-group label {
  font-weight: 700;
}

.field-group input,
.field-group select,
.field-group textarea {
  width: 100%;
  padding: 0.85rem 0.95rem;
  border: 1px solid rgba(22, 33, 43, 0.16);
  border-radius: 16px;
  background: #fff;
  color: var(--text);
  font: inherit;
}

.field-group textarea {
  min-height: 180px;
  resize: vertical;
}

.dispatch-note {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.95rem;
}

.dispatch-card h2 {
  margin-top: 0;
}

.service-card h3,
.review-card h3,
.service-area-card h3,
.location-card h3,
.footer-grid h3 {
  margin-top: 0;
  margin-bottom: 0.75rem;
}

.faq-list {
  display: grid;
  gap: 1rem;
}

.faq-item {
  padding: 1.35rem 1.5rem;
  border-radius: 18px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.section--dark .service-card,
.section--dark .review-card,
.section--dark .service-area-card,
.section--dark .location-card,
.section--dark .faq-item {
  background: rgba(255, 255, 255, 0.08);
  color: inherit;
  box-shadow: none;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.section--dark .service-card p,
.section--dark .review-card p,
.section--dark .service-area-card p,
.section--dark .location-card p,
.section--dark .faq-item p,
.section--dark .service-card li {
  color: rgba(255, 255, 255, 0.88);
}

.faq-item h3 {
  margin-top: 0;
  margin-bottom: 0.5rem;
}

.service-card ul,
.check-list,
.footer-list {
  margin: 1rem 0 0;
  padding-left: 1.15rem;
}

.service-card__action {
  margin-top: 1.5rem;
  align-self: flex-start;
}

.cta-panel {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 1.4fr auto;
  align-items: center;
  padding: 2rem;
  background: rgba(255, 255, 255, 0.7);
}

.cta-panel__actions {
  display: flex;
  gap: 0.9rem;
  flex-wrap: wrap;
}

.location-card__links,
.social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
}

.location-card__links {
  margin-top: 1rem;
}

.location-card__links a {
  font-weight: 700;
}

.social-panel {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 1fr auto;
  align-items: center;
}

.review-embed {
  min-height: 280px;
}

.review-embed > div,
.review-embed roadside-survey {
  display: block;
  width: 100%;
}

.review-card {
  display: flex;
  flex-direction: column;
}

.review-card .review-embed {
  flex: 1 1 auto;
}

.review-card--google .review-embed {
  color: #16212b;
}

.review-card--google .review-embed,
.review-card--google .review-embed * {
  color-scheme: light;
}

.review-card--google .review-embed p,
.review-card--google .review-embed span,
.review-card--google .review-embed div,
.review-card--google .review-embed a,
.review-card--google .review-embed li {
  color: #16212b !important;
}

.review-card roadside-survey {
  min-height: 420px;
  height: 420px;
}

.review-fallback {
  margin: 1rem 0;
  color: var(--text-muted);
}

.section--dark .review-fallback {
  color: rgba(255, 255, 255, 0.72);
}

.map-frame {
  margin-top: 1rem;
  overflow: hidden;
  border-radius: 16px;
  border: 1px solid rgba(22, 33, 43, 0.1);
  background: #e9ecef;
}

.map-frame iframe {
  width: 100%;
  height: 260px;
  border: 0;
  display: block;
}

.site-footer {
  background: #101b24;
  color: #dce6ed;
}

body[data-season-theme="christmas"] .hero-seasonal-panel {
  background: linear-gradient(135deg, rgba(31, 67, 53, 0.9), rgba(182, 58, 69, 0.82));
  color: #f9f2e4;
}

body[data-season-theme="halloween"] .hero-seasonal-panel {
  background: linear-gradient(135deg, rgba(23, 17, 22, 0.92), rgba(123, 95, 208, 0.68));
  color: #f4eadf;
}

body[data-season-theme="thanksgiving"] .hero-seasonal-panel {
  background: linear-gradient(135deg, rgba(91, 56, 40, 0.9), rgba(188, 103, 52, 0.76));
  color: #fff4e8;
}

body[data-season-theme="new-year"] .hero-seasonal-panel {
  background: linear-gradient(135deg, rgba(32, 55, 72, 0.9), rgba(60, 97, 121, 0.76));
  color: #eef5fb;
}

body[data-season-theme="fourth-of-july"] .hero-seasonal-panel {
  background: linear-gradient(135deg, rgba(24, 59, 109, 0.9), rgba(200, 68, 68, 0.78));
  color: #f8fbff;
}

body[data-season-theme="christmas"] .site-footer {
  background: #1f4335;
}

body[data-season-theme="halloween"] .site-footer {
  background: #171116;
}

body[data-season-theme="thanksgiving"] .site-footer {
  background: #5b3828;
}

body[data-season-theme="new-year"] .site-footer {
  background: #203748;
}

body[data-season-theme="fourth-of-july"] .site-footer {
  background: #183b6d;
}

body[data-season-theme="halloween"] .service-card,
body[data-season-theme="halloween"] .review-card,
body[data-season-theme="halloween"] .service-area-card,
body[data-season-theme="halloween"] .location-card,
body[data-season-theme="halloween"] .faq-item,
body[data-season-theme="halloween"] .feature-panel,
body[data-season-theme="halloween"] .cta-panel,
body[data-season-theme="halloween"] .utility-card {
  background: #2a2228;
  color: #f4eadf;
}

body[data-season-theme="halloween"] .button--secondary {
  background: rgba(255, 250, 246, 0.92);
  color: #20181d;
  border-color: rgba(255, 255, 255, 0.14);
}

body[data-season-theme="christmas"] .hero-seasonal-panel,
body[data-season-theme="halloween"] .hero-seasonal-panel,
body[data-season-theme="thanksgiving"] .hero-seasonal-panel,
body[data-season-theme="new-year"] .hero-seasonal-panel,
body[data-season-theme="fourth-of-july"] .hero-seasonal-panel {
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.footer-grid {
  grid-template-columns: 1.5fr 1fr 1fr;
  padding: 3rem 0 2rem;
}

.footer-logo {
  margin-bottom: 1rem;
}

.footer-list {
  margin: 0;
}

.footer-list li + li {
  margin-top: 0.35rem;
}

.footer-list a {
  text-decoration: none;
}

.footer-bar {
  padding: 1rem 0 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  color: #b7c5cf;
}

.footer-bar--solo {
  text-align: center;
}

.footer-bar p {
  margin: 0;
}

.page-hero--plain {
  background:
    radial-gradient(circle at top left, rgba(196, 81, 31, 0.15), transparent 42%),
    linear-gradient(180deg, #fffdfa 0%, #f0ece3 100%);
}

.feature-panel {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 2rem;
  padding: 2rem;
  background: var(--surface);
}

.feature-panel__image {
  width: 100%;
  height: 100%;
  min-height: 260px;
  object-fit: cover;
  border-radius: calc(var(--radius) - 6px);
}

.embed-frame {
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.embed-frame iframe {
  width: 100%;
  min-height: 78vh;
  border: 0;
}

.prose {
  max-width: 54rem;
}

.prose h2 {
  margin-top: 0;
}

.utility-body {
  min-height: 100vh;
  background:
    radial-gradient(circle at top, rgba(36, 83, 111, 0.18), transparent 36%),
    linear-gradient(180deg, #f7f3ec 0%, #ebe5db 100%);
}

.utility-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 2rem;
}

.utility-card {
  width: min(100%, 36rem);
  padding: 2.5rem;
  background: rgba(255, 253, 250, 0.92);
  text-align: center;
}

@media (max-width: 960px) {
  .site-header {
    position: static;
  }

  .intro-copy {
    max-width: none;
    margin-left: 0;
    padding-top: 0;
  }

  .topbar__inner,
  .social-panel,
  .cta-panel,
  .hero-seasonal-panel,
  .feature-panel,
  .intro-grid,
  .footer-grid {
    grid-template-columns: 1fr;
    display: grid;
  }

  .site-header__inner {
    display: grid;
    grid-template-columns: auto auto;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
  }

  .nav-toggle {
    display: inline-flex;
    justify-self: end;
  }

  .service-grid,
  .review-grid,
  .dispatch-form__grid,
  .service-area-grid,
  .location-grid {
    grid-template-columns: 1fr;
  }

  .header-cta {
    display: none;
  }

  .site-nav {
    display: none;
    grid-column: 1 / -1;
    width: 100%;
    padding: 0.75rem 0 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0.4rem;
  }

  .site-nav.is-open {
    display: flex;
  }

  .site-nav a {
    padding: 0.8rem 0.95rem;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.6);
  }
}

@media (max-width: 640px) {
  .hero,
  .section,
  .page-hero {
    padding: 3rem 0;
  }

  .hero {
    min-height: auto;
  }

  .hero__content {
    padding: 2.5rem 0 2rem;
    display: block;
  }

  .hero h1 {
    max-width: none;
    font-size: clamp(2.2rem, 11vw, 3.6rem);
  }

  .hero__lead,
  .page-hero__lead,
  .hero__notice,
  .seasonal-support {
    max-width: none;
    font-size: 0.98rem;
  }

  .hero__actions,
  .hero-seasonal-panel__actions,
  .cta-panel__actions {
    gap: 0.65rem;
  }

  .hero__actions .button,
  .hero-seasonal-panel__actions .button,
  .cta-panel__actions .button {
    width: 100%;
  }

  .hero-seasonal-panel {
    grid-template-columns: 1fr;
    max-width: none;
    padding: 1rem;
    margin-top: 1.25rem;
  }

  body[data-season-theme] .holiday-kicker {
    width: fit-content;
    max-width: 100%;
    margin-bottom: 0.85rem;
  }

  body[data-season-theme] .hero-seasonal-panel {
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.22);
  }

  .hero-seasonal-panel__actions {
    justify-content: flex-start;
  }

  .topbar__inner {
    justify-items: start;
  }

  .feature-panel,
  .cta-panel,
  .hero-seasonal-panel,
  .utility-card {
    padding: 1.5rem;
  }

  .topbar__inner {
    grid-template-columns: 1fr;
    text-align: left;
  }
}
