/* Fursuit Hub — Halloween theme v2. Loaded only when /admin → Seasonal theme = Halloween. The hero keeps its Normal layout. */
body.theme-halloween {
  --bg: #0e0a14; --muted: #bdb0c9; --line: rgba(214, 190, 255, 0.14); --glass: rgba(18, 12, 26, 0.86);
  --accent: #ff7a1a; --hub: #ff9a3c; --mint: #a77bff; --glow: rgba(255, 122, 26, 0.55);
  --strip-bg: linear-gradient(90deg, #22103a, #3d1a58 50%, #22103a); --strip-ink: #ffe9d2;
  --strip-deco: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 22'%3E%3Cg transform='translate(0 4) scale(.62)'%3E%3Cpath d='M12 6c0-2 1-3 3-3' stroke='%233fae5a' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='7.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='16.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.5' fill='%23ff8a2a'/%3E%3Cpath fill='%233a1a05' d='M8 11l2 2H7zM16 11l1 2h-3zM8 16c2 2 6 2 8 0l-1 2c-2 1-4 1-6 0z'/%3E%3C/g%3E%3Cpath transform='translate(18 2) scale(.26)' fill='%23c9a6ff' d='M50 20C46 12 40 10 34 14C30 8 22 6 14 10C18 14 16 20 10 22C20 22 26 26 30 32C34 26 40 24 44 26L47 21L50 25L53 21L56 26C60 24 66 26 70 32C74 26 80 22 90 22C84 20 82 14 86 10C78 6 70 8 66 14C60 10 54 12 50 20Z'/%3E%3Cpath transform='translate(36 10) scale(.18)' fill='%23c9a6ff' d='M50 20C46 12 40 10 34 14C30 8 22 6 14 10C18 14 16 20 10 22C20 22 26 26 30 32C34 26 40 24 44 26L47 21L50 25L53 21L56 26C60 24 66 26 70 32C74 26 80 22 90 22C84 20 82 14 86 10C78 6 70 8 66 14C60 10 54 12 50 20Z'/%3E%3C/svg%3E");
  --progress: linear-gradient(90deg, #ff7a1a, #a77bff);
  --season-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 6c0-2 1-3 3-3' stroke='%233fae5a' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='7.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='16.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.5' fill='%23ff8a2a'/%3E%3Cpath fill='%233a1a05' d='M8 11l2 2H7zM16 11l1 2h-3zM8 16c2 2 6 2 8 0l-1 2c-2 1-4 1-6 0z'/%3E%3C/svg%3E"); --divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 260 24'%3E%3Cdefs%3E%3ClinearGradient id='l'%3E%3Cstop offset='0' stop-color='%23a77bff' stop-opacity='0'/%3E%3Cstop offset='1' stop-color='%23a77bff' stop-opacity='.5'/%3E%3C/linearGradient%3E%3ClinearGradient id='r'%3E%3Cstop offset='0' stop-color='%23a77bff' stop-opacity='.5'/%3E%3Cstop offset='1' stop-color='%23a77bff' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='0' y='11.5' width='112' height='1' fill='url(%23l)'/%3E%3Crect x='148' y='11.5' width='112' height='1' fill='url(%23r)'/%3E%3Cg transform='translate(118 0)'%3E%3Cpath d='M12 6c0-2 1-3 3-3' stroke='%233fae5a' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='7.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='16.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.5' fill='%23ff8a2a'/%3E%3Cpath fill='%233a1a05' d='M8 11l2 2H7zM16 11l1 2h-3zM8 16c2 2 6 2 8 0l-1 2c-2 1-4 1-6 0z'/%3E%3C/g%3E%3C/svg%3E");
  --footer-art: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 70' preserveAspectRatio='none'%3E%3Cpath fill='%2324143a' d='M0 70V52c60-10 120-14 200-8s160 4 230-4 120-6 170 2V70z'/%3E%3Cg fill='%232e1a48'%3E%3Cpath d='M60 52V30a12 12 0 0 1 24 0v22z'/%3E%3Cpath d='M150 50V36a9 9 0 0 1 18 0v14z'/%3E%3Crect x='246' y='22' width='5' height='30'/%3E%3Crect x='236' y='30' width='25' height='5'/%3E%3Cpath d='M380 48V26a14 14 0 0 1 28 0v22z'/%3E%3Cpath d='M500 52V38a8 8 0 0 1 16 0v14z'/%3E%3Cpath d='M540 52c4-22 2-36-6-48 8 6 12 12 12 20 4-8 10-12 16-12-8 4-12 12-14 22l-2 18z'/%3E%3C/g%3E%3Cg fill='%232e1a48'%3E%3Crect x='430' y='34' width='3' height='18'/%3E%3Cpath d='M429.5 34l2.5-4 2.5 4z'/%3E%3Crect x='442' y='34' width='3' height='18'/%3E%3Cpath d='M441.5 34l2.5-4 2.5 4z'/%3E%3Crect x='454' y='34' width='3' height='18'/%3E%3Cpath d='M453.5 34l2.5-4 2.5 4z'/%3E%3Crect x='466' y='34' width='3' height='18'/%3E%3Cpath d='M465.5 34l2.5-4 2.5 4z'/%3E%3Crect x='478' y='34' width='3' height='18'/%3E%3Cpath d='M477.5 34l2.5-4 2.5 4z'/%3E%3Crect x='490' y='34' width='3' height='18'/%3E%3Cpath d='M489.5 34l2.5-4 2.5 4z'/%3E%3Crect x='430' y='40' width='63' height='2'/%3E%3C/g%3E%3C/svg%3E"); --footer-art-h: 70px;
}
[data-theme="light"] body.theme-halloween {
  --bg: #fbf5ff; --muted: #5e5468; --line: rgba(40, 14, 60, 0.12); --glass: rgba(251, 245, 255, 0.88);
  --accent: #ff6d0a; --hub: #e8650f; --mint: #7b4fd6; --glow: rgba(255, 109, 10, 0.4); --footer-art: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 70' preserveAspectRatio='none'%3E%3Cpath fill='%23e4d6f4' d='M0 70V52c60-10 120-14 200-8s160 4 230-4 120-6 170 2V70z'/%3E%3Cg fill='%23d2bfea'%3E%3Cpath d='M60 52V30a12 12 0 0 1 24 0v22z'/%3E%3Cpath d='M150 50V36a9 9 0 0 1 18 0v14z'/%3E%3Crect x='246' y='22' width='5' height='30'/%3E%3Crect x='236' y='30' width='25' height='5'/%3E%3Cpath d='M380 48V26a14 14 0 0 1 28 0v22z'/%3E%3Cpath d='M500 52V38a8 8 0 0 1 16 0v14z'/%3E%3Cpath d='M540 52c4-22 2-36-6-48 8 6 12 12 12 20 4-8 10-12 16-12-8 4-12 12-14 22l-2 18z'/%3E%3C/g%3E%3Cg fill='%23d2bfea'%3E%3Crect x='430' y='34' width='3' height='18'/%3E%3Cpath d='M429.5 34l2.5-4 2.5 4z'/%3E%3Crect x='442' y='34' width='3' height='18'/%3E%3Cpath d='M441.5 34l2.5-4 2.5 4z'/%3E%3Crect x='454' y='34' width='3' height='18'/%3E%3Cpath d='M453.5 34l2.5-4 2.5 4z'/%3E%3Crect x='466' y='34' width='3' height='18'/%3E%3Cpath d='M465.5 34l2.5-4 2.5 4z'/%3E%3Crect x='478' y='34' width='3' height='18'/%3E%3Cpath d='M477.5 34l2.5-4 2.5 4z'/%3E%3Crect x='490' y='34' width='3' height='18'/%3E%3Cpath d='M489.5 34l2.5-4 2.5 4z'/%3E%3Crect x='430' y='40' width='63' height='2'/%3E%3C/g%3E%3C/svg%3E");
}
.theme-halloween .card::after { top: 12px; right: 12px; width: 28px; height: 28px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 6c0-2 1-3 3-3' stroke='%233fae5a' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='7.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='16.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.5' fill='%23ff8a2a'/%3E%3Cpath fill='%233a1a05' d='M8 11l2 2H7zM16 11l1 2h-3zM8 16c2 2 6 2 8 0l-1 2c-2 1-4 1-6 0z'/%3E%3C/svg%3E"); filter: drop-shadow(0 0 6px rgba(255, 122, 26, 0.6)); }
.theme-halloween .price::after { top: 14px; right: 14px; width: 18px; height: 26px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'%3E%3Cdefs%3E%3CradialGradient id='g'%3E%3Cstop offset='0' stop-color='%23ffd27a' stop-opacity='.9'/%3E%3Cstop offset='1' stop-color='%23ff7a1a' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3Ccircle cx='12' cy='8' r='8' fill='url(%23g)'/%3E%3Cpath fill='%23ffcf5c' d='M12 2c2 3 3 5 0 8-3-3-2-5 0-8z'/%3E%3Crect x='7' y='11' width='10' height='19' rx='2' fill='%23efe3cf'/%3E%3Cpath fill='%23d8c8ad' d='M7 14c2 1 3 3 3 5v-6zM14 13v4c1-1 2-2 3-2v-2z'/%3E%3C/svg%3E"); animation: fh-flicker 2.2s ease-in-out infinite alternate; }
.theme-halloween .cta-box { background-image: radial-gradient(80% 120% at 100% 0%, rgba(167, 123, 255, 0.16), transparent 60%); }
.theme-halloween .kicker { color: var(--hub); }
.theme-halloween .steps > li::after { content: ""; position: absolute; top: 14px; right: 14px; width: 34px; height: 14px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='8 4 84 30'%3E%3Cpath fill='%23a77bff' d='M50 20C46 12 40 10 34 14C30 8 22 6 14 10C18 14 16 20 10 22C20 22 26 26 30 32C34 26 40 24 44 26L47 21L50 25L53 21L56 26C60 24 66 26 70 32C74 26 80 22 90 22C84 20 82 14 86 10C78 6 70 8 66 14C60 10 54 12 50 20Z'/%3E%3C/svg%3E") no-repeat center / contain; opacity: 0.55; pointer-events: none; }
@media (hover: hover) and (pointer: fine) {
  .theme-halloween a, .theme-halloween button, .theme-halloween summary, .theme-halloween label { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 24 24'%3E%3Cpath d='M12 6c0-2 1-3 3-3' stroke='%233fae5a' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='7.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='16.5' cy='14' rx='5' ry='7' fill='%23e8650f'/%3E%3Cellipse cx='12' cy='14' rx='5' ry='7.5' fill='%23ff8a2a'/%3E%3Cpath fill='%233a1a05' d='M8 11l2 2H7zM16 11l1 2h-3zM8 16c2 2 6 2 8 0l-1 2c-2 1-4 1-6 0z'/%3E%3C/svg%3E") 14 14, pointer; }
}
@keyframes fh-flicker { 0% { opacity: 1; } 40% { opacity: 0.82; } 70% { opacity: 0.95; } 100% { opacity: 0.75; } }

/* bats */
.fx-bat { width: 64px; height: 23px; opacity: 0; }
.fx-bat::before { content: ""; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='8 4 84 30'%3E%3Cpath fill='%231b0f29' d='M50 20C46 12 40 10 34 14C30 8 22 6 14 10C18 14 16 20 10 22C20 22 26 26 30 32C34 26 40 24 44 26L47 21L50 25L53 21L56 26C60 24 66 26 70 32C74 26 80 22 90 22C84 20 82 14 86 10C78 6 70 8 66 14C60 10 54 12 50 20Z'/%3E%3C/svg%3E") no-repeat center / contain; filter: drop-shadow(0 0 4px rgba(255, 154, 60, 0.75)) drop-shadow(0 0 1px rgba(255, 220, 180, 0.9)); animation: fh-flap var(--flap, 220ms) ease-in-out infinite alternate; }
[data-theme="light"] .fx-bat::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='8 4 84 30'%3E%3Cpath fill='%232a1840' d='M50 20C46 12 40 10 34 14C30 8 22 6 14 10C18 14 16 20 10 22C20 22 26 26 30 32C34 26 40 24 44 26L47 21L50 25L53 21L56 26C60 24 66 26 70 32C74 26 80 22 90 22C84 20 82 14 86 10C78 6 70 8 66 14C60 10 54 12 50 20Z'/%3E%3C/svg%3E"); }
.fx-bat--rise { animation: fh-rise var(--dur) cubic-bezier(0.3, 0.1, 0.5, 1) var(--delay) both; }
.fx-bat--cross { animation: fh-cross var(--dur) linear var(--delay) both; }
.fx-bat--cross.is-rtl { animation-name: fh-cross-rtl; }
@keyframes fh-flap { from { transform: scaleY(1); } to { transform: scaleY(0.35); } }
@keyframes fh-rise {
  0% { opacity: 0; transform: translate3d(var(--x), 104vh, 0) scale(var(--s)); }
  10% { opacity: 0.95; }
  50% { transform: translate3d(calc(var(--x) + var(--drift) * 0.4), 50vh, 0) scale(var(--s)) rotate(-6deg); }
  85% { opacity: 0.95; }
  100% { opacity: 0; transform: translate3d(calc(var(--x) + var(--drift)), -12vh, 0) scale(calc(var(--s) * 0.7)) rotate(4deg); }
}
@keyframes fh-cross {
  0% { opacity: 0; transform: translate3d(-8vw, var(--y), 0) scale(var(--s)); }
  8%, 92% { opacity: 0.85; }
  50% { transform: translate3d(50vw, calc(var(--y) - 6vh), 0) scale(var(--s)); }
  100% { opacity: 0; transform: translate3d(108vw, var(--y), 0) scale(var(--s)); }
}
@keyframes fh-cross-rtl {
  0% { opacity: 0; transform: translate3d(108vw, var(--y), 0) scale(var(--s)); }
  8%, 92% { opacity: 0.85; }
  50% { transform: translate3d(50vw, calc(var(--y) - 6vh), 0) scale(var(--s)); }
  100% { opacity: 0; transform: translate3d(-8vw, var(--y), 0) scale(var(--s)); }
}
@media (prefers-reduced-motion: reduce) { .theme-halloween .price::after { animation: none; } }
.fx-still .price::after { animation: none; }

/* ---- seasonal top strip: its own element above the site (normal flow) ---- */
body.has-strip { --strip-h: 40px; }
.season-strip { position: relative; z-index: 51; display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 40px; padding: 8px 52px; background: var(--strip-bg); color: var(--strip-ink); font-size: 0.86rem; line-height: 1.35; text-align: center; }
.season-strip p { margin: 0; }
.offer-cta { display: inline-block; margin-left: 8px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; color: inherit; }
.offer-close { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border: 0; border-radius: 999px; background: transparent; color: inherit; font-size: 1.4rem; line-height: 1; }
.offer-close:hover, .offer-close:focus-visible { background: rgba(255, 255, 255, 0.16); }
.strip-deco { flex: 0 0 auto; width: 56px; height: 22px; background: var(--strip-deco) no-repeat center / contain; }
.strip-deco--r { transform: scaleX(-1); }
/* nav pill sits below the strip at the top of the page, then slides up with it (js/season.js sets --strip-vis) */
.has-strip .nav-shell { top: calc(var(--strip-vis, var(--strip-h)) + 14px); }
@media (max-width: 640px) {
  body.has-strip { --strip-h: 50px; }
  .season-strip { font-size: 0.74rem; line-height: 1.3; padding: 7px 40px 7px 12px; gap: 6px; }
  .strip-deco { display: none; }
  .offer-cta { margin-left: 4px; }
  .offer-close { right: 4px; }
}

/* ---- scroll progress (transform only) ---- */
.season-progress { position: fixed; left: 0; right: 0; top: 0; height: 3px; z-index: 60; transform-origin: 0 50%; transform: scaleX(0); background: var(--progress); pointer-events: none; }

/* ---- effects layer (never clickable, below nav z50 and quote bar z45) ---- */
.season-fx { position: fixed; inset: 0; z-index: 44; pointer-events: none; overflow: hidden; contain: strict; transition: opacity 0.4s ease; }
.season-fx.is-quiet { opacity: 0; }
.season-fx > * { position: absolute; left: 0; top: 0; will-change: transform; }
.fx-snow { width: 100%; height: 100%; }

/* ---- quote-form note ---- */
.season-form-note { display: flex; gap: 10px; align-items: center; max-width: 62ch; margin: 12px 0 0; padding: 10px 14px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 10%, transparent); font-weight: 600; font-size: 0.92rem; }
.season-form-note::before { content: ""; width: 22px; height: 22px; flex: 0 0 22px; background: var(--season-icon) no-repeat center / contain; }

/* ---- section dividers, card accents, glowing buttons ---- */
.section + .section { background-image: var(--divider); background-repeat: no-repeat; background-position: center top; background-size: 260px 24px; }
.card, .price { position: relative; }
.card::after, .price::after { content: ""; position: absolute; z-index: 2; pointer-events: none; background: no-repeat center / contain; }
.cta-box { position: relative; box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent), 0 18px 60px -20px var(--glow); }
.btn:not(.btn-ghost):not(.btn-dark) { position: relative; isolation: isolate; }
.btn:not(.btn-ghost):not(.btn-dark)::after { content: ""; position: absolute; inset: -3px; z-index: -1; border-radius: inherit; box-shadow: 0 0 18px 2px var(--glow); opacity: 0.55; pointer-events: none; animation: fh-glow 2.8s ease-in-out infinite alternate; }
.btn:not(.btn-ghost):not(.btn-dark):hover::after { opacity: 1; }
.prose a:hover, .text-link:hover { text-shadow: 0 0 14px var(--glow); }
::selection { background: color-mix(in srgb, var(--accent) 45%, transparent); }
@keyframes fh-glow { from { opacity: 0.35; } to { opacity: 0.8; } }

/* ---- footer silhouette ---- */
.site-footer { position: relative; padding-top: 92px; border-top: 0; }
.site-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: var(--footer-art-h); background: var(--footer-art) repeat-x left bottom / auto 100%; pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .btn::after, .season-strip::after, .season-strip::before { animation: none !important; }
  .season-fx { display: none; }
}
.fx-still .btn::after, .fx-still .season-strip::after { animation: none !important; }
@media print { .season-strip, .season-fx, .season-progress { display: none !important; } }
