
/* TorqBound seasonal event themes — synced with Companion through the active event. */
.event-theme {
  --event-accent:#ffc85b;
  --event-accent-2:#a26d1d;
  --event-accent-rgb:255,200,91;
  --event-panel:rgba(17,12,19,.92);
  --event-ink:#fff4d5;
}
.event-theme-red-moon {
  --event-accent:#ff334f;
  --event-accent-2:#8f001c;
  --event-accent-rgb:255,51,79;
  --event-panel:rgba(28,5,11,.94);
  --event-ink:#ffe5e8;
}
.event-theme-festival-grid {
  --event-accent:#ffb12b;
  --event-accent-2:#e43d9a;
  --event-accent-rgb:255,177,43;
  --event-panel:rgba(28,12,29,.93);
  --event-ink:#fff2d0;
}
.event-theme-the-hunter {
  --event-accent:#ff6a18;
  --event-accent-2:#6d1300;
  --event-accent-rgb:255,106,24;
  --event-panel:rgba(20,10,5,.95);
  --event-ink:#fff0df;
}
.event-theme-gift-exchange {
  --event-accent:#74d9ff;
  --event-accent-2:#1f62a9;
  --event-accent-rgb:116,217,255;
  --event-panel:rgba(5,17,28,.94);
  --event-ink:#e8f9ff;
}

/* Shared color takeover. */
body.event-theme:not(.event-theme-default) {
  background:
    radial-gradient(circle at 15% 18%, rgba(var(--event-accent-rgb),.07), transparent 31rem),
    #08070b;
}
body.event-theme:not(.event-theme-default) .site-header {
  border-bottom-color:rgba(var(--event-accent-rgb),.42)!important;
  box-shadow:0 12px 38px rgba(0,0,0,.4),0 1px 0 rgba(var(--event-accent-rgb),.13);
}
body.event-theme:not(.event-theme-default) .main-nav a.active,
body.event-theme:not(.event-theme-default) .text-link,
body.event-theme:not(.event-theme-default) .eyebrow,
body.event-theme:not(.event-theme-default) .breadcrumb a {
  color:var(--event-accent)!important;
}
body.event-theme:not(.event-theme-default) .btn-gold {
  background:linear-gradient(135deg,var(--event-accent),var(--event-accent-2))!important;
  border-color:rgba(var(--event-accent-rgb),.9)!important;
  color:#090709!important;
  box-shadow:0 0 28px rgba(var(--event-accent-rgb),.23);
}
body.event-theme:not(.event-theme-default) .btn-outline:hover,
body.event-theme:not(.event-theme-default) .editorial-card:hover,
body.event-theme:not(.event-theme-default) .panel:hover {
  border-color:rgba(var(--event-accent-rgb),.48)!important;
}
body.event-theme:not(.event-theme-default) .badge.gold,
body.event-theme:not(.event-theme-default) .status,
body.event-theme:not(.event-theme-default) .count-pill {
  border-color:rgba(var(--event-accent-rgb),.42)!important;
}
body.event-theme:not(.event-theme-default) .feature-strip {
  border-color:rgba(var(--event-accent-rgb),.2)!important;
}
body.event-theme:not(.event-theme-default) .hero,
body.event-theme:not(.event-theme-default) .page-hero {
  position:relative;
  overflow:hidden;
}

body.event-theme:not(.event-theme-default) .page-hero::after,
body.event-theme:not(.event-theme-default) .hero::after {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(5,3,6,.96) 0%,rgba(5,3,6,.72) 34%,rgba(5,3,6,.2) 66%,rgba(5,3,6,.5) 100%);
}
body.event-theme:not(.event-theme-default) .hero>.container,
body.event-theme:not(.event-theme-default) .page-hero>.container {
  position:relative;
  z-index:2;
}
body.event-theme-red-moon .hero,
body.event-theme-red-moon .page-hero {
  background-image:url('/assets/img/event-themes/red-moon-run.jpg')!important;
  background-size:cover!important;
  background-position:center 42%!important;
}
body.event-theme-festival-grid .hero,
body.event-theme-festival-grid .page-hero {
  background-image:url('/assets/img/event-themes/festival-grid.jpg')!important;
  background-size:cover!important;
  background-position:center 44%!important;
}
body.event-theme-the-hunter .hero,
body.event-theme-the-hunter .page-hero {
  background-image:url('/assets/img/event-themes/the-hunter.jpg')!important;
  background-size:cover!important;
  background-position:center 43%!important;
}
body.event-theme-gift-exchange .hero,
body.event-theme-gift-exchange .page-hero {
  background-image:url('/assets/img/event-themes/gift-exchange.jpg')!important;
  background-size:cover!important;
  background-position:center 45%!important;
}

