/* RIVO Auth Gate - no toca el diseño interno del simulador */
body.auth-checking > .rivo-main-shell,
body.auth-locked > .rivo-main-shell { display: none !important; }
body.auth-unlocked > .rivo-main-shell { display: block !important; }

.rivo-auth-gate {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 92px 18px 18px;
  background:
    radial-gradient(circle at top left, rgba(16,185,129,.18), transparent 32%),
    radial-gradient(circle at top right, rgba(20,184,166,.10), transparent 30%),
    #020617;
  color: #e5e7eb;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
body.auth-unlocked .rivo-auth-gate { display: none !important; }

/* Mientras Firebase valida si existe sesión guardada, no se muestra el formulario de login.
   Evita el efecto visual de pedir login cuando en realidad ya había sesión activa. */
body.auth-checking .rivo-auth-card { display: none !important; }
body.auth-checking .rivo-auth-gate {
  display: flex !important;
}
body.auth-checking .rivo-auth-gate::after {
  content: "Validando sesión RIVO...";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 18px;
  border-radius: 999px;
  border: 1px solid rgba(16,185,129,.35);
  background: rgba(15,23,42,.82);
  color: #34d399;
  font-size: .82rem;
  font-weight: 900;
  box-shadow: 0 22px 60px rgba(0,0,0,.32);
}

.rivo-auth-topbar {
  position: fixed;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  width: min(94vw, 760px);
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid rgba(16,185,129,.32);
  border-radius: 18px;
  background: rgba(15, 23, 42, .78);
  box-shadow: 0 20px 60px rgba(0,0,0,.36);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.rivo-auth-topbar-icon {
  width: 42px;
  height: 42px;
  flex: 0 0 auto;
}
.rivo-auth-topbar strong {
  display: block;
  color: #fff;
  font-size: .95rem;
  line-height: 1.1;
  font-weight: 950;
  letter-spacing: -.02em;
}
.rivo-auth-topbar span {
  display: block;
  margin-top: 3px;
  color: #94a3b8;
  font-size: .74rem;
  line-height: 1.15;
}

.rivo-auth-card {
  width: min(94vw, 430px);
  border: 1px solid rgba(16,185,129,.36);
  border-radius: 22px;
  padding: 22px;
  background: rgba(15,23,42,.96);
  box-shadow: 0 30px 80px rgba(0,0,0,.55);
}
.rivo-auth-brand { display:flex; gap:14px; align-items:center; margin-bottom:16px; }
.rivo-auth-mark {
  width:58px;
  height:58px;
  border-radius:18px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(16,185,129,.12);
  border: 1px solid rgba(16,185,129,.38);
  box-shadow: 0 0 30px rgba(16,185,129,.24);
  overflow: hidden;
}
.rivo-auth-mark img { width: 52px; height: 52px; display: block; }
.rivo-auth-brand h1 { margin:0; color:#fff; font-size:1.15rem; line-height:1.1; font-weight:900; }
.rivo-auth-brand p { margin:.25rem 0 0; color:#94a3b8; font-size:.78rem; }
.rivo-auth-notice { border:1px solid rgba(148,163,184,.22); background:rgba(2,6,23,.55); color:#cbd5e1; border-radius:14px; padding:10px 12px; font-size:.76rem; line-height:1.35; margin-bottom:14px; }
.rivo-auth-notice[data-type="error"] { border-color: rgba(248,113,113,.42); color:#fecaca; background:rgba(127,29,29,.28); }

.rivo-auth-google {
  width: 100%;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border-radius: 999px;
  border: 1px solid rgba(148,163,184,.30);
  background: #fff;
  color: #0f172a;
  font-size: .82rem;
  font-weight: 900;
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.rivo-auth-google:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 30px rgba(0,0,0,.25);
  border-color: rgba(16,185,129,.52);
}
.rivo-google-icon {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  font-weight: 950;
  font-size: .78rem;
  background: conic-gradient(from -45deg, #4285f4 0 25%, #34a853 0 50%, #fbbc05 0 75%, #ea4335 0 100%);
}
.rivo-auth-separator {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 13px 0;
  color: #64748b;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.rivo-auth-separator::before,
.rivo-auth-separator::after {
  content: "";
  height: 1px;
  flex: 1;
  background: rgba(51,65,85,.78);
}

.rivo-auth-tabs { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:14px; }
.rivo-auth-tabs button { border:1px solid rgba(51,65,85,.9); border-radius:999px; background:#020617; color:#94a3b8; height:38px; font-size:.78rem; font-weight:850; cursor:pointer; }
.rivo-auth-tabs button.active { background:#10b981; color:#02130e; border-color:#10b981; }
.rivo-auth-form { display:flex; flex-direction:column; gap:8px; }
.rivo-auth-form.hidden { display:none !important; }
.rivo-auth-form label { font-size:.72rem; color:#cbd5e1; font-weight:700; }
.rivo-auth-form input { height:42px; border-radius:12px; background:#020617; color:#fff; border:1px solid #334155; padding:0 12px; outline:none; }
.rivo-auth-form input:focus { border-color:#10b981; box-shadow:0 0 0 3px rgba(16,185,129,.10); }
.rivo-auth-primary { height:42px; margin-top:8px; border:0; border-radius:12px; background:#10b981; color:#02130e; font-weight:950; cursor:pointer; }
.rivo-auth-link { border:0; background:transparent; color:#34d399; font-size:.78rem; cursor:pointer; padding:8px 0 0; }
.rivo-auth-footer { margin-top:14px; padding-top:12px; border-top:1px solid rgba(51,65,85,.7); color:#94a3b8; font-size:.76rem; text-align:center; }
.rivo-auth-footer strong { color:#34d399; }
.rivo-logout-btn,
.rivo-logout-btn.hidden { display:none !important; }

@media screen and (max-width: 520px) {
  .rivo-auth-gate { padding-top: 84px; align-items: flex-start; overflow-y: auto; }
  .rivo-auth-topbar { top: 10px; width: calc(100vw - 22px); min-height: 52px; padding: 8px 10px; }
  .rivo-auth-topbar-icon { width: 36px; height: 36px; }
  .rivo-auth-topbar strong { font-size: .86rem; }
  .rivo-auth-topbar span { font-size: .66rem; }
  .rivo-auth-card { padding: 18px; border-radius: 18px; }
}

@media print {
  .rivo-auth-gate,
  .rivo-logout-btn { display:none !important; }
  body.auth-checking > .rivo-main-shell,
  body.auth-locked > .rivo-main-shell { display:block !important; }
}
