/* =========================================================
   Beyond Science | Facility Finales (finale.js)
   ========================================================= */
.fin .book{text-align:center}
.fin-h{font-family:var(--hud,var(--display));font-weight:900;letter-spacing:1px;font-size:clamp(20px,4.6vw,28px);margin:4px 0 8px;
  background:linear-gradient(90deg,#3EF0FF,#FFC94D,#FF4FD8);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-core{position:relative;width:min(220px,58vw);aspect-ratio:150/170;margin:6px auto 10px}
.fin-hex,.fin-hex svg{width:100%;height:100%;display:block}
.fin-hex svg{filter:drop-shadow(0 0 14px rgba(62,240,255,.55))}
.fin-ico{position:absolute;inset:0;display:grid;place-items:center;font-size:64px;pointer-events:none}
.fin-ico img{width:52%;height:auto;object-fit:contain;filter:drop-shadow(0 6px 12px #0008)}
.fin-ring{position:absolute;inset:-8%;border-radius:50%;border:3px solid rgba(62,240,255,.0);pointer-events:none}
.fin-core.hit .fin-hex{animation:finHit .18s ease}
.fin-core.hit .fin-ring{animation:finRing .45s ease-out}
.fin-core.full .fin-hex svg{filter:drop-shadow(0 0 22px rgba(255,201,77,.9)) drop-shadow(0 0 44px rgba(92,255,176,.6))}
.fin-core.boom .fin-hex{animation:finBoom .7s cubic-bezier(.2,1.6,.4,1)}
.fin-core.boom .fin-ring{animation:finRing 1s ease-out infinite}
.fin-core.boom .fin-ring.r2{animation-delay:.5s}
.fin-meter{height:16px;border-radius:99px;background:rgba(255,255,255,.08);border:1px solid rgba(130,220,255,.35);overflow:hidden;margin:4px auto 14px;max-width:360px}
.fin-meter i{display:block;height:100%;background:linear-gradient(90deg,#3EF0FF,#FFC94D,#FF4FD8);box-shadow:0 0 16px #3EF0FF;transition:width .15s ease}
.fin-tap{font-size:24px;padding:18px 34px;min-width:min(320px,80vw);touch-action:manipulation;animation:finPulse 1s ease-in-out infinite}
.fin-tap:active{transform:scale(.94)}
.fin-small{margin:10px 0 0;font-size:14px}
.fin-stamp{color:#5CFFB0;border-color:#5CFFB0;text-shadow:0 0 14px rgba(92,255,176,.8);box-shadow:0 0 18px rgba(92,255,176,.35)}
.fin-title{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:18px;padding:8px 16px;border-radius:99px;margin:0 0 6px;
  background:rgba(255,201,77,.12);border:1px solid rgba(255,201,77,.55)}
.fin-title img{width:30px;height:30px;object-fit:contain}
.fin-title b{color:#FFC94D}
.fin-pay{margin:6px 0 12px;font-weight:700;color:#5CFFB0}
.btn.pulse{animation:finPulse 1s ease-in-out infinite}

/* Dr. Vega's incoming transmission */
.fin-scene{position:relative}
.fin-scene.tx img{filter:saturate(1.2) contrast(1.05)}
.fin-scene.tx::after{content:"";position:absolute;inset:0 0 12px 0;border-radius:14px;pointer-events:none;
  background:repeating-linear-gradient(0deg,rgba(62,240,255,.10) 0 2px,transparent 2px 5px);animation:finScan 3s linear infinite}
.fin-rec{position:absolute;top:10px;left:10px;font-family:var(--hud,var(--display));font-size:11px;letter-spacing:2px;font-weight:700;
  color:#fff;background:rgba(200,30,60,.85);padding:4px 10px;border-radius:99px;animation:finBlink 1s steps(2) infinite}
.transmit .kicker{color:#FF6B7A !important;text-shadow:0 0 12px rgba(255,107,122,.7) !important;animation:finBlink 1.2s steps(2) infinite}
.beat.fin-tx{border-color:#3EF0FF;box-shadow:0 0 0 1px #3EF0FF,0 0 24px rgba(62,240,255,.35);animation:finGlitch .5s steps(3)}

/* Launch card */
.fin-next{width:min(170px,46vw);aspect-ratio:1;margin:8px auto 14px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle,rgba(62,240,255,.25),transparent 70%);animation:finFloat 2.4s ease-in-out infinite}
.fin-next.boss{background:radial-gradient(circle,rgba(255,79,100,.35),transparent 70%)}
.fin-nico img{width:120px;height:120px;object-fit:contain;filter:drop-shadow(0 0 16px rgba(62,240,255,.7))}
.fin-nico.emoji{font-size:84px}
.fin-launch{font-size:22px;padding:16px 28px;animation:finPulse 1s ease-in-out infinite}

@keyframes finHit{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}
@keyframes finRing{0%{border-color:rgba(62,240,255,.9);transform:scale(.8);opacity:1}100%{border-color:rgba(62,240,255,0);transform:scale(1.35);opacity:0}}
@keyframes finBoom{0%{transform:scale(.6) rotate(-8deg)}60%{transform:scale(1.15) rotate(3deg)}100%{transform:scale(1) rotate(0)}}
@keyframes finPulse{0%,100%{box-shadow:0 0 0 0 rgba(62,240,255,.6)}50%{box-shadow:0 0 0 12px rgba(62,240,255,0)}}
@keyframes finScan{from{background-position:0 0}to{background-position:0 60px}}
@keyframes finBlink{50%{opacity:.45}}
@keyframes finGlitch{0%{transform:translateX(-4px)}33%{transform:translateX(4px)}66%{transform:translateX(-2px)}100%{transform:none}}
@keyframes finFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@media (prefers-reduced-motion: reduce){.fin *{animation:none !important}}
.fin .beat{text-align:left}
