/* ============================================================================
 * VIBRA v3 — estilos "neón premium"
 * Paleta del prompt v3: fondo #08080f, violeta #9B5CFF → rosa #FF3CAC, cyan #00E5FF
 * Mobile-first.
 * ==========================================================================*/
:root{
  --bg:#08080f; --bg2:#0E0B1A;
  --glass:rgba(255,255,255,.055); --glass-2:rgba(255,255,255,.09); --line:rgba(255,255,255,.10);
  --text:#F6F4FF; --muted:#A39EC2; --dim:#6E6890;
  --violet:#9B5CFF; --pink:#FF3CAC; --cyan:#00E5FF;
  --ok:#34E5B0; --warn:#FFC247; --danger:#FF5470;
  --grad:linear-gradient(120deg,#FF3CAC 0%,#9B5CFF 60%,#6A8BFF 100%);
  --grad-soft:linear-gradient(135deg,rgba(255,60,172,.20),rgba(155,92,255,.16));
  --radius:22px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Inter',-apple-system,system-ui,Segoe UI,Roboto,sans-serif;background:#000;color:var(--text)}

/* marco tipo teléfono */
#phone{position:relative;width:100%;max-width:440px;height:100vh;height:100dvh;margin:0 auto;display:flex;flex-direction:column;overflow:hidden;
  background:radial-gradient(120% 80% at 80% -10%,rgba(155,92,255,.28),transparent 55%),
             radial-gradient(120% 70% at -10% 10%,rgba(255,60,172,.20),transparent 55%),var(--bg)}

/* contenedor de montaje: debe llenar #phone y ser flex para que .screen tenga
   una altura acotada y pueda hacer scroll (sin esto el scroll no funciona) */
#app-root,#al-root{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}

/* contenedor de pantallas */
.screen{flex:1;min-height:0;display:none;flex-direction:column;padding:0 18px 96px;overflow-y:auto;overflow-x:hidden;animation:fade .25s ease}
.screen.active{display:flex}
.screen::-webkit-scrollbar{display:none}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* topbar */
/* Topbar full-bleed: el fondo llega a los DOS bordes del teléfono. Antes la barra vivía
   dentro del padding de .screen (18px), así que su fondo quedaba metido 18px y dejaba dos
   franjas sin cubrir a los lados (se veía el contenido al scrollear bajo el header), y su
   contenido caía 2px más adentro que el cuerpo. El margin negativo la estira hasta el borde
   y el padding de 18px devuelve VIBRA y el chip a la MISMA sangría que h1/labels/inputs:
   queda alineada en ambos lados y el fondo cubre todo el ancho. */
.topbar{display:flex;align-items:center;justify-content:space-between;margin:0 -18px;padding:18px 18px 12px;position:sticky;top:0;z-index:8;
  background:linear-gradient(var(--bg),rgba(8,8,15,.7) 70%,transparent)}
.brand{font-weight:800;font-size:23px;letter-spacing:3px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand.big{font-size:40px;letter-spacing:5px}

/* tipografía / utilidades */
h1{font-size:27px;font-weight:800;margin:8px 0;letter-spacing:-.5px}
h2{font-size:19px;font-weight:700;margin:4px 0;letter-spacing:-.3px}
.muted{color:var(--muted)}.dim{color:var(--dim)}.small{font-size:13px}.center{text-align:center}
.tagline{color:var(--muted);font-size:15px;margin-top:8px}
/* Links de texto (¿Olvidaste tu contraseña? / Crear cuenta): se ven y se comportan como
   links de verdad. Estos <a> navegan por data-go y NO tienen href, así que el browser por
   defecto les daba cursor de texto y cero subrayado — parecían texto plano. Scopeado a
   a.cyan a propósito: la clase .cyan también la usa el chip del timer (.chip.cyan), que NO
   es clickeable y no debe quedar subrayado ni con pointer. */
a.cyan{color:var(--cyan);cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
a.cyan:hover{text-decoration-thickness:2px;opacity:.85}
.spacer{flex:1}
.row{display:flex;gap:10px;align-items:center}
.between{justify-content:space-between}

/* chips / badges */
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--glass);border:1px solid var(--line);color:var(--muted);
  font-size:12px;font-weight:600;padding:6px 12px;border-radius:999px;backdrop-filter:blur(8px)}
/* Chips que son LINKS (<a class="chip">: @instagram de boliche, "Superadmin"): sin subrayar.
   El browser subraya los <a href> por defecto y .chip no lo desactivaba → quedaba feo en un
   badge. El pointer sigue viniendo del href. */
a.chip{text-decoration:none}
.chip.warn{color:var(--warn);border-color:rgba(255,194,71,.3)}
.chip.ok{color:var(--ok)}
.chip.v{color:#fff;background:var(--grad);border:0}
.badge-v{display:inline-flex;align-items:center;gap:4px;background:var(--grad);color:#fff;font-size:11px;font-weight:700;
  padding:3px 9px;border-radius:999px}

/* botones */
.btn{display:block;width:100%;border:0;border-radius:999px;padding:16px;font-size:16px;font-weight:700;cursor:pointer;color:#fff;
  background:var(--grad);margin-top:14px;box-shadow:0 12px 34px -12px rgba(255,60,172,.6);letter-spacing:.2px;transition:transform .12s}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.5;cursor:default}
.btn.alt{background:var(--glass);border:1px solid var(--line);box-shadow:none;color:var(--text);backdrop-filter:blur(8px)}
.btn.ghost{background:none;border:1px solid var(--line);box-shadow:none}
.btn.sm{display:inline-block;width:auto;padding:11px 20px;font-size:14px;margin-top:0}
.btn.danger{background:none;border:1px solid rgba(255,84,112,.4);color:var(--danger);box-shadow:none}

/* inputs */
input,select,textarea{width:100%;background:var(--glass);border:1px solid var(--line);color:var(--text);
  border-radius:16px;padding:14px;font-size:16px;margin-top:8px;outline:none;font-family:inherit}
input:focus,select:focus,textarea:focus{border-color:rgba(255,60,172,.6)}
/* Autocompletado del navegador (login): Chrome pinta el campo autocompletado de un
   color claro y le mete una animación de fondo. En el tema oscuro eso se ve como un
   "flash"/salto al enfocar el teléfono o la contraseña. Lo forzamos al estilo de la app:
   el box-shadow inset tapa el fondo claro y la transición larguísima anula la animación. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active{
  -webkit-text-fill-color:var(--text);
  caret-color:var(--text);
  -webkit-box-shadow:0 0 0 1000px var(--bg2) inset;
  box-shadow:0 0 0 1000px var(--bg2) inset;
  transition:background-color 100000s ease 0s;
}
/* campo de contraseña con botón de mostrar/ocultar (ojo) */
.pw-field{position:relative}
.pw-field input{padding-right:50px}
.pw-eye{position:absolute;right:6px;top:calc(50% + 4px);transform:translateY(-50%);background:none;border:0;
  font-size:18px;cursor:pointer;padding:8px;line-height:1;color:var(--muted)}
.pw-eye:active{transform:translateY(-50%) scale(.9)}
label{font-size:12px;color:var(--muted);margin-top:16px;display:block;text-transform:uppercase;letter-spacing:1px;font-weight:600}
/* términos y condiciones (registro) */
.terms-box{max-height:160px;overflow-y:auto;background:var(--glass);border:1px solid var(--line);border-radius:14px;
  padding:14px;margin-top:8px;font-size:13px;color:var(--muted);line-height:1.5}
.terms-box p{margin:0 0 10px}
label.check{display:flex;align-items:center;gap:10px;text-transform:none;letter-spacing:0;font-size:14px;color:var(--text);font-weight:500;cursor:pointer}
label.check input{width:auto;margin:0;flex-shrink:0}

/* cards */
.card{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:14px 0;backdrop-filter:blur(10px);flex-shrink:0}
.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.tag{background:var(--glass);color:var(--muted);font-size:14px;padding:9px 16px;border-radius:999px;cursor:pointer;border:1px solid var(--line);transition:.15s}
.tag.on{background:var(--grad);color:#fff;border-color:transparent}

/* ---- OTP ---- */
.otp{display:flex;gap:10px;justify-content:center;margin-top:18px}
.otp input{width:46px;height:56px;text-align:center;font-size:24px;font-weight:700;padding:0}

/* ---- pasos de registro ---- */
.steps{display:flex;gap:6px;margin:18px 0}
.steps i{flex:1;height:4px;border-radius:2px;background:var(--line)}
.steps i.on{background:var(--grad)}

/* ---- selfie ---- */
.selfie-wrap{position:relative;width:240px;height:240px;margin:18px auto;border-radius:50%;overflow:hidden;
  border:2px solid var(--violet);box-shadow:0 0 40px -8px rgba(155,92,255,.6);background:#000}
.selfie-wrap video,.selfie-wrap img,.selfie-wrap canvas{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}

/* ---- avatar genérico ---- */
.avatar{width:48px;height:48px;border-radius:14px;background:var(--grad-soft);display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:18px;color:#fff;flex-shrink:0;border:1px solid var(--line)}
.avatar.lg{width:64px;height:64px;border-radius:18px;font-size:24px}

/* ---- HOME: lista de aliados ---- */
.venue{display:block;background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:14px 0;cursor:pointer;flex-shrink:0}
/* portada del boliche */
.venue .cover{height:160px;background:var(--grad-soft);position:relative;display:flex;align-items:flex-end;padding:14px}
.venue .cover .cover-grad{position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(8,8,15,.7))}
.venue .cover .cover-badge{position:absolute;top:12px;right:12px;background:rgba(8,8,15,.6);backdrop-filter:blur(8px);
  border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:13px;font-weight:700;color:#fff}
.venue .cover .cover-txt{position:relative;display:flex;flex-direction:column;gap:3px}
.venue .cover .name{font-size:23px;font-weight:800;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.45)}
.venue .cover .cover-sub{font-size:13px;color:rgba(255,255,255,.92);text-shadow:0 1px 6px rgba(0,0,0,.4)}
.venue .body{padding:14px}
/* par de fotos del boliche */
.venue .vphotos{display:flex;gap:8px;margin-top:12px}
.venue .vphoto{flex:1;aspect-ratio:1/1;border-radius:14px;display:flex;align-items:flex-end;padding:8px;
  font-size:11px;font-weight:600;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.55);overflow:hidden;border:1px solid var(--line)}
.venue .ig{display:flex;gap:8px;overflow-x:auto;margin-top:10px;scrollbar-width:none}
.venue .ig::-webkit-scrollbar{display:none}
.venue .ig .post{width:74px;height:74px;border-radius:12px;flex-shrink:0;background:var(--grad-soft);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted);text-align:center;padding:4px}
/* flyer de evento: banner edge-to-edge arriba de la card (compensa el padding de .card) */
.evt-flyer{width:calc(100% + 36px);height:180px;margin:-18px -18px 12px -18px;border-radius:var(--radius) var(--radius) 0 0;
  background-size:cover;background-position:center}

/* banner publicidad */
.ad-banner{border-radius:var(--radius);padding:16px;margin:14px 0;border:1px dashed rgba(0,229,255,.4);
  background:linear-gradient(135deg,rgba(0,229,255,.10),rgba(155,92,255,.10));flex-shrink:0}
.ad-banner .tag-ad{font-size:10px;letter-spacing:1px;color:var(--cyan);text-transform:uppercase;font-weight:700}

/* ---- DECK ---- */
.deck{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:60vh}
.deck-card{position:absolute;width:100%;max-width:360px;height:62vh;max-height:520px;border-radius:28px;overflow:hidden;
  border:1px solid var(--line);background:var(--grad-soft);box-shadow:0 30px 80px -30px rgba(0,0,0,.8);
  display:flex;flex-direction:column;justify-content:flex-end}
.deck-card .photo{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:96px;font-weight:800;
  color:rgba(255,255,255,.85);background:var(--grad-soft)}
.deck-card .info{position:relative;padding:22px;background:linear-gradient(transparent,rgba(8,8,15,.92))}
.deck-card .report-chip{position:absolute;top:14px;right:14px;z-index:7;cursor:pointer;
  background:rgba(8,8,15,.5);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(4px);
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%}
.deck-card .info h2{font-size:26px}
.deck-card.ad{background:linear-gradient(135deg,rgba(0,229,255,.16),rgba(155,92,255,.16));align-items:center;justify-content:center;text-align:center;padding:24px}
.deck-actions{position:absolute;bottom:-2px;display:flex;gap:26px;z-index:5}
.circle{width:64px;height:64px;border-radius:50%;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px);
  font-size:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .12s}
