/* Astral Tickets — Halloween / Crimson After Dark theme.
   Loaded only by ticketing storefront, account, ticket and ticket-admin pages. */
:root {
  color-scheme: dark;
  --ht-ink: #080205;
  --ht-panel: #13070b;
  --ht-panel-raised: #1b090f;
  --ht-line: rgba(255, 47, 67, .24);
  --ht-red: #f32640;
  --ht-red-bright: #ff4054;
  --ht-blood: #8f071b;
  --ht-bone: #fff4ef;
  --ht-muted: #b5a1a6;
}

body.ht {
  position: relative;
  isolation: isolate;
  min-height: 100vh;
  color: var(--ht-bone);
  background-color: var(--ht-ink);
  background-image:
    radial-gradient(ellipse at 52% -15%, rgba(136, 0, 22, .42), transparent 48%),
    radial-gradient(ellipse at 3% 52%, rgba(87, 0, 17, .2), transparent 34%),
    radial-gradient(ellipse at 100% 72%, rgba(70, 0, 13, .16), transparent 31%),
    linear-gradient(180deg, #0d0307 0%, #080205 54%, #0b0306 100%);
}

body.ht::before,
body.ht::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

body.ht::before {
  opacity: .22;
  background-image:
    repeating-linear-gradient(118deg, transparent 0 46px, rgba(255, 37, 57, .035) 47px, transparent 48px 92px),
    radial-gradient(ellipse at 50% 100%, rgba(111, 0, 20, .28), transparent 48%);
  animation: ht-drift 22s ease-in-out infinite alternate;
}

body.ht::after {
  background: radial-gradient(ellipse at center, transparent 38%, rgba(0, 0, 0, .52) 100%);
}

body.ht > *:not(.noise):not(.haunted-gate):not(.bat-flight) { position: relative; z-index: 1; }
body.ht :is(a, button, input, select, textarea) { accent-color: var(--ht-red); }
body.ht :is(a, button) { transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
body.ht a:focus-visible,
body.ht button:focus-visible,
body.ht input:focus-visible,
body.ht select:focus-visible,
body.ht textarea:focus-visible {
  outline: 2px solid var(--ht-red-bright);
  outline-offset: 3px;
}

@keyframes ht-drift {
  from { transform: translate3d(-1.2%, 0, 0) scale(1.02); }
  to { transform: translate3d(1.2%, -1%, 0) scale(1.05); }
}

/* Shopfront and cart */
body.ht-shop { --purple: #d41331; --purple2: #ff4358; --pink: #b90b2b; --line: rgba(255, 69, 83, .19); --panel: #13070b; }
body.ht-shop .nav {
  border-bottom-color: rgba(255, 54, 72, .2);
  background: rgba(9, 2, 5, .84);
  box-shadow: 0 12px 40px rgba(0, 0, 0, .34), 0 1px 0 rgba(255, 49, 68, .08);
}
body.ht-shop .logo { color: #fff4ef; text-shadow: 0 0 28px rgba(243, 38, 64, .24); }
body.ht-shop .logo::before { content: none; display: none; }
body.ht-shop .logo small { color: #ff7a84; }
body.ht-shop .navlinks { color: #c5aeb4; }
body.ht-shop .navlinks a:hover { color: #fff; text-shadow: 0 0 16px rgba(255, 46, 65, .7); }
body.ht-shop .navcta,
body.ht-shop .privacy-mobile {
  border-color: rgba(255, 55, 73, .5);
  background: linear-gradient(135deg, rgba(150, 5, 26, .5), rgba(47, 5, 13, .72));
  color: #fff3f0;
  box-shadow: inset 0 0 18px rgba(243, 38, 64, .08), 0 0 22px rgba(243, 38, 64, .08);
}
body.ht-shop .hero { position: relative; isolation: isolate; }
body.ht-shop .hero::after {
  content: "☠";
  position: absolute;
  z-index: 0;
  right: clamp(12px, 5vw, 76px);
  top: 2%;
  color: rgba(255, 25, 51, .095);
  font: 400 clamp(190px, 27vw, 370px)/.8 Georgia, serif;
  text-shadow: 0 0 85px rgba(218, 0, 34, .24);
  pointer-events: none;
  transform: rotate(-9deg);
}
body.ht-shop .hero > * { position: relative; z-index: 1; }
body.ht-shop .eyebrow,
body.ht-shop .event-kicker { color: #ff5365; }
body.ht-shop .hero h1 { color: #fff4f0; text-shadow: 0 8px 50px rgba(0, 0, 0, .45); }
body.ht-shop .hero h1 span {
  background: linear-gradient(100deg, #fff3ee 0%, #ff7b86 39%, #e91336 72%, #8f061b 100%);
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
  filter: drop-shadow(0 8px 28px rgba(209, 0, 34, .21));
}
body.ht-shop .hero p,
body.ht-shop .eventbox .place { color: #b7a2a8; }
body.ht-shop .eventbox {
  position: relative;
  overflow: hidden;
  border-color: rgba(255, 47, 68, .28);
  background: linear-gradient(145deg, rgba(83, 7, 20, .76), rgba(15, 6, 9, .94) 65%);
  box-shadow: 0 28px 90px rgba(0, 0, 0, .5), inset 0 1px rgba(255, 255, 255, .04), 0 0 42px rgba(157, 0, 26, .12);
}
body.ht-shop .eventbox::after {
  content: "AFTER DARK";
  position: absolute;
  top: 16px;
  right: -34px;
  width: 140px;
  padding: 6px 0;
  transform: rotate(38deg);
  background: #a60922;
  color: #fff3ef;
  text-align: center;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .19em;
  box-shadow: 0 4px 16px #0008;
}
body.ht-shop .eventbox .date { color: #fff1ed; }
body.ht-shop .chip { border-color: rgba(255, 53, 71, .22); color: #e8cbd0; background: rgba(39, 5, 12, .45); }
body.ht-shop .ticketAnnouncementInner {
  border-color: rgba(255, 53, 72, .46);
  background: linear-gradient(110deg, rgba(107, 5, 22, .42), rgba(20, 5, 9, .94) 62%, rgba(51, 3, 14, .62));
  box-shadow: 0 16px 50px rgba(0, 0, 0, .32), 0 0 34px rgba(185, 0, 31, .09);
}
body.ht-shop .ticketAnnouncementKicker { color: #ff7180; }
body.ht-shop .ticketAnnouncementTitle { color: #fff3ef; }
body.ht-shop .ticketAnnouncementBody { color: #c5aeb4; }
body.ht-shop .ticketAnnouncementButton,
body.ht-shop .ticketAnnouncementModalButton {
  background: linear-gradient(135deg, #ff4358, #a80822 78%);
  box-shadow: 0 10px 28px rgba(207, 5, 38, .27), inset 0 1px rgba(255, 255, 255, .24);
}
body.ht-shop .main { position: relative; }
body.ht-shop .sectionhead h2 { color: #fff1ed; }
body.ht-shop .sectionhead p { color: #9f858c; }
body.ht-shop .ticket {
  border-color: rgba(255, 55, 73, .2);
  background: linear-gradient(128deg, rgba(36, 8, 14, .94), rgba(13, 5, 8, .96) 70%);
  box-shadow: inset 0 1px rgba(255, 255, 255, .025), 0 15px 42px rgba(0, 0, 0, .22);
}
body.ht-shop .ticket::before { background: radial-gradient(circle, rgba(236, 21, 52, .22), transparent 68%); }
body.ht-shop .ticket:hover,
body.ht-shop .ticket.selected {
  border-color: rgba(255, 59, 77, .62);
  box-shadow: 0 0 0 1px rgba(255, 38, 61, .11), 0 20px 58px rgba(99, 0, 18, .38), inset 0 1px rgba(255, 255, 255, .05);
}
body.ht-shop .ticket h3,
body.ht-shop .event-section-head h3,
body.ht-shop .orderhead h3 { color: #fff0ed; }
body.ht-shop .tag { color: #ff7784; }
body.ht-shop .dot,
body.ht-shop .event-kicker span { background: var(--ht-red); box-shadow: 0 0 12px rgba(255, 42, 65, .6); }
body.ht-shop .fact small,
body.ht-shop .price span,
body.ht-shop .stock,
body.ht-shop .packageLabel { color: #9c858b; }
body.ht-shop .price strong { color: #fff0ec; }
body.ht-shop .stock.hot { color: #ff7c86; }
body.ht-shop .packageBtn,
body.ht-shop .account-link {
  border-color: rgba(255, 58, 77, .34);
  background: rgba(97, 4, 22, .22);
  color: #ffe0df;
}
body.ht-shop .packageBtn.active,
body.ht-shop .choose.active,
body.ht-shop .qty .choose.active,
body.ht-shop .account-link.primary {
  border-color: #ff334c !important;
  background: linear-gradient(135deg, #f62c46, #9f061f) !important;
  color: #fff !important;
  box-shadow: 0 8px 26px rgba(209, 6, 39, .28) !important;
}
body.ht-shop .qty button { border-color: rgba(255, 50, 69, .22); background: #12070b; }
body.ht-shop .qty button:hover,
body.ht-shop .choose:hover { border-color: rgba(255, 57, 76, .7); background: rgba(126, 5, 26, .45); }
body.ht-shop .choose,
body.ht-shop .account-link { border-color: rgba(255, 57, 76, .4); color: #ffe2df; background: rgba(111, 4, 24, .25); }
body.ht-shop .event-section-head {
  border-color: rgba(255, 47, 67, .32);
  background: linear-gradient(145deg, rgba(105, 5, 23, .45), rgba(20, 5, 9, .96));
}
body.ht-shop .event-tickets {
  border-color: rgba(255, 47, 67, .28);
  background: rgba(8, 2, 5, .64);
}
body.ht-shop .price-label { border-color: rgba(255, 47, 67, .28); color: #aa858d; background: rgba(29, 5, 11, .75); }
body.ht-shop .order {
  border-color: rgba(255, 48, 68, .34);
  background: linear-gradient(155deg, rgba(35, 7, 14, .98), rgba(12, 4, 7, .98));
  box-shadow: 0 28px 90px rgba(0, 0, 0, .5), 0 0 42px rgba(152, 0, 26, .1);
}
body.ht-shop .orderhead { border-color: rgba(255, 55, 73, .18); }
body.ht-shop .orderhead small { color: #ff6b7b; }
body.ht-shop .orderhead h3::before { content: "✦ "; color: var(--ht-red); font-size: .75em; }
body.ht-shop .summary { color: #f8e9e7; }
body.ht-shop .empty,
body.ht-shop .line small { color: #a48b91; }
body.ht-shop .line { border-color: rgba(255, 255, 255, .07); }
body.ht-shop .total { border-color: rgba(255, 52, 71, .24); }
body.ht-shop .total strong { color: #ff6978; }
body.ht-shop .customer { border-top-color: rgba(255, 53, 73, .16); }
body.ht-shop .field label { color: #d6bfc3; }
body.ht-shop .field input,
body.ht-shop .voucherRow input {
  border-color: rgba(255, 56, 74, .23);
  background: rgba(8, 3, 5, .85);
  color: #fff4f0;
}
body.ht-shop .field input:focus { border-color: var(--ht-red); box-shadow: 0 0 0 3px rgba(243, 38, 64, .12); }
body.ht-shop .pay,
body.ht-shop .mobilebar button {
  border: 1px solid rgba(255, 159, 165, .25);
  background: linear-gradient(110deg, #f52642, #9a061e 84%);
  color: #fff7f4;
  box-shadow: 0 11px 28px rgba(187, 3, 33, .28), inset 0 1px rgba(255, 255, 255, .24);
}
body.ht-shop .pay:hover,
body.ht-shop .mobilebar button:hover { transform: translateY(-2px); filter: brightness(1.12); box-shadow: 0 15px 36px rgba(220, 3, 39, .38); }
body.ht-shop .pay:disabled { filter: grayscale(.6); opacity: .55; }
body.ht-shop .voucherRow button { background: #570819; color: #ffe9e6; border: 1px solid rgba(255, 73, 88, .35); }
body.ht-shop .voucherMsg,
body.ht-shop .secure,
body.ht-shop .footer-note { color: #a89197; }
body.ht-shop .alert { border-color: rgba(255, 58, 77, .42); background: rgba(105, 5, 22, .38); color: #ffd7d8; }
body.ht-shop .flashHero,
body.ht-shop .flashCard { border-color: rgba(255, 42, 64, .42); background: linear-gradient(145deg, rgba(91, 5, 21, .5), rgba(16, 4, 8, .95)); }
body.ht-shop .flashTitle,
body.ht-shop .flashNow,
body.ht-shop .flashBadgeBuy { color: #ff6373; }
body.ht-shop .flashTimer strong { color: #fff2ee; }
body.ht-shop .flashUpcoming { border-color: rgba(255, 67, 81, .22); }
body.ht-shop .ticketAnnouncementModal { background: rgba(7, 1, 4, .86); }
body.ht-shop .ticketAnnouncementModalCard {
  border-color: rgba(255, 51, 72, .48);
  background: linear-gradient(145deg, #2b0710, #100408 68%, #21050c);
  box-shadow: 0 35px 110px #000c, 0 0 75px rgba(208, 0, 35, .23), inset 0 1px rgba(255, 255, 255, .06);
}
body.ht-shop .ticketAnnouncementModalCard::before { background: radial-gradient(circle at 50% 0, rgba(255, 37, 58, .24), transparent 44%); }
body.ht-shop .ticketAnnouncementModalKicker { color: #ff7180; }
body.ht-shop .ticketAnnouncementModalBody { color: #ddc5ca; }
body.ht-shop .ticketAnnouncementModalClose { border-color: rgba(255, 87, 101, .28); background: rgba(47, 5, 14, .78); }

/* Sign in and account creation */
body.ht-auth { overflow-x: hidden; }
body.ht-auth::before { content: "☠"; inset: auto 0 -9vh; z-index: 0; color: rgba(255, 24, 50, .055); font: 400 min(76vw, 620px)/.8 Georgia, serif; text-align: center; }
body.ht-auth .card {
  position: relative;
  overflow: hidden;
  border-color: rgba(255, 53, 73, .34);
  border-radius: 22px 22px 27px 27px;
  background: linear-gradient(155deg, rgba(39, 8, 16, .96), rgba(12, 4, 8, .98) 62%);
  box-shadow: 0 34px 100px rgba(0, 0, 0, .62), 0 0 54px rgba(153, 0, 25, .15), inset 0 1px rgba(255, 255, 255, .05);
}
body.ht-auth .card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: linear-gradient(90deg, #510715, #ff4055 38%, #a00521 72%, #4d0613);
  box-shadow: 0 0 22px rgba(255, 41, 62, .55);
}
body.ht-auth .brand { color: #fff2ee; text-shadow: 0 0 24px rgba(255, 38, 60, .25); }
body.ht-auth .brand::before { content: "☠"; margin-right: 9px; color: var(--ht-red); }
body.ht-auth .eyebrow { color: #ff6b7c; }
body.ht-auth h1 { color: #fff1ed; font-family: Georgia, "Times New Roman", serif; font-weight: 700; letter-spacing: -.04em; text-shadow: 0 4px 24px rgba(208, 0, 36, .2); }
body.ht-auth p { color: #c0a9af; }
body.ht-auth label { color: #dfc5ca; }
body.ht-auth input {
  border-color: rgba(255, 59, 77, .24);
  background: rgba(7, 2, 5, .88);
  color: #fff5f1;
  box-shadow: inset 0 1px 7px rgba(0, 0, 0, .34);
}
body.ht-auth input:focus { outline: 2px solid rgba(255, 51, 74, .55); box-shadow: 0 0 0 4px rgba(243, 38, 64, .1); }
body.ht-auth .submit {
  background: linear-gradient(105deg, #f52b46, #a00620 82%);
  color: #fff6f2;
  box-shadow: 0 12px 30px rgba(185, 3, 34, .25), inset 0 1px rgba(255, 255, 255, .23);
}
body.ht-auth .submit:hover { transform: translateY(-2px); filter: brightness(1.1); box-shadow: 0 16px 34px rgba(223, 7, 42, .33); }
body.ht-auth .error { border-color: rgba(255, 72, 89, .44); background: rgba(112, 9, 25, .35); color: #ffd9da; }
body.ht-auth .links a { color: #ff8992; }
body.ht-auth .links a:hover,
body.ht-auth .back:hover { color: #fff1ed; }
body.ht-auth .note,
body.ht-auth .back { color: #a89096; }

/* Customer account */
body.ht-account .wrap { position: relative; }
body.ht-account .top { border-color: rgba(255, 55, 74, .24); }
body.ht-account .brand { color: #fff2ed; text-shadow: 0 0 20px rgba(243, 38, 64, .2); }
body.ht-account .brand::before { content: "☠"; margin-right: 8px; color: var(--ht-red); }
body.ht-account .nav a,
body.ht-my-tickets .back {
  border-color: rgba(255, 61, 78, .3);
  background: rgba(59, 5, 16, .32);
  color: #ffe3df;
}
body.ht-account .nav a:hover,
body.ht-my-tickets .back:hover { border-color: var(--ht-red); background: rgba(132, 6, 27, .46); }
body.ht-account .hero { position: relative; overflow: hidden; border-bottom: 1px solid rgba(255, 56, 75, .16); }
body.ht-account .hero::after { content: "☠"; position: absolute; right: 4%; top: 4%; color: rgba(255, 26, 51, .08); font: 300 clamp(130px, 22vw, 270px)/.8 Georgia, serif; pointer-events: none; }
body.ht-account .hero > * { position: relative; z-index: 1; }
body.ht-account .eyebrow { color: #ff6274; }
body.ht-account .hero h1 { color: #fff1ed; font-family: Georgia, "Times New Roman", serif; }
body.ht-account .hero p,
body.ht-account .muted { color: #b49da4; }
body.ht-account .summary b { color: #ff6676; text-shadow: 0 0 20px rgba(255, 45, 65, .2); }
body.ht-account .panel {
  border-color: rgba(255, 51, 72, .2);
  background: linear-gradient(145deg, rgba(35, 7, 14, .87), rgba(13, 4, 8, .94));
  box-shadow: 0 20px 55px rgba(0, 0, 0, .25), inset 0 1px rgba(255, 255, 255, .035);
}
body.ht-account .panel h2 { color: #fff0ec; }
body.ht-account .row { border-color: rgba(255, 57, 76, .16); }
body.ht-account .row strong { color: #ffebe7; }
body.ht-account .row small { color: #b09aa0; }
body.ht-account .ticket-actions a {
  border-color: rgba(255, 56, 76, .35);
  background: rgba(73, 5, 18, .28);
  color: #ffe2df;
}
body.ht-account .ticket-actions a:hover { border-color: #ff475d; background: rgba(135, 6, 28, .48); box-shadow: 0 0 20px rgba(222, 7, 41, .14); }
body.ht-account .empty { border-color: rgba(255, 58, 78, .3); color: #b49da3; background: rgba(34, 5, 12, .27); }

/* Ticket catalog and printable online ticket */
body.ht-my-tickets .tickets-page { position: relative; }
body.ht-my-tickets .topbar { border-bottom: 1px solid rgba(255, 53, 73, .22); padding-bottom: 20px; }
body.ht-my-tickets .logo { color: #fff1ed; }
body.ht-my-tickets .logo small,
body.ht-my-tickets .eyebrow { color: #ff5d70; }
body.ht-my-tickets h1 { color: #fff1ed; font-family: Georgia, "Times New Roman", serif; }
body.ht-my-tickets .intro { color: #b79fa6; }
body.ht-my-tickets .event { border: 1px solid rgba(255, 53, 73, .28); border-radius: 24px; background: linear-gradient(145deg, rgba(36, 7, 15, .86), rgba(11, 4, 7, .92)); padding: 22px; box-shadow: 0 22px 60px rgba(0, 0, 0, .3); }
body.ht-my-tickets .event-title { color: #fff0ec; }
body.ht-my-tickets .event-meta { color: #b49da3; }
body.ht-my-tickets .ticket-card { border-color: rgba(255, 54, 73, .25); background: linear-gradient(135deg, rgba(53, 9, 19, .76), rgba(14, 5, 8, .94)); box-shadow: inset 0 1px rgba(255, 255, 255, .035); }
body.ht-my-tickets .ticket-card:hover { border-color: rgba(255, 61, 78, .68); transform: translateY(-3px); box-shadow: 0 16px 38px rgba(91, 0, 17, .28); }
body.ht-my-tickets .ticket-label { color: #ff7883; }
body.ht-my-tickets .ticket-name { color: #fff0ec; }
body.ht-my-tickets .price { color: #ff6475; }
body.ht-my-tickets .buy { border-color: #ff4358; background: linear-gradient(120deg, #ed203c, #91071e); color: #fff5f1; box-shadow: 0 8px 22px rgba(187, 3, 33, .22); }
body.ht-my-tickets .buy:hover { filter: brightness(1.12); transform: translateY(-1px); }
body.ht-my-tickets .buy.disabled { border-color: #4a2930; background: #211015; color: #967d83; box-shadow: none; }
body.ht-my-tickets .empty { border-color: rgba(255, 58, 78, .32); color: #b49da3; }
body.ht-e-ticket { padding: 1px 18px 30px; }
body.ht-e-ticket .ticket {
  position: relative;
  overflow: hidden;
  border-color: rgba(255, 52, 72, .6);
  border-radius: 24px;
  background: radial-gradient(ellipse at 100% 0, rgba(133, 5, 27, .28), transparent 38%), linear-gradient(145deg, #250810, #0c0407 68%);
  box-shadow: 0 32px 90px rgba(0, 0, 0, .58), 0 0 46px rgba(175, 0, 31, .14), inset 0 1px rgba(255, 255, 255, .05);
}
body.ht-e-ticket .ticket::before { content: "☠"; position: absolute; right: 18px; top: 12px; color: rgba(255, 42, 63, .09); font: 180px/.8 Georgia, serif; pointer-events: none; }
body.ht-e-ticket .ticket > * { position: relative; z-index: 1; }
body.ht-e-ticket .eyebrow,
body.ht-e-ticket .code { color: #ff6373; }
body.ht-e-ticket .ticket h1 { color: #fff1ed; font-family: Georgia, "Times New Roman", serif; }
body.ht-e-ticket .meta { border-color: rgba(255, 58, 77, .3); }
body.ht-e-ticket .meta small { color: #b79fa5; }
body.ht-e-ticket .meta strong { color: #fff0ec; }
body.ht-e-ticket .btn { border-color: rgba(255, 65, 82, .5); color: #ffe4e0; background: rgba(70, 5, 18, .4); }
body.ht-e-ticket .btn.primary { border-color: #ff4358; background: linear-gradient(125deg, #ed203c, #90061d); color: #fff5f1; }

/* Ticketing administration only */
body.ht-admin-login .box {
  position: relative;
  overflow: hidden;
  border-color: rgba(255, 53, 73, .38);
  background: linear-gradient(150deg, #290711, #100408 70%);
  box-shadow: 0 34px 100px #000a, 0 0 55px rgba(166, 0, 28, .18), inset 0 1px rgba(255, 255, 255, .05);
}
body.ht-admin-login .box::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg, #540716, #ff4055 42%, #9c071f); box-shadow: 0 0 20px rgba(255, 47, 67, .45); }
body.ht-admin-login .logo { color: #fff1ed; text-shadow: 0 0 25px rgba(255, 35, 58, .24); }
body.ht-admin-login .logo::before { content: "☠"; margin-right: 8px; color: var(--ht-red); }
body.ht-admin-login .eyebrow,
body.ht-admin-login .field label { color: #ff7784; }
body.ht-admin-login .field input { border-color: rgba(255, 60, 79, .3); background: #0b0306; color: #fff3ef; }
body.ht-admin-login .field input:focus { outline: 2px solid rgba(255, 54, 75, .55); }
body.ht-admin-login .btn { background: linear-gradient(110deg, #f32640, #96061d); color: #fff6f2; box-shadow: 0 11px 28px rgba(188, 1, 34, .28), inset 0 1px rgba(255, 255, 255, .22); }
body.ht-admin-login .btn:hover { transform: translateY(-2px); filter: brightness(1.1); }
body.ht-admin-login .err { border-color: rgba(255, 66, 83, .42); background: rgba(100, 7, 24, .4); color: #ffd9d9; }
body.ht-admin-login .note { color: #b39ba2; }
body.ht-admin-events .shell,
body.ht-admin-legacy .wrap { position: relative; }
body.ht-admin-events .top,
body.ht-admin-legacy .top { border-color: rgba(255, 51, 72, .25); }
body.ht-admin-events .brand,
body.ht-admin-legacy .brand { color: #fff0ed; }
body.ht-admin-events .brand::before,
body.ht-admin-legacy .brand::before { content: "☠"; margin-right: 8px; color: var(--ht-red); }
body.ht-admin-events .brand span,
body.ht-admin-events .eyebrow,
body.ht-admin-legacy .eyebrow { color: #ff6374; }
body.ht-admin-events .topnav a,
body.ht-admin-legacy .navbtn { border-color: rgba(255, 59, 77, .28); background: rgba(53, 5, 16, .26); color: #ffe1dd; }
body.ht-admin-events .topnav a:hover,
body.ht-admin-legacy .navbtn:hover { border-color: #ff4056; background: rgba(119, 5, 26, .42); }
body.ht-admin-events .hero h1,
body.ht-admin-legacy .hero h1 { color: #fff0ec; font-family: Georgia, "Times New Roman", serif; text-shadow: 0 5px 34px rgba(173, 0, 30, .18); }
body.ht-admin-events .hero p,
body.ht-admin-legacy .hero p,
body.ht-admin-events .panel .help,
body.ht-admin-events .meta,
body.ht-admin-events .desc,
body.ht-admin-legacy .muted,
body.ht-admin-legacy .help { color: #b09aa0; }
body.ht-admin-events .stat,
body.ht-admin-events .panel,
body.ht-admin-events .event-card,
body.ht-admin-legacy .panel {
  border-color: rgba(255, 53, 73, .2);
  background: linear-gradient(145deg, rgba(36, 7, 14, .82), rgba(12, 4, 7, .94));
  box-shadow: 0 14px 42px rgba(0, 0, 0, .2), inset 0 1px rgba(255, 255, 255, .035);
}
body.ht-admin-events .stat span { color: #c19ca3; }
body.ht-admin-events .stat b { color: #ff6677; }
body.ht-admin-events .panel h2,
body.ht-admin-events .event-title h2,
body.ht-admin-legacy .panel h2,
body.ht-admin-legacy .eventHead h3 { color: #fff0ec; }
body.ht-admin-events .form input,
body.ht-admin-events .form select,
body.ht-admin-events .form textarea,
body.ht-admin-legacy input,
body.ht-admin-legacy select,
body.ht-admin-legacy textarea {
  border-color: rgba(255, 57, 76, .22);
  background: rgba(8, 3, 5, .88);
  color: #fff4ef;
}
body.ht-admin-events .form input:focus,
body.ht-admin-events .form select:focus,
body.ht-admin-events .form textarea:focus,
body.ht-admin-legacy input:focus,
body.ht-admin-legacy select:focus,
body.ht-admin-legacy textarea:focus { border-color: #ff465b; box-shadow: 0 0 0 3px rgba(243, 38, 64, .11); outline: 0; }
body.ht-admin-events .form label,
body.ht-admin-legacy label { color: #dec5ca; }
body.ht-admin-events .submit,
body.ht-admin-legacy button:not(.danger):not(.ghost) {
  background: linear-gradient(115deg, #f12a45, #99061e 84%);
  color: #fff6f2;
  box-shadow: 0 9px 24px rgba(177, 3, 31, .22), inset 0 1px rgba(255, 255, 255, .2);
}
body.ht-admin-events .submit:hover,
body.ht-admin-legacy button:not(.danger):not(.ghost):hover { filter: brightness(1.12); transform: translateY(-1px); }
body.ht-admin-events .event-head,
body.ht-admin-events .category,
body.ht-admin-legacy .eventHead { border-color: rgba(255, 54, 74, .17); }
body.ht-admin-events .details summary,
body.ht-admin-legacy .navbtn { color: #ffe1dd; }
body.ht-admin-events .editbox { border-color: rgba(255, 55, 74, .18); background: rgba(9, 3, 6, .94); }
body.ht-admin-events .category-name,
body.ht-admin-events .category-price,
body.ht-admin-legacy .rowMain strong { color: #ffe9e5; }
body.ht-admin-events .category-price { color: #ff7180; }
body.ht-admin-events .empty,
body.ht-admin-legacy .row { border-color: rgba(255, 55, 74, .2); background: rgba(35, 6, 14, .45); color: #b79fa5; }
body.ht-admin-legacy .flash { border-color: rgba(255, 55, 74, .34); box-shadow: 0 0 35px rgba(218, 0, 36, .08); }
body.ht-admin-legacy .flashBadge,
body.ht-admin-legacy .salePrice { color: #ff6273; }
body.ht-admin-legacy .announcePreview { border-color: rgba(255, 56, 75, .4); background: linear-gradient(145deg, rgba(105, 5, 23, .38), rgba(14, 4, 8, .9)); }
body.ht-admin-legacy .announcePreview strong { color: #ff6273; }
body.ht-admin-legacy .announcePreview a { background: linear-gradient(120deg, #f22c46, #98071f); color: #fff4f0; }
body.ht-admin-legacy .msg { border: 1px solid rgba(82, 207, 136, .22); background: rgba(9, 46, 27, .36); color: #c7f1d5; }
body.ht-admin-legacy .err { border: 1px solid rgba(255, 70, 87, .38); background: rgba(94, 6, 22, .4); color: #ffdadb; }

/* Stripe return confirmation */
body.ht-checkout-done .card { border-color: rgba(255, 55, 74, .34); background: #110509; box-shadow: 0 34px 100px #000a, 0 0 50px rgba(176, 0, 31, .14); }
body.ht-checkout-done .top { background: radial-gradient(ellipse at 85% 5%, rgba(255, 50, 70, .3), transparent 42%), linear-gradient(135deg, #17050b, #4b0919 60%, #17050b); }
body.ht-checkout-done .eyebrow { color: #ffd9d7; }
body.ht-checkout-done .btn { background: linear-gradient(120deg, #f12c46, #97061e); color: #fff4f0; }
body.ht-checkout-done .btn.alt { background: transparent; border-color: rgba(255, 77, 92, .3); }
body.ht-checkout-done .summary { border-color: rgba(255, 54, 73, .24); background: rgba(60, 5, 17, .23); }
body.ht-checkout-done .footer { border-color: rgba(255, 53, 73, .15); color: #987f86; }

/* Cinematic Halloween opening scene */
body.ht-shop.haunted-gate-open { overflow: hidden; }
body.ht-shop .haunted-gate[hidden] { display: none; }
body.ht-shop .haunted-gate {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: 28px;
  color: #fff0ec;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(116, 4, 23, .25), transparent 44%),
    radial-gradient(ellipse at 13% 86%, rgba(131, 0, 25, .23), transparent 38%),
    linear-gradient(145deg, #080205 4%, #120309 54%, #050204 100%);
  opacity: 1;
  transition: opacity .65s ease, transform .65s ease;
}
body.ht-shop .haunted-gate::before,
body.ht-shop .haunted-gate::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
body.ht-shop .haunted-gate::before {
  opacity: .5;
  background-image:
    radial-gradient(1px 1px at 12% 28%, rgba(255, 181, 179, .72), transparent 2px),
    radial-gradient(1px 1px at 80% 17%, rgba(255, 68, 82, .8), transparent 2px),
    radial-gradient(1px 1px at 73% 72%, rgba(255, 204, 195, .6), transparent 2px),
    radial-gradient(1px 1px at 24% 77%, rgba(255, 70, 82, .75), transparent 2px),
    radial-gradient(ellipse at 50% 100%, rgba(121, 0, 22, .32), transparent 47%);
  background-size: 271px 223px, 337px 290px, 411px 351px, 529px 473px, auto;
  animation: gate-embers 8s ease-in-out infinite alternate;
}
body.ht-shop .haunted-gate::after { background: radial-gradient(ellipse at center, transparent 24%, rgba(0, 0, 0, .68) 100%); }
body.ht-shop .gate-web {
  position: absolute;
  width: min(46vw, 610px);
  top: -4%;
  right: -2%;
  color: rgba(255, 103, 115, .28);
  filter: drop-shadow(0 0 15px rgba(239, 17, 49, .19));
  animation: web-breathe 7s ease-in-out infinite alternate;
}
body.ht-shop .gate-mist {
  position: absolute;
  width: 70vw;
  height: 27vh;
  left: -20vw;
  bottom: 6vh;
  border-radius: 50%;
  background: radial-gradient(ellipse, rgba(123, 7, 28, .18), transparent 68%);
  filter: blur(22px);
  pointer-events: none;
  animation: mist-cross 13s ease-in-out infinite alternate;
}
body.ht-shop .gate-mist-two { left: auto; right: -28vw; bottom: 19vh; opacity: .7; animation-delay: -5s; }
body.ht-shop .haunted-gate-card {
  position: relative;
  z-index: 2;
  width: min(760px, 100%);
  padding: clamp(34px, 6vw, 68px) clamp(24px, 7vw, 74px) clamp(30px, 5vw, 54px);
  border: 1px solid rgba(255, 80, 96, .32);
  background: linear-gradient(145deg, rgba(29, 5, 12, .86), rgba(8, 2, 5, .84) 72%);
  box-shadow: 0 42px 150px rgba(0, 0, 0, .75), 0 0 84px rgba(178, 0, 32, .14), inset 0 1px rgba(255, 255, 255, .075);
  text-align: center;
  backdrop-filter: blur(8px);
  animation: gate-arrive .95s cubic-bezier(.18,.8,.2,1) both;
}
body.ht-shop .haunted-gate-card::before,
body.ht-shop .haunted-gate-card::after { content: ""; position: absolute; width: 32px; height: 32px; border-color: rgba(255, 95, 108, .65); border-style: solid; pointer-events: none; }
body.ht-shop .haunted-gate-card::before { top: 12px; left: 12px; border-width: 1px 0 0 1px; }
body.ht-shop .haunted-gate-card::after { bottom: 12px; right: 12px; border-width: 0 1px 1px 0; }
body.ht-shop .gate-seal {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: 0 auto 22px;
  border: 1px solid rgba(255, 76, 94, .43);
  border-radius: 50%;
  color: #ff5367;
  font: 26px/1 Georgia, serif;
  box-shadow: 0 0 28px rgba(226, 0, 37, .18), inset 0 0 18px rgba(255, 35, 57, .1);
  animation: seal-pulse 3.8s ease-in-out infinite;
}
body.ht-shop .gate-kicker { display: flex; align-items: center; justify-content: center; gap: 10px; color: #ff7b87; font-size: 9px; font-weight: 900; letter-spacing: .27em; }
body.ht-shop .gate-kicker > span { width: 6px; height: 6px; border-radius: 50%; background: #ff314b; box-shadow: 0 0 14px #ff233e; animation: signal-blink 1.7s steps(2, end) infinite; }
body.ht-shop .haunted-gate h2 { margin: 19px 0 15px; color: #fff2ed; font: 700 clamp(42px, 8vw, 82px)/.91 Georgia, "Times New Roman", serif; letter-spacing: -.065em; text-shadow: 0 5px 42px rgba(203, 0, 37, .2); }
body.ht-shop .haunted-gate h2 span { display: block; margin-top: 8px; color: #f3344d; text-shadow: 0 0 36px rgba(236, 15, 49, .24); }
body.ht-shop .gate-story { max-width: 545px; margin: 0 auto; color: #c9b1b5; font: 15px/1.85 Georgia, "Times New Roman", serif; }
body.ht-shop .gate-rule { display: flex; align-items: center; gap: 12px; width: min(390px, 100%); margin: 27px auto 25px; color: #a78088; font-size: 8px; font-weight: 900; letter-spacing: .19em; }
body.ht-shop .gate-rule i { height: 1px; flex: 1; background: linear-gradient(90deg, transparent, rgba(255, 68, 87, .47)); }
body.ht-shop .gate-rule i:last-child { transform: rotate(180deg); }
body.ht-shop .gate-actions { display: grid; justify-items: center; gap: 12px; }
body.ht-shop .gate-enter {
  min-width: min(320px, 100%);
  min-height: 56px;
  padding: 0 23px;
  border: 1px solid rgba(255, 150, 157, .38);
  background: linear-gradient(115deg, #f32a45, #a30722 76%, #690614);
  color: #fff7f3;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .18em;
  box-shadow: 0 12px 38px rgba(178, 0, 31, .32), inset 0 1px rgba(255, 255, 255, .26);
  cursor: pointer;
  animation: enter-glow 3.2s ease-in-out infinite;
}
body.ht-shop .gate-enter b { margin-left: 14px; font-size: 16px; }
body.ht-shop .gate-enter:hover { transform: translateY(-2px); filter: brightness(1.14); box-shadow: 0 17px 45px rgba(231, 0, 39, .42); }
body.ht-shop .gate-footnote { margin-top: 17px; color: #806b71; font-size: 9px; letter-spacing: .08em; }
body.ht-shop .gate-coordinates { position: absolute; z-index: 2; bottom: 22px; left: 27px; color: rgba(210, 166, 170, .44); font: 8px/1.8 monospace; letter-spacing: .16em; }
body.ht-shop .gate-coordinates span { display: block; color: rgba(255, 78, 93, .54); }
body.ht-shop .haunted-gate.is-leaving { opacity: 0; transform: scale(1.035); pointer-events: none; }
body.ht-shop .haunted-gate.is-leaving .haunted-gate-card { transform: translateY(-9px); }
body.ht-shop .haunted-hero { min-height: 450px; align-items: center; padding-top: 73px; padding-bottom: 64px; }
body.ht-shop .haunted-copy { max-width: 630px; }
body.ht-shop .haunted-copy .eyebrow { display: flex; align-items: center; gap: 9px; color: #ff6879; }
body.ht-shop .haunted-live-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #f32640; box-shadow: 0 0 13px #f32640; animation: signal-blink 1.6s steps(2, end) infinite; }
body.ht-shop .haunted-copy h1 { max-width: 710px; font: 700 clamp(58px, 8.8vw, 116px)/.82 Georgia, "Times New Roman", serif; letter-spacing: -.075em; }
body.ht-shop .haunted-copy h1 span { display: block; margin-top: .12em; background: linear-gradient(95deg, #fff0eb 0%, #ff7c83 44%, #e80e34 76%, #740417 100%); }
body.ht-shop .haunted-prose { max-width: 550px; margin: 0 0 9px; color: #d1b8bc; font: 15px/1.8 Georgia, "Times New Roman", serif; }
body.ht-shop .haunted-subline { color: #ff6b7b; font-size: 9px; font-weight: 900; letter-spacing: .19em; text-transform: uppercase; }
body.ht-shop .haunted-cta { display: inline-flex; align-items: center; gap: 17px; margin-top: 17px; padding: 13px 17px; border: 1px solid rgba(255, 73, 90, .45); background: linear-gradient(120deg, rgba(119, 5, 26, .48), rgba(30, 4, 10, .7)); color: #fff0ec; font-size: 9px; font-weight: 950; letter-spacing: .16em; box-shadow: 0 9px 26px rgba(156, 0, 28, .14); }
body.ht-shop .haunted-cta span { color: #ff576a; font-size: 18px; }
body.ht-shop .haunted-cta:hover { transform: translateY(-2px); border-color: #ff5065; background: rgba(124, 5, 27, .6); box-shadow: 0 13px 33px rgba(204, 0, 34, .2); }
body.ht-shop .haunted-web { position: absolute; z-index: 0; width: min(34vw, 380px); right: 0; top: -22px; color: rgba(255, 73, 90, .28); opacity: .76; filter: drop-shadow(0 0 14px rgba(230, 0, 34, .15)); pointer-events: none; animation: web-breathe 8s ease-in-out infinite alternate; }
body.ht-shop .haunted-spider { position: absolute; z-index: 2; top: 2px; right: clamp(25px, 8vw, 115px); width: 55px; color: #f34a5d; transform-origin: 50% 0; animation: spider-sway 5.4s ease-in-out infinite; filter: drop-shadow(0 0 10px rgba(255, 39, 61, .48)); }
body.ht-shop .haunted-spider svg { display: block; width: 100%; overflow: visible; }
body.ht-shop .haunted-spider .spider-thread { stroke: rgba(255, 116, 127, .58); stroke-width: 1; }
body.ht-shop .spider-eye { fill: #ff1c39; filter: drop-shadow(0 0 5px #ff1c39); }
@keyframes gate-arrive { from { opacity: 0; transform: translateY(18px) scale(.98); filter: blur(5px); } to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); } }
@keyframes gate-embers { from { opacity: .28; transform: translateY(0); } to { opacity: .62; transform: translateY(-10px); } }
@keyframes web-breathe { from { opacity: .46; } to { opacity: .88; } }
@keyframes mist-cross { from { transform: translateX(-4vw) scale(1); } to { transform: translateX(18vw) scale(1.18); } }
@keyframes seal-pulse { 0%,100% { box-shadow: 0 0 20px rgba(226, 0, 37, .13), inset 0 0 18px rgba(255, 35, 57, .08); } 50% { box-shadow: 0 0 36px rgba(255, 0, 41, .34), inset 0 0 22px rgba(255, 35, 57, .17); } }
@keyframes signal-blink { 50% { opacity: .32; } }
@keyframes enter-glow { 0%,100% { box-shadow: 0 12px 32px rgba(178, 0, 31, .26), inset 0 1px rgba(255, 255, 255, .22); } 50% { box-shadow: 0 12px 44px rgba(228, 0, 39, .48), inset 0 1px rgba(255, 255, 255, .3); } }
@keyframes spider-sway { 0%,100% { transform: rotate(-4deg); } 50% { transform: rotate(5deg); } }

@media (max-width: 700px) {
  body.ht-shop .hero::after { right: -22px; top: 1%; font-size: 190px; opacity: .7; }
  body.ht-shop .haunted-hero { min-height: 0; padding-top: 56px; }
  body.ht-shop .haunted-copy h1 { font-size: clamp(54px, 16vw, 82px); }
  body.ht-shop .haunted-prose { font-size: 14px; }
  body.ht-shop .haunted-web { width: 230px; right: -30px; top: -7px; opacity: .56; }
  body.ht-shop .haunted-spider { right: 35px; width: 43px; }
  body.ht-shop .haunted-gate { padding: 14px; }
  body.ht-shop .haunted-gate-card { padding: 37px 20px 31px; }
  body.ht-shop .gate-web { width: 78vw; top: -2%; right: -15%; }
  body.ht-shop .gate-story { font-size: 13px; line-height: 1.72; }
  body.ht-shop .gate-coordinates { bottom: 8px; left: 13px; font-size: 6px; }
  body.ht-shop .gate-enter { min-height: 52px; }
  body.ht-account .hero::after { right: -7px; top: 7%; font-size: 145px; }
  body.ht-my-tickets .event { padding: 15px; }
  body.ht-e-ticket { padding-inline: 10px; }
  body.ht-e-ticket .ticket { padding: 22px 18px; }
  body.ht-e-ticket .ticket::before { right: 9px; top: 8px; font-size: 122px; }
}

@media (prefers-reduced-motion: reduce) {
  body.ht::before { animation: none; }
  body.ht *, body.ht *::before, body.ht *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* After Dark: layered 3D haunted scene and live depth */
body.ht-shop .hero::after { content: none; }
body.ht-shop .haunted-hero {
  position: relative; overflow: hidden; isolation: isolate; perspective: 1500px; transform-style: preserve-3d;
  background: radial-gradient(ellipse at 76% 43%, rgba(128, 0, 27, .25), transparent 43%);
}
body.ht-shop .haunted-world {
  position: absolute; z-index: 0; inset: -14px 0 -3px 30%; overflow: hidden; pointer-events: none;
  transform: perspective(1300px) rotateX(var(--world-pitch, 0deg)) rotateY(var(--world-turn, 0deg)) translate3d(var(--world-shift-x, 0px), var(--world-shift-y, 0px), 0);
  transform-style: preserve-3d; transition: transform .65s cubic-bezier(.2,.7,.2,1);
}
body.ht-shop .haunted-world::before { content: ""; position: absolute; inset: 4% 0 0; background: radial-gradient(ellipse at 61% 36%, rgba(188, 6, 39, .28), transparent 35%), linear-gradient(180deg, transparent 44%, rgba(7, 1, 4, .24) 72%, rgba(7, 1, 4, .08) 88%, transparent 100%); }
body.ht-shop .world-moon {
  position: absolute; z-index: 0; top: 8%; right: 17%; width: clamp(96px, 13vw, 188px); aspect-ratio: 1;
  border: 1px solid rgba(255, 166, 168, .25); border-radius: 50%;
  background: radial-gradient(circle at 38% 35%, #ffd6cc 0 2%, #ee6a75 11%, #a41b33 46%, rgba(95, 7, 22, .5) 71%, transparent 72%);
  box-shadow: 0 0 26px rgba(255, 59, 78, .4), 0 0 100px rgba(183, 0, 35, .38), inset -18px -12px 30px rgba(15, 1, 5, .72);
  animation: moon-haunt 9s ease-in-out infinite alternate; transform: translateZ(-55px);
}
body.ht-shop .world-moon::before, body.ht-shop .world-moon::after, body.ht-shop .world-moon span { content: ""; position: absolute; border: 1px solid rgba(47, 0, 10, .18); border-radius: 50%; background: rgba(59, 2, 13, .16); }
body.ht-shop .world-moon::before { width: 19%; aspect-ratio: 1; top: 25%; left: 22%; }
body.ht-shop .world-moon::after { width: 11%; aspect-ratio: 1; top: 61%; left: 59%; }
body.ht-shop .world-moon span { width: 8%; aspect-ratio: 1; top: 41%; left: 71%; }
body.ht-shop .world-manor { position: absolute; z-index: 1; inset: 7% -3% 0 0; width: 104%; height: 96%; overflow: visible; filter: drop-shadow(0 17px 38px rgba(0,0,0,.82)); transform: translateZ(24px); }
body.ht-shop .manor-shadow { fill: rgba(0,0,0,.68); }
body.ht-shop .manor-main { fill: url(#manorGlass); stroke: rgba(255,55,75,.36); stroke-width: 2; }
body.ht-shop .manor-roof, body.ht-shop .manor-spire { fill: none; stroke: #4c0a18; stroke-width: 8; stroke-linejoin: bevel; }
body.ht-shop .manor-spire { stroke: #801329; stroke-width: 3; }
body.ht-shop .manor-windows path { fill: url(#windowFire); stroke: rgba(255,75,89,.62); stroke-width: 1.3; animation: windows-flicker 4.7s steps(1,end) infinite; }
body.ht-shop .manor-windows path:nth-child(2n) { animation-delay: -2.3s; }
body.ht-shop .manor-windows path:nth-child(3n) { animation-delay: -1.1s; }
body.ht-shop .manor-door { fill: #090205; stroke: rgba(164,21,45,.54); stroke-width: 2; }
body.ht-shop .manor-ground { fill: #080205; }
body.ht-shop .world-bat { position: absolute; z-index: 3; width: clamp(42px,5vw,76px); fill: #070104; filter: drop-shadow(0 0 10px rgba(233,23,55,.72)); transform: translateZ(75px); }
body.ht-shop .world-bat-one { top: 27%; left: 16%; animation: bat-cross 13s ease-in-out infinite; }
body.ht-shop .world-bat-two { top: 43%; left: 57%; width: clamp(26px,3vw,45px); opacity: .76; animation: bat-cross-two 17s ease-in-out -6s infinite; }
body.ht-shop .world-fog { position: absolute; z-index: 4; left: -15%; width: 130%; height: 28%; border-radius: 50%; filter: blur(27px); background: radial-gradient(ellipse, rgba(104,7,28,.33), rgba(38,2,12,.15) 43%, transparent 72%); }
body.ht-shop .world-fog-back { bottom: 13%; opacity: .57; animation: fog-roll 18s ease-in-out infinite alternate; }
body.ht-shop .world-fog-front { bottom: -4%; height: 26%; opacity: .75; filter: blur(37px); animation: fog-roll 24s ease-in-out -8s infinite alternate-reverse; }
body.ht-shop .world-embers { position: absolute; z-index: 5; inset: 30% 0 3%; transform: translateZ(60px); }
body.ht-shop .world-embers i { position: absolute; bottom: -5%; left: 21%; width: 3px; height: 3px; border-radius: 50%; background: #ff5364; box-shadow: 0 0 12px 3px rgba(255,42,65,.66); animation: ember-rise 8s linear infinite; }
body.ht-shop .world-embers i:nth-child(2) { left: 42%; animation-delay: -4s; animation-duration: 11s; }
body.ht-shop .world-embers i:nth-child(3) { left: 68%; animation-delay: -1.3s; animation-duration: 9s; }
body.ht-shop .world-embers i:nth-child(4) { left: 81%; animation-delay: -6s; animation-duration: 12s; }
body.ht-shop .world-embers i:nth-child(5) { left: 56%; animation-delay: -7.5s; animation-duration: 10s; }
body.ht-shop .world-embers i:nth-child(6) { left: 31%; animation-delay: -2.2s; animation-duration: 13s; }
body.ht-shop .haunted-copy, body.ht-shop .haunted-hero > .eventbox { position: relative; z-index: 6; }
body.ht-shop .haunted-copy { max-width: 590px; }
body.ht-shop .haunted-copy h1 { max-width: 600px; font-size: clamp(48px,6.6vw,92px); line-height: .9; letter-spacing: -.055em; }
body.ht-shop .haunted-copy h1 span {
  display: inline-block; margin-top: .06em; background: linear-gradient(95deg,#fff3ed 0%,#ff9ca0 34%,#f42c4d 69%,#a20824 100%);
  background-clip: text; -webkit-background-clip: text; color: transparent; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 8px 25px rgba(209,0,34,.3));
}
body.ht-shop .haunted-web { z-index: 2; opacity: .68; }
body.ht-shop .haunted-spider { z-index: 4; }
body.ht-shop .eventbox, body.ht-shop .ticket, body.ht-shop .order, body.ht-account .panel, body.ht-my-tickets .event,
body.ht-my-tickets .ticket-card, body.ht-admin-events .panel, body.ht-admin-legacy .panel, body.ht-auth .card, body.ht-admin-login .box {
  transform-style: preserve-3d; transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
body.ht-shop .eventbox, body.ht-shop .ticket, body.ht-shop .order, body.ht-account .panel, body.ht-my-tickets .event,
body.ht-my-tickets .ticket-card, body.ht-admin-events .panel, body.ht-admin-legacy .panel, body.ht-auth .card, body.ht-admin-login .box {
  transform: perspective(1000px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg));
}
body.ht-shop .ticket:hover, body.ht-shop .ticket.selected { transform: perspective(1000px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg)) translateY(-4px) translateZ(8px); }
body.ht-shop .eventbox:hover, body.ht-shop .order:hover, body.ht-account .panel:hover, body.ht-my-tickets .event:hover, body.ht-my-tickets .ticket-card:hover,
body.ht-admin-events .panel:hover, body.ht-admin-legacy .panel:hover, body.ht-auth .card:hover, body.ht-admin-login .box:hover {
  transform: perspective(1000px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg)) translateY(-3px);
}
@keyframes moon-haunt { from { transform: translate3d(0,0,-55px) scale(.98); filter: brightness(.88); } to { transform: translate3d(0,-8px,-55px) scale(1.035); filter: brightness(1.12); } }
@keyframes windows-flicker { 0%,18%,22%,50%,58%,100% { opacity: .82; } 20%,53% { opacity: .22; } 55% { opacity: 1; } }
@keyframes bat-cross { 0%,100% { transform: translate3d(-8px,0,75px) rotate(-4deg) scale(.94); } 50% { transform: translate3d(65px,-38px,75px) rotate(6deg) scale(1.05); } }
@keyframes bat-cross-two { 0%,100% { transform: translate3d(8px,0,45px) rotate(7deg); } 50% { transform: translate3d(-58px,-28px,45px) rotate(-8deg); } }
@keyframes fog-roll { from { transform: translateX(-7%) scaleY(.88); } to { transform: translateX(8%) scaleY(1.12); } }
@keyframes ember-rise { 0% { opacity: 0; transform: translate3d(0,0,0) scale(.5); } 12% { opacity: .9; } 82% { opacity: .65; } 100% { opacity: 0; transform: translate3d(32px,-390px,0) scale(1.25); } }
@media (max-width:700px) {
  body.ht-shop .haunted-world { inset: 0 -12% -2px 14%; opacity: .69; }
  body.ht-shop .haunted-copy { max-width: min(100%,540px); }
  body.ht-shop .haunted-copy h1 { font-size: clamp(47px,13vw,68px); }
  body.ht-shop .haunted-hero > .eventbox { margin-top: 22px; }
  body.ht-shop .world-moon { top: 10%; right: 13%; width: 104px; }
  body.ht-shop .haunted-spider { right: 26px; }
}
@media (prefers-reduced-motion:reduce) {
  body.ht-shop .haunted-world, body.ht-shop .world-moon, body.ht-shop .world-bat, body.ht-shop .world-fog,
  body.ht-shop .world-embers i, body.ht-shop .manor-windows path { animation: none !important; transition: none !important; }
}

/* Mobile/tablet: keep the haunted house in its own hero scene above the copy. */
@media (max-width:900px) {
  body.ht-shop .haunted-hero {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 0;
    min-height: 0;
    padding-top: 22px;
    padding-bottom: 38px;
  }
  body.ht-shop .haunted-world {
    inset: 0 0 auto;
    width: 100%;
    height: clamp(240px, 36vw, 290px);
    opacity: .96;
  }
  body.ht-shop .world-manor { inset: 4% 0 0; width: 100%; height: 96%; object-fit: contain; }
  body.ht-shop .world-moon { top: 6%; right: 18%; width: clamp(88px, 15vw, 122px); }
  body.ht-shop .haunted-copy {
    grid-row: 1;
    margin-top: clamp(218px, 33vw, 260px);
    max-width: min(100%, 590px);
  }
  body.ht-shop .haunted-hero > .eventbox { grid-row: 2; margin-top: 22px; }
  body.ht-shop .haunted-web { width: 210px; right: -13px; top: 0; opacity: .54; }
  body.ht-shop .haunted-spider { right: 34px; width: 42px; }
}
@media (max-width:520px) {
  body.ht-shop .haunted-world { height: 252px; }
  body.ht-shop .haunted-world { -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 68%, transparent 100%); mask-image: linear-gradient(to bottom, #000 0%, #000 68%, transparent 100%); }
  body.ht-shop .haunted-copy { margin-top: 228px; }
  body.ht-shop .world-manor { inset: 7% -6% 0; width: 112%; height: 93%; }
  body.ht-shop .world-moon { top: 7%; right: 16%; width: 88px; }
  body.ht-shop .haunted-hero > .eventbox { margin-top: 18px; padding: 20px; }
}

/* Neon 3D brand mark and bats that cross the full viewport. */
body.ht-shop .logo { display: inline-flex; align-items: center; gap: 9px; line-height: .95; }
body.ht-shop .logo-type { display: block; }
body.ht-shop .astral-skull { display: block; flex: 0 0 38px; width: 38px; height: 38px; overflow: visible; transform: perspective(280px) rotateY(-10deg) rotateX(5deg); filter: drop-shadow(0 0 5px rgba(235,255,0,.8)) drop-shadow(0 0 16px rgba(181,255,0,.5)); animation: skull-phosphor 3.5s ease-in-out infinite; }
body.ht-shop .skull-shadow { fill: #243700; opacity: .92; transform: translate(2px,3px); }
body.ht-shop .skull-shell, body.ht-shop .skull-jaw { fill: url(#skullMetal); stroke: #edff52; stroke-width: 1.15; stroke-linejoin: round; }
body.ht-shop .skull-gloss { fill: url(#skullLight); pointer-events: none; }
body.ht-shop .skull-eye, body.ht-shop .skull-nose { fill: #172000; stroke: #8cac00; stroke-width: .8; stroke-linejoin: round; }
body.ht-shop .skull-jaw { stroke-width: .9; }
body.ht-shop .skull-teeth { fill: none; stroke: #4b6100; stroke-width: 1.4; }
body.ht-shop .skull-glint { fill: none; stroke: #fffec1; stroke-width: 1.4; stroke-linecap: round; opacity: .88; }
body.ht-shop .logo:hover .astral-skull { transform: perspective(280px) rotateY(12deg) rotateX(-5deg) translateY(-2px); }
body.ht-shop .bat-flight { position: fixed; z-index: 12; inset: 0; overflow: hidden; pointer-events: none; contain: layout paint style; }
body.ht-shop .bat-runner { position: absolute; top: 0; left: 0; width: clamp(25px,3.1vw,52px); height: auto; overflow: visible; fill: #090206; stroke: rgba(255,47,68,.76); stroke-width: .7; stroke-linejoin: round; opacity: .86; filter: drop-shadow(0 0 5px rgba(255,30,57,.88)) drop-shadow(0 0 12px rgba(177,0,31,.64)); }
body.ht-shop .bat-runner circle { fill: #edff00; stroke: #edff00; filter: drop-shadow(0 0 4px #edff00); }
body.ht-shop .bat-one { animation: bat-flight-one 22s linear -5s infinite; }
body.ht-shop .bat-two { width: clamp(20px,2.5vw,42px); opacity: .72; animation: bat-flight-two 29s linear -17s infinite; }
body.ht-shop .bat-three { width: clamp(30px,3.8vw,62px); animation: bat-flight-three 26s linear -12s infinite; }
body.ht-shop .bat-four { width: clamp(20px,2.6vw,44px); opacity: .7; animation: bat-flight-four 31s linear -23s infinite; }
body.ht-shop .bat-five { width: clamp(24px,2.8vw,48px); opacity: .82; animation: bat-flight-five 24s linear -8s infinite; }
@keyframes skull-phosphor { 0%,100% { filter: drop-shadow(0 0 5px rgba(235,255,0,.7)) drop-shadow(0 0 13px rgba(181,255,0,.36)); } 50% { filter: drop-shadow(0 0 8px rgba(255,255,65,1)) drop-shadow(0 0 22px rgba(181,255,0,.75)); } }
@keyframes bat-flight-one { 0% { transform: translate3d(-13vw,10vh,0) rotate(-8deg) scale(.78); } 26% { transform: translate3d(24vw,26vh,0) rotate(3deg) scale(.98); } 62% { transform: translate3d(67vw,11vh,0) rotate(-5deg) scale(.74); } 100% { transform: translate3d(116vw,37vh,0) rotate(8deg) scale(1.04); } }
@keyframes bat-flight-two { 0% { transform: translate3d(115vw,60vh,0) scaleX(-1) rotate(5deg) scale(.8); } 34% { transform: translate3d(73vw,48vh,0) scaleX(-1) rotate(-4deg) scale(1); } 70% { transform: translate3d(28vw,68vh,0) scaleX(-1) rotate(6deg) scale(.82); } 100% { transform: translate3d(-14vw,48vh,0) scaleX(-1) rotate(-7deg) scale(1.08); } }
@keyframes bat-flight-three { 0% { transform: translate3d(-14vw,83vh,0) rotate(8deg) scale(.9); } 30% { transform: translate3d(31vw,63vh,0) rotate(-4deg) scale(1.06); } 68% { transform: translate3d(72vw,82vh,0) rotate(6deg) scale(.78); } 100% { transform: translate3d(115vw,55vh,0) rotate(-8deg) scale(1); } }
@keyframes bat-flight-four { 0% { transform: translate3d(114vw,20vh,0) scaleX(-1) rotate(-5deg) scale(.72); } 36% { transform: translate3d(74vw,34vh,0) scaleX(-1) rotate(7deg) scale(1.12); } 72% { transform: translate3d(32vw,17vh,0) scaleX(-1) rotate(-6deg) scale(.86); } 100% { transform: translate3d(-15vw,29vh,0) scaleX(-1) rotate(8deg) scale(1); } }
@keyframes bat-flight-five { 0% { transform: translate3d(-13vw,44vh,0) rotate(-4deg) scale(.72); } 32% { transform: translate3d(29vw,54vh,0) rotate(6deg) scale(1.06); } 69% { transform: translate3d(75vw,39vh,0) rotate(-7deg) scale(.8); } 100% { transform: translate3d(116vw,66vh,0) rotate(4deg) scale(1.1); } }
@media (max-width:520px) {
  body.ht-shop .logo { gap: 6px; font-size: clamp(23px,5.9vw,28px); }
  body.ht-shop .astral-skull { flex-basis: 34px; width: 34px; height: 34px; }
  body.ht-shop .bat-runner { width: 32px; }
  body.ht-shop .bat-two, body.ht-shop .bat-four { width: 25px; }
}
@media (prefers-reduced-motion:reduce) { body.ht-shop .bat-runner { display: none; } }