/* Live-event banner. */
.seasonal-event-bar {
  position:relative;
  z-index:25;
  border-bottom:1px solid rgba(var(--event-accent-rgb),.45);
  background:
    linear-gradient(90deg,rgba(var(--event-accent-rgb),.18),transparent 42%,rgba(var(--event-accent-rgb),.11)),
    rgba(7,6,9,.96);
  box-shadow:0 10px 30px rgba(0,0,0,.34);
  color:var(--event-ink);
}
.seasonal-event-bar-inner {
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding-top:8px;
  padding-bottom:8px;
}
.seasonal-event-title,
.seasonal-event-meta {
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}
.seasonal-event-title strong {
  color:var(--event-accent);
  letter-spacing:.075em;
  text-transform:uppercase;
}
.seasonal-event-title span:not(.seasonal-live-dot) {
  font-size:.78rem;
  letter-spacing:.08em;
  opacity:.9;
  white-space:nowrap;
}
.seasonal-event-meta {
  justify-content:flex-end;
  font-size:.78rem;
  letter-spacing:.03em;
}
.seasonal-event-meta a {
  color:var(--event-ink);
  border:1px solid rgba(var(--event-accent-rgb),.42);
  border-radius:999px;
  padding:7px 11px;
  text-decoration:none;
  white-space:nowrap;
}
.seasonal-event-meta a:hover {
  color:#090709;
  background:var(--event-accent);
}
.seasonal-live-dot {
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--event-accent);
  box-shadow:0 0 0 0 rgba(var(--event-accent-rgb),.62);
  animation:seasonal-live-pulse 1.7s ease-out infinite;
}
@keyframes seasonal-live-pulse {
  0%{box-shadow:0 0 0 0 rgba(var(--event-accent-rgb),.62)}
  70%{box-shadow:0 0 0 9px rgba(var(--event-accent-rgb),0)}
  100%{box-shadow:0 0 0 0 rgba(var(--event-accent-rgb),0)}
}

/* Theme animation layer. Kept pointer-free and subtle so it never blocks UI. */
.seasonal-fx {
  position:fixed;
  inset:0;
  z-index:90;
  pointer-events:none;
  overflow:hidden;
  opacity:.72;
}
.seasonal-fx i {
  position:absolute;
  display:block;
  will-change:transform,opacity;
}
.seasonal-fx-red-moon::before {
  content:"";
  position:absolute;
  width:34vw;
  height:34vw;
  min-width:340px;
  min-height:340px;
  right:-8vw;
  top:8vh;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,47,73,.18),rgba(118,0,24,.06) 45%,transparent 70%);
  filter:blur(2px);
  animation:red-moon-breathe 5.8s ease-in-out infinite;
}
.seasonal-fx-red-moon i {
  width:3px;height:3px;border-radius:50%;
  background:#ff4961;
  box-shadow:0 0 12px #ff334f;
  animation:red-moon-ember 7s linear infinite;
}
.seasonal-fx-red-moon i:nth-child(1){left:14%;top:88%;animation-delay:-1s}
.seasonal-fx-red-moon i:nth-child(2){left:52%;top:92%;animation-delay:-3.3s}
.seasonal-fx-red-moon i:nth-child(3){left:78%;top:84%;animation-delay:-5.1s}
@keyframes red-moon-breathe{50%{transform:scale(1.08);opacity:.72}}
@keyframes red-moon-ember{to{transform:translate(90px,-115vh) scale(.45);opacity:0}}