.circle:active{transform:scale(.9)}
.circle.like{background:var(--grad);border:0;box-shadow:0 12px 30px -10px rgba(255,60,172,.7)}
.circle.super{width:54px;height:54px;background:linear-gradient(135deg,#00E5FF,#9B5CFF);border:0;box-shadow:0 12px 28px -10px rgba(0,229,255,.7)}
.empty-deck{text-align:center;padding:40px 10px}

/* ---- MATCH overlay ---- */
.overlay{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;text-align:center;padding:30px;
  background:rgba(8,8,15,.86);backdrop-filter:blur(12px)}
.overlay.show{display:flex;flex-direction:column}
.match-burst{font-size:54px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;animation:pop .4s ease}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.match-avatars{display:flex;gap:14px;justify-content:center;margin:24px 0}

/* ---- CHAT ---- */
.chat-head{display:flex;align-items:center;gap:12px;padding:14px 2px;position:sticky;top:0;z-index:6;
  background:linear-gradient(var(--bg),rgba(8,8,15,.7))}
.night-timer{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700;color:var(--cyan)}
.ig-prompt{background:linear-gradient(135deg,rgba(255,194,71,.16),rgba(255,60,172,.12));border:1px solid rgba(255,194,71,.35);
  border-radius:16px;padding:12px 14px;margin:10px 0;font-size:14px}
.msgs{flex:1;display:flex;flex-direction:column;gap:8px;padding:10px 0}
.bubble{max-width:78%;padding:11px 15px;border-radius:18px;font-size:15px;line-height:1.35}
.bubble.me{align-self:flex-end;background:var(--grad);color:#fff;border-bottom-right-radius:5px}
.bubble.them{align-self:flex-start;background:var(--glass);border:1px solid var(--line);border-bottom-left-radius:5px}
.chat-input{display:flex;gap:8px;padding:10px 0;position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 30%)}
.chat-input input{margin-top:0}
.chat-input button{width:52px;flex-shrink:0;border:0;border-radius:16px;background:var(--grad);color:#fff;font-size:20px;cursor:pointer}

/* ---- navbar inferior ---- */
.nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:440px;display:flex;justify-content:space-around;
  padding:10px 0 calc(10px + env(safe-area-inset-bottom));background:rgba(8,8,15,.85);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:9}
.nav a{flex:1;text-align:center;color:var(--dim);font-size:11px;font-weight:600;cursor:pointer;text-decoration:none;padding:4px}
.nav a .ic{font-size:22px;display:block;margin-bottom:2px}
.nav a.on{color:var(--text)}
.nav a.on .ic{filter:drop-shadow(0 0 8px rgba(255,60,172,.7))}

/* ---- estado noche cerrada ---- */
.night-over{text-align:center;padding:60px 20px}
.night-over .moon{font-size:64px;margin-bottom:10px}

/* ---- anti-captura: cortina al perder foco ---- */
#privacy-shield{position:fixed;inset:0;z-index:100;display:none;flex-direction:column;align-items:center;justify-content:center;
  background:var(--bg);text-align:center;gap:10px}
#privacy-shield.show{display:flex}
body.shielded .sensitive{filter:blur(22px)}

/* ---- SUPERADMIN ---- */
.sa-tabs{display:flex;gap:6px;overflow-x:auto;padding:6px 0 12px;scrollbar-width:none;position:sticky;top:54px;z-index:7;background:var(--bg)}
.sa-tabs::-webkit-scrollbar{display:none}
.sa-tab{flex-shrink:0;background:var(--glass);border:1px solid var(--line);color:var(--muted);font-weight:600;font-size:14px;
  padding:9px 16px;border-radius:999px;cursor:pointer;position:relative}
.sa-tab.on{background:var(--grad);color:#fff;border-color:transparent}
.sa-tab .dot{display:inline-block;background:var(--danger);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:0 6px;margin-left:4px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0;flex-shrink:0}
.stat{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-align:center;backdrop-filter:blur(10px)}
.stat .num{font-size:34px;font-weight:800;line-height:1}

/* toast */
#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--glass-2);border:1px solid var(--line);
  backdrop-filter:blur(12px);padding:12px 18px;border-radius:14px;font-size:14px;z-index:60;opacity:0;transition:.25s;pointer-events:none;max-width:90%}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* ---- LIKES recibidos (Pro VIP) ---- */
.likes-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;flex-shrink:0}
.like-card{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;backdrop-filter:blur(10px);text-align:center;padding-bottom:12px;position:relative}
.like-card.super{border-color:rgba(0,229,255,.6);box-shadow:0 0 0 1px rgba(0,229,255,.3)}
.like-card .super-tag{background:linear-gradient(135deg,#00E5FF,#9B5CFF);color:#06121a;font-size:11px;font-weight:800;padding:4px;letter-spacing:.5px}
.like-photo{height:130px;display:flex;align-items:center;justify-content:center;font-size:48px;font-weight:800;color:#fff;background:var(--grad-soft);background-size:cover;background-position:center}
.like-info{padding:10px 8px 4px;font-size:14px}
.like-actions{display:flex;gap:14px;justify-content:center;margin-top:4px}
.like-actions .circle{width:46px;height:46px;font-size:20px}

/* ---- fotos de perfil ---- */
.photos-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:8px}
.photo-slot{aspect-ratio:3/4;border-radius:16px;border:1px dashed var(--line);background:var(--glass);display:flex;align-items:center;justify-content:center;font-size:30px;color:var(--muted);cursor:pointer;background-size:cover;background-position:center;position:relative}
.photo-slot.filled{border-style:solid;color:transparent}
.photo-slot .rm{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;background:rgba(8,8,15,.72);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer}

/* ---- swipe gesture (arrastrar la card) ---- */
.deck-card{touch-action:none;cursor:grab;will-change:transform}
.deck-card:active{cursor:grabbing}
.swipe-badge{position:absolute;top:26px;z-index:6;font-weight:800;font-size:26px;letter-spacing:2px;padding:5px 14px;border-radius:12px;border:3px solid;opacity:0;pointer-events:none;background:rgba(8,8,15,.35)}
.swipe-badge.swipe-like{left:18px;color:var(--ok);border-color:var(--ok);transform:rotate(-12deg)}
.swipe-badge.swipe-nope{right:18px;color:var(--danger);border-color:var(--danger);transform:rotate(12deg)}

/* ============================================================================
 * SPLASH de arranque — bola de espejos girando 🪩
 * ==========================================================================*/
#splash{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  background:radial-gradient(120% 90% at 50% 28%,rgba(155,92,255,.20),transparent 60%),var(--bg);transition:opacity .55s ease}
#splash.hide{opacity:0;pointer-events:none}
.disco-wrap{position:relative;display:flex;flex-direction:column;align-items:center;z-index:2}
.disco-string{width:2px;height:34px;background:linear-gradient(rgba(255,255,255,.4),transparent)}
/* bola de espejos VIOLETA en SVG (facetas esféricas 3D + destellos que giran) — GRANDE, liviana */
.disco{width:min(420px,88vw);height:auto;display:block;
  filter:drop-shadow(0 0 60px rgba(155,92,255,.7)) drop-shadow(0 0 110px rgba(255,60,172,.45));
  animation:discobob 5s ease-in-out infinite}
.disco-floor{width:60%;height:18px;border-radius:50%;margin-top:14px;
  background:radial-gradient(closest-side,rgba(255,60,172,.5),transparent);animation:floorpulse 5s ease-in-out infinite}
.splash-brand{margin-top:6px;animation:splashpulse 2.4s ease-in-out infinite}
.splash-tag{color:var(--muted);font-size:14px}
#splash .spark{position:absolute;width:10px;height:10px;border-radius:50%;filter:blur(1px);opacity:0;animation:flick 1.7s ease-in-out infinite}
#splash .spark.s1{top:22%;left:22%;background:var(--pink)}
#splash .spark.s2{top:26%;right:22%;background:#D846EF;animation-delay:.4s}
#splash .spark.s3{top:16%;left:52%;background:var(--violet);animation-delay:.8s}
#splash .spark.s4{top:40%;right:30%;background:var(--pink);animation-delay:1.2s}
@keyframes discobob{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes splashpulse{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}
@keyframes floorpulse{0%,100%{opacity:.4;transform:scaleX(.8)}50%{opacity:.85;transform:scaleX(1.1)}}
@keyframes flick{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.4)}}
@media(prefers-reduced-motion:reduce){.disco,.spark,.splash-brand,.disco-floor{animation:none}}

/* reflejos de luz de la bola de espejos (barren la sala como un boliche disco) */
#splash{overflow:hidden}
.disco-wrap,.splash-brand,.splash-tag,#splash .spark{position:relative;z-index:2}
.disco-lights{position:absolute;top:46%;left:50%;width:7px;height:7px;border-radius:50%;z-index:0;filter:blur(3px);
  transform:translate(-50%,-50%);animation:lightsorbit 7s linear infinite,lightsflick 2.4s ease-in-out infinite;
  box-shadow:
    -260px -190px 30px 12px rgba(255,60,172,.55),
    250px -150px 30px 12px rgba(155,92,255,.55),
    -210px 220px 30px 12px rgba(216,70,239,.55),
    230px 200px 30px 12px rgba(255,60,172,.5),
    15px -290px 26px 10px rgba(155,92,255,.45),
    -300px 45px 26px 10px rgba(255,60,172,.45),
    295px 55px 26px 10px rgba(216,70,239,.45),
    -55px 300px 26px 10px rgba(155,92,255,.45)}
.disco-lights.two{animation:lightsorbit 11s linear infinite reverse,lightsflick 3.1s ease-in-out infinite;
  box-shadow:
    -160px -260px 34px 11px rgba(216,70,239,.4),
    190px -230px 34px 11px rgba(255,60,172,.42),
    -290px -60px 28px 10px rgba(155,92,255,.4),
    300px -30px 28px 10px rgba(255,60,172,.4),
    -130px 290px 30px 10px rgba(155,92,255,.38),
    175px 275px 30px 10px rgba(216,70,239,.4)}
@keyframes lightsorbit{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes lightsflick{0%,100%{opacity:.55}45%{opacity:.95}70%{opacity:.4}}
@media(prefers-reduced-motion:reduce){.disco-lights{animation:none}}
