/* Seasonal theme: Halloween. Loaded only when build.py SEASONAL_THEME = "halloween".
   Everything is scoped to html.theme-halloween, which an inline script in <head> adds only before
   the season end date (Central time), so the site returns to normal automatically on Nov 1.
   Preview/override with ?theme=on or ?theme=off. Decorative only: no layout, form, or Shop logic changes. */
.season-banner { display: none; }
html.theme-halloween {
  --accent: #ff8a1f;          /* pumpkin orange, for dark backgrounds (contrast 7.6:1 on navy) */
  --accent-strong: #b45309;   /* burnt orange for text/links on white (5.0:1) */
  --accent-soft: #fff1e3;
  --hw-purple: #3b1d5e;
  --hw-purple-2: #5b2a86;
}
html.theme-halloween .season-banner {
  display: block; background: linear-gradient(90deg, var(--hw-purple), var(--hw-purple-2) 50%, var(--hw-purple));
  color: #fff; font-size: .9rem; font-weight: 600; text-align: center; padding: .45rem 0; letter-spacing: .005em;
}
html.theme-halloween .season-banner .container { display: flex; align-items: center; justify-content: center; gap: .5rem; }
html.theme-halloween .season-icon { width: 18px; height: 18px; flex: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%234d7c0f' d='M12.6 3.2c.3-1 1.3-1.7 2.4-1.6l-.2 1.2c-.6 0-1 .3-1.1.8L13 6h-1.6z'/%3E%3Cellipse cx='7.6' cy='14' rx='5.6' ry='7.2' fill='%23ea7317'/%3E%3Cellipse cx='16.4' cy='14' rx='5.6' ry='7.2' fill='%23ea7317'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.6' fill='%23ff8a1f'/%3E%3Cpath d='M12 6.6v14.8' stroke='%23c2570c' stroke-width='.8'/%3E%3C/svg%3E") center / contain no-repeat; }
html.theme-halloween .btn-primary:hover { background: #ffa24d; }
html.theme-halloween .hero {
  background: radial-gradient(1100px 500px at 85% -10%, rgba(255,138,31,.20), transparent 60%),
              radial-gradient(800px 420px at 0% 110%, rgba(91,42,134,.35), transparent 60%),
              linear-gradient(180deg, var(--navy-950), var(--navy-900));
}
html.theme-halloween .page-hero {
  background: radial-gradient(900px 400px at 90% -20%, rgba(255,138,31,.16), transparent 60%),
              radial-gradient(700px 360px at 0% 120%, rgba(91,42,134,.32), transparent 60%), var(--navy-900);
  position: relative; overflow: hidden;
}
/* Spiderweb in the top-right corner of the hero, a few bats in page heroes. */
html.theme-halloween .hero::before, html.theme-halloween .page-hero::before {
  content: ""; position: absolute; top: 0; right: 0; width: clamp(110px, 16vw, 200px); aspect-ratio: 1;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23ffffff' stroke-opacity='.38' stroke-width='1.2'%3E%3Cpath d='M200 0 L60 200 M200 0 L0 120 M200 0 L120 200 M200 0 L0 40 M200 0 L170 200'/%3E%3Cpath d='M178 32 Q170 20 160 14 M155 58 Q140 34 120 22 M132 86 Q110 50 80 30 M108 114 Q78 66 40 38 M84 142 Q46 82 0 52'/%3E%3Cpath d='M186 46 Q178 40 160 14 M170 84 Q150 60 120 22 M152 122 Q124 84 80 30 M134 160 Q98 108 40 38'/%3E%3Cline x1='150' y1='0' x2='150' y2='62' stroke-opacity='.3'/%3E%3Ccircle cx='150' cy='66' r='4' fill='%23ffffff' fill-opacity='.28' stroke='none'/%3E%3C/svg%3E") top right / contain no-repeat; pointer-events: none; z-index: 0;
}
html.theme-halloween .page-hero::after {
  content: ""; position: absolute; right: clamp(120px, 20vw, 260px); top: 22%; width: 64px; height: 24px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 24'%3E%3Cpath fill='%23ffffff' fill-opacity='.30' d='M32 6c1.2-2 2.6-2 3.4 0 .4 1 1.4 1.4 2.4.8 4-2.4 9-3 14-1.6-3 .6-5 2.4-5.4 5 2-1 4.6-.8 6 .8-2.6.2-4.6 1.6-5.2 4-1.6-1.8-4.4-2.4-6.6-1.2-.8-2.4-3-3.6-5.4-3.2-1 .2-2.2 1.6-3.2 3.4-1-1.8-2.2-3.2-3.2-3.4-2.4-.4-4.6.8-5.4 3.2-2.2-1.2-5-.6-6.6 1.2-.6-2.4-2.6-3.8-5.2-4 1.4-1.6 4-1.8 6-.8-.4-2.6-2.4-4.4-5.4-5 5-1.4 10-.8 14 1.6 1 .6 2 .2 2.4-.8.8-2 2.2-2 3.4 0z'/%3E%3C/svg%3E") center / contain no-repeat;
  box-shadow: none; pointer-events: none; opacity: .9;
}
html.theme-halloween .page-hero .container { position: relative; z-index: 1; }
/* Small pumpkin next to the logo in the header. */
html.theme-halloween .site-header .brand { position: relative; }
html.theme-halloween .site-header .brand::after {
  content: ""; position: absolute; left: 30px; top: -4px; width: 16px; height: 16px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%234d7c0f' d='M12.6 3.2c.3-1 1.3-1.7 2.4-1.6l-.2 1.2c-.6 0-1 .3-1.1.8L13 6h-1.6z'/%3E%3Cellipse cx='7.6' cy='14' rx='5.6' ry='7.2' fill='%23ea7317'/%3E%3Cellipse cx='16.4' cy='14' rx='5.6' ry='7.2' fill='%23ea7317'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.6' fill='%23ff8a1f'/%3E%3Cpath d='M12 6.6v14.8' stroke='%23c2570c' stroke-width='.8'/%3E%3C/svg%3E") center / contain no-repeat; pointer-events: none;
}
/* Replace the remaining hard-coded cyan tints. */
html.theme-halloween .dark .icon-badge, html.theme-halloween .card-other .icon-badge { background: rgba(255,138,31,.12); }
html.theme-halloween .values-grid .value { border-top-color: rgba(255,138,31,.55); }
html.theme-halloween .cta-band { background: linear-gradient(120deg, var(--navy-900), var(--hw-purple)); }
@media (max-width: 640px) {
  html.theme-halloween .season-banner { font-size: .8rem; padding: .4rem .25rem; }
  html.theme-halloween .page-hero::after { display: none; }
  html.theme-halloween .site-header .brand::after { left: 24px; width: 13px; height: 13px; }
}
@media print { html.theme-halloween .season-banner, html.theme-halloween .hero::before, html.theme-halloween .page-hero::before, html.theme-halloween .page-hero::after { display: none; } }

/* ---- Ghosts (Oct 18): small, decorative, same toggle/auto-off as the rest (scoped to html.theme-halloween). ---- */
@keyframes hw-float { 0%, 100% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-8px) rotate(3deg); } }
html.theme-halloween .season-banner .container::after {
  content: ""; width: 16px; height: 18px; flex: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 72'%3E%3Cpath fill='%23ffffff' fill-opacity='.92' d='M32 4C17.6 4 8 15 8 29v33c0 3 3 4.4 5.2 2.4l4.4-4 4.6 4.4c1.4 1.3 3.6 1.3 5 0L32 60.6l4.8 4.2c1.4 1.3 3.6 1.3 5 0l4.6-4.4 4.4 4c2.2 2 5.2.6 5.2-2.4V29C56 15 46.4 4 32 4z'/%3E%3Cellipse cx='24.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Cellipse cx='39.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Ccircle cx='25.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Ccircle cx='40.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Cellipse cx='19' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cellipse cx='45' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cpath d='M28.5 39.5q3.5 3 7 0' fill='none' stroke='%231b1030' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* Hero: one ghost floating to the right of the headline area, a smaller one lower down. */
html.theme-halloween .hero .container::before,
html.theme-halloween .hero .container::after,
html.theme-halloween .page-hero .container::after {
  content: ""; position: absolute; pointer-events: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 72'%3E%3Cpath fill='%23ffffff' fill-opacity='.92' d='M32 4C17.6 4 8 15 8 29v33c0 3 3 4.4 5.2 2.4l4.4-4 4.6 4.4c1.4 1.3 3.6 1.3 5 0L32 60.6l4.8 4.2c1.4 1.3 3.6 1.3 5 0l4.6-4.4 4.4 4c2.2 2 5.2.6 5.2-2.4V29C56 15 46.4 4 32 4z'/%3E%3Cellipse cx='24.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Cellipse cx='39.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Ccircle cx='25.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Ccircle cx='40.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Cellipse cx='19' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cellipse cx='45' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cpath d='M28.5 39.5q3.5 3 7 0' fill='none' stroke='%231b1030' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
  animation: hw-float 6s ease-in-out infinite;
}
html.theme-halloween .hero .container::before { width: 46px; height: 52px; right: 40%; top: -1.75rem; opacity: .85; }
html.theme-halloween .hero .container::after { width: 30px; height: 34px; right: 1.5rem; bottom: -2.5rem; opacity: .6; animation-delay: -3s; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 72'%3E%3Cpath fill='%23ffffff' fill-opacity='.7' d='M32 4C17.6 4 8 15 8 29v33c0 3 3 4.4 5.2 2.4l4.4-4 4.6 4.4c1.4 1.3 3.6 1.3 5 0L32 60.6l4.8 4.2c1.4 1.3 3.6 1.3 5 0l4.6-4.4 4.4 4c2.2 2 5.2.6 5.2-2.4V29C56 15 46.4 4 32 4z'/%3E%3Cellipse cx='24.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Cellipse cx='39.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Ccircle cx='25.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Ccircle cx='40.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Cellipse cx='19' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cellipse cx='45' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cpath d='M28.5 39.5q3.5 3 7 0' fill='none' stroke='%231b1030' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
html.theme-halloween .page-hero .container::after { width: 40px; height: 45px; right: 8%; bottom: -1.5rem; opacity: .75; animation-delay: -1.5s; }
/* "Let's talk" band: one ghost peeking over the top edge. */
html.theme-halloween .cta-band { position: relative; }
html.theme-halloween .cta-band::before {
  content: ""; position: absolute; width: 38px; height: 43px; right: 1.75rem; top: .85rem; opacity: .9; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 72'%3E%3Cpath fill='%23ffffff' fill-opacity='.92' d='M32 4C17.6 4 8 15 8 29v33c0 3 3 4.4 5.2 2.4l4.4-4 4.6 4.4c1.4 1.3 3.6 1.3 5 0L32 60.6l4.8 4.2c1.4 1.3 3.6 1.3 5 0l4.6-4.4 4.4 4c2.2 2 5.2.6 5.2-2.4V29C56 15 46.4 4 32 4z'/%3E%3Cellipse cx='24.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Cellipse cx='39.5' cy='30' rx='3.6' ry='4.6' fill='%231b1030'/%3E%3Ccircle cx='25.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Ccircle cx='40.6' cy='28.4' r='1.2' fill='%23ffffff'/%3E%3Cellipse cx='19' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cellipse cx='45' cy='38' rx='3.2' ry='2' fill='%23ff9db8' fill-opacity='.55'/%3E%3Cpath d='M28.5 39.5q3.5 3 7 0' fill='none' stroke='%231b1030' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat; animation: hw-float 7s ease-in-out infinite; animation-delay: -2s;
}
@media (prefers-reduced-motion: reduce) {
  html.theme-halloween .hero .container::before, html.theme-halloween .hero .container::after,
  html.theme-halloween .page-hero .container::after, html.theme-halloween .cta-band::before { animation: none; }
}
@media (max-width: 640px) {
  /* Mobile: keep the banner ghost and one small hero ghost; drop the rest so text stays clear. */
  html.theme-halloween .hero .container::before { width: 28px; height: 32px; right: 1rem; top: -2.25rem; }
  html.theme-halloween .hero .container::after, html.theme-halloween .page-hero .container::after { display: none; }
  html.theme-halloween .cta-band::before { width: 28px; height: 32px; right: 1rem; top: .75rem; }
  html.theme-halloween .season-banner .container::after { width: 13px; height: 15px; }
}
@media print {
  html.theme-halloween .season-banner .container::after, html.theme-halloween .hero .container::before,
  html.theme-halloween .hero .container::after, html.theme-halloween .page-hero .container::after,
  html.theme-halloween .cta-band::before { display: none; }
}