.seasonal-fx-festival-grid::before,
.seasonal-fx-festival-grid::after {
  content:"";
  position:absolute;
  inset:-15%;
  background:
    radial-gradient(circle at 20% 30%,rgba(255,175,25,.13) 0 3px,transparent 4px),
    radial-gradient(circle at 62% 18%,rgba(239,58,174,.12) 0 4px,transparent 5px),
    radial-gradient(circle at 78% 66%,rgba(91,193,255,.1) 0 3px,transparent 4px);
  background-size:120px 120px,160px 160px,190px 190px;
  animation:festival-drift 13s linear infinite;
}
.seasonal-fx-festival-grid::after {transform:rotate(23deg);animation-duration:18s;animation-direction:reverse}
.seasonal-fx-festival-grid i {
  width:7px;height:18px;border-radius:2px;
  background:var(--event-accent);
  opacity:.28;
  animation:festival-confetti 8s linear infinite;
}
.seasonal-fx-festival-grid i:nth-child(1){left:12%;top:-5%;background:#ffb12b}
.seasonal-fx-festival-grid i:nth-child(2){left:48%;top:-8%;background:#e43d9a;animation-delay:-3s}
.seasonal-fx-festival-grid i:nth-child(3){left:82%;top:-10%;background:#6cc8ff;animation-delay:-5s}
@keyframes festival-drift{to{transform:translate3d(7vw,8vh,0) rotate(2deg)}}
@keyframes festival-confetti{to{transform:translate3d(60px,115vh,0) rotate(540deg);opacity:.02}}

.seasonal-fx-the-hunter::before,
.seasonal-fx-the-hunter::after {
  content:"";
  position:absolute;
  width:140%;
  height:34vh;
  left:-20%;
  bottom:4vh;
  background:radial-gradient(ellipse at center,rgba(226,235,225,.075),transparent 68%);
  filter:blur(18px);
  animation:hunter-fog 12s ease-in-out infinite alternate;
}
.seasonal-fx-the-hunter::after {bottom:31vh;opacity:.55;animation-duration:18s;animation-direction:alternate-reverse}
.seasonal-fx-the-hunter i {
  width:3px;height:3px;border-radius:50%;
  background:#ff731c;
  box-shadow:0 0 10px #ff731c;
  animation:hunter-ember 9s linear infinite;
}
.seasonal-fx-the-hunter i:nth-child(1){left:23%;top:96%}
.seasonal-fx-the-hunter i:nth-child(2){left:61%;top:91%;animation-delay:-4s}
.seasonal-fx-the-hunter i:nth-child(3){left:87%;top:98%;animation-delay:-6.5s}
@keyframes hunter-fog{to{transform:translateX(15vw) scale(1.04)}}
@keyframes hunter-ember{to{transform:translate(35px,-105vh);opacity:0}}

.seasonal-fx-gift-exchange::before,
.seasonal-fx-gift-exchange::after {
  content:"";
  position:absolute;
  inset:-25% 0 0;
  background-image:
    radial-gradient(circle,#fff 0 1.2px,transparent 1.7px),
    radial-gradient(circle,rgba(160,227,255,.95) 0 1px,transparent 1.5px);
  background-size:52px 52px,91px 91px;
  background-position:0 0,25px 18px;
  opacity:.42;
  animation:gift-snow 13s linear infinite;
}
.seasonal-fx-gift-exchange::after {
  opacity:.22;
  transform:scale(1.35);
  animation-duration:22s;
  animation-delay:-8s;
}
@keyframes gift-snow{to{background-position:80px 640px,-65px 710px}}

@media (prefers-reduced-motion: reduce) {
  .seasonal-fx,.seasonal-live-dot {animation:none!important}
  .seasonal-fx::before,.seasonal-fx::after,.seasonal-fx i {animation:none!important}
}
@media (max-width:760px) {
  .seasonal-event-bar-inner{align-items:flex-start;flex-direction:column;gap:7px}
  .seasonal-event-title{flex-wrap:wrap}
  .seasonal-event-title span:not(.seasonal-live-dot){white-space:normal}
  .seasonal-event-meta{width:100%;justify-content:space-between}
  .seasonal-event-meta a{font-size:.72rem;padding:6px 9px}
}
