body[data-theme="halloween"] {
  --gb-dark: #180819;
  --gb-mid: #8b2c0b;
  --gb-light: #f4811f;
  --gb-pale: #100b12;
  --gb-muted: #bfaebd;
  --gb-border: rgba(244,129,31,.36);
  color: #f6ead7;
  background-image:
    linear-gradient(rgba(8,4,10,.22),rgba(8,4,10,.68)),
    radial-gradient(circle at 78% 8%,#d96b16 0 2.2rem,rgba(217,107,22,.18) 2.3rem,transparent 8rem),
    radial-gradient(circle at 20% 32%,rgba(94,30,105,.32),transparent 25rem),
    linear-gradient(rgba(11,7,16,.2),rgba(26,12,23,.72) 65%,#090708),
    url('../../img/themes/halloween-night.webp');
  background-size: auto,auto,auto,auto,cover;
  background-position: center,center,center,center,center top;
  background-attachment: fixed,fixed,fixed,fixed,fixed;
}
body[data-theme="halloween"] .navbar {
  background: linear-gradient(105deg,#130514,#3e0c24 58%,#7a2809) !important;
  border-bottom: 1px solid #f4811f;
  box-shadow: 0 4px 24px rgba(235,82,14,.28);
}
body[data-theme="halloween"] .navbar-brand-wordmark::after {
  content: "  ☾ HALLOWEEN";
  color: #ffad32;
  font-size: .68rem;
  letter-spacing: .12em;
}
body[data-theme="halloween"] .card,
body[data-theme="halloween"] .alert,
body[data-theme="halloween"] .modal-content,
body[data-theme="halloween"] .list-group-item,
body[data-theme="halloween"] .table {
  color: #f8ecdc;
  background-color: rgba(27,13,25,.92);
  border-color: rgba(244,129,31,.36);
  box-shadow: 0 8px 25px rgba(0,0,0,.28);
}
body[data-theme="halloween"] .card-header,
body[data-theme="halloween"] .card-footer,
body[data-theme="halloween"] .table > :not(caption) > * > * {
  color: inherit;
  background-color: rgba(53,17,35,.58);
  border-color: rgba(244,129,31,.22);
}
body[data-theme="halloween"] h1,
body[data-theme="halloween"] h2,
body[data-theme="halloween"] h3,
body[data-theme="halloween"] h4,
body[data-theme="halloween"] h5 { color: #ffad32; }
body[data-theme="halloween"] .text-muted,
body[data-theme="halloween"] label { color: #c9b5c4 !important; }
body[data-theme="halloween"] .form-control,
body[data-theme="halloween"] .form-select,
body[data-theme="halloween"] textarea {
  color: #fff3e3;
  background-color: #160d17;
  border-color: #754229;
}
body[data-theme="halloween"] .form-control:focus,
body[data-theme="halloween"] .form-select:focus {
  color: #fff;
  background-color: #1d101a;
  border-color: #ff8a1d;
  box-shadow: 0 0 0 .2rem rgba(244,129,31,.2);
}
body[data-theme="halloween"] .btn-success,
body[data-theme="halloween"] .btn-primary {
  border-color: #ff9c26;
  background: linear-gradient(105deg,#9e2f09,#f4811f);
}
body[data-theme="halloween"] footer { border-color: rgba(244,129,31,.25) !important; }
body[data-theme="halloween"] footer span { color: #ff9c26 !important; }

body[data-theme="halloween"] .fx-fog {
  width: 120vw;
  height: 34vh;
  left: -125vw;
  top: var(--fx-top,45%);
  border-radius: 50%;
  opacity: var(--fx-opacity,.22);
  filter: blur(34px);
  background:
    radial-gradient(ellipse at 22% 54%,rgba(235,230,239,.86) 0 7%,rgba(180,161,186,.55) 30%,transparent 66%),
    radial-gradient(ellipse at 68% 44%,rgba(199,185,204,.65) 0 10%,rgba(119,96,129,.38) 37%,transparent 70%);
  animation: halloween-fog var(--fx-duration,18s) linear infinite;
}
body[data-theme="halloween"] .fx-haze {
  inset: -18%;
  opacity: .34;
  filter: blur(42px);
  background:
    radial-gradient(ellipse at 12% 24%,rgba(208,196,216,.42),transparent 27%),
    radial-gradient(ellipse at 82% 18%,rgba(139,112,150,.34),transparent 31%),
    radial-gradient(ellipse at 34% 76%,rgba(224,216,228,.34),transparent 34%),
    radial-gradient(ellipse at 86% 82%,rgba(122,95,132,.3),transparent 29%);
  animation: halloween-haze var(--fx-duration,28s) ease-in-out infinite alternate;
}
body[data-theme="halloween"] .fx-smoke {
  width: var(--fx-size,320px);
  height: calc(var(--fx-size,320px) * .72);
  left: var(--fx-left,20%);
  bottom: -24vh;
  border-radius: 50%;
  opacity: 0;
  filter: blur(30px);
  background:
    radial-gradient(circle at 28% 58%,rgba(228,222,232,.55) 0 15%,transparent 48%),
    radial-gradient(circle at 70% 44%,rgba(161,143,170,.5) 0 17%,transparent 52%),
    radial-gradient(circle at 48% 72%,rgba(112,92,122,.46) 0 18%,transparent 55%);
  animation: halloween-smoke-rise var(--fx-duration,15s) ease-out forwards;
}
body[data-theme="halloween"] .fx-bat,
body[data-theme="halloween"] .fx-witch,
body[data-theme="halloween"] .fx-ghost {
  left: 0;
  top: 0;
  color: #050205;
  text-shadow: 0 2px 3px rgba(255,109,19,.42);
  animation-name: halloween-flight-path;
  animation-duration: var(--fx-duration,9s);
  animation-delay: var(--fx-delay,0s);
  animation-timing-function: cubic-bezier(.35,.04,.63,.98);
  animation-fill-mode: forwards;
}
body[data-theme="halloween"] .fx-bat {
  font-size: var(--fx-size,30px);
  filter: drop-shadow(0 3px 2px rgba(255,100,10,.2));
}
body[data-theme="halloween"] .fx-bat::before {
  content: "🦇";
  display: block;
  animation: halloween-bat-wings .32s steps(2,end) infinite;
}
body[data-theme="halloween"] .fx-bat-close {
  z-index: 3;
  opacity: .88;
  filter: drop-shadow(0 8px 8px rgba(0,0,0,.72));
}
body[data-theme="halloween"] .fx-witch {
  font-size: 46px;
  filter: drop-shadow(0 5px 5px rgba(255,91,13,.42));
}
body[data-theme="halloween"] .fx-ghost {
  z-index: 2;
  font-size: var(--fx-size,52px);
  opacity: .72;
  filter: drop-shadow(0 0 18px rgba(229,216,255,.8));
}
body[data-theme="halloween"] .fx-fire-glow {
  left: -5%;
  right: -5%;
  bottom: -22px;
  height: 94px;
  opacity: .52;
  filter: blur(10px);
  background:
    radial-gradient(ellipse at 12% 100%,rgba(255,72,0,.92),transparent 45%),
    radial-gradient(ellipse at 31% 100%,rgba(255,176,0,.8),transparent 38%),
    radial-gradient(ellipse at 55% 100%,rgba(255,63,0,.9),transparent 44%),
    radial-gradient(ellipse at 77% 100%,rgba(255,151,0,.78),transparent 37%),
    radial-gradient(ellipse at 94% 100%,rgba(255,55,0,.88),transparent 43%);
  animation: halloween-fire 1.5s ease-in-out infinite alternate;
}
body[data-theme="halloween"] .fx-ember {
  width: var(--fx-size,4px);
  height: var(--fx-size,4px);
  bottom: -12px;
  border-radius: 50%;
  background: #ffd35a;
  box-shadow: 0 0 7px 2px #ff5b0a;
  animation: halloween-ember var(--fx-duration,7s) ease-out infinite;
}
body[data-theme="halloween"] .fx-lightning-flash {
  inset: 0;
  z-index: 8;
  background: rgba(226,231,255,.68);
  mix-blend-mode: screen;
  opacity: 0;
  animation: halloween-lightning-flash 1.15s steps(1,end) forwards;
}
body[data-theme="halloween"] .fx-lightning-bolt {
  z-index: 9;
  left: var(--fx-left,50%);
  top: -5vh;
  width: 34px;
  height: var(--fx-height,68vh);
  opacity: 0;
  transform: rotate(var(--fx-rotate,0deg));
  transform-origin: top center;
  clip-path: polygon(42% 0,100% 0,63% 39%,96% 37%,24% 100%,43% 55%,8% 58%);
  background: linear-gradient(90deg,#93a6ff,#fff 45%,#bfcbff);
  filter: drop-shadow(0 0 8px #fff) drop-shadow(0 0 18px #8496ff);
  animation: halloween-lightning-bolt 1.05s steps(1,end) forwards;
}
body[data-theme="halloween"] .fx-spider {
  left: var(--fx-left,50%);
  top: -42px;
  font-size: 34px;
  filter: drop-shadow(0 3px 3px rgba(0,0,0,.7));
  animation: halloween-spider-drop var(--fx-duration,6s) ease-in-out forwards;
}
body[data-theme="halloween"] .fx-spider::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 80%;
  width: 1px;
  height: 120vh;
  background: rgba(222,213,226,.48);
}
body[data-theme="halloween"] .fx-apparition {
  z-index: 7;
  left: var(--fx-left,50%);
  top: var(--fx-top,40%);
  font-size: var(--fx-size,90px);
  opacity: 0;
  filter: grayscale(.35) drop-shadow(0 0 24px rgba(255,117,30,.72));
  animation: halloween-apparition 2.35s ease-in-out forwards;
}
body[data-theme="halloween"] .fx-pumpkin {
  right: 3vw;
  bottom: -14px;
  font-size: 52px;
  filter: drop-shadow(0 0 13px #ff6d00);
  animation: halloween-pulse 2.4s ease-in-out infinite;
}
body[data-theme="halloween"] .fx-login-smoke {
  inset: -10%;
  background:
    radial-gradient(ellipse at 20% 55%,rgba(220,213,225,.62),transparent 32%),
    radial-gradient(ellipse at 72% 42%,rgba(170,151,180,.62),transparent 36%),
    radial-gradient(ellipse at 45% 84%,rgba(232,224,236,.48),transparent 34%);
  filter: blur(22px);
  animation: halloween-login-smoke 6.5s ease-out forwards;
}
body[data-theme="halloween"] .fx-login-smoke.is-second {
  transform: scaleX(-1);
  animation-delay: .8s;
}
@keyframes halloween-fog {
  0% { transform: translate3d(0,0,0) scale(.92); }
  50% { transform: translate3d(112vw,-3vh,0) scale(1.08); }
  100% { transform: translate3d(238vw,2vh,0) scale(.96); }
}
@keyframes halloween-haze {
  0% { transform: translate3d(-7%,-2%,0) scale(1); opacity: .22; }
  50% { opacity: .4; }
  100% { transform: translate3d(8%,4%,0) scale(1.13); opacity: .28; }
}
@keyframes halloween-smoke-rise {
  0% { opacity: 0; transform: translate3d(0,8vh,0) scale(.62); }
  18% { opacity: .46; }
  72% { opacity: .28; }
  100% { opacity: 0; transform: translate3d(var(--fx-drift,40px),-116vh,0) scale(1.75); }
}
@keyframes halloween-bat-wings {
  0% { transform: scaleY(.68) rotate(-4deg); }
  100% { transform: scaleY(1.08) rotate(4deg); }
}
@keyframes halloween-flight-path {
  0% {
    transform: translate3d(var(--fx-x0),var(--fx-y0),0) scale(var(--fx-s0,.72)) scaleX(var(--fx-face,1)) rotate(-14deg);
    opacity: 0;
  }
  7% { opacity: .94; }
  24% {
    transform: translate3d(var(--fx-x1),var(--fx-y1),0) scale(.94) scaleX(var(--fx-face,1)) rotate(12deg);
  }
  51% {
    transform: translate3d(var(--fx-x2),var(--fx-y2),0) scale(var(--fx-s2,1.12)) scaleX(var(--fx-face,1)) rotate(-9deg);
    opacity: 1;
  }
  76% {
    transform: translate3d(var(--fx-x3),var(--fx-y3),0) scale(.88) scaleX(var(--fx-face,1)) rotate(15deg);
  }
  94% { opacity: .92; }
  100% {
    transform: translate3d(var(--fx-x4),var(--fx-y4),0) scale(var(--fx-s4,.78)) scaleX(var(--fx-face,1)) rotate(-12deg);
    opacity: 0;
  }
}
@keyframes halloween-fire {
  0% { transform: scaleY(.78) translateY(8px); opacity: .38; }
  100% { transform: scaleY(1.18) translateY(-4px); opacity: .65; }
}
@keyframes halloween-ember {
  0% { transform: translate3d(0,0,0) scale(.6); opacity: 0; }
  12% { opacity: 1; }
  65% { opacity: .85; }
  100% { transform: translate3d(var(--fx-drift,20px),-108vh,0) scale(.12); opacity: 0; }
}
@keyframes halloween-lightning-flash {
  0%,7%,15%,100% { opacity: 0; }
  3% { opacity: .82; }
  10% { opacity: .34; }
  20% { opacity: .58; }
  28% { opacity: 0; }
}
@keyframes halloween-lightning-bolt {
  0%,7%,15%,100% { opacity: 0; }
  3% { opacity: 1; }
  10% { opacity: .42; }
  20% { opacity: .94; }
  29% { opacity: 0; }
}
@keyframes halloween-spider-drop {
  0% { transform: translate3d(0,0,0) rotate(-8deg); }
  38% { transform: translate3d(0,var(--fx-drop,50vh),0) rotate(9deg); }
  58% { transform: translate3d(0,calc(var(--fx-drop,50vh) - 5vh),0) rotate(-6deg); }
  76% { transform: translate3d(0,var(--fx-drop,50vh),0) rotate(4deg); }
  100% { transform: translate3d(0,-12vh,0) rotate(-8deg); }
}
@keyframes halloween-apparition {
  0% { transform: translate(-50%,-50%) scale(.08) rotate(var(--fx-rotate,0deg)); opacity: 0; }
  34% { transform: translate(-50%,-50%) scale(1.18) rotate(var(--fx-rotate,0deg)); opacity: .86; }
  64% { transform: translate(-50%,-50%) scale(.96) rotate(var(--fx-rotate,0deg)); opacity: .78; }
  100% { transform: translate(-50%,-65%) scale(1.55) rotate(var(--fx-rotate,0deg)); opacity: 0; filter: blur(9px); }
}
@keyframes halloween-pulse { 50% { transform: scale(1.08); filter: drop-shadow(0 0 24px #ff6d00); } }
@keyframes halloween-login-smoke {
  0% { opacity: .9; transform: scale(1.12); }
  48% { opacity: .72; }
  100% { opacity: 0; transform: scale(1.55) translateY(-8%); visibility: hidden; }
}

@media (max-width: 576px) {
  body[data-theme="halloween"] .navbar-brand-wordmark::after { display: none; }
}
