:root {
  --primary: #8f2eff;
  --primary-bright: #d665ff;
  --accent: #ffd85e;
  --ink: #fff;
  --muted: #d7c8e8;
  --deep: #12001f;
  --gold-light: #fff2a3;
  --gold: #f7c846;
  --gold-mid: #d78612;
  --gold-deep: #6d2700;
  --machine-size: min(64svh, 44vw, 610px);
}

* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; }
html { overflow: hidden; background: var(--deep); }
body {
  min-height: 100svh;
  overflow: hidden;
  color: var(--ink);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background:
    radial-gradient(ellipse at 50% 6%, rgba(196, 72, 255, .52), transparent 31%),
    radial-gradient(ellipse at 50% 55%, rgba(119, 27, 185, .42), transparent 48%),
    linear-gradient(180deg, #240039 0%, #4a0870 54%, #1a002d 100%);
}
button, input, textarea { font: inherit; }
button { cursor: pointer; }
button:focus-visible, input:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(255, 225, 123, .48);
  outline-offset: 3px;
}
.is-hidden { display: none !important; }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Background */
.scene { position: fixed; inset: 0; overflow: hidden; pointer-events: none; }
.scene::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at center, transparent 0 34%, rgba(4, 0, 15, .30) 86%),
    linear-gradient(180deg, rgba(255,255,255,.035), transparent 28%);
}
.neon-horizon {
  position: absolute;
  left: 50%;
  width: min(130vw, 1960px);
  height: 42%;
  border-radius: 50%;
  transform: translateX(-50%);
  border-bottom: clamp(5px, .55vw, 10px) solid rgba(243, 95, 255, .86);
  box-shadow:
    0 9px 13px rgba(244, 95, 255, .74),
    0 20px 42px rgba(135, 43, 255, .56),
    inset 0 -9px 23px rgba(255,255,255,.12);
}
.neon-horizon-one { top: -2%; }
.neon-horizon-two { top: 4%; width: min(116vw, 1740px); opacity: .28; }
.star-field {
  position: absolute;
  inset: 0;
  opacity: .24;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.95) 0 1px, transparent 1.6px),
    radial-gradient(circle, rgba(255,224,127,.86) 0 1px, transparent 1.7px),
    radial-gradient(circle, rgba(230,170,255,.84) 0 1px, transparent 1.6px);
  background-size: 51px 51px, 73px 73px, 97px 97px;
  background-position: 0 0, 21px 29px, 37px 14px;
  mask-image: linear-gradient(to bottom, #000 0 68%, transparent 96%);
}
.floor-grid {
  position: absolute;
  left: -12%; right: -12%; bottom: -25%; height: 53%;
  transform: perspective(620px) rotateX(65deg);
  transform-origin: center bottom;
  background-image:
    linear-gradient(rgba(205, 101, 255, .19) 1px, transparent 1px),
    linear-gradient(90deg, rgba(205, 101, 255, .19) 1px, transparent 1px);
  background-size: 70px 45px;
  opacity: .42;
  mask-image: linear-gradient(to top, #000 13%, transparent 88%);
}
.scene-glow { position: absolute; border-radius: 50%; filter: blur(105px); }
.scene-glow-left { width: 430px; height: 430px; left: -210px; top: 29%; background: rgba(124, 31, 255, .34); }
.scene-glow-right { width: 390px; height: 390px; right: -190px; bottom: 5%; background: rgba(242, 43, 255, .24); }

/* One centered machine */
.page-shell {
  position: relative;
  z-index: 2;
  width: 100vw;
  height: 100svh;
  padding: clamp(7px, 1vh, 11px) 12px;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.lottery-console {
  width: min(100%, 760px);
  max-height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(5px, .72vh, 8px);
}

/* Title sign */
.marquee-header {
  width: min(calc(var(--machine-size) * 1.16), 94vw);
  height: clamp(96px, 12.5svh, 118px);
  min-height: 96px;
  position: relative;
  display: grid;
  place-items: center;
  filter: drop-shadow(0 15px 18px rgba(0,0,0,.5));
  z-index: 10;
}
.marquee-wings {
  position: absolute;
  left: 50%;
  top: 31%;
  width: 112%;
  height: 55%;
  transform: translateX(-50%);
  clip-path: polygon(0 50%, 9% 10%, 18% 18%, 25% 0, 31% 19%, 69% 19%, 75% 0, 82% 18%, 91% 10%, 100% 50%, 91% 90%, 82% 82%, 75% 100%, 69% 81%, 31% 81%, 25% 100%, 18% 82%, 9% 90%);
  background: linear-gradient(180deg, #fff3a0 0%, #e5a72f 42%, #783209 100%);
  box-shadow: 0 0 16px rgba(255, 204, 64, .56);
}
.marquee-wings::after {
  content: "";
  position: absolute;
  inset: 6px 10px;
  clip-path: inherit;
  background:
    linear-gradient(180deg, rgba(255,255,255,.25), transparent 23%),
    linear-gradient(180deg, #8d27df 0%, #4a0778 56%, #210037 100%);
}
.marquee-sign {
  position: relative;
  z-index: 2;
  width: 90%;
  height: 72%;
  min-height: 68px;
  padding: 7px;
  clip-path: polygon(8% 0, 92% 0, 100% 50%, 92% 100%, 8% 100%, 0 50%);
  background: linear-gradient(135deg, #743007, #fff0a0 26%, #d98e18 53%, #fff2a8 74%, #642706);
  box-shadow:
    0 0 20px rgba(255, 196, 49, .60),
    0 8px 16px rgba(0,0,0,.44);
}
.marquee-inner {
  width: 100%; height: 100%;
  display: grid;
  place-items: center;
  padding: 5px 54px;
  clip-path: inherit;
  border: 2px solid rgba(255, 238, 155, .78);
  background:
    linear-gradient(180deg, rgba(255,255,255,.34), transparent 22%),
    radial-gradient(ellipse at 50% 10%, rgba(233, 111, 255, .75), transparent 52%),
    linear-gradient(180deg, #8c25dd 0%, #50077f 56%, #210037 100%);
}
.marquee-sign h1 {
  margin: 0;
  color: #fffbdc;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(36px, 4.2vw, 61px);
  font-weight: 900;
  font-style: italic;
  letter-spacing: .015em;
  line-height: .92;
  white-space: nowrap;
  -webkit-text-stroke: 1.6px #6c1f00;
  text-shadow:
    0 2px 0 #f7c34a,
    0 5px 0 #7d2900,
    0 8px 13px rgba(0,0,0,.55),
    0 0 16px rgba(255, 239, 143, .62);
}
.campaign-logo { max-width: 72%; max-height: 80%; object-fit: contain; }
.marquee-crown {
  position: absolute;
  z-index: 4;
  top: -2px;
  left: 50%;
  width: 164px;
  height: 51px;
  transform: translateX(-50%);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 4px;
}
.marquee-crown i, .marquee-crown b, .marquee-crown span {
  display: block;
  background: linear-gradient(90deg, #8c3c05, #ffe67c 38%, #fff8c3 50%, #d88e18 70%, #652504);
  border: 1px solid #ffe47d;
  box-shadow: 0 0 10px rgba(255, 205, 67, .48);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
}
.marquee-crown i { width: 31px; height: 30px; transform: rotate(-12deg); }
.marquee-crown i:last-child { transform: rotate(12deg); }
.marquee-crown b { width: 37px; height: 39px; transform: rotate(-5deg); }
.marquee-crown b:nth-of-type(2) { transform: rotate(5deg); }
.marquee-crown span { width: 40px; height: 50px; clip-path: polygon(32% 0, 68% 0, 100% 100%, 0 100%); }
.marquee-tail {
  position: absolute;
  z-index: 3;
  bottom: 1px;
  width: 45px;
  height: 43px;
  background: linear-gradient(135deg, #ffe57d 0 18%, #7d2ab7 19% 78%, #3d075d 79%);
  clip-path: polygon(0 0, 100% 42%, 74% 100%, 42% 63%, 18% 82%);
  filter: drop-shadow(0 0 7px rgba(255,211,84,.36));
}
.marquee-tail-left { left: 20%; transform: rotate(13deg); }
.marquee-tail-right { right: 20%; transform: scaleX(-1) rotate(13deg); }

/* Input: no helper copy above or below */
.ticket-console {
  width: min(calc(var(--machine-size) * 1.02), 91vw);
  height: 54px;
  flex: 0 0 54px;
  padding: 6px;
  position: relative;
  z-index: 9;
  border-radius: 18px;
  border: 1px solid rgba(251, 226, 146, .42);
  background:
    linear-gradient(180deg, rgba(255,255,255,.09), transparent 28%),
    linear-gradient(135deg, rgba(83, 15, 136, .97), rgba(18, 0, 43, .99));
  box-shadow:
    0 8px 20px rgba(0,0,0,.36),
    0 0 0 3px rgba(114, 32, 184, .31),
    inset 0 0 22px rgba(179, 75, 255, .12);
}
.ticket-console::before {
  content: "";
  position: absolute;
  inset: 3px;
  border: 1px solid rgba(211, 157, 255, .17);
  border-radius: 14px;
  pointer-events: none;
}
.ticket-controls {
  position: relative;
  z-index: 1;
  width: 100%; height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}
.ticket-input-wrap { min-width: 0; position: relative; }
.ticket-icon {
  position: absolute;
  left: 14px; top: 50%;
  transform: translateY(-50%);
  color: #f0c8ff;
  text-shadow: 0 0 10px rgba(226, 112, 255, .65);
  pointer-events: none;
}
.ticket-input-wrap input {
  width: 100%; height: 100%;
  min-width: 0;
  padding: 0 16px 0 40px;
  border: 1px solid rgba(230, 190, 255, .50);
  border-radius: 12px;
  color: #fff;
  font-size: clamp(11px, 1.05vw, 14px);
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  outline: none;
  background: linear-gradient(180deg, rgba(17,1,37,.95), rgba(6,0,19,.98));
  box-shadow: inset 0 0 17px rgba(130, 49, 218, .20), 0 0 0 1px rgba(0,0,0,.28);
}
.ticket-input-wrap input::placeholder { color: #8e7a9f; }
.ticket-input-wrap input:focus {
  border-color: #ffe47e;
  box-shadow: 0 0 0 3px rgba(255,205,61,.14), inset 0 0 19px rgba(139,50,227,.24);
}
.verify-button, .claim-button {
  min-width: 145px;
  height: 100%;
  padding: 0 21px;
  border: 1px solid rgba(255, 248, 196, .88);
  border-radius: 12px;
  color: #321400;
  font-size: clamp(10px, 1vw, 13px);
  font-weight: 1000;
  letter-spacing: .035em;
  white-space: nowrap;
  background:
    linear-gradient(180deg, rgba(255,255,255,.55), transparent 29%),
    linear-gradient(180deg, #fff176 0%, #ffc82f 56%, #e18a08 100%);
  box-shadow:
    inset 0 -4px 8px rgba(177,78,0,.28),
    0 5px 12px rgba(0,0,0,.34),
    0 0 16px rgba(255,191,28,.34);
  transition: transform .16s ease, filter .16s ease, box-shadow .16s ease;
}
.verify-button:hover, .claim-button:hover { transform: translateY(-1px); filter: brightness(1.08); }
.verify-button:active, .claim-button:active { transform: translateY(2px); }
.verify-button:disabled { cursor: wait; filter: grayscale(.3); opacity: .72; }
.ticket-message {
  position: fixed;
  z-index: 200;
  top: 18px;
  right: 18px;
  max-width: min(360px, calc(100vw - 36px));
  margin: 0;
  padding: 11px 15px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.18);
  color: #fff;
  font-size: 12px;
  line-height: 1.35;
  background: rgba(30, 5, 54, .94);
  box-shadow: 0 12px 30px rgba(0,0,0,.42), 0 0 20px rgba(151,58,255,.25);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
  pointer-events: none;
}
.ticket-message.show, .ticket-message.success, .ticket-message.error {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.ticket-message.success { border-color: rgba(84,240,168,.44); color: #9ff5c8; }
.ticket-message.error { border-color: rgba(255,112,132,.5); color: #ffb1bd; }

/* Lottery cabinet */
.lottery-stage {
  width: var(--machine-size);
  height: var(--machine-size);
  flex: 0 0 var(--machine-size);
  position: relative;
  display: grid;
  place-items: center;
}
.stage-shadow {
  position: absolute;
  left: 9%; right: 9%; bottom: -4%;
  height: 10%;
  border-radius: 50%;
  background: rgba(198, 66, 255, .68);
  filter: blur(28px);
  opacity: .58;
}
.lottery-frame {
  width: 100%; height: 100%;
  position: relative;
  padding: clamp(31px, calc(var(--machine-size) * .062), 42px);
  border-radius: clamp(24px, calc(var(--machine-size) * .058), 38px);
  border: 3px solid #f9dd8b;
  background:
    linear-gradient(145deg, rgba(255,255,255,.36), transparent 15%),
    linear-gradient(135deg, #dca85c 0%, #8c3fc2 13%, #5e1596 50%, #270049 85%, #e6ad4b 100%);
  box-shadow:
    0 0 0 4px #6725a0,
    0 0 0 8px rgba(248, 203, 85, .84),
    0 0 0 12px rgba(87, 19, 139, .87),
    0 22px 48px rgba(0,0,0,.55),
    0 0 55px rgba(192,67,255,.48),
    inset 0 0 42px rgba(255,255,255,.18);
  isolation: isolate;
}
.frame-highlight {
  position: absolute;
  inset: 10px;
  z-index: 3;
  border-radius: calc(clamp(24px, calc(var(--machine-size) * .058), 38px) - 8px);
  border: 2px solid rgba(255,239,183,.65);
  box-shadow: inset 0 0 27px rgba(62,3,112,.72), 0 0 11px rgba(255,220,115,.30);
  pointer-events: none;
}
.lottery-frame::before {
  content: "";
  position: absolute;
  inset: 21px;
  z-index: 1;
  border-radius: calc(clamp(24px, calc(var(--machine-size) * .058), 38px) - 15px);
  border: 1px solid rgba(255,255,255,.30);
  background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(20,0,48,.24));
  box-shadow: inset 0 0 31px rgba(19,0,44,.72);
  pointer-events: none;
}
.frame-corner { position: absolute; width: 29px; height: 29px; z-index: 7; }
.frame-corner::before, .frame-corner::after {
  content: "";
  position: absolute;
  background: linear-gradient(90deg, #fff0a3, #b86c12);
  box-shadow: 0 0 9px rgba(255,218,90,.55);
}
.frame-corner::before { width: 100%; height: 4px; }
.frame-corner::after { width: 4px; height: 100%; }
.frame-corner-tl { top: 20px; left: 20px; }
.frame-corner-tr { top: 20px; right: 20px; transform: rotate(90deg); }
.frame-corner-bl { bottom: 20px; left: 20px; transform: rotate(-90deg); }
.frame-corner-br { bottom: 20px; right: 20px; transform: rotate(180deg); }
.bulbs { position: absolute; inset: 0; z-index: 8; pointer-events: none; }
.bulb {
  position: absolute;
  width: clamp(8px, calc(var(--machine-size) * .018), 12px);
  height: clamp(8px, calc(var(--machine-size) * .018), 12px);
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(.94);
  background: radial-gradient(circle at 34% 28%, #fffef2 0 24%, #ffef94 36%, #ffd052 63%, #a64d05 100%);
  box-shadow:
    0 0 6px rgba(255,250,215,.78),
    0 0 12px rgba(255,221,102,.72),
    0 0 19px rgba(255,174,35,.36);
  animation: bulbBreath 1.85s ease-in-out infinite;
  will-change: transform, opacity, filter, box-shadow;
}
@keyframes bulbBreath {
  0%, 100% {
    opacity: .62;
    transform: translate(-50%, -50%) scale(.91);
    filter: saturate(.76) brightness(.88);
    box-shadow: 0 0 5px rgba(255,250,215,.45), 0 0 10px rgba(255,221,102,.42), 0 0 16px rgba(255,174,35,.18);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.10);
    filter: saturate(1.32) brightness(1.22);
    box-shadow: 0 0 8px #fffbd2, 0 0 16px rgba(255,231,132,.95), 0 0 28px rgba(255,181,41,.68);
  }
}
.lottery-frame.is-spinning .bulb { animation-duration: .36s; }

.board-bezel {
  width: 100%; height: 100%;
  position: relative;
  z-index: 2;
  padding: clamp(8px, calc(var(--machine-size) * .017), 12px);
  border-radius: clamp(16px, calc(var(--machine-size) * .038), 27px);
  border: 2px solid rgba(226, 184, 255, .62);
  background:
    linear-gradient(180deg, rgba(255,255,255,.16), transparent 18%),
    linear-gradient(145deg, #2a0549, #6c1ca5 48%, #23003c);
  box-shadow: inset 0 0 34px rgba(6,0,19,.82), 0 0 18px rgba(128,39,211,.35);
}
.board {
  width: 100%; height: 100%;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-template-rows: repeat(4, minmax(0, 1fr));
  gap: clamp(7px, calc(var(--machine-size) * .018), 11px);
  position: relative;
}
.prize-cell {
  min-width: 0; min-height: 0;
  position: relative;
  overflow: hidden;
  padding: clamp(5px, calc(var(--machine-size) * .012), 8px) 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(2px, calc(var(--machine-size) * .006), 5px);
  border-radius: clamp(8px, calc(var(--machine-size) * .018), 13px);
  border: 2px solid rgba(236, 221, 255, .86);
  background:
    linear-gradient(180deg, rgba(255,255,255,.14), transparent 23%),
    linear-gradient(145deg, rgba(94,27,150,.95), rgba(20,2,49,.99));
  box-shadow:
    inset 0 0 20px rgba(178, 71, 255, .15),
    0 4px 9px rgba(0,0,0,.40),
    0 0 10px rgba(195, 120, 255, .24);
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease, filter .14s ease;
}
.prize-cell::before {
  content: "";
  position: absolute;
  inset: 1px;
  border-radius: inherit;
  background: linear-gradient(135deg, rgba(255,255,255,.12), transparent 36%);
  pointer-events: none;
}
.prize-cell img {
  position: relative;
  z-index: 1;
  width: min(59%, 74px);
  height: min(59%, 74px);
  object-fit: contain;
  filter: drop-shadow(0 5px 8px rgba(0,0,0,.48));
}
.prize-cell .prize-label {
  position: relative;
  z-index: 1;
  width: 100%;
  min-height: 1.95em;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: #fff;
  font-size: clamp(8px, calc(var(--machine-size) * .023), 14px);
  line-height: 1.02;
  font-weight: 1000;
  text-transform: uppercase;
  letter-spacing: -.018em;
  text-shadow: 0 2px 4px rgba(0,0,0,.78);
  overflow-wrap: anywhere;
}
.prize-cell.special .prize-label { color: #fff2a0; letter-spacing: .005em; }
.prize-cell.active {
  z-index: 5;
  transform: scale(1.035);
  border-color: #fff49c;
  background:
    linear-gradient(180deg, rgba(255,255,255,.26), transparent 26%),
    linear-gradient(145deg, #9139e5, #3c075d);
  box-shadow:
    inset 0 0 20px rgba(255,230,100,.14),
    0 0 0 3px rgba(255,211,59,.98),
    0 0 20px rgba(255,216,65,.95),
    0 0 38px rgba(194,62,255,.68);
}
.prize-cell.winner {
  animation: winnerFlash .44s ease-in-out 4 alternate;
  border-color: #fff7b7;
  box-shadow: 0 0 0 4px #ffcb2f, 0 0 23px #ffd348, 0 0 48px rgba(255,62,188,.82);
}
@keyframes winnerFlash { from { transform: scale(1.01); filter: brightness(1); } to { transform: scale(1.08); filter: brightness(1.38); } }

.center-zone {
  grid-column: 2 / 4;
  grid-row: 2 / 4;
  position: relative;
  display: grid;
  place-items: center;
  overflow: visible;
  background: radial-gradient(circle, rgba(185, 73, 244, .25) 0%, rgba(88, 20, 137, .08) 49%, transparent 73%);
}
.center-radiance {
  position: absolute;
  width: 92%; height: 92%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(201,91,255,.42), rgba(102,23,168,.12) 47%, transparent 70%);
  filter: blur(4px);
  animation: centerBreath 2.6s ease-in-out infinite;
}
@keyframes centerBreath { 50% { transform: scale(1.08); opacity: .74; } }
.go-rings {
  position: absolute;
  width: 78%;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 2px solid rgba(225, 183, 255, .52);
  box-shadow: 0 0 12px rgba(205, 92, 255, .40);
}
.go-rings i { position: absolute; inset: 8%; border-radius: 50%; border: 2px solid rgba(225, 183, 255, .40); }
.go-rings i:nth-child(2) { inset: 17%; border-color: rgba(149, 73, 210, .62); }
.go-rings i:nth-child(3) { inset: 26%; border-color: rgba(235, 208, 255, .25); }
.go-button {
  position: relative;
  z-index: 3;
  width: min(63%, 196px);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 4px solid #dba9ff;
  display: grid;
  place-items: center;
  color: #fff;
  background:
    radial-gradient(circle at 35% 24%, rgba(255,255,255,.20), transparent 17%),
    radial-gradient(circle at 50% 43%, #24102c 0%, #09000d 60%, #020004 100%);
  box-shadow:
    0 0 0 6px #15001f,
    0 0 0 10px #9c35e7,
    0 0 0 14px #21042d,
    0 0 0 17px rgba(229, 197, 255, .62),
    inset 0 -15px 30px rgba(0,0,0,.82),
    inset 0 11px 16px rgba(255,255,255,.08),
    0 13px 29px rgba(0,0,0,.66),
    0 0 35px rgba(195, 78, 255, .78);
  transition: transform .18s ease, filter .18s ease, box-shadow .18s ease;
}
.go-button::before {
  content: "";
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.28);
  box-shadow: inset 0 0 17px rgba(216,153,255,.13);
}
.go-button span {
  font-size: clamp(39px, calc(var(--machine-size) * .123), 72px);
  line-height: 1;
  font-weight: 1000;
  letter-spacing: -.055em;
  text-shadow: 0 4px 0 #65506e, 0 8px 13px rgba(0,0,0,.76), 0 0 14px rgba(255,255,255,.27);
}
.go-button:not(:disabled):hover {
  transform: scale(1.045);
  filter: brightness(1.12);
  box-shadow:
    0 0 0 6px #15001f,
    0 0 0 10px #bf55ff,
    0 0 0 14px #21042d,
    0 0 0 17px rgba(255,226,134,.76),
    inset 0 -15px 30px rgba(0,0,0,.82),
    0 14px 31px rgba(0,0,0,.68),
    0 0 51px rgba(225,106,255,.98);
}
.go-button:not(:disabled):active { transform: translateY(3px) scale(.99); }
.go-button:disabled { cursor: not-allowed; opacity: .90; filter: brightness(.78) saturate(.8); }
.go-button.spinning { animation: goPulse .58s ease-in-out infinite alternate; }
@keyframes goPulse { to { transform: scale(1.055); filter: brightness(1.27); box-shadow: 0 0 0 6px #15001f, 0 0 0 10px #d36fff, 0 0 0 14px #21042d, 0 0 0 17px rgba(255,226,134,.9), 0 0 58px rgba(235,123,255,1); } }

/* Keep the two requested buttons */
.console-actions {
  width: min(calc(var(--machine-size) * .88), 88vw);
  height: 38px;
  flex: 0 0 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
.console-action {
  flex: 1 1 0;
  height: 38px;
  min-width: 0;
  padding: 0 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  border-radius: 999px;
  border: 1px solid rgba(244, 187, 255, .63);
  color: #fff0a0;
  font-size: clamp(8px, .88vw, 11px);
  font-weight: 950;
  letter-spacing: .05em;
  background: linear-gradient(180deg, rgba(78,21,130,.96), rgba(21,2,50,.99));
  box-shadow: inset 0 1px rgba(255,255,255,.12), 0 7px 15px rgba(0,0,0,.36), 0 0 13px rgba(169,65,255,.20);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.console-action:hover { transform: translateY(-2px); border-color: #ffe77e; box-shadow: inset 0 1px rgba(255,255,255,.14), 0 10px 21px rgba(0,0,0,.42), 0 0 21px rgba(255,209,73,.27); }
.action-icon { color: #ffda62; text-shadow: 0 0 9px rgba(255,205,54,.55); }

/* Modals */
.modal {
  position: fixed;
  inset: 0;
  z-index: 300;
  padding: 18px;
  display: grid;
  place-items: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity .24s ease, visibility .24s ease;
}
.modal.open { opacity: 1; visibility: visible; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(5,0,15,.82); backdrop-filter: blur(9px); }
.result-card, .claim-card, .info-card {
  width: min(92vw, 500px);
  max-height: min(91svh, 760px);
  overflow: auto;
  padding: clamp(25px, 4vw, 38px);
  position: relative;
  z-index: 1;
  color: #fff;
  text-align: center;
  border-radius: 27px;
  border: 2px solid rgba(255,226,117,.76);
  background:
    linear-gradient(180deg, rgba(255,255,255,.11), transparent 17%),
    radial-gradient(circle at 50% 0, rgba(185,68,255,.42), transparent 38%),
    linear-gradient(145deg, #4b0b78, #19002e 62%, #0c0017);
  box-shadow: 0 0 0 5px rgba(139,44,213,.6), 0 25px 68px rgba(0,0,0,.72), 0 0 54px rgba(186,70,255,.48);
  transform: scale(.92) translateY(12px);
  transition: transform .28s ease;
}
.modal.open .result-card, .modal.open .claim-card, .modal.open .info-card { transform: scale(1) translateY(0); }
.modal-radiance { position: absolute; left: 12%; right: 12%; top: -15%; height: 44%; border-radius: 50%; background: rgba(196,72,255,.25); filter: blur(45px); pointer-events: none; }
.modal-close {
  position: absolute;
  top: 12px; right: 14px;
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.18);
  color: #fff;
  font-size: 22px;
  background: rgba(255,255,255,.07);
}
.result-eyebrow { margin: 0 0 7px; color: #ffe477; font-size: 11px; font-weight: 1000; letter-spacing: .16em; }
.result-card h2, .claim-card h2, .info-card h2 { margin: 0 0 15px; font-size: clamp(25px, 5vw, 38px); }
.result-image-wrap { width: 145px; height: 145px; margin: 0 auto 10px; display: grid; place-items: center; }
.result-image { max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 10px 13px rgba(0,0,0,.48)); }
.result-prize { margin-bottom: 16px; color: #fff0a0; font-size: clamp(24px, 5vw, 34px); font-weight: 1000; text-transform: uppercase; }
.result-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.result-time, .result-ticket { padding: 11px; border-radius: 12px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.11); }
.result-time span, .result-ticket span { display: block; margin-bottom: 4px; color: #aa91c5; font-size: 9px; text-transform: uppercase; letter-spacing: .1em; }
.result-time strong, .result-ticket strong { display: block; color: #fff; font-size: 11px; overflow-wrap: anywhere; }
.claim-button, .secondary-button { width: 100%; min-height: 45px; margin-top: 8px; }
.secondary-button { border: 1px solid rgba(255,255,255,.2); border-radius: 12px; color: #fff; font-weight: 850; background: rgba(255,255,255,.07); }
.claim-card { width: min(94vw, 610px); text-align: left; }
.claim-card .result-eyebrow, .claim-card h2 { text-align: center; }
.claim-card form { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.claim-card label { display: grid; gap: 5px; color: #d9c9e8; font-size: 10px; font-weight: 800; }
.claim-card label:nth-of-type(4), .claim-card label:nth-of-type(5), .claim-card label:nth-of-type(6), .claim-card form > .form-message, .claim-card form > button { grid-column: 1 / -1; }
.claim-card input, .claim-card textarea { width: 100%; border: 1px solid rgba(226,190,255,.28); border-radius: 10px; padding: 10px 11px; color: #fff; background: rgba(8,0,22,.62); resize: vertical; outline: none; }
.form-message { min-height: 18px; margin: 0; color: #d8c9e8; font-size: 11px; }
.form-message.success { color: #8cf4bd; }
.form-message.error { color: #ffadb9; }
.claim-success {
  min-height: 48px;
  padding: 11px 13px;
  display: grid;
  gap: 4px;
  align-content: center;
  border: 1px solid rgba(118, 255, 184, .35);
  border-radius: 11px;
  color: #b8ffd5;
  background: rgba(22, 151, 91, .15);
  box-shadow: inset 0 0 18px rgba(61, 255, 157, .08);
}
.claim-success strong { font-size: 12px; }
.claim-success span { color: #d8f7e5; font-size: 10px; }
.claim-card input:disabled,
.claim-card textarea:disabled {
  opacity: .7;
  cursor: not-allowed;
}
.info-content { margin: 2px 0 18px; color: #e2d6ef; text-align: left; font-size: 13px; line-height: 1.65; }
.info-content ol { margin: 0; padding-left: 22px; }
.info-content li + li { margin-top: 8px; }
.info-reward { display: grid; place-items: center; gap: 10px; text-align: center; }
.info-reward img { width: 110px; height: 110px; object-fit: contain; filter: drop-shadow(0 8px 10px rgba(0,0,0,.4)); }
.info-reward strong { color: #fff0a3; font-size: 25px; text-transform: uppercase; }

/* Desktop height tuning */
@media (max-height: 820px) and (min-width: 761px) {
  :root { --machine-size: min(60svh, 43vw, 510px); }
  .marquee-header { height: 88px; min-height: 88px; }
  .marquee-crown { transform: translateX(-50%) scale(.82); top: -6px; }
  .marquee-sign { height: 68%; min-height: 59px; }
  .marquee-sign h1 { font-size: clamp(33px, 3.7vw, 49px); }
  .ticket-console { height: 49px; flex-basis: 49px; }
  .console-actions { height: 34px; flex-basis: 34px; }
  .console-action { height: 34px; }
}

/* Mobile */
@media (max-width: 760px) {
  :root { --machine-size: min(57svh, 94vw, 530px); }
  .page-shell { padding: 6px 6px max(6px, env(safe-area-inset-bottom)); }
  .lottery-console { gap: 5px; }
  .marquee-header { width: min(calc(var(--machine-size) * 1.14), 98vw); height: 75px; min-height: 75px; }
  .marquee-crown { width: 105px; height: 35px; top: -5px; }
  .marquee-crown i { width: 20px; height: 20px; }
  .marquee-crown b { width: 24px; height: 26px; }
  .marquee-crown span { width: 26px; height: 34px; }
  .marquee-sign { min-height: 53px; height: 66%; padding: 5px; }
  .marquee-inner { padding: 4px 30px; }
  .marquee-sign h1 { font-size: clamp(27px, 8.7vw, 42px); -webkit-text-stroke-width: 1px; }
  .marquee-tail { display: none; }
  .ticket-console { width: min(calc(var(--machine-size) * 1.04), 97vw); height: 46px; flex-basis: 46px; padding: 5px; border-radius: 14px; }
  .ticket-controls { gap: 5px; }
  .ticket-icon { left: 10px; font-size: 10px; }
  .ticket-input-wrap input { padding-left: 30px; padding-right: 8px; border-radius: 9px; font-size: 9px; }
  .verify-button { min-width: 104px; padding: 0 9px; border-radius: 9px; font-size: 8px; }
  .lottery-frame { padding: clamp(23px, calc(var(--machine-size) * .06), 31px); border-radius: 26px; }
  .frame-highlight { inset: 8px; }
  .lottery-frame::before { inset: 17px; }
  .frame-corner { display: none; }
  .board { gap: 5px; }
  .prize-cell { border-width: 1px; border-radius: 9px; padding: 4px 3px; }
  .prize-cell img { width: 57%; height: 57%; }
  .prize-cell .prize-label { font-size: clamp(6.5px, 2.55vw, 10px); }
  .go-button { border-width: 3px; }
  .go-button span { font-size: clamp(32px, 12vw, 54px); }
  .console-actions { width: min(calc(var(--machine-size) * .90), 91vw); height: 34px; flex-basis: 34px; gap: 8px; }
  .console-action { height: 34px; padding: 0 9px; font-size: 8px; }
  .ticket-message { top: 10px; right: 10px; max-width: calc(100vw - 20px); font-size: 10px; }
}

@media (max-width: 430px) {
  :root { --machine-size: min(53svh, 96vw, 440px); }
  .marquee-header { height: 67px; min-height: 67px; }
  .marquee-sign h1 { font-size: clamp(25px, 8.4vw, 36px); }
  .ticket-console { height: 43px; flex-basis: 43px; }
  .verify-button { min-width: 94px; font-size: 7.5px; }
  .console-action .action-icon { display: none; }
  .result-meta { grid-template-columns: 1fr; }
  .claim-card form { grid-template-columns: 1fr; }
  .claim-card label, .claim-card label:nth-of-type(4), .claim-card label:nth-of-type(5), .claim-card label:nth-of-type(6) { grid-column: 1; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  /* Essential lottery feedback remains animated even when Windows/Edge
     reports reduced motion. Movements are kept gentle rather than disabled. */
}

/* v0.3.3 final visual refinements */
.marquee-sign h1 {
  font-family: Impact, "Arial Black", Arial, sans-serif;
  font-weight: 900;
  letter-spacing: .025em;
}
.marquee-tail { display: none; }
.marquee-crown { top: -10px; transform: translateX(-50%) scale(.92); }
.go-button:disabled { opacity: 1; filter: none; }

/* v0.3.4 interaction and visual refinements */
html, body {
  max-width: 100%;
  overflow: hidden !important;
  overscroll-behavior: none;
}

/* Give the secondary actions their own visual zone below the cabinet. */
.console-actions {
  margin-top: clamp(17px, 2.15vh, 24px);
  gap: clamp(12px, 1.4vw, 18px);
}
.console-action {
  position: relative;
  min-height: 40px;
  border-color: rgba(255, 218, 111, .50);
  background:
    linear-gradient(180deg, rgba(255,255,255,.09), transparent 34%),
    linear-gradient(180deg, rgba(82,24,135,.98), rgba(19,2,47,.99));
}
.action-icon {
  width: 19px;
  height: 19px;
  flex: 0 0 19px;
  display: grid;
  place-items: center;
  color: #ffe16d;
  filter: drop-shadow(0 0 7px rgba(255, 205, 67, .48));
}
.action-icon svg {
  width: 100%;
  height: 100%;
  overflow: visible;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.console-action:hover .action-icon {
  transform: translateY(-1px) scale(1.08);
  filter: drop-shadow(0 0 11px rgba(255, 224, 101, .85));
}

/* Prize artwork is intentionally larger and more prominent. */
.prize-cell {
  padding: clamp(4px, calc(var(--machine-size) * .009), 7px) 3px;
  gap: clamp(1px, calc(var(--machine-size) * .004), 4px);
}
.prize-cell img {
  width: min(70%, 91px);
  height: min(70%, 91px);
  transform: translateZ(0) scale(1.06);
  filter: drop-shadow(0 7px 10px rgba(0,0,0,.52));
}
.prize-cell.special img {
  width: min(74%, 96px);
  height: min(74%, 96px);
}
.prize-cell .prize-label {
  min-height: 1.72em;
  line-height: .98;
}

/* The selector glides continuously between prize cells instead of jumping. */
.spin-indicator {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 9;
  border-radius: clamp(8px, calc(var(--machine-size) * .018), 13px);
  border: 3px solid #fff6a4;
  box-shadow:
    0 0 0 2px rgba(255, 201, 45, .84),
    0 0 18px rgba(255, 225, 83, .95),
    0 0 34px rgba(204, 70, 255, .74),
    inset 0 0 16px rgba(255, 238, 139, .16);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  will-change: transform, width, height, opacity, box-shadow;
}
.spin-indicator::after {
  content: "";
  position: absolute;
  inset: 2px;
  border-radius: inherit;
  border: 1px solid rgba(255,255,255,.72);
}
.spin-indicator.visible {
  opacity: 1;
  visibility: visible;
}
.spin-indicator.spinning {
  animation: selectorGlow .7s ease-in-out infinite alternate;
}
.spin-indicator.winner {
  border-color: #fffbe0;
  animation: selectorWinner .38s ease-in-out 5 alternate;
}
@keyframes selectorGlow {
  to {
    box-shadow:
      0 0 0 3px rgba(255, 205, 42, .94),
      0 0 25px rgba(255, 230, 92, 1),
      0 0 46px rgba(215, 82, 255, .92),
      inset 0 0 22px rgba(255, 244, 170, .24);
  }
}
@keyframes selectorWinner {
  to {
    filter: brightness(1.28);
    box-shadow: 0 0 0 5px #ffcb2f, 0 0 30px #ffe35d, 0 0 58px rgba(255, 68, 195, .88);
  }
}

/* Keep the individual card subtle while the smooth selector does the movement. */
.prize-cell.active {
  z-index: 5;
  transform: scale(1.012);
  border-color: rgba(255, 244, 156, .82);
  box-shadow:
    inset 0 0 18px rgba(255,230,100,.10),
    0 0 13px rgba(255,216,65,.42),
    0 0 22px rgba(194,62,255,.42);
}

/* Bulbs continuously breathe in staggered phases, including during the draw. */
.bulb {
  animation-name: bulbBreath;
  animation-duration: 1.82s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-fill-mode: both;
}
.lottery-frame.is-spinning .bulb {
  animation-name: bulbBreath;
  animation-duration: 1.34s;
  filter: none;
}
@keyframes bulbBreath {
  0%, 100% {
    opacity: .60;
    transform: translate(-50%, -50%) scale(.90);
    filter: saturate(.84) brightness(.86);
    box-shadow:
      0 0 5px rgba(255,250,215,.46),
      0 0 10px rgba(255,221,102,.44),
      0 0 17px rgba(255,174,35,.20);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.13);
    filter: saturate(1.28) brightness(1.25);
    box-shadow:
      0 0 8px #fffde4,
      0 0 17px rgba(255,235,143,.98),
      0 0 30px rgba(255,186,47,.72),
      0 0 42px rgba(255,139,28,.28);
  }
}

/* Verified winning tickets activate a gold GO state; non-winning tickets stay black/white. */
.go-button.is-winner-ticket {
  border-color: #fff0a1;
  color: #fff;
  background:
    radial-gradient(circle at 34% 22%, rgba(255,255,255,.65), transparent 18%),
    radial-gradient(circle at 48% 40%, #ffd963 0%, #e9a617 47%, #8a4103 78%, #3b1500 100%);
  box-shadow:
    0 0 0 6px #351500,
    0 0 0 10px #ffc83a,
    0 0 0 14px #5d2700,
    0 0 0 17px rgba(255,241,165,.88),
    inset 0 -17px 31px rgba(92,31,0,.54),
    inset 0 11px 17px rgba(255,255,255,.28),
    0 14px 30px rgba(0,0,0,.66),
    0 0 48px rgba(255,192,39,.88);
}
.go-button.is-winner-ticket::before {
  border-color: rgba(255,255,255,.58);
  box-shadow: inset 0 0 21px rgba(255,249,198,.24);
}
.go-button.is-winner-ticket span {
  text-shadow:
    0 3px 0 #8a3b00,
    0 7px 13px rgba(74,23,0,.75),
    0 0 17px rgba(255,255,255,.58);
}
.go-button.is-winner-ticket:not(:disabled):hover {
  filter: brightness(1.1) saturate(1.08);
  box-shadow:
    0 0 0 6px #351500,
    0 0 0 10px #ffd85e,
    0 0 0 14px #5d2700,
    0 0 0 17px rgba(255,249,190,.96),
    inset 0 -17px 31px rgba(92,31,0,.50),
    0 15px 31px rgba(0,0,0,.68),
    0 0 62px rgba(255,202,56,1);
}

/* Tight screens preserve the new spacing without clipping the action row. */
@media (max-height: 820px) and (min-width: 761px) {
  :root { --machine-size: min(57.5svh, 41.5vw, 492px); }
  .console-actions { margin-top: 17px; }
}
@media (max-width: 760px) {
  .console-actions { margin-top: 12px; }
  .action-icon { width: 16px; height: 16px; flex-basis: 16px; }
  .prize-cell img { width: 68%; height: 68%; transform: scale(1.04); }
  .spin-indicator { border-width: 2px; }
}
@media (max-width: 430px) {
  .console-action .action-icon { display: grid; }
  .console-actions { margin-top: 10px; }
  .console-action { gap: 6px; }
}

/* Prevent grid min-content sizing from making the cabinet taller than its square stage. */
.lottery-frame,
.board-bezel,
.board,
.prize-cell,
.center-zone {
  min-width: 0;
  min-height: 0;
}
.lottery-frame { overflow: visible; }


/* v0.3.5 title crest and alignment fix */
.marquee-header {
  height: clamp(110px, 13.8svh, 128px);
  min-height: 110px;
  display: block;
  overflow: visible;
}
.marquee-sign {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  height: 69%;
  min-height: 72px;
}
.marquee-wings {
  top: auto;
  bottom: 4%;
  height: 54%;
}
.marquee-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.marquee-sign h1 {
  width: 100%;
  margin: 0;
  padding: 0;
  text-align: center;
  transform: none;
  line-height: 1;
}

/* Compact jewel crest: fully outside the title panel, so it never covers the text. */
.marquee-crest {
  position: absolute;
  z-index: 6;
  top: 0;
  left: 50%;
  width: 132px;
  height: 38px;
  transform: translateX(-50%);
  pointer-events: none;
  filter: drop-shadow(0 7px 10px rgba(0,0,0,.38));
}
.crest-gem {
  position: absolute;
  left: 50%;
  top: 1px;
  width: 31px;
  height: 31px;
  transform: translateX(-50%) rotate(45deg);
  border: 2px solid #fff1a2;
  border-radius: 5px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.82), transparent 24%),
    linear-gradient(135deg, #fff2a0 0%, #e7a626 39%, #8d3708 100%);
  box-shadow:
    0 0 0 3px rgba(111,34,0,.78),
    0 0 16px rgba(255,204,69,.72);
}
.crest-gem::after {
  content: "";
  position: absolute;
  inset: 6px;
  border-radius: 3px;
  background: linear-gradient(135deg, #d96bff, #6b0b9d 58%, #26003f);
  box-shadow: inset 0 0 8px rgba(255,255,255,.34);
}
.crest-wing {
  position: absolute;
  top: 12px;
  width: 53px;
  height: 15px;
  border: 1px solid rgba(255,238,148,.92);
  background: linear-gradient(180deg, #fff0a0 0%, #d78a16 48%, #6f2a05 100%);
  box-shadow: 0 0 10px rgba(255,199,57,.42);
}
.crest-wing::after {
  content: "";
  position: absolute;
  inset: 3px;
  background: linear-gradient(180deg, #9d32dc, #4b0673);
  clip-path: inherit;
}
.crest-wing-left {
  right: calc(50% + 17px);
  clip-path: polygon(0 50%, 17% 0, 100% 28%, 100% 72%, 17% 100%);
}
.crest-wing-right {
  left: calc(50% + 17px);
  clip-path: polygon(100% 50%, 83% 0, 0 28%, 0 72%, 83% 100%);
}

@media (max-height: 820px) and (min-width: 761px) {
  .marquee-header { height: 98px; min-height: 98px; }
  .marquee-sign { height: 68%; min-height: 65px; }
  .marquee-crest { width: 114px; height: 32px; }
  .crest-gem { width: 27px; height: 27px; }
  .crest-wing { width: 45px; height: 13px; top: 10px; }
  .crest-wing-left { right: calc(50% + 15px); }
  .crest-wing-right { left: calc(50% + 15px); }
}

@media (max-width: 760px) {
  .marquee-header { height: 82px; min-height: 82px; }
  .marquee-sign { height: 65%; min-height: 53px; }
  .marquee-crest { width: 94px; height: 27px; top: 0; }
  .crest-gem { width: 23px; height: 23px; border-width: 1px; }
  .crest-gem::after { inset: 4px; }
  .crest-wing { width: 37px; height: 11px; top: 8px; }
  .crest-wing-left { right: calc(50% + 13px); }
  .crest-wing-right { left: calc(50% + 13px); }
}

@media (max-width: 430px) {
  .marquee-header { height: 74px; min-height: 74px; }
  .marquee-sign { min-height: 48px; }
  .marquee-crest { transform: translateX(-50%) scale(.90); transform-origin: top center; }
}


/* v0.3.7 — always-visible live motion layer
   These animations are intentionally lightweight and remain active inside
   the WordPress iframe, including on Windows machines that report reduced motion. */
.scene {
  isolation: isolate;
}
.star-field {
  animation: alsStarDrift 22s linear infinite, alsStarTwinkle 3.2s ease-in-out infinite alternate;
  will-change: background-position, opacity, filter;
}
@keyframes alsStarDrift {
  0% { background-position: 0 0, 21px 29px, 37px 14px; }
  100% { background-position: 102px 51px, -52px 102px, 134px -83px; }
}
@keyframes alsStarTwinkle {
  0% { opacity: .19; filter: brightness(.88); }
  100% { opacity: .38; filter: brightness(1.22); }
}

.neon-horizon-one {
  animation: alsHorizonPulse 4.2s ease-in-out infinite;
  will-change: opacity, filter, box-shadow;
}
.neon-horizon-two {
  animation: alsHorizonPulse 4.2s ease-in-out -2.1s infinite;
  will-change: opacity, filter, box-shadow;
}
@keyframes alsHorizonPulse {
  0%, 100% {
    opacity: .74;
    filter: brightness(.92) saturate(.92);
    box-shadow: 0 7px 11px rgba(244,95,255,.48), 0 16px 34px rgba(135,43,255,.35), inset 0 -7px 18px rgba(255,255,255,.08);
  }
  50% {
    opacity: 1;
    filter: brightness(1.22) saturate(1.14);
    box-shadow: 0 10px 16px rgba(255,122,255,.86), 0 26px 58px rgba(150,65,255,.70), inset 0 -11px 30px rgba(255,255,255,.18);
  }
}

.scene-glow-left {
  animation: alsGlowFloatLeft 7.4s ease-in-out infinite alternate;
  will-change: transform, opacity;
}
.scene-glow-right {
  animation: alsGlowFloatRight 8.2s ease-in-out infinite alternate;
  will-change: transform, opacity;
}
@keyframes alsGlowFloatLeft {
  from { transform: translate3d(0, -10px, 0) scale(.94); opacity: .72; }
  to { transform: translate3d(44px, 34px, 0) scale(1.10); opacity: 1; }
}
@keyframes alsGlowFloatRight {
  from { transform: translate3d(0, 12px, 0) scale(.96); opacity: .68; }
  to { transform: translate3d(-38px, -28px, 0) scale(1.12); opacity: .98; }
}

.marquee-sign {
  animation: alsSignGlow 2.8s ease-in-out infinite;
  will-change: filter, box-shadow;
}
.marquee-sign::after {
  content: "";
  position: absolute;
  inset: 4px 8%;
  border-radius: 999px;
  background: linear-gradient(110deg, transparent 18%, rgba(255,255,255,.40) 43%, transparent 67%);
  transform: translateX(-155%) skewX(-18deg);
  animation: alsSignSweep 4.6s ease-in-out infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}
@keyframes alsSignGlow {
  0%, 100% { filter: brightness(.96) drop-shadow(0 0 8px rgba(190,66,255,.36)); }
  50% { filter: brightness(1.12) drop-shadow(0 0 18px rgba(228,106,255,.78)); }
}
@keyframes alsSignSweep {
  0%, 56% { transform: translateX(-155%) skewX(-18deg); opacity: 0; }
  63% { opacity: .88; }
  82% { transform: translateX(155%) skewX(-18deg); opacity: .55; }
  100% { transform: translateX(155%) skewX(-18deg); opacity: 0; }
}

.lottery-frame {
  animation: alsCabinetGlow 3.4s ease-in-out infinite;
  will-change: filter, box-shadow;
}
@keyframes alsCabinetGlow {
  0%, 100% { filter: brightness(.97); }
  50% { filter: brightness(1.08); }
}

/* Stronger, unmistakable continuous bulb breathing. */
.bulb {
  animation: alsBulbBreath 1.55s cubic-bezier(.45,0,.55,1) infinite !important;
  animation-play-state: running !important;
  will-change: transform, opacity, filter, box-shadow;
}
.lottery-frame.is-spinning .bulb {
  animation: alsBulbBreathFast .74s cubic-bezier(.45,0,.55,1) infinite !important;
}
@keyframes alsBulbBreath {
  0%, 100% {
    opacity: .38;
    transform: translate(-50%, -50%) scale(.76);
    filter: brightness(.68) saturate(.76);
    box-shadow: 0 0 3px rgba(255,250,215,.34), 0 0 7px rgba(255,221,102,.30), 0 0 11px rgba(255,174,35,.12);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.24);
    filter: brightness(1.48) saturate(1.30);
    box-shadow: 0 0 9px #fffde8, 0 0 20px rgba(255,237,154,1), 0 0 36px rgba(255,188,54,.86), 0 0 52px rgba(255,133,18,.34);
  }
}
@keyframes alsBulbBreathFast {
  0%, 100% {
    opacity: .50;
    transform: translate(-50%, -50%) scale(.82);
    filter: brightness(.76) saturate(.88);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.28);
    filter: brightness(1.58) saturate(1.34);
    box-shadow: 0 0 10px #fffde8, 0 0 23px rgba(255,237,154,1), 0 0 42px rgba(255,188,54,.95);
  }
}

.center-radiance {
  animation: alsCenterAura 2.15s ease-in-out infinite !important;
}
@keyframes alsCenterAura {
  0%,100% { transform: scale(.92); opacity: .30; filter: blur(1px); }
  50% { transform: scale(1.12); opacity: .78; filter: blur(0); }
}
.go-rings i:nth-child(1) { animation: alsRingSpin 10s linear infinite; }
.go-rings i:nth-child(2) { animation: alsRingSpinReverse 7.5s linear infinite; }
.go-rings i:nth-child(3) { animation: alsRingPulse 1.9s ease-in-out infinite; }
@keyframes alsRingSpin { to { transform: rotate(360deg); } }
@keyframes alsRingSpinReverse { to { transform: rotate(-360deg); } }
@keyframes alsRingPulse { 50% { opacity: .95; filter: brightness(1.34); transform: scale(1.045); } }

.go-button:not(.spinning) {
  animation: alsGoIdle 2.25s ease-in-out infinite;
  animation-play-state: running !important;
}
@keyframes alsGoIdle {
  0%,100% { transform: translateZ(0) scale(1); filter: brightness(.96); }
  50% { transform: translateZ(0) scale(1.035); filter: brightness(1.13); }
}
.go-button.spinning {
  animation: goPulse .58s ease-in-out infinite alternate !important;
}

.prize-cell img {
  animation: alsPrizeFloat 3.25s ease-in-out infinite;
  animation-play-state: running !important;
  will-change: transform, filter;
}
.prize-cell:nth-of-type(2n) img { animation-delay: -.65s; }
.prize-cell:nth-of-type(3n) img { animation-delay: -1.25s; }
.prize-cell:nth-of-type(4n) img { animation-delay: -1.85s; }
@keyframes alsPrizeFloat {
  0%,100% { transform: translateY(1px) scale(1.04); filter: drop-shadow(0 3px 5px rgba(0,0,0,.24)); }
  50% { transform: translateY(-4px) scale(1.09); filter: drop-shadow(0 8px 10px rgba(210,104,255,.40)); }
}

.console-action {
  position: relative;
  overflow: hidden;
}
.console-action::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 42%;
  left: -60%;
  background: linear-gradient(100deg, transparent, rgba(255,244,174,.22), transparent);
  transform: skewX(-18deg);
  animation: alsActionSweep 5s ease-in-out infinite;
  pointer-events: none;
}
.console-action:nth-child(2)::after { animation-delay: 1.2s; }
@keyframes alsActionSweep {
  0%, 62% { left: -60%; opacity: 0; }
  68% { opacity: .9; }
  88% { left: 120%; opacity: .25; }
  100% { left: 120%; opacity: 0; }
}

/* Do not let OS/browser reduced-motion settings silently freeze the lottery UI. */
@media (prefers-reduced-motion: reduce) {
  .star-field { animation: alsStarDrift 30s linear infinite, alsStarTwinkle 4.8s ease-in-out infinite alternate !important; }
  .neon-horizon-one, .neon-horizon-two { animation: alsHorizonPulse 5.2s ease-in-out infinite !important; }
  .scene-glow-left { animation: alsGlowFloatLeft 10s ease-in-out infinite alternate !important; }
  .scene-glow-right { animation: alsGlowFloatRight 11s ease-in-out infinite alternate !important; }
  .marquee-sign { animation: alsSignGlow 3.8s ease-in-out infinite !important; }
  .marquee-sign::after { animation: alsSignSweep 6.4s ease-in-out infinite !important; }
  .lottery-frame { animation: alsCabinetGlow 4.5s ease-in-out infinite !important; }
  .bulb { animation: alsBulbBreath 1.85s ease-in-out infinite !important; }
  .center-radiance { animation: alsCenterAura 3s ease-in-out infinite !important; }
  .go-rings i:nth-child(1) { animation: alsRingSpin 15s linear infinite !important; }
  .go-rings i:nth-child(2) { animation: alsRingSpinReverse 12s linear infinite !important; }
  .go-rings i:nth-child(3) { animation: alsRingPulse 2.8s ease-in-out infinite !important; }
  .go-button:not(.spinning) { animation: alsGoIdle 3s ease-in-out infinite !important; }
  .prize-cell img { animation: alsPrizeFloat 4.5s ease-in-out infinite !important; }
  .console-action::after { animation: alsActionSweep 7s ease-in-out infinite !important; }
}
