/* Halloween theme overlay */
:root {
  --hw-orange: #ff7518;
  --hw-purple: #6b2fa0;
  --hw-night: #120b1c;
}

body {
  border-top: 4px solid var(--hw-orange);
}

a:hover { color: var(--hw-orange); }

.btn, button, input[type="submit"], .get-started-btn, .appointment-btn {
  transition: box-shadow .3s, transform .3s;
}
.btn:hover, button:hover, input[type="submit"]:hover, .get-started-btn:hover {
  box-shadow: 0 0 14px var(--hw-orange);
}

h1, h2, h3 {
  text-shadow: 0 0 10px rgba(255, 117, 24, .35);
}

[data-theme="dark"] body {
  background-image: radial-gradient(ellipse at top, #2a1442 0%, var(--hw-night) 60%);
}

/* Vignette */
#hw-vignette {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9990;
  box-shadow: inset 0 0 120px rgba(107, 47, 160, .45), inset 0 0 40px rgba(255, 117, 24, .25);
}

/* Cobwebs */
.hw-web {
  position: fixed;
  top: 0;
  width: 160px;
  height: 160px;
  pointer-events: none;
  z-index: 9991;
  opacity: .55;
}
.hw-web.left { left: 0; }
.hw-web.right { right: 0; transform: scaleX(-1); }

/* Floating Halloween emojis */
.hw-float {
  position: fixed;
  top: -60px;
  pointer-events: none;
  z-index: 9992;
  user-select: none;
  animation: hw-fall linear forwards;
  filter: drop-shadow(0 0 6px rgba(255, 117, 24, .6));
}
@keyframes hw-fall {
  to { transform: translateY(110vh) rotate(360deg); }
}

/* Flying bat */
.hw-bat {
  position: fixed;
  font-size: 32px;
  pointer-events: none;
  z-index: 9992;
  left: -60px;
  animation: hw-fly linear infinite;
}
@keyframes hw-fly {
  0%   { transform: translate(0, 0) scale(1); }
  25%  { transform: translate(30vw, -40px) scale(1.2, .8); }
  50%  { transform: translate(60vw, 30px) scale(1); }
  75%  { transform: translate(85vw, -30px) scale(1.2, .8); }
  100% { transform: translate(115vw, 0) scale(1); }
}

/* Pumpkin toggle */
#hw-toggle {
  position: fixed;
  left: 14px;
  bottom: 14px;
  z-index: 9999;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid var(--hw-orange);
  background: var(--hw-night);
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
}

/* Lightning flash */
#hw-flash {
  position: fixed;
  inset: 0;
  background: #fff;
  opacity: 0;
  pointer-events: none;
  z-index: 9998;
}
#hw-flash.on { animation: hw-flash .5s ease-out; }
@keyframes hw-flash {
  0% { opacity: .35; } 20% { opacity: 0; } 35% { opacity: .25; } 100% { opacity: 0; }
}

html.hw-off #hw-vignette,
html.hw-off .hw-web,
html.hw-off .hw-float,
html.hw-off .hw-bat,
html.hw-off #hw-flash { display: none; }

@media (prefers-reduced-motion: reduce) {
  .hw-float, .hw-bat, #hw-flash { display: none; }
}
@media (max-width: 600px) {
  .hw-web { width: 90px; height: 90px; }
}
