/* ============================================================
   LEXOIA COLOMBIA — Premium Design System v2.0
   Paleta: Azul-Negro Profundo + Oro Colombiano + Violeta Legal
   ============================================================ */

@layer tokens, reset, components, utilities;

/* ── Variables & Tokens ──────────────────────────────────── */
@layer tokens {
:root {
  /* Tipografía */
  --font-sans:  'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-serif: Georgia, "Times New Roman", serif;
  --font-mono:  'JetBrains Mono', "Courier New", monospace;

  /* Fondos (Tech Light & Slate) */
  --bg-void:      #F5F7FB;   /* Tech cool gray/blue */
  --bg-primary:   #FFFFFF;   /* Fondo principal de contenido */
  --bg-secondary: #0F172A;   /* Slate Deep (Sidebar oscuro elegante) */
  --bg-tertiary:  #1E293B;   /* Slate Lighter (Hover en sidebar) */
  --bg-elevated:  rgba(255, 255, 255, 0.92); /* Cards elevadas */
  --bg-input:     #FFFFFF;   /* Blanco puro para inputs */

  /* Oro Tecnológico / Vibrant Gold */
  --gold-100: #FEF3C7;
  --gold-300: #FCD34D;
  --gold-500: #C2872D;   /* Dorado sobrio de producto */
  --gold-700: #A96816;
  --gold-900: #78350F;

  /* Acentos (Slate Blue para el usuario) */
  --violet-500: #293245; /* Reemplaza el violeta con un azul pizarra corporativo */
  --violet-700: #1B2130;
  --info-500: #3B82F6;
  --info-600: #2563EB;
  --info-700: #1D4ED8;

  /* Verde Estado */
  --green-400: #34D399;
  --green-500: #059669;

  /* Rojo Alerta */
  --red-400: #EF4444;

  /* Voz IA */
  --voice-listening: #0EA5E9;
  --voice-listening-soft: rgba(14, 165, 233, 0.22);
  --voice-speaking: var(--gold-500);
  --voice-speaking-soft: rgba(217, 119, 6, 0.24);

  /* Texto */
  --text-primary:   #0F172A;   /* Slate-900 (Casi negro elegante) */
  --text-secondary: #475569;   /* Slate-600 (Gris oscuro legible) */
  --text-muted:     #64748B;   /* Slate-500 (Gris medio, no tan opaco) */
  --text-gold:      #92400E;   /* Dorado/Amber oscuro más legible sobre blanco */
  --text-on-dark:   #F8FAFC;   /* Slate-50 para el sidebar Slate */
  --text-on-dark-muted: rgba(247, 245, 240, 0.7); /* Texto secundario legible para el sidebar */

  /* Bordes */
  --border-subtle:  rgba(27, 30, 40, 0.08);
  --border-medium:  rgba(27, 30, 40, 0.15);
  --border-strong:  rgba(181, 145, 74, 0.4); /* Borde dorado */
  --border-glass:   rgba(255, 255, 255, 0.06);

  /* Glassmorphism */
  --glass-bg:    rgba(244, 247, 251, 0.85); /* Glass claro tech para el header */
  --glass-dark:  rgba(15, 23, 42, 0.85); /* Glass oscuro para sidebar/móvil */
  --glass-light: rgba(255, 255, 255, 0.5);
  --glass-blur:  blur(20px);

  /* Superficies de producto */
  --surface-soft: #F8FAFC;
  --surface-warm: #FFFBF3;
  --surface-blue: #F1F7FF;
  --accent-soft: rgba(194, 135, 45, 0.12);

  /* Sombras */
  --shadow-sm:      0 2px 8px  rgba(0, 0, 0, 0.04);
  --shadow-md:      0 8px 24px rgba(0, 0, 0, 0.06);
  --shadow-lg:      0 20px 50px rgba(0, 0, 0, 0.08);
  --shadow-gold:    0 0 15px rgba(181, 145, 74, 0.15);
  --shadow-gold-lg: 0 0 30px rgba(181, 145, 74, 0.2);
  --shadow-violet:  0 8px 24px rgba(41, 50, 69, 0.15);
  --shadow-card:    0 18px 52px rgba(15, 23, 42, 0.08);
  --shadow-soft:    0 10px 30px rgba(15, 23, 42, 0.06);
  --shadow-focus:   0 0 0 4px rgba(194, 135, 45, 0.14);

  /* Radios */
  --radius-sm: 6px;
  --radius-md: 16px;
  --radius-lg: 20px;
  --radius-xl: 24px;
  --radius-full: 9999px;

  /* Transiciones */
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast:   150ms;
  --duration-normal: 260ms;
  --duration-slow:   420ms;
}

/* ── Tema Oscuro (Dark Mode) ──────────────────────────────────── */
[data-theme="dark"] {
  --bg-void:      #0B1120;
  --bg-primary:   #111827;
  --bg-secondary: #020617;   /* Sidebar ultra oscuro */
  --bg-tertiary:  #1E293B;   /* Hover en oscuro */
  --bg-elevated:  rgba(17, 24, 39, 0.96);
  --bg-input:     #111827;

  --surface-soft: #172033;
  --surface-warm: rgba(194, 135, 45, 0.12);
  --surface-blue: rgba(59, 130, 246, 0.10);

  --text-primary:   #F8FAFC;   /* Texto blanco */
  --text-secondary: #CBD5E1;   /* Texto gris claro */
  --text-muted:     #94A3B8;   /* Texto gris opaco */
  --text-gold:      #FCD34D;   /* Dorado claro legible en oscuro */

  --border-subtle:  rgba(255, 255, 255, 0.1);
  --border-medium:  rgba(255, 255, 255, 0.2);
  
  --glass-bg:       rgba(15, 23, 42, 0.85); /* Glass oscuro para header */
  --glass-light:    rgba(255, 255, 255, 0.1);
}
}

@layer components {
[data-theme="dark"] .message-bubble-wrapper.assistant .message-bubble {
  background: var(--bg-tertiary);
  color: var(--text-primary);
  border-color: var(--border-medium);
}
}

/* ── Reset ───────────────────────────────────────────────── */
@layer reset {
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}

button, a {
  user-select: none;
  -webkit-user-select: none;
  outline: none;
}

html, body {
  height: 100%;
  height: 100dvh;
  width: 100%;
  background-color: var(--bg-void);
  color: var(--text-primary);
  font-family: var(--font-sans);
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── Scrollbar ───────────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(201, 168, 76, 0.15);
  border-radius: var(--radius-full);
}
::-webkit-scrollbar-thumb:hover { background: var(--gold-500); }
}

/* ── Fondo de la App con Gradientes Ambientales ──────────── */
@layer components {
.route-app .landing-screen {
  display: none;
}

.app-container {
  display: flex;
  height: 100vh;
  height: 100dvh;
  width: 100vw;
  position: relative;
  background:
    radial-gradient(ellipse 60% 40% at 80% 0%,   rgba(109, 92, 232, 0.07) 0%, transparent 70%),
    radial-gradient(ellipse 50% 60% at 0%  100%, rgba(201, 168, 76, 0.07) 0%, transparent 70%),
    var(--bg-primary);
}

/* ════════════════════════════════════════════════════════════
   SIDEBAR
   ════════════════════════════════════════════════════════════ */
.sidebar {
  width: 288px;
  min-width: 288px;
  background: var(--bg-primary);
  border-right: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: left var(--duration-normal) var(--ease-out);
  z-index: 15;
  position: relative;
}

/* Línea decorativa dorada superior del sidebar */
/* sidebar gold top line removed */

/* ── Perfil de Usuario ────────────────────────────────────── */
.user-profile {
  padding: 14px 16px;
  padding-bottom: max(14px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
  background: var(--bg-void);
  position: relative;
}

.user-profile-header {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.user-profile-header:focus-visible {
  border-radius: var(--radius-md);
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.28);
}

.user-profile-more-icon {
  flex-shrink: 0;
}

.user-avatar {
  width: 38px;
  height: 38px;
  border-radius: var(--radius-full);
  background: linear-gradient(135deg, var(--gold-900), var(--gold-700));
  border: 1.5px solid var(--gold-500);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  box-shadow: 0 0 10px rgba(201, 168, 76, 0.2);
  flex-shrink: 0;
}

.user-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  overflow: hidden;
}

.user-email-display {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-primary);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  letter-spacing: 0.2px;
}

.user-status-badge {
  font-size: 0.68rem;
  color: var(--green-400);
  font-weight: 500;
  letter-spacing: 0.3px;
}

/* ── Botón Nueva Consulta ───────────────────────────────── */
.new-chat-container {
  padding: 16px 16px 12px 16px;
}

.btn-new-chat {
  width: 100%;
  padding: 11px 16px;
  background: var(--bg-primary);
  border: 1px solid var(--border-medium);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all var(--duration-fast) ease;
}

.btn-new-chat:hover {
  background: var(--bg-void);
  color: var(--text-primary);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1.5px);
}

.btn-new-chat:active {
  transform: translateY(0);
}

.btn-new-chat svg {
  flex-shrink: 0;
}

/* ── Dropdown de Perfil (Estilo Moderno) ──────────────────── */
.profile-dropdown {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 12px;
  right: 12px;
  background: var(--bg-primary);
  border: 1px solid var(--border-medium);
  border-radius: var(--radius-md);
  padding: 6px;
  box-shadow: var(--shadow-lg), 0 12px 24px rgba(0, 0, 0, 0.4);
  display: flex;
  flex-direction: column;
  gap: 2px;
  z-index: 50;
  animation: slideUpDropdown 0.18s var(--ease-out);
}

.profile-dropdown[hidden] {
  display: none;
}

@keyframes slideUpDropdown {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.dropdown-item {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 0.82rem;
  padding: 9px 12px;
  text-align: left;
  border-radius: var(--radius-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: all var(--duration-fast) ease;
  width: 100%;
}

.dropdown-item span {
  font-size: 0.95rem;
  line-height: 1;
}

.dropdown-item:hover {
  background: var(--bg-void);
  color: var(--text-primary);
}

.dropdown-item.logout {
  color: #F87171;
}

.dropdown-item.logout:hover {
  background: rgba(248, 113, 113, 0.08);
  color: #F87171;
}

.dropdown-divider {
  border: none;
  border-top: 1px solid var(--border-subtle);
  margin: 4px 0;
}

/* ── Logo del Sidebar ────────────────────────────────────── */
.sidebar-header {
  padding: 20px;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
  align-items: center;
  gap: 13px;
}

.logo-icon {
  width: 42px;
  height: 42px;
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, var(--gold-500) 0%, var(--gold-700) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  box-shadow: var(--shadow-gold), inset 0 1px 0 rgba(255,255,255,0.15);
  animation: logo-breathe 4s ease-in-out infinite;
  flex-shrink: 0;
  border: 1px solid rgba(255,255,255,0.1);
}

@keyframes logo-breathe {
  0%, 100% { box-shadow: var(--shadow-gold); }
  50%       { box-shadow: var(--shadow-gold-lg); }
}

.logo-text h1 {
  font-family: var(--font-serif);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  color: var(--text-primary);
  line-height: 1.2;
}

.logo-text span {
  font-family: var(--font-sans);
  font-size: 0.7rem;
  color: var(--gold-500);
  text-transform: uppercase;
  letter-spacing: 2px;
  font-weight: 500;
  display: block;
  margin-top: 2px;
}

/* ── Menú del Sidebar ────────────────────────────────────── */
.sidebar-content {
  flex: 1;
  overflow-y: auto;
  padding: 16px 12px;
}

.menu-section {
  margin-bottom: 28px;
}

.menu-title {
  font-size: 0.67rem;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 1.8px;
  margin-bottom: 8px;
  padding-left: 10px;
  font-weight: 600;
}

.menu-button {
  width: 100%;
  padding: 11px 14px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  color: var(--text-secondary);
  text-align: left;
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: 400;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: all var(--duration-fast) ease;
  position: relative;
  overflow: hidden;
  letter-spacing: 0.1px;
}

.menu-button::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%) scaleY(0);
  width: 3px;
  height: 65%;
  background: var(--gold-500);
  border-radius: 0 3px 3px 0;
  transition: transform var(--duration-fast) var(--ease-spring);
}

.menu-button:hover {
  background: var(--bg-void);
  color: var(--text-primary);
  border-color: var(--border-medium);
}

.menu-button.active {
  background: rgba(217, 119, 6, 0.08);
  border: 1px solid rgba(217, 119, 6, 0.18);
  color: var(--gold-500);
  font-weight: 500;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02);
}

.menu-button.active::before {
  transform: translateY(-50%) scaleY(1);
}

.menu-button span {
  font-size: 1rem;
  line-height: 1;
  flex-shrink: 0;
}

/* ── Historial en Acordeón ───────────────────────────────── */
.menu-item-group {
  display: flex;
  flex-direction: column;
  margin-bottom: 2px;
}

.history-list {
  display: flex;
  flex-direction: column;
  padding-left: 36px;
  padding-right: 8px;
  padding-top: 4px;
  padding-bottom: 8px;
  gap: 4px;
  animation: slideDown 0.3s var(--ease-out);
}

.history-item {
  width: 100%;
  border: 0;
  background: transparent;
  font-family: inherit;
  text-align: left;
  color: var(--text-secondary);
  font-size: 0.75rem;
  padding: 6px 8px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: all var(--duration-fast) ease;
}

.history-item:hover {
  background: var(--bg-void);
  color: var(--text-primary);
}

.case-history-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  white-space: normal;
}

.case-history-item.active {
  background: rgba(212, 175, 55, 0.1);
  color: var(--text-primary);
}

.history-title {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 650;
}

.history-meta {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.25;
}

.history-empty {
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.35;
  padding: 6px 8px;
}

.history-item.new-chat {
  color: var(--gold-500);
  margin-top: 4px;
  border-top: 1px dashed rgba(255,255,255,0.1);
  padding-top: 8px;
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-5px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ── Footer del Sidebar ──────────────────────────────────── */
.sidebar-footer {
  padding: 14px 16px;
  border-top: 1px solid var(--border-subtle);
  font-size: 0.7rem;
  color: var(--text-muted);
  text-align: center;
  line-height: 1.6;
  letter-spacing: 0.2px;
}

/* ── Overlay móvil ───────────────────────────────────────── */
.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(4, 5, 12, 0.75);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 12;
  animation: fadeIn var(--duration-fast) ease;
}

.sidebar-overlay.open { display: block; }

/* ════════════════════════════════════════════════════════════
   MAIN CONTENT
   ════════════════════════════════════════════════════════════ */
.main-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  position: relative;
}

/* ── Chat Header ─────────────────────────────────────────── */
.chat-header-modern {
  height: 64px;
  padding: 0 20px;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  z-index: 5;
  flex-shrink: 0;
}

.header-left, .header-right {
  display: flex;
  align-items: center;
  gap: 12px;
}

.header-brand-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 1.15rem;
  font-weight: 650;
  letter-spacing: 0;
}

.header-brand-title .badge-pro {
  padding: 2px 6px;
  border-radius: 4px;
  background: linear-gradient(135deg, var(--gold-300), var(--gold-500));
  color: #111827;
  font-size: 0.65rem;
  font-weight: 850;
  letter-spacing: 0.08em;
}

.header-icon-btn {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  transition: color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}

.header-icon-btn:hover {
  background: rgba(217, 119, 6, 0.1);
  color: var(--text-primary);
}

.header-icon-btn:focus-visible,
.header-tools-btn:focus-visible {
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.26);
}

.app-icon {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 18px;
  color: currentColor;
}

.app-icon .lucide-icon,
.attach-icon-bubble .lucide-icon {
  width: 100%;
  height: 100%;
  display: block;
}

.dropdown-item .app-icon {
  color: var(--text-muted);
}

.dropdown-item:hover .app-icon {
  color: var(--text-primary);
}

.header-tools-btn {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 12px;
  border: 1px solid rgba(217, 119, 6, 0.28);
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(217,119,6,0.13), rgba(255,255,255,0.72));
  color: var(--text-primary);
  cursor: pointer;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 850;
  box-shadow: var(--shadow-sm);
  transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.header-tools-btn:hover {
  transform: translateY(-1px);
  border-color: rgba(217, 119, 6, 0.48);
}

[data-theme="dark"] .header-tools-btn {
  background: linear-gradient(135deg, rgba(217,119,6,0.25), rgba(30,41,59,0.84));
}

.mobile-menu-toggle-modern {
  display: none;
  background: transparent;
  border: none;
  color: var(--text-primary);
  cursor: pointer;
  padding: 6px;
  border-radius: 8px;
  transition: background var(--duration-fast) ease;
  flex-shrink: 0;
}

.mobile-menu-toggle-modern:hover { background: rgba(0,0,0,0.05); }

.chat-header h2 {
  font-family: var(--font-serif);
  font-size: 1.15rem;
  color: var(--text-gold);
  font-weight: 700;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.status-indicator {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.78rem;
  color: var(--text-secondary);
  margin-top: 3px;
}

.status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--green-500);
  box-shadow: 0 0 6px var(--green-500);
  animation: status-pulse 2.5s ease-in-out infinite;
  flex-shrink: 0;
}

@keyframes status-pulse {
  0%, 100% { opacity: 1;   box-shadow: 0 0 6px  var(--green-500); }
  50%       { opacity: 0.7; box-shadow: 0 0 12px var(--green-500); }
}

.config-btn {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border-subtle);
  padding: 8px 16px;
  border-radius: var(--radius-full);
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: all var(--duration-fast) ease;
  white-space: nowrap;
  flex-shrink: 0;
}

.config-btn:hover {
  background: rgba(201, 168, 76, 0.08);
  border-color: var(--border-medium);
  color: var(--text-gold);
}

/* ════════════════════════════════════════════════════════════
   CHAT AREA
   ════════════════════════════════════════════════════════════ */
.chat-area {
  flex: 1;
  overflow-y: auto;
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* ── Pantalla de Bienvenida ──────────────────────────────── */
.welcome-screen {
  max-width: 680px;
  width: 100%;
  margin: auto;
  text-align: center;
  padding: 48px 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  animation: fadeUp var(--duration-slow) var(--ease-out);
}

.welcome-logo {
  width: 88px;
  height: 88px;
  border-radius: 24px;
  background: linear-gradient(145deg, var(--gold-500) 0%, var(--gold-700) 60%, #7A5A1E 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 44px;
  box-shadow: var(--shadow-gold-lg), inset 0 1px 0 rgba(255,255,255,0.2);
  border: 1px solid rgba(255,255,255,0.12);
  position: relative;
  animation: logo-breathe 4s ease-in-out infinite;
}

.welcome-screen h2 {
  font-family: var(--font-serif);
  font-size: 2rem;
  font-weight: 800;
  color: var(--text-primary);
  line-height: 1.25;
  letter-spacing: -0.5px;
}

.welcome-screen h2 span { color: var(--text-gold); }

.welcome-screen p {
  color: var(--text-secondary);
  font-size: 0.975rem;
  line-height: 1.7;
  max-width: 520px;
}

.suggestions-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  width: 100%;
  margin-top: 8px;
}

.suggestion-card {
  background: linear-gradient(135deg, var(--surface-soft), var(--bg-primary));
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 18px;
  text-align: left;
  cursor: pointer;
  transition: all var(--duration-normal) var(--ease-out);
  display: flex;
  flex-direction: column;
  gap: 7px;
  position: relative;
  overflow: hidden;
}

.suggestion-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(201, 168, 76, 0.06), transparent);
  opacity: 0;
  transition: opacity var(--duration-normal) ease;
}

.suggestion-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-medium);
  box-shadow: var(--shadow-md), var(--shadow-gold);
}

.suggestion-card:hover::before { opacity: 1; }

.suggestion-icon { font-size: 1.6rem; line-height: 1; }

.suggestion-title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text-primary);
  letter-spacing: 0.1px;
}

.suggestion-desc {
  font-size: 0.78rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

/* ════════════════════════════════════════════════════════════
   BURBUJAS DE CHAT
   ════════════════════════════════════════════════════════════ */
.message-bubble-wrapper {
  display: flex;
  width: 100%;
  align-items: flex-end;
  gap: 10px;
  animation: pop-in var(--duration-normal) var(--ease-spring);
}

.message-bubble-wrapper.user     { justify-content: flex-end; }
.message-bubble-wrapper.assistant { justify-content: flex-start; }

/* Avatar del Asistente */
.assistant-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgba(201, 168, 76, 0.3);
  border: 2px solid var(--bg-primary);
  align-self: flex-end;
}

.message-bubble {
  max-width: 82%;
  padding: 16px 20px;
  line-height: 1.6;
  font-size: 0.95rem;
  position: relative;
  font-weight: 400;
  box-shadow: 0 4px 15px rgba(0,0,0,0.03);
}

/* Burbuja del Usuario */
.message-bubble-wrapper.user .message-bubble {
  background: linear-gradient(135deg, var(--violet-500), #1E293B);
  color: #FFFFFF;
  border-radius: 22px 22px 4px 22px;
}

/* Burbuja del Asistente (Estilo Burbuja Moderna) */
.message-bubble-wrapper.assistant .message-bubble {
  background: #F8FAFC;
  color: var(--text-primary);
  border-radius: 22px 22px 22px 4px;
  border: 1px solid #E2E8F0;
}

/* Formato de respuestas del asistente */
.message-bubble h1, .message-bubble h2 {
  font-family: var(--font-serif);
  color: var(--text-gold);
  margin: 14px 0 6px;
  font-size: 1.15rem;
  font-weight: 700;
}

.message-bubble h3 {
  font-family: var(--font-serif);
  color: var(--text-gold);
  margin: 12px 0 5px;
  font-size: 1rem;
  font-weight: 600;
}

.message-bubble h1:first-child,
.message-bubble h2:first-child,
.message-bubble h3:first-child { margin-top: 0; }

.message-bubble p { margin-bottom: 10px; }
.message-bubble p:last-child { margin-bottom: 0; }

.message-bubble ul, .message-bubble ol {
  margin: 4px 0 10px 16px;
}

.message-bubble li { margin-bottom: 5px; line-height: 1.55; }

.message-bubble strong { color: var(--text-gold); font-weight: 600; }

.message-bubble-wrapper.user .message-bubble strong {
  color: rgba(255,255,255,0.95);
  text-decoration: underline;
  text-decoration-color: rgba(255,255,255,0.4);
}

/* Código / artículos de ley */
.message-bubble code {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  background: rgba(201, 168, 76, 0.1);
  border: 1px solid var(--border-subtle);
  border-radius: 4px;
  padding: 1px 6px;
  color: var(--text-gold);
}

/* Timestamp */
.message-meta {
  font-size: 0.67rem;
  color: var(--text-muted);
  margin-top: 8px;
  display: block;
  text-align: right;
  letter-spacing: 0.3px;
}

.message-bubble-wrapper.user .message-meta {
  color: rgba(255,255,255,0.45);
}

.chat-legal-sources {
  margin-top: 14px;
  padding: 12px;
  border: 1px solid rgba(217, 119, 6, 0.18);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(254, 243, 199, 0.62), rgba(255, 255, 255, 0.74));
}

.chat-legal-sources-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.chat-legal-sources-header span {
  color: var(--gold-700);
  font-size: 0.76rem;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.chat-legal-sources-header small,
.chat-legal-sources-note {
  color: var(--text-muted);
  font-size: 0.68rem;
  font-weight: 700;
}

.chat-legal-sources-list {
  display: grid;
  gap: 7px;
}

.chat-legal-source-item {
  display: block;
  padding: 8px 10px;
  border: 1px solid rgba(217, 119, 6, 0.12);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--text-primary);
  text-decoration: none;
  transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease;
}

.chat-legal-source-item:hover {
  transform: translateY(-1px);
  border-color: rgba(217, 119, 6, 0.34);
  background: #fffaf0;
}

.chat-legal-source-item strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.76rem;
  line-height: 1.35;
}

.chat-legal-source-item span {
  display: block;
  margin-top: 3px;
  color: var(--text-secondary);
  font-size: 0.68rem;
  line-height: 1.25;
}

.chat-legal-sources-note {
  display: block;
  margin-top: 8px;
  line-height: 1.35;
}

.chat-official-pathways {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.chat-official-pathway {
  border: 1px solid rgba(14, 165, 233, 0.18);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(240, 249, 255, 0.82), rgba(255, 255, 255, 0.78));
  overflow: hidden;
}

.chat-official-pathway summary {
  display: grid;
  gap: 3px;
  cursor: pointer;
  padding: 12px 13px;
  list-style: none;
}

.chat-official-pathway summary::-webkit-details-marker {
  display: none;
}

.chat-official-pathway summary span {
  color: #0369a1;
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.chat-official-pathway summary strong {
  color: var(--text-primary);
  font-size: 0.84rem;
  line-height: 1.25;
}

.chat-official-pathway p,
.chat-pathway-data,
.chat-pathway-steps,
.chat-pathway-links,
.chat-pathway-warnings {
  margin: 0 13px 12px;
}

.chat-official-pathway p {
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.5;
}

.chat-pathway-data span {
  display: block;
  color: #0369a1;
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 7px;
}

.chat-pathway-data div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.chat-pathway-data small {
  display: inline-flex;
  max-width: 100%;
  padding: 5px 8px;
  border: 1px solid rgba(14, 165, 233, 0.16);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--text-secondary);
  font-size: 0.69rem;
  line-height: 1.2;
}

.chat-pathway-steps {
  padding-left: 18px;
  color: var(--text-primary);
  font-size: 0.78rem;
  line-height: 1.48;
}

.chat-pathway-steps li {
  margin-bottom: 7px;
}

.chat-pathway-links {
  display: grid;
  gap: 7px;
}

.chat-pathway-links a {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid rgba(14, 165, 233, 0.16);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.82);
  color: var(--text-primary);
  text-decoration: none;
}

.chat-pathway-links a:hover {
  border-color: rgba(14, 165, 233, 0.4);
  background: #f8fcff;
}

.chat-pathway-links span {
  overflow-wrap: anywhere;
  color: #075985;
  font-size: 0.76rem;
  font-weight: 900;
  line-height: 1.25;
}

.chat-pathway-links small {
  overflow-wrap: anywhere;
  color: var(--text-secondary);
  font-size: 0.67rem;
  line-height: 1.28;
}

.chat-pathway-warnings {
  display: grid;
  gap: 6px;
}

.chat-pathway-warnings small {
  display: block;
  padding: 8px 9px;
  border-left: 3px solid #f59e0b;
  border-radius: 10px;
  background: rgba(255, 251, 235, 0.88);
  color: #92400e;
  font-size: 0.69rem;
  line-height: 1.35;
}

.chat-source-number,
.chat-citation {
  color: var(--gold-700);
  font-weight: 900;
}

.chat-citation {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  min-height: 22px;
  margin: 0 2px;
  padding: 0 6px;
  border: 1px solid rgba(217, 119, 6, 0.22);
  border-radius: 999px;
  background: rgba(254, 243, 199, 0.82);
  color: var(--gold-700);
  text-decoration: none;
  font-size: 0.78em;
  line-height: 1;
  vertical-align: baseline;
}

.chat-citation:hover {
  border-color: rgba(217, 119, 6, 0.46);
  background: #fff7df;
}

.chat-legal-trace,
.chat-followup-box {
  margin-top: 12px;
  padding: 11px 12px;
  border: 1px solid rgba(37, 99, 235, 0.14);
  border-radius: 15px;
  background: rgba(239, 246, 255, 0.72);
}

.chat-legal-trace summary {
  cursor: pointer;
  color: var(--info-700);
  font-size: 0.76rem;
  font-weight: 900;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.chat-legal-trace summary small {
  margin-left: 6px;
  color: var(--text-muted);
  font-weight: 700;
  text-transform: none;
}

.chat-legal-trace-list {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}

.chat-legal-trace-step {
  display: grid;
  grid-template-columns: 14px 1fr;
  gap: 8px;
  align-items: start;
}

.trace-dot {
  width: 9px;
  height: 9px;
  margin-top: 5px;
  border-radius: 999px;
  background: var(--info-500);
  box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.12);
}

.chat-legal-trace-step.warning .trace-dot,
.legal-knowledge-trace-card.warning .trace-dot {
  background: #f59e0b;
  box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.14);
}

.chat-legal-trace-step.neutral .trace-dot,
.legal-knowledge-trace-card.neutral .trace-dot {
  background: #64748b;
  box-shadow: 0 0 0 4px rgba(100, 116, 139, 0.14);
}

.chat-legal-trace-step strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.74rem;
}

.chat-legal-trace-step small {
  display: block;
  margin-top: 2px;
  color: var(--text-secondary);
  font-size: 0.68rem;
  line-height: 1.35;
}

.chat-followup-box > span {
  display: block;
  margin-bottom: 8px;
  color: var(--info-700);
  font-size: 0.74rem;
  font-weight: 900;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.chat-followup-list,
.legal-knowledge-suggestions > div {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.chat-followup-chip,
.legal-knowledge-suggestions button,
.legal-source-fav,
.legal-knowledge-actions button {
  border: 1px solid rgba(37, 99, 235, 0.16);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.82);
  color: var(--info-700);
  cursor: pointer;
  font-size: 0.72rem;
  font-weight: 800;
  padding: 7px 10px;
  transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease;
}

.chat-followup-chip:hover,
.legal-knowledge-suggestions button:hover,
.legal-source-fav:hover,
.legal-knowledge-actions button:hover {
  transform: translateY(-1px);
  border-color: rgba(37, 99, 235, 0.34);
  background: #eff6ff;
}

.legal-source-fav.active {
  border-color: rgba(217, 119, 6, 0.36);
  background: rgba(254, 243, 199, 0.86);
  color: var(--gold-700);
}

.legal-check-inline {
  margin-top: 10px;
  border-style: dashed;
}

[data-theme="dark"] .chat-legal-sources {
  background: rgba(120, 53, 15, 0.18);
  border-color: rgba(252, 211, 77, 0.18);
}

[data-theme="dark"] .chat-legal-source-item {
  background: rgba(15, 23, 42, 0.68);
  border-color: rgba(252, 211, 77, 0.14);
}

[data-theme="dark"] .chat-legal-source-item:hover {
  background: rgba(30, 41, 59, 0.78);
  border-color: rgba(252, 211, 77, 0.32);
}

[data-theme="dark"] .chat-citation,
[data-theme="dark"] .chat-followup-chip,
[data-theme="dark"] .legal-knowledge-suggestions button,
[data-theme="dark"] .legal-source-fav,
[data-theme="dark"] .legal-knowledge-actions button {
  background: rgba(15, 23, 42, 0.72);
  border-color: rgba(252, 211, 77, 0.18);
}

[data-theme="dark"] .chat-legal-trace,
[data-theme="dark"] .chat-followup-box,
[data-theme="dark"] .legal-knowledge-trace {
  background: rgba(30, 41, 59, 0.62);
  border-color: rgba(96, 165, 250, 0.2);
}

[data-theme="dark"] .legal-knowledge-portals,
[data-theme="dark"] .legal-knowledge-suggestions {
  background: rgba(120, 53, 15, 0.16);
  border-color: rgba(252, 211, 77, 0.16);
}

[data-theme="dark"] .legal-knowledge-trace-card,
[data-theme="dark"] .legal-knowledge-portal-grid a {
  background: rgba(15, 23, 42, 0.68);
  border-color: rgba(252, 211, 77, 0.14);
}

.send-btn-modern:not(:disabled):hover {
  background: var(--info-600);
  transform: scale(1.05);
}

/* ── Overlay de Grabación (Microfono) ─────────────────────── */
.recording-overlay {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: var(--bg-primary);
  border-radius: 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  z-index: 10;
  animation: fadeIn var(--duration-fast) ease;
}

.record-action-btn {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.2s;
}

.record-action-btn:hover {
  color: var(--text-primary);
}

.waveform-container {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 16px;
  height: 30px;
  overflow: hidden;
}

.waveform-bars {
  display: flex;
  align-items: center;
  gap: 3px;
  height: 100%;
}

.w-bar {
  width: 4px;
  background: var(--text-secondary);
  border-radius: 2px;
  height: 4px;
  transition: height 0.1s ease;
}

/* Animación cuando está grabando (se sobreescribe por JS, pero por si acaso) */
@keyframes pulse-bar {
  0% { height: 4px; }
  50% { height: 20px; }
  100% { height: 4px; }
}

/* ── Indicador de escritura ──────────────────────────────── */
.typing-indicator {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 4px 6px;
}

.typing-dot {
  width: 7px;
  height: 7px;
  background: var(--gold-500);
  border-radius: 50%;
  opacity: 0.5;
  animation: typing-wave 1.4s ease-in-out infinite;
}

.typing-dot:nth-child(1) { animation-delay: 0s; }
.typing-dot:nth-child(2) { animation-delay: 0.18s; }
.typing-dot:nth-child(3) { animation-delay: 0.36s; }

@keyframes typing-wave {
  0%, 60%, 100% { transform: translateY(0);    opacity: 0.4; }
  30%            { transform: translateY(-5px); opacity: 1; }
}

/* ════════════════════════════════════════════════════════════
   CHAT INPUT
   ════════════════════════════════════════════════════════════ */
.chat-input-container {
  padding: 0 24px 24px;
  background: transparent; /* Removido el glassmorphism del fondo completo */
  border-top: none;
  flex-shrink: 0;
  padding-bottom: max(24px, env(safe-area-inset-bottom));
  position: relative;
  z-index: 10;
}

/* Sombra sutil en el fondo para separar el chat del input si hay scroll */
.chat-input-container::before {
  content: '';
  position: absolute;
  top: -40px; left: 0; right: 0; bottom: 0;
  background: linear-gradient(to top, var(--bg-primary) 30%, transparent);
  pointer-events: none;
  z-index: -1;
}

.chat-input-wrapper-modern {
  max-width: 800px;
  margin: 0 auto;
  display: flex;
  align-items: flex-end;
  gap: 8px;
  background: var(--glass-bg); /* Glassmorphism movido a la caja de input */
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: 1px solid var(--border-medium);
  border-radius: 30px;
  padding: 10px 14px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(255,255,255,0.1);
  transition: all var(--duration-normal) var(--ease-spring);
}

.chat-input-wrapper-modern:focus-within {
  border-color: var(--gold-300);
  box-shadow: 0 15px 35px rgba(0,0,0,0.12), 0 0 20px rgba(201, 168, 76, 0.2);
  transform: translateY(-2px);
}

.attach-btn-modern, .mic-btn-modern {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  cursor: pointer;
  padding: 10px;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: all 0.2s ease;
  flex-shrink: 0;
  margin-bottom: 2px;
  position: relative;
  z-index: 10;
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(201,168,76,0.2);
  user-select: none;
  -webkit-user-select: none;
}

.attach-btn-modern:hover, .mic-btn-modern:hover {
  background: rgba(201,168,76,0.08);
  color: var(--text-primary);
}

.input-content-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 40px;
}

.chat-input-modern {
  background: transparent;
  border: none;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 1rem;
  padding: 10px 0;
  outline: none;
  resize: none;
  max-height: 150px;
  line-height: 1.5;
  width: 100%;
}

.chat-input-modern::placeholder { color: var(--text-muted); }

.input-actions-right {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  position: relative;
  z-index: 10;
}

.send-btn-modern {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700));
  color: var(--bg-void);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  flex-shrink: 0;
  margin-bottom: 2px;
  box-shadow: 0 2px 8px rgba(201, 168, 76, 0.4);
}

.send-btn-modern:disabled {
  background: var(--bg-elevated);
  color: var(--text-muted);
  cursor: not-allowed;
  box-shadow: none;
}

.send-btn-modern:not(:disabled):hover {
  transform: scale(1.05) translateY(-1px);
  box-shadow: 0 4px 12px rgba(201, 168, 76, 0.6);
}

/* ── Menú de Adjuntos (Pop-up) ───────────────────────────── */
.chat-file-input {
  display: none;
}

.attach-menu-anchor {
  position: relative;
}

.attachment-menu {
  position: absolute;
  bottom: 50px;
  left: 0;
  background: var(--bg-elevated);
  border: 1px solid var(--border-medium);
  border-radius: 12px;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  box-shadow: 0 10px 25px rgba(0,0,0,0.2);
  min-width: 180px;
  z-index: 100;
  animation: popUp 0.2s var(--ease-out);
}

.attachment-menu[hidden] {
  display: none;
}

.attachment-option {
  background: transparent;
  border: none;
  color: var(--text-primary);
  padding: 10px 12px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.9rem;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s;
  text-align: left;
}

.attachment-option:hover {
  background: rgba(255,255,255,0.05);
}

.attachment-option-button {
  width: 100%;
  font-family: inherit;
}

.attach-icon-bubble {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 34px;
  padding: 8px;
  border: 1px solid rgba(217, 119, 6, 0.16);
  border-radius: 10px;
  background: rgba(217, 119, 6, 0.1);
  color: var(--gold-700);
}

[data-theme="dark"] .attach-icon-bubble {
  border-color: rgba(252, 211, 77, 0.2);
  background: rgba(217, 119, 6, 0.16);
  color: var(--gold-300);
}

@keyframes popUp {
  from { opacity: 0; transform: translateY(10px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.chat-footer-text {
  text-align: center;
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: 10px;
}

/* ════════════════════════════════════════════════════════════
   MODALES
   ════════════════════════════════════════════════════════════ */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(4, 5, 12, 0.88);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  animation: fadeIn var(--duration-fast) ease;
  padding: 20px;
}

.modal-content {
  background: var(--bg-primary);
  border: 1px solid var(--border-medium);
  border-radius: var(--radius-xl);
  width: 100%;
  max-width: 460px;
  padding: 28px;
  box-shadow: var(--shadow-lg), var(--shadow-gold);
  position: relative;
  animation: scaleUp var(--duration-normal) var(--ease-out);
}

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border-subtle);
}

.modal-header h3 {
  font-family: var(--font-serif);
  color: var(--text-gold);
  font-size: 1.3rem;
  font-weight: 700;
}

.close-btn {
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border-glass);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 1rem;
  cursor: pointer;
  padding: 5px 10px;
  transition: all var(--duration-fast) ease;
  line-height: 1;
}

.close-btn:hover {
  background: rgba(255,255,255,0.08);
  color: var(--text-primary);
}

.form-group { margin-bottom: 20px; }

.form-group label {
  display: block;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--text-secondary);
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.8px;
}

.form-input {
  width: 100%;
  padding: 12px 14px;
  background: rgba(4, 5, 12, 0.6);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.9rem;
  outline: none;
  transition: all var(--duration-fast) ease;
  -webkit-appearance: none;
}

.form-input:focus {
  border-color: var(--gold-500);
  box-shadow: 0 0 0 3px rgba(201, 168, 76, 0.1);
  background: rgba(4, 5, 12, 0.8);
}

.form-input::placeholder { color: var(--text-muted); }

.modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid var(--border-subtle);
}

.btn-primary {
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700));
  color: var(--bg-void);
  border: none;
  padding: 11px 22px;
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: 700;
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-spring);
  letter-spacing: 0.2px;
  box-shadow: 0 4px 12px rgba(201, 168, 76, 0.25);
}

.btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-gold-lg);
  filter: brightness(1.08);
}

.btn-primary:active { transform: translateY(0); }

/* ── Modal Visor de Documentos ───────────────────────────── */
.doc-modal-content {
  width: min(96vw, 1060px);
  max-height: min(88dvh, 820px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  gap: 18px;
}

.doc-wizard-content {
  width: min(94vw, 820px);
  max-height: min(90dvh, 820px);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.doc-wizard-grid {
  display: grid;
  grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
  gap: 14px;
  align-items: stretch;
}

.wizard-source-summary {
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  background: rgba(148, 163, 184, 0.06);
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.wizard-source-summary strong {
  color: var(--text-primary);
  font-size: 0.78rem;
}

.wizard-source-summary a {
  color: var(--gold-700);
  font-size: 0.75rem;
  text-decoration: none;
}

.wizard-source-summary small {
  color: var(--text-muted);
  font-size: 0.7rem;
}

.wizard-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.wizard-field,
.wizard-notes-label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: var(--text-secondary);
  font-size: 0.75rem;
  font-weight: 800;
}

.wizard-field input,
.wizard-extra-notes {
  width: 100%;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.86rem;
  outline: none;
  padding: 9px 10px;
}

.wizard-extra-notes {
  resize: vertical;
  min-height: 96px;
}

.wizard-field input:focus,
.wizard-extra-notes:focus {
  border-color: rgba(212, 175, 55, 0.55);
  box-shadow: 0 0 0 2px rgba(212, 175, 55, 0.1);
}

.doc-studio-toolbar {
  display: grid;
  grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
  gap: 12px;
  align-items: end;
}

.doc-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.doc-field label {
  color: var(--text-secondary);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.doc-select {
  width: 100%;
  min-height: 40px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.86rem;
  padding: 0 10px;
}

.doc-quality-panel {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.doc-quality-badge {
  border: 1px solid rgba(148, 163, 184, 0.26);
  border-radius: 999px;
  padding: 7px 10px;
  color: var(--text-secondary);
  background: rgba(148, 163, 184, 0.08);
  font-size: 0.75rem;
  font-weight: 800;
}

.doc-quality-badge.warn {
  color: #b45309;
  border-color: rgba(245, 158, 11, 0.35);
  background: rgba(245, 158, 11, 0.12);
}

.doc-quality-badge.ok {
  color: #047857;
  border-color: rgba(16, 185, 129, 0.35);
  background: rgba(16, 185, 129, 0.12);
}

.doc-studio-layout {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(210px, 260px) minmax(0, 1fr);
  gap: 14px;
}

.doc-guidance-panel {
  min-height: 0;
  overflow-y: auto;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: rgba(15, 23, 42, 0.04);
  padding: 14px;
}

.doc-guidance-panel h4,
.doc-source-list h5 {
  margin: 0 0 10px;
  color: var(--text-primary);
  font-size: 0.82rem;
  font-weight: 850;
}

.doc-missing-fields {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 16px;
}

.doc-structured-fields {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-bottom: 16px;
}

.doc-structured-fields h5 {
  margin: 0 0 4px;
  color: var(--text-primary);
  font-size: 0.78rem;
  font-weight: 850;
}

.structured-field {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  align-items: center;
  gap: 7px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  padding: 6px 8px;
  background: rgba(148, 163, 184, 0.06);
}

.structured-field span {
  color: var(--text-muted);
  font-size: 0.78rem;
  font-weight: 900;
}

.structured-field.present {
  border-color: rgba(16, 185, 129, 0.26);
  background: rgba(16, 185, 129, 0.08);
}

.structured-field.present span {
  color: #047857;
}

.structured-field-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.structured-field-copy strong {
  color: var(--text-secondary);
  font-size: 0.72rem;
  font-weight: 750;
}

.structured-field-copy small {
  overflow: hidden;
  color: var(--text-primary);
  font-size: 0.7rem;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.doc-checklist,
.wizard-mini-checklist {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
}

.doc-checklist h5,
.wizard-mini-checklist h5 {
  margin: 0 0 2px;
  color: var(--text-primary);
  font-size: 0.75rem;
  font-weight: 850;
}

.doc-checklist label,
.wizard-mini-checklist label {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  gap: 7px;
  color: var(--text-secondary);
  font-size: 0.72rem;
  line-height: 1.35;
}

.doc-checklist span,
.wizard-mini-checklist span {
  color: var(--gold-700);
  font-weight: 900;
}

.missing-field {
  border: 1px solid rgba(245, 158, 11, 0.35);
  border-radius: 999px;
  background: rgba(245, 158, 11, 0.12);
  color: #92400e;
  padding: 6px 9px;
  font-size: 0.72rem;
  font-weight: 800;
}

.doc-source-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.doc-source-list a {
  color: var(--gold-700);
  font-size: 0.75rem;
  line-height: 1.35;
  text-decoration: none;
}

.doc-source-list .legal-source-disabled,
.legal-source-disabled {
  display: block;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.35;
  cursor: default;
}

.source-status {
  display: inline-block;
  margin-left: 6px;
  color: var(--text-muted);
  font-size: 0.66rem;
  font-weight: 800;
}

.source-authority {
  display: block;
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 0.64rem;
  line-height: 1.3;
}

.legal-governance-status {
  display: flex;
  flex-direction: column;
  gap: 3px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 8px;
  padding: 9px;
  background: rgba(148, 163, 184, 0.08);
}

.legal-governance-status strong {
  color: var(--text-primary);
  font-size: 0.72rem;
}

.legal-governance-status span {
  color: var(--text-muted);
  font-size: 0.66rem;
  line-height: 1.35;
}

.legal-governance-status.approved,
.legal-governance-status.approved_local_check,
.legal-governance-status.official_sources_controlled {
  border-color: rgba(16, 185, 129, 0.3);
  background: rgba(16, 185, 129, 0.08);
}

.legal-governance-status.blocked {
  border-color: rgba(220, 38, 38, 0.4);
  background: rgba(220, 38, 38, 0.1);
}

.legal-alert {
  margin: 0;
  border-left: 3px solid #d97706;
  padding: 7px 8px;
  background: rgba(245, 158, 11, 0.1);
  color: var(--text-secondary);
  font-size: 0.68rem;
  line-height: 1.4;
}

.legal-alert.critical {
  border-left-color: #dc2626;
  background: rgba(220, 38, 38, 0.1);
}

.legal-review-form {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-top: 8px;
  border-top: 1px solid var(--border-subtle);
  padding-top: 10px;
}

.legal-review-form h5 {
  margin: 0 0 2px;
}

.legal-review-form input,
.legal-review-form select,
.legal-review-form textarea {
  width: 100%;
  border: 1px solid var(--border-medium);
  border-radius: 7px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.7rem;
  padding: 7px 8px;
}

.legal-review-form textarea {
  resize: vertical;
}

.legal-review-form button {
  min-height: 34px;
  border: 1px solid rgba(212, 175, 55, 0.42);
  border-radius: 7px;
  background: rgba(212, 175, 55, 0.12);
  color: var(--gold-700);
  cursor: pointer;
  font: inherit;
  font-size: 0.7rem;
  font-weight: 800;
}

.legal-review-form small {
  color: var(--text-muted);
  font-size: 0.63rem;
  line-height: 1.35;
}

.doc-source-list a:hover {
  text-decoration: underline;
}

.doc-panel-note {
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.45;
  margin: 2px 0 0;
}

.doc-paper {
  flex: 1;
  min-height: 0;
  background: #FEFCF7;
  color: #1C1A17;
  padding: clamp(24px, 4vw, 44px) clamp(20px, 5vw, 48px);
  overflow-y: auto;
  font-family: var(--font-serif);
  font-size: 0.95rem;
  line-height: 1.8;
  border-radius: var(--radius-md);
  box-shadow: inset 0 2px 12px rgba(0,0,0,0.08);
  border: 1px solid rgba(0,0,0,0.06);
}

.doc-paper[contenteditable="true"] {
  outline: none;
}

.doc-paper[contenteditable="true"]:focus {
  box-shadow: inset 0 0 0 2px rgba(212, 175, 55, 0.24), inset 0 2px 12px rgba(0,0,0,0.08);
}

.doc-paper h1, .doc-paper h2, .doc-paper h3 {
  font-family: var(--font-serif);
  color: #1C1A17;
  margin-bottom: 10px;
}

.doc-paper p { margin-bottom: 14px; }

.doc-paper strong { color: #111; }

.doc-paper[data-official-preview="runt-transfer"] {
  padding: 14px;
  background: #F8FAFC;
  font-family: Arial, Helvetica, sans-serif;
  overflow: auto;
  cursor: grab;
}

.official-runt-preview {
  width: 100%;
  min-width: 980px;
  background: #fff;
  color: #111;
}

.official-runt-preview.export-mode {
  min-width: 0;
}

.official-runt-preview .official-form-page + .official-form-page {
  margin-top: 18px;
}

.official-form-page {
  position: relative;
  width: 100%;
  max-width: 1120px;
  margin: 0 auto;
  background: #fff;
  box-shadow: 0 16px 42px rgba(15, 23, 42, 0.16);
}

.official-runt-preview.export-mode .official-form-page {
  max-width: none;
  box-shadow: none;
  break-inside: avoid;
  page-break-inside: avoid;
}

.official-runt-preview.export-mode .official-form-page + .official-form-page {
  margin-top: 0;
  break-before: page;
  page-break-before: always;
}

.official-form-page img {
  display: block;
  width: 100%;
  height: auto;
  user-select: none;
  pointer-events: none;
}

.runt-form-field {
  position: absolute;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  padding: 0 4px;
  overflow: hidden;
  color: #111;
  font-family: Arial, Helvetica, sans-serif;
  font-size: clamp(7px, 0.62vw, 11px);
  font-weight: 700;
  line-height: 1.08;
  text-transform: uppercase;
  white-space: nowrap;
}

.runt-form-field.cover {
  background: rgba(255, 255, 255, 0.96);
}

.runt-form-field.center {
  justify-content: center;
  text-align: center;
}

.runt-form-field.small {
  align-items: flex-start;
  padding-top: 2px;
  font-size: clamp(6px, 0.52vw, 9px);
  white-space: normal;
}

.runt-form-field.marker {
  justify-content: center;
  padding: 0;
  background: transparent;
  font-size: clamp(11px, 0.9vw, 16px);
  font-weight: 900;
  line-height: 1;
}

.doc-header-legal {
  text-align: right;
  margin-bottom: 32px;
  font-family: var(--font-sans);
  font-size: 0.82rem;
  color: #666;
}

.doc-title-legal {
  text-align: center;
  font-weight: 700;
  font-size: 1.1rem;
  margin-bottom: 32px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #111;
}

.doc-modal-title {
  font-family: var(--font-serif);
  color: var(--text-gold);
  font-size: clamp(1.05rem, 2.5vw, 1.35rem);
  line-height: 1.2;
}

.doc-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-top: 16px;
  border-top: 1px solid var(--border-subtle);
}

.doc-action-group {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.doc-action-btn {
  min-height: 40px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-medium);
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-family: var(--font-sans);
  font-size: 0.86rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: transform var(--duration-fast) var(--ease-out), border-color var(--duration-fast), background var(--duration-fast), box-shadow var(--duration-fast);
}

.doc-action-btn:hover {
  transform: translateY(-1px);
}

.doc-action-secondary {
  background: transparent;
  color: var(--text-secondary);
}

.doc-action-word {
  color: #4A83D4;
  border-color: rgba(74, 131, 212, 0.3);
  background: rgba(74, 131, 212, 0.08);
}

.doc-action-pdf {
  color: #E06C6C;
  border-color: rgba(224, 108, 108, 0.3);
  background: rgba(224, 108, 108, 0.08);
}

.doc-action-excel {
  color: #047857;
  border-color: rgba(16, 185, 129, 0.35);
  background: rgba(16, 185, 129, 0.1);
}

.doc-action-official {
  color: #075985;
  border-color: rgba(14, 116, 144, 0.32);
  background: rgba(14, 116, 144, 0.08);
}

.doc-action-primary {
  color: #111827;
  border-color: rgba(217, 119, 6, 0.45);
  background: linear-gradient(135deg, var(--gold-300), var(--gold-500));
  box-shadow: 0 8px 20px rgba(217, 119, 6, 0.18);
}

/* ════════════════════════════════════════════════════════════
   PANTALLAS DE ACCESO (LOGIN / SUSCRIPCIÓN)
   ════════════════════════════════════════════════════════════ */
.gate-screen {
  position: fixed;
  inset: 0;
  background:
    radial-gradient(ellipse 70% 60% at 90% 10%, rgba(109, 92, 232, 0.12) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 10% 90%, rgba(201, 168, 76, 0.12) 0%, transparent 60%),
    var(--bg-void);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  z-index: 200;
  overflow-y: auto;
  padding: 40px 20px;
}

/* Partículas decorativas de fondo */
.gate-screen::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    radial-gradient(1px 1px at 20% 30%, rgba(201,168,76,0.3) 0%, transparent 100%),
    radial-gradient(1px 1px at 75% 15%, rgba(201,168,76,0.2) 0%, transparent 100%),
    radial-gradient(1px 1px at 50% 60%, rgba(109,92,232,0.2) 0%, transparent 100%),
    radial-gradient(1px 1px at 85% 75%, rgba(201,168,76,0.15) 0%, transparent 100%),
    radial-gradient(1px 1px at 10% 80%, rgba(109,92,232,0.15) 0%, transparent 100%);
  pointer-events: none;
}

.gate-card {
  position: relative;
  margin: auto 0;
  background: rgba(12, 15, 26, 0.92);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid var(--border-medium);
  border-radius: 24px;
  width: 100%;
  max-width: 448px;
  padding: 40px;
  box-shadow: var(--shadow-lg), var(--shadow-gold);
  animation: fadeUp var(--duration-slow) var(--ease-out);
  display: flex;
  flex-direction: column;
  gap: 24px;
  /* Borde brillante superior */
  overflow: hidden;
}

.gate-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 10%;
  right: 10%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-500), transparent);
  opacity: 0.8;
}

/* ── Cabecera de las pantallas gate ─────────────────────── */
.gate-header {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}

.gate-logo {
  width: 68px;
  height: 68px;
  border-radius: 18px;
  background: linear-gradient(145deg, var(--gold-500), var(--gold-700));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 34px;
  box-shadow: var(--shadow-gold-lg), inset 0 1px 0 rgba(255,255,255,0.2);
  border: 1px solid rgba(255,255,255,0.1);
  animation: logo-breathe 4s ease-in-out infinite;
}

.gate-header h2 {
  font-family: var(--font-serif);
  font-size: 1.7rem;
  font-weight: 800;
  color: var(--text-on-dark);
  letter-spacing: -0.3px;
}

.gate-header h2 span { color: var(--text-gold); }

/* ── Tabs de Login/Registro ──────────────────────────────── */
.gate-tabs {
  display: flex;
  background: rgba(4, 5, 12, 0.5);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-full);
  padding: 4px;
}

.gate-tab-btn {
  flex: 1;
  background: transparent;
  border: none;
  color: var(--text-secondary);
  padding: 10px;
  border-radius: calc(var(--radius-full) - 2px);
  font-family: var(--font-sans);
  font-weight: 500;
  cursor: pointer;
  transition: all var(--duration-normal) var(--ease-out);
  font-size: 0.875rem;
  letter-spacing: 0.2px;
}

.gate-tab-btn.active {
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700));
  color: var(--bg-void);
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(201, 168, 76, 0.3);
}

.profile-tab-btn.active {
  background: var(--bg-primary);
  color: var(--text-primary);
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.settings-danger-zone {
  margin-top: 18px;
  padding: 14px;
  border: 1px solid #FECACA;
  border-radius: 14px;
  background: #FEF2F2;
  display: grid;
  gap: 10px;
}

.settings-danger-zone strong {
  display: block;
  color: #991B1B;
  font-size: 0.92rem;
  margin-bottom: 4px;
}

.settings-danger-zone p {
  margin: 0;
  color: #7F1D1D;
  font-size: 0.76rem;
  line-height: 1.45;
}

.settings-danger-zone button {
  width: 100%;
  min-height: 42px;
  border: 1px solid #FCA5A5;
  border-radius: 11px;
  background: #DC2626;
  color: #fff;
  font: inherit;
  font-size: 0.88rem;
  font-weight: 800;
  cursor: pointer;
}

.settings-danger-zone button:disabled {
  opacity: 0.65;
  cursor: progress;
}

.settings-danger-zone small {
  min-height: 16px;
  color: #7F1D1D;
  font-size: 0.74rem;
}

/* ── Formulario gate ─────────────────────────────────────── */
.gate-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* ════════════════════════════════════════════════════════════
   PLANES DE SUSCRIPCIÓN
   ════════════════════════════════════════════════════════════ */
.plans-grid {
  display: flex;
  gap: 12px;
  width: 100%;
}

.plan-card {
  flex: 1;
  background: rgba(4, 5, 12, 0.5);
  border: 1.5px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 18px 14px;
  text-align: center;
  cursor: pointer;
  position: relative;
  transition: all var(--duration-normal) var(--ease-out);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  overflow: hidden;
}

.plan-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(201, 168, 76, 0.06), transparent);
  opacity: 0;
  transition: opacity var(--duration-normal) ease;
}

.plan-card:hover {
  border-color: var(--border-medium);
  transform: translateY(-2px);
}

.plan-card:hover::before { opacity: 1; }

/* Plan anual: más destacado por defecto */
.plan-card[data-plan="anual"] {
  border-color: var(--border-medium);
  transform: scale(1.02);
}

.plan-card.active {
  border-color: var(--gold-500);
  background: rgba(201, 168, 76, 0.07);
  box-shadow: 0 0 0 1px var(--gold-500), var(--shadow-gold);
}

.plan-card.active::before { opacity: 1; }

.plan-card[data-plan="anual"].active {
  box-shadow: 0 0 0 1px var(--gold-500), var(--shadow-gold-lg);
}

.plan-badge {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: var(--text-muted);
}

.plan-card.active .plan-badge { color: var(--text-gold); }

.plan-amount {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--text-on-dark);
  display: block;
  font-family: var(--font-sans);
  letter-spacing: -0.5px;
  line-height: 1;
}

.plan-card.active .plan-amount { color: var(--text-gold); }

.plan-period {
  font-size: 0.68rem;
  color: var(--text-muted);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.8px;
}

.plan-desc {
  font-size: 0.7rem;
  color: var(--text-secondary);
  line-height: 1.4;
  margin-top: 2px;
}

.plan-ribbon {
  position: absolute;
  top: -1px;
  right: -1px;
  background: linear-gradient(135deg, var(--gold-500), var(--gold-700));
  color: var(--bg-void);
  font-size: 0.58rem;
  font-weight: 800;
  padding: 4px 8px;
  border-radius: 0 var(--radius-md) 0 var(--radius-md);
  letter-spacing: 0.5px;
  text-transform: uppercase;
}

/* ── Lista de features ───────────────────────────────────── */
.pricing-features {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 4px 0;
}

.pricing-features li {
  font-size: 0.84rem;
  color: var(--text-secondary);
  display: flex;
  align-items: flex-start;
  gap: 10px;
  line-height: 1.45;
}

.pricing-features li::before {
  content: '✓';
  color: var(--gold-500);
  font-weight: 700;
  font-size: 0.9rem;
  flex-shrink: 0;
  line-height: 1.4;
}

/* ── Spinner de pago ─────────────────────────────────────── */
.spinner-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: 40px 0;
}

.payment-spinner {
  width: 52px;
  height: 52px;
  border: 3px solid rgba(201, 168, 76, 0.12);
  border-radius: 50%;
  border-top-color: var(--gold-500);
  border-right-color: rgba(201, 168, 76, 0.4);
  animation: spin 0.9s linear infinite;
  box-shadow: var(--shadow-gold);
}

@keyframes spin { to { transform: rotate(360deg); } }

/* Toggle de backend en sidebar */
#use-backend-checkbox {
  accent-color: var(--gold-500);
  width: 14px;
  height: 14px;
}

/* ════════════════════════════════════════════════════════════
   ANIMACIONES
   ════════════════════════════════════════════════════════════ */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes scaleUp {
  from { opacity: 0; transform: scale(0.96) translateY(8px); }
  to   { opacity: 1; transform: scale(1)    translateY(0); }
}

@keyframes pop-in {
  0%   { opacity: 0; transform: scale(0.94) translateY(6px); }
  60%  { transform: scale(1.015); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ════════════════════════════════════════════════════════════
   RESPONSIVE — MÓVIL
   ════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {

  .header-tools-btn {
    padding: 8px 10px;
    min-width: 40px;
  }

  .header-tools-btn strong {
    display: none;
  }

  .doc-modal-content {
    width: 96vw;
    max-height: 92dvh;
    gap: 12px;
  }

  .doc-studio-toolbar,
  .doc-studio-layout,
  .doc-wizard-grid,
  .wizard-fields {
    grid-template-columns: 1fr;
  }

  .doc-wizard-content {
    width: 96vw;
    max-height: 92dvh;
  }

  .doc-quality-panel {
    justify-content: flex-start;
  }

  .doc-guidance-panel {
    max-height: 160px;
  }

  .doc-paper {
    min-height: 300px;
    font-size: 0.9rem;
    padding: 22px 18px;
  }

  .doc-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .doc-action-group {
    justify-content: stretch;
  }

  .doc-action-btn {
    flex: 1 1 auto;
  }

  /* Sidebar oculto off-canvas */
  .sidebar {
    position: fixed;
    left: -300px;
    top: 0;
    bottom: 0;
    height: 100dvh;
    box-shadow: 12px 0 40px rgba(0,0,0,0.6);
    z-index: 15;
  }

  .sidebar.open { left: 0; }

  .mobile-menu-toggle-modern { display: flex; }

  /* Header más compacto */
  .chat-header-modern {
    height: 60px;
    padding: 0 14px;
  }

  .chat-header h2 { font-size: 1rem; }

  .status-indicator { font-size: 0.72rem; }

  .config-btn {
    padding: 6px 11px;
    font-size: 0.75rem;
  }

  /* Chat area */
  .chat-area {
    padding: 16px 12px;
    gap: 4px;
  }

  /* Bienvenida */
  .welcome-screen {
    padding: 24px 8px;
    gap: 16px;
  }

  .welcome-logo {
    width: 72px;
    height: 72px;
    font-size: 36px;
    border-radius: 18px;
  }

  .welcome-screen h2 { font-size: 1.5rem; }

  .welcome-screen p {
    font-size: 0.875rem;
    line-height: 1.6;
  }

  .suggestions-grid {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }

  .suggestion-card { padding: 13px; }

  .suggestion-title { font-size: 0.83rem; }

  .suggestion-desc { font-size: 0.73rem; }

  /* Burbujas */
  .assistant-avatar {
    width: 26px;
    height: 26px;
    font-size: 13px;
  }

  .message-bubble {
    max-width: 90%;
    padding: 12px 14px;
    font-size: 0.895rem;
    border-radius: var(--radius-md);
  }

  .message-bubble-wrapper.user .message-bubble {
    border-bottom-right-radius: 4px;
  }

  .message-bubble-wrapper.assistant .message-bubble {
    border-bottom-left-radius: 4px;
  }

  /* Input */
  .chat-input-container {
    padding: 12px 12px;
    padding-bottom: max(14px, env(safe-area-inset-bottom));
  }

  .chat-input-wrapper-modern {
    padding: 6px 10px;
    border-radius: 20px;
    gap: 6px;
  }

  .chat-input-modern {
    font-size: 0.9rem;
    padding: 8px 0;
  }

  .send-btn-modern {
    width: 34px;
    height: 34px;
  }

  /* Modales */
  .modal-overlay { padding: 12px; }

  .modal-content {
    padding: 22px 18px;
    max-height: 92dvh;
    overflow-y: auto;
    border-radius: var(--radius-lg);
  }

  .doc-modal-content {
    width: min(100%, 720px);
    max-height: 94dvh;
    border-radius: var(--radius-lg);
    gap: 14px;
  }

  .doc-paper {
    padding: 24px 20px;
    font-size: 0.88rem;
  }

  .doc-actions {
    align-items: stretch;
    flex-direction: column-reverse;
    gap: 10px;
    padding-top: 12px;
  }

  .doc-action-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
    gap: 8px;
  }

  .doc-action-primary {
    grid-column: 1 / -1;
  }

  .doc-action-btn {
    width: 100%;
    min-height: 44px;
    padding: 0 12px;
  }

  /* Pantallas gate */
  .gate-screen { padding: 16px 12px; }

  .gate-card {
    padding: 28px 20px;
    gap: 18px;
    border-radius: 20px;
  }

  .gate-header h2 { font-size: 1.5rem; }

  .gate-logo {
    width: 60px;
    height: 60px;
    font-size: 30px;
    border-radius: 16px;
  }

  /* Planes en móvil: stack vertical si muy pequeño */
  .plans-grid { gap: 10px; }

  .plan-card {
    padding: 14px 10px;
  }

  .plan-card[data-plan="anual"] { transform: scale(1); }

  .plan-amount { font-size: 1.25rem; }

  .plan-desc { font-size: 0.66rem; }

  .pricing-features li { font-size: 0.8rem; }
}

@media (max-width: 380px) {
  .suggestions-grid { grid-template-columns: 1fr; }

  .plans-grid { flex-direction: column; }

  .plan-card[data-plan="anual"] { transform: scale(1); }

  .message-bubble { max-width: 94%; }
}

/* ============================================================
   CHECKOUT DE SUSCRIPCION CON TARJETA
   ============================================================ */
.subscription-checkout-panel {
  padding: 32px;
  align-items: flex-start;
}

.subscription-checkout {
  max-width: 610px;
  gap: 20px;
  margin: auto;
  padding: 28px 0;
}

.subscription-eyebrow,
.subscription-step {
  color: #d4af37;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.14em;
}

.subscription-benefits {
  list-style: none;
  padding: 0;
  margin: 4px 0 28px;
  display: grid;
  gap: 18px;
}

.subscription-benefits li {
  display: flex;
  gap: 13px;
  align-items: flex-start;
}

.benefit-check {
  width: 24px;
  height: 24px;
  border: 1px solid rgba(212, 175, 55, 0.42);
  background: rgba(212, 175, 55, 0.08);
  color: #f5cc55;
  display: grid;
  place-items: center;
  flex: 0 0 24px;
  border-radius: 6px;
  font-weight: 800;
}

.subscription-benefits strong,
.subscription-benefits small {
  display: block;
}

.subscription-benefits strong {
  color: #f8fafc;
  font-size: 0.91rem;
  margin-bottom: 3px;
}

.subscription-benefits small {
  color: #718096;
  font-size: 0.79rem;
  line-height: 1.45;
}

.subscription-promise {
  border-left: 2px solid #d4af37;
  padding: 2px 0 2px 14px;
  margin-bottom: 22px;
  color: #718096;
  font-size: 0.79rem;
  line-height: 1.55;
}

.subscription-promise strong {
  display: block;
  color: #cbd5e1;
  margin-bottom: 2px;
}

.subscription-security {
  margin-top: 0;
}

.subscription-checkout-header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
}

.subscription-checkout-header h2 {
  color: #fff;
  font-family: var(--font-sans);
  font-size: 1.7rem;
  margin: 5px 0 5px;
}

.subscription-checkout-header p,
.card-form-heading p {
  margin: 0;
  color: #718096;
  font-size: 0.79rem;
  line-height: 1.5;
}

.card-only-badge {
  min-height: 36px;
  padding: 0 11px;
  border: 1px solid rgba(212, 175, 55, 0.25);
  background: rgba(212, 175, 55, 0.07);
  color: #e9c75f;
  border-radius: 7px;
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 0.75rem;
  font-weight: 700;
}

.subscription-checkout .plans-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.subscription-checkout .plan-card {
  width: 100%;
  min-height: 76px;
  padding: 14px 16px;
  display: grid;
  grid-template-columns: 18px 1fr auto;
  gap: 12px;
  align-items: center;
  text-align: left;
  border-radius: 8px;
  transform: none;
  font-family: inherit;
}

.subscription-checkout .plan-card-copy {
  min-width: 0;
}

.subscription-checkout .plan-badge {
  color: #f8fafc;
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  margin-bottom: 4px;
}

.subscription-checkout .plan-price {
  text-align: right;
}

.subscription-checkout .plan-amount {
  font-size: 1.15rem;
  white-space: nowrap;
}

.subscription-checkout .plan-period {
  display: block;
  margin-top: 4px;
  text-transform: none;
  letter-spacing: 0;
}

.subscription-checkout .plan-desc {
  margin: 0;
  font-size: 0.73rem;
}

.plan-selector-dot {
  width: 17px;
  height: 17px;
  border-radius: 50%;
  border: 1.5px solid #475569;
  position: relative;
}

.plan-card.active .plan-selector-dot {
  border-color: #d4af37;
}

.plan-card.active .plan-selector-dot::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: #d4af37;
}

.plan-save-pill {
  display: inline-flex;
  margin-left: 6px;
  padding: 3px 6px;
  border-radius: 4px;
  background: #d4af37;
  color: #090d14;
  font-size: 0.58rem;
  letter-spacing: 0.03em;
  vertical-align: middle;
}

#payment-form-container {
  border-top: 1px solid rgba(255,255,255,0.07);
  padding-top: 18px;
}

.card-form-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 16px;
}

.card-form-heading h3 {
  margin: 0 0 4px;
  color: #f8fafc;
  font-size: 0.94rem;
}

.card-brands {
  display: flex;
  gap: 5px;
}

.card-brands span {
  height: 25px;
  min-width: 34px;
  padding: 0 6px;
  display: grid;
  place-items: center;
  color: #94a3b8;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 5px;
  font-size: 0.58rem;
  font-weight: 800;
}

.card-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 12px;
}

.payment-summary {
  margin-top: 16px;
  padding: 13px 14px;
  border: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.025);
  border-radius: 8px;
  display: grid;
  gap: 9px;
}

.payment-summary div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 0.76rem;
}

.payment-summary span {
  color: #718096;
}

.payment-summary strong {
  color: #e2e8f0;
  text-align: right;
}

.payment-consents {
  display: grid;
  gap: 10px;
  margin-top: 15px;
}

.consent-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: #94a3b8;
  font-size: 0.73rem;
  line-height: 1.5;
  cursor: pointer;
}

.consent-row input {
  appearance: none;
  width: 17px;
  height: 17px;
  flex: 0 0 17px;
  margin: 2px 0 0;
  border: 1px solid #475569;
  border-radius: 4px;
  background: #070b12;
  cursor: pointer;
}

.consent-row input:checked {
  border-color: #d4af37;
  background: #d4af37;
  box-shadow: inset 0 0 0 3px #0f1623;
}

.consent-row input:disabled {
  cursor: wait;
  opacity: 0.55;
}

.payment-contract-link {
  color: #e5c24e;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

.payment-contract-link:focus-visible,
.inline-terms-button:focus-visible {
  border-radius: 3px;
  outline: 2px solid #e5c24e;
  outline-offset: 2px;
}

.consent-row strong {
  color: #d7dee9;
}

.inline-terms-button {
  padding: 0;
  background: transparent;
  border: 0;
  color: #e5c24e;
  text-decoration: underline;
  cursor: pointer;
  font: inherit;
}

.renewal-explainer {
  margin-top: 14px;
  display: flex;
  align-items: flex-start;
  gap: 9px;
  color: #718096;
  font-size: 0.71rem;
  line-height: 1.5;
}

.renewal-explainer svg {
  color: #d4af37;
  flex: 0 0 18px;
  margin-top: 1px;
}

.subscription-pay-button {
  margin-top: 16px;
  display: flex;
  justify-content: center;
  gap: 10px;
  align-items: center;
  background: #d4af37;
  color: #070b12;
  border-radius: 8px;
}

.subscription-pay-button:disabled {
  opacity: 0.42;
  cursor: not-allowed;
  box-shadow: none;
}

.secure-payment-note {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  font-size: 0.7rem;
}

.card-error-message {
  color: #fca5a5;
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.22);
  padding: 10px 12px;
  border-radius: 7px;
  font-size: 0.75rem;
  text-align: left;
  margin: 10px 0 0;
}

.card-status-message {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px solid rgba(56, 189, 248, 0.24);
  border-radius: 7px;
  background: rgba(56, 189, 248, 0.08);
  color: #bae6fd;
  font-size: 0.75rem;
  line-height: 1.45;
  text-align: left;
}

.mora-banner {
  padding: 12px 14px;
  border: 1px solid rgba(239,68,68,0.28);
  border-radius: 8px;
  color: #fca5a5;
  background: rgba(239,68,68,0.07);
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.mora-banner svg {
  flex: 0 0 20px;
}

.mora-banner p {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.5;
}

@media (max-width: 900px) {
  #subscription-screen.gate-screen {
    display: block;
    overflow-y: auto;
  }

  #subscription-screen .gate-brand-panel {
    display: none;
  }

  .subscription-checkout-panel {
    min-height: 100dvh;
    height: auto;
    padding: 22px 18px;
  }

  .subscription-checkout {
    max-width: 620px;
    padding: 12px 0 24px;
  }
}

@media (max-width: 520px) {
  .subscription-checkout-panel {
    padding: 18px 14px;
  }

  .subscription-checkout-header h2 {
    font-size: 1.45rem;
  }

  .card-only-badge {
    font-size: 0;
    min-width: 38px;
    justify-content: center;
    padding: 0 9px;
  }

  .subscription-checkout .plan-card {
    grid-template-columns: 18px 1fr;
  }

  .subscription-checkout .plan-price {
    grid-column: 2;
    text-align: left;
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-top: -5px;
  }

  .subscription-checkout .plan-period {
    display: inline;
  }

  .card-form-row {
    grid-template-columns: 1fr;
  }

  .card-form-heading {
    display: block;
  }

  .card-brands {
    margin-top: 10px;
  }

  .payment-summary div {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .payment-summary strong {
    text-align: left;
  }

  .consent-row {
    font-size: 0.75rem;
  }
}

/* Animaciones de entrada de bienvenida */
.welcome-screen-modern {
  width: 100%;
  max-width: 700px;
  min-height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  padding: 28px 20px 120px;
  text-align: center;
}

.welcome-title {
  max-width: 680px;
  margin: 0 0 12px;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 2.2rem;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.2;
  text-wrap: balance;
  opacity: 0;
  animation: fadeUp 0.7s var(--ease-spring) forwards;
}

.welcome-subtitle {
  max-width: 540px;
  margin: 0 0 40px;
  color: var(--text-secondary);
  font-size: 1.05rem;
  line-height: 1.6;
  opacity: 0;
  animation: fadeUp 0.7s var(--ease-spring) 0.1s forwards;
}

.suggestion-chips-container {
  width: 100%;
  max-width: 600px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}
.suggestion-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px;
  border: 1px solid var(--border-medium);
  border-radius: 12px;
  background: var(--bg-primary);
  color: var(--text-primary);
  box-shadow: var(--shadow-sm);
  font: inherit;
  font-size: 0.9rem;
  cursor: pointer;
  opacity: 0;
  animation: fadeUp 0.7s var(--ease-spring) forwards;
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.suggestion-chip > span {
  color: var(--gold-500);
}

.suggestion-chip .quick-action-icon {
  color: var(--gold-700);
}
.suggestion-chip:nth-child(1) { animation-delay: 0.15s; }
.suggestion-chip:nth-child(2) { animation-delay: 0.25s; }
.suggestion-chip:nth-child(3) { animation-delay: 0.35s; }
.suggestion-chip:nth-child(4) { animation-delay: 0.45s; }

.welcome-tools-card {
  width: min(560px, 100%);
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 15px 18px;
  border: 1px solid rgba(217,119,6,0.32);
  border-radius: 18px;
  background:
    radial-gradient(circle at top left, rgba(217,119,6,0.18), transparent 38%),
    var(--bg-primary);
  color: var(--text-primary);
  box-shadow: var(--shadow-md);
  cursor: pointer;
  text-align: left;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
  flex-basis: 100%;
  opacity: 0;
  animation: fadeUp 0.7s var(--ease-spring) 0.08s forwards;
}

.welcome-tools-card:hover {
  transform: translateY(-2px);
  border-color: rgba(217,119,6,0.55);
  box-shadow: var(--shadow-lg);
}

.welcome-tools-icon {
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background: rgba(217,119,6,0.12);
  flex-shrink: 0;
  color: var(--gold-700);
}

.welcome-tools-icon .lucide-icon {
  width: 21px;
  height: 21px;
}

.welcome-tools-card strong {
  display: block;
  font-size: 0.96rem;
  margin-bottom: 3px;
}

.welcome-tools-card small {
  display: block;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.35;
}

/* ── Pantalla de Bienvenida Animada ────────────────── */
#welcome-screen {
  position: relative;
  overflow: hidden;
  border-radius: 20px;
}
#welcome-screen::before {
  content: '';
  position: absolute;
  top: -50%; left: -50%; width: 200%; height: 200%;
  background: radial-gradient(circle at center, rgba(56, 189, 248, 0.05) 0%, rgba(201, 168, 76, 0.03) 30%, transparent 70%);
  animation: bg-breathe 15s infinite alternate ease-in-out;
  z-index: -1;
}
[data-theme="dark"] #welcome-screen::before {
  background: radial-gradient(circle at center, rgba(56, 189, 248, 0.08) 0%, rgba(168, 85, 247, 0.05) 30%, transparent 70%);
}
@keyframes bg-breathe {
  0% { transform: scale(0.8) rotate(0deg); opacity: 0.5; }
  100% { transform: scale(1.2) rotate(10deg); opacity: 1; }
}

/* ── Indicador de Carga Moderno (Balanza) ────────────────── */
.typing-indicator-modern {
  display: flex;
  align-items: center;
  gap: 12px;
}
.scale-icon-wrapper {
  color: var(--gold-500);
  display: flex;
  align-items: center;
  justify-content: center;
  filter: drop-shadow(0 0 5px rgba(217, 119, 6, 0.4));
}
.scale-icon-anim {
  animation: scale-tilt 2s infinite ease-in-out;
  transform-origin: top center;
}
.typing-text-modern {
  font-size: 0.95rem;
  color: var(--text-secondary);
  font-weight: 500;
  letter-spacing: 0.5px;
  background: linear-gradient(90deg, var(--text-secondary) 0%, var(--gold-300) 50%, var(--text-secondary) 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer-text 2s linear infinite;
}

@keyframes scale-tilt {
  0% { transform: rotate(0deg); }
  25% { transform: rotate(10deg); }
  75% { transform: rotate(-10deg); }
  100% { transform: rotate(0deg); }
}
@keyframes shimmer-text {
  0% { background-position: 200% center; }
  100% { background-position: 0% center; }
}

/* ── Botón de Llamada (Header) ────────────────── */
.live-call-btn.futuristic-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  background: rgba(201, 168, 76, 0.1);
  color: var(--gold-300);
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: inset 0 0 10px rgba(201, 168, 76, 0.1), 0 0 15px rgba(201, 168, 76, 0.05);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  outline: none;
  margin-left: 10px;
}

.live-call-btn.futuristic-btn:hover {
  background: rgba(201, 168, 76, 0.2);
  color: var(--gold-300);
  transform: scale(1.08) translateY(-2px);
  box-shadow: inset 0 0 15px rgba(201, 168, 76, 0.2), 0 5px 20px rgba(201, 168, 76, 0.15);
}

.live-call-btn.futuristic-btn .pulse-ring {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
  border-radius: 50%;
  border: 1.5px solid rgba(201, 168, 76, 0.4);
  animation: pulse-ring-neon 2.5s cubic-bezier(0.215, 0.610, 0.355, 1) infinite;
  pointer-events: none;
}

@keyframes pulse-ring-neon {
  0% { width: 100%; height: 100%; opacity: 1; border-width: 1.5px; }
  100% { width: 200%; height: 200%; opacity: 0; border-width: 0px; }
}

/* ── Pantalla de consulta por voz (Overlay) ────────────────── */
.call-screen-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: #030712; /* Azul ultra oscuro */
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-family: var(--font-sans);
  overflow: hidden;
}

/* Luces de fondo estilo aurora/holograma */
.call-bg-glow {
  position: absolute;
  width: 60vw;
  height: 60vw;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.4;
  z-index: 1;
  animation: float-glow 15s ease-in-out infinite alternate;
}
.glow-1 {
  background: radial-gradient(circle, rgba(56, 189, 248, 0.8) 0%, rgba(3, 105, 161, 0) 70%);
  top: -20%; left: -10%;
}
.glow-2 {
  background: radial-gradient(circle, rgba(168, 85, 247, 0.6) 0%, rgba(126, 34, 206, 0) 70%);
  bottom: -20%; right: -10%;
  animation-delay: -5s;
}

@keyframes float-glow {
  0% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(10%, 15%) scale(1.1); }
  100% { transform: translate(-10%, -10%) scale(0.9); }
}

.call-container.glass-panel {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  height: 100%;
  width: 100%;
  padding: 60px 20px;
  background: rgba(15, 23, 42, 0.3);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.call-header {
  text-align: center;
  animation: fadeInDown 0.8s ease-out;
}

.call-title {
  font-size: 1.1rem;
  font-weight: 800;
  letter-spacing: 4px;
  margin-bottom: 8px;
  color: #E0F2FE;
  text-shadow: 0 0 10px rgba(56, 189, 248, 0.5);
}

.call-status {
  font-size: 0.95rem;
  color: #94A3B8;
  font-weight: 400;
  letter-spacing: 1px;
}

/* Orbe de IA Futurista - Diseño Premium Aura */
.call-avatar-container {
  position: relative;
  width: 280px;
  height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 40px 0;
}

.ai-orb {
  position: relative;
  width: 130px;
  height: 130px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.orb-core {
  width: 100%;
  height: 100%;
  background: radial-gradient(circle at 40% 40%, rgba(56, 189, 248, 0.9), rgba(3, 105, 161, 0.8));
  border-radius: 50%;
  box-shadow: 
    0 0 40px rgba(56, 189, 248, 0.6), 
    inset 0 0 30px rgba(255,255,255,0.8),
    inset 20px 0 40px rgba(14, 165, 233, 0.5);
  z-index: 10;
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.orb-ring {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  z-index: 5;
  transition: all 0.5s ease;
}

/* Anillos etéreos modo "Escuchando" (Cyan/Tech) */
.ring-1 {
  width: 135%; height: 135%;
  border: 1px solid rgba(56, 189, 248, 0.1);
  border-top: 3px solid rgba(56, 189, 248, 0.8);
  border-left: 2px solid rgba(56, 189, 248, 0.4);
  box-shadow: 0 0 15px rgba(56, 189, 248, 0.3), inset 0 0 10px rgba(56, 189, 248, 0.2);
  filter: blur(1px);
  animation: spin 4s linear infinite;
}

.ring-2 {
  width: 165%; height: 165%;
  border: 1px solid rgba(56, 189, 248, 0.05);
  border-right: 3px solid rgba(14, 165, 233, 0.7);
  border-bottom: 2px solid rgba(56, 189, 248, 0.3);
  box-shadow: 0 0 20px rgba(14, 165, 233, 0.2);
  animation: spin-reverse 6s linear infinite;
}

.ring-3 {
  width: 195%; height: 195%;
  border: 1px dashed rgba(56, 189, 248, 0.2);
  border-bottom: 3px solid rgba(2, 132, 199, 0.6);
  filter: blur(2px);
  animation: spin 9s linear infinite;
}

/* Estados del Orbe controlados por JS */
.ai-orb.listening .orb-core {
  animation: breathe-listen 3s ease-in-out infinite alternate;
}

/* Modo HABLANDO (Aura Gold/Amber tipo Fuego/Energía Premium) */
.ai-orb.speaking .orb-core {
  background: radial-gradient(circle at 40% 40%, #FCD34D, #D97706, #78350F);
  box-shadow: 
    0 0 80px rgba(217, 119, 6, 0.8), 
    inset 0 0 40px rgba(255, 255, 255, 0.9),
    inset -20px -20px 40px rgba(245, 158, 11, 0.6);
  animation: pulse-speak 0.18s ease-in-out infinite alternate;
}

.ai-orb.speaking .ring-1 {
  border-top: 4px solid rgba(252, 211, 77, 1);
  border-left: 2px solid rgba(217, 119, 6, 0.8);
  box-shadow: 0 0 35px rgba(217, 119, 6, 0.7), inset 0 0 15px rgba(252, 211, 77, 0.5);
  animation-duration: 1.2s;
  filter: blur(0.5px);
}

.ai-orb.speaking .ring-2 {
  border-right: 4px solid rgba(245, 158, 11, 0.9);
  border-bottom: 2px solid rgba(217, 119, 6, 0.6);
  box-shadow: 0 0 40px rgba(245, 158, 11, 0.5);
  animation-duration: 1.8s;
  filter: blur(1px);
}

.ai-orb.speaking .ring-3 {
  border: 1px dashed rgba(252, 211, 77, 0.5);
  border-bottom: 4px solid rgba(217, 119, 6, 0.9);
  filter: blur(2px);
  animation-duration: 2.5s;
}

@keyframes spin { 100% { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes spin-reverse { 100% { transform: translate(-50%, -50%) rotate(-360deg); } }

@keyframes breathe-listen { 
  0% { transform: scale(0.95); box-shadow: 0 0 30px rgba(56, 189, 248, 0.4), inset 0 0 20px rgba(255,255,255,0.6); } 
  100% { transform: scale(1.02); box-shadow: 0 0 60px rgba(56, 189, 248, 0.8), inset 0 0 30px rgba(255,255,255,0.8); } 
}

@keyframes pulse-speak { 
  0% { transform: scale(1.02); filter: brightness(1); } 
  100% { transform: scale(1.12); filter: brightness(1.25); } 
}

/* Texto Transcrito (Efecto terminal luminoso) */
.call-transcript {
  font-size: 1.25rem;
  text-align: center;
  color: #F8FAFC;
  max-width: 85%;
  min-height: 80px;
  line-height: 1.5;
  margin-bottom: 40px;
  font-weight: 300;
  max-height: 7.5em;
  overflow-y: auto;
  overflow-wrap: anywhere;
  text-shadow: 0 2px 10px rgba(0,0,0,0.5);
  animation: fadeInUp 0.5s ease-out;
}

.call-privacy-note {
  width: min(560px, 88%);
  margin: -18px auto 24px;
  color: #aebbd0;
  font-size: 0.78rem;
  line-height: 1.5;
  text-align: center;
}

.end-call-btn .app-icon,
.end-call-btn .lucide-icon {
  width: 30px;
  height: 30px;
}

/* Botón Colgar Glassmorphism */
.call-controls { margin-top: auto; padding-bottom: 20px; }

.end-call-btn.glass-btn {
  background: rgba(239, 68, 68, 0.2);
  color: #EF4444;
  border: 1px solid rgba(239, 68, 68, 0.3);
  width: 76px;
  height: 76px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 0 30px rgba(239, 68, 68, 0.2);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: all 0.3s ease;
}

.end-call-btn.glass-btn:hover {
  background: rgba(239, 68, 68, 0.8);
  color: white;
  box-shadow: 0 0 50px rgba(239, 68, 68, 0.6);
  transform: scale(1.1) translateY(-5px);
}

.mic-btn-modern:disabled,
.live-call-btn:disabled {
  cursor: not-allowed;
  opacity: 0.48;
  filter: grayscale(0.35);
}





/* ============================================================
   SISTEMA DE DISEÑO PREMIUM DE ALTA GAMA PARA PANTALLAS GATE (LOGIN, REGISTRO, SUSCRIPCIÓN)
   ============================================================ */

/* Pantalla Completa Split-Panel Grid */
.gate-screen {
  position: fixed;
  inset: 0;
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  background: var(--bg-primary);
  padding: 0;
  z-index: 9999;
  overflow: hidden;
  font-family: 'Inter', var(--font-sans), sans-serif;
}

/* Panel Izquierdo (Marca y Beneficios - PC) */
.gate-brand-panel {
  position: relative;
  height: 100%;
  background: radial-gradient(circle at 10% 20%, rgba(212, 175, 55, 0.05) 0%, transparent 60%),
              radial-gradient(circle at 90% 80%, rgba(109, 92, 232, 0.05) 0%, transparent 60%),
              #070b12;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px 60px;
  border-right: 1px solid rgba(255, 255, 255, 0.03);
  overflow: hidden;
}

/* Cuadrícula estética de fondo (Grid lines) */
.gate-brand-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: 
    linear-gradient(rgba(255, 255, 255, 0.015) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.015) 1px, transparent 1px);
  background-size: 50px 50px;
  mask-image: radial-gradient(circle at center, black, transparent 85%);
  -webkit-mask-image: radial-gradient(circle at center, black, transparent 85%);
  pointer-events: none;
}

/* Orbe de luz pulsante */
.brand-panel-glow {
  position: absolute;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(212, 175, 55, 0.05) 0%, transparent 70%);
  filter: blur(60px);
  pointer-events: none;
  animation: auraPulse 8s ease-in-out infinite alternate;
}

@keyframes auraPulse {
  0% { transform: scale(1) translate(0, 0); opacity: 0.8; }
  100% { transform: scale(1.15) translate(20px, -20px); opacity: 1; }
}

.brand-panel-content {
  max-width: 460px;
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
}

/* Contenedor del Escudo Legal */
.brand-logo-container {
  width: 76px;
  height: 76px;
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(212, 175, 55, 0.12), rgba(212, 175, 55, 0.02));
  border: 1px solid rgba(212, 175, 55, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 32px;
  color: var(--gold-300);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

.brand-crest-svg {
  width: 40px;
  height: 40px;
  filter: drop-shadow(0 0 8px rgba(212, 175, 55, 0.25));
  animation: crestBreathe 4s ease-in-out infinite alternate;
}

@keyframes crestBreathe {
  0% { transform: scale(0.97); filter: drop-shadow(0 0 6px rgba(212, 175, 55, 0.15)); }
  100% { transform: scale(1.03); filter: drop-shadow(0 0 16px rgba(212, 175, 55, 0.45)); }
}

.brand-title {
  font-family: var(--font-sans);
  font-size: 2.5rem;
  font-weight: 800;
  color: #ffffff;
  margin: 0 0 16px 0;
  letter-spacing: -0.5px;
}

.brand-title span {
  background: linear-gradient(135deg, #fcd34d, #d4af37);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.brand-tagline {
  font-size: 1.05rem;
  color: #94a3b8;
  line-height: 1.6;
  margin: 0 0 44px 0;
  font-weight: 400;
}

/* Lista de Características en PC */
.brand-features-list {
  display: flex;
  flex-direction: column;
  gap: 28px;
  margin-bottom: 56px;
}

.brand-feature-item {
  display: flex;
  gap: 20px;
  align-items: flex-start;
}

.feature-icon-wrapper {
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #d4af37;
  flex-shrink: 0;
  transition: all 0.3s ease;
}

.brand-feature-item:hover .feature-icon-wrapper {
  background: rgba(212, 175, 55, 0.08);
  border-color: rgba(212, 175, 55, 0.25);
  color: #fcd34d;
  box-shadow: 0 0 15px rgba(212, 175, 55, 0.15);
}

.feature-icon-wrapper svg {
  width: 20px;
  height: 20px;
}

.feature-text h3 {
  font-size: 0.98rem;
  font-weight: 600;
  color: #f8fafc;
  margin: 0 0 6px 0;
}

.feature-text p {
  font-size: 0.88rem;
  color: #64748b;
  margin: 0;
  line-height: 1.55;
}

.brand-footer-quote {
  border-left: 2px solid #d4af37;
  padding-left: 20px;
  color: #475569;
  font-size: 0.88rem;
  font-style: italic;
  line-height: 1.5;
}

.brand-footer-quote p {
  margin: 0;
}

/* El acceso siempre usa una superficie clara. La preferencia de tema se
   conserva y vuelve a aplicarse una vez que el usuario entra al producto. */
#login-screen {
  --bg-primary: #ffffff;
  --bg-input: #ffffff;
  --bg-elevated: #ffffff;
  --surface-soft: #f8fafc;
  --surface-warm: #fffbf3;
  --text-primary: #0f172a;
  --text-secondary: #475569;
  --text-muted: #64748b;
  --text-gold: #92400e;
  --border-subtle: rgba(15, 23, 42, 0.08);
  --border-medium: rgba(15, 23, 42, 0.15);
  --glass-light: rgba(15, 23, 42, 0.04);
  color-scheme: light;
  background: #ffffff;
}

#login-screen .auth-form-heading {
  display: grid;
  gap: 7px;
}

#login-screen .auth-form-heading > span {
  color: #8a5a12;
  font-size: 0.7rem;
  font-weight: 750;
  letter-spacing: 0;
}

#login-screen .auth-form-heading h2 {
  margin: 0;
  color: #0f172a;
  font-size: clamp(1.65rem, 2.4vw, 2rem);
  font-weight: 780;
  line-height: 1.2;
  letter-spacing: 0;
}

#login-screen .auth-form-heading p {
  margin: 0;
  color: #64748b;
  font-size: 0.88rem;
  line-height: 1.55;
}

#login-screen .gate-logo-mobile-svg {
  overflow: hidden;
  border: 0;
  border-radius: 14px;
  background: #111827;
  box-shadow: 0 10px 26px rgba(15, 23, 42, 0.16);
}

#login-screen .gate-mobile-mark {
  display: block;
  width: 56px;
  height: 56px;
  object-fit: cover;
}

#login-screen .gate-form-container {
  max-width: 440px;
  gap: 24px;
}

#login-screen .modern-tabs {
  padding: 4px;
  border: 1px solid #dbe3ec;
  border-radius: 8px;
  background: #f8fafc;
}

#login-screen .modern-tab-btn {
  min-height: 44px;
  border-radius: 6px;
  color: #64748b;
  letter-spacing: 0;
}

#login-screen .modern-tab-btn.active {
  border: 1px solid #e7d5b1;
  background: #ffffff;
  color: #7c4a0a;
  text-shadow: none;
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}

#login-screen .gate-form {
  gap: 18px;
}

#login-screen .modern-input {
  min-height: 56px;
  padding: 16px;
  border: 1px solid #cfd8e3;
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

#login-screen .modern-input:focus {
  border-color: #b7791f;
  background: #ffffff;
  box-shadow: 0 0 0 4px rgba(194, 135, 45, 0.12);
}

#login-screen .password-field-group .modern-input {
  padding-right: 88px;
}

#login-screen .password-visibility-toggle {
  position: absolute;
  z-index: 2;
  top: 50%;
  right: 12px;
  min-width: 64px;
  min-height: 34px;
  padding: 0 8px;
  transform: translateY(-50%);
  border: 0;
  border-radius: 6px;
  background: #f8fafc;
  color: #7c4a0a;
  cursor: pointer;
  font: 700 0.72rem var(--font-sans);
}

#login-screen .password-visibility-toggle:hover,
#login-screen .password-visibility-toggle:focus-visible {
  background: #fff7e8;
  box-shadow: 0 0 0 3px rgba(194, 135, 45, 0.12);
}

#login-screen .gate-feedback {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid #fecaca;
  border-radius: 8px;
  background: #fff7f7;
  color: #991b1b;
  font-size: 0.78rem;
  line-height: 1.45;
}

#login-screen .gate-feedback[data-tone="success"] {
  border-color: #bbf7d0;
  background: #f0fdf4;
  color: #166534;
}

#login-screen .privacy-consent-field input {
  width: 18px;
  height: 18px;
  margin-top: 1px;
  accent-color: #bd7b19;
}

#login-screen .btn-premium-action {
  min-height: 52px;
  border-radius: 8px;
  background: #bd7b19;
  color: #ffffff;
  letter-spacing: 0;
  box-shadow: 0 10px 24px rgba(183, 121, 31, 0.18);
}

#login-screen .btn-premium-action:hover {
  background: #a96816;
  box-shadow: 0 12px 28px rgba(169, 104, 22, 0.22);
  filter: none;
}

#login-screen .auth-security-note {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  margin: -2px 0 0;
  color: #64748b;
  font-size: 0.72rem;
  line-height: 1.4;
  text-align: center;
}

#login-screen .auth-security-note .app-icon {
  display: inline-grid;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  place-items: center;
  color: #15803d;
}

#login-screen .auth-security-note svg {
  width: 17px;
  height: 17px;
}

@media (min-width: 861px) {
  #login-screen.gate-screen {
    grid-template-columns: minmax(500px, 1.08fr) minmax(420px, 0.92fr);
  }

  #login-screen .gate-brand-panel {
    height: 100%;
    padding: clamp(42px, 7vh, 76px) clamp(44px, 6vw, 88px);
    overflow-y: auto;
    border-right: 1px solid #e2e8f0;
    background: #ffffff;
    color: #0f172a;
  }

  #login-screen .gate-brand-panel::before,
  #login-screen .brand-panel-glow {
    display: none;
  }

  #login-screen .brand-panel-content {
    width: min(100%, 580px);
    max-width: 580px;
  }

  #login-screen .auth-brand-lockup {
    display: flex;
    gap: 18px;
    align-items: center;
    margin-bottom: 22px;
  }

  #login-screen .brand-logo-container {
    width: 68px;
    height: 68px;
    margin: 0;
    flex: 0 0 68px;
    overflow: hidden;
    border: 0;
    border-radius: 14px;
    background: #111827;
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.14);
  }

  #login-screen .brand-app-icon {
    display: block;
    width: 68px;
    height: 68px;
    object-fit: cover;
  }

  #login-screen .auth-brand-kicker {
    margin: 0 0 6px;
    color: #64748b;
    font-size: 0.7rem;
    font-weight: 750;
    letter-spacing: 0;
  }

  #login-screen .brand-title {
    margin: 0;
    color: #0f172a;
    font-size: clamp(2rem, 3vw, 2.5rem);
    line-height: 1;
    letter-spacing: 0;
  }

  #login-screen .brand-title span {
    background: none;
    color: #b7791f;
    -webkit-text-fill-color: currentColor;
  }

  #login-screen .brand-tagline {
    max-width: 520px;
    margin: 0 0 30px;
    color: #475569;
    font-size: 1.08rem;
    line-height: 1.6;
  }

  #login-screen .auth-case-preview {
    width: 100%;
    overflow: hidden;
    border: 1px solid #cfd9e5;
    border-top: 3px solid #bd7b19;
    border-radius: 8px;
    background: #f8fafc;
  }

  #login-screen .auth-case-header {
    display: flex;
    gap: 18px;
    align-items: flex-start;
    justify-content: space-between;
    padding: 20px 22px 16px;
  }

  #login-screen .auth-case-header > div > span {
    display: block;
    margin-bottom: 5px;
    color: #64748b;
    font-size: 0.68rem;
    font-weight: 750;
    letter-spacing: 0;
  }

  #login-screen .auth-case-header h2 {
    margin: 0;
    color: #0f172a;
    font-size: 1.06rem;
    line-height: 1.3;
    letter-spacing: 0;
  }

  #login-screen .auth-case-status {
    flex: 0 0 auto;
    padding: 5px 9px;
    border: 1px solid #d6b878;
    border-radius: 999px;
    background: #fffaf0;
    color: #80520d;
    font-size: 0.7rem;
    font-weight: 700;
  }

  #login-screen .auth-case-question {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    margin: 0 22px;
    padding: 15px 0;
    border-top: 1px solid #e2e8f0;
    border-bottom: 1px solid #e2e8f0;
  }

  #login-screen .auth-case-question .app-icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    border: 1px solid #e5d5b8;
    border-radius: 8px;
    background: #ffffff;
    color: #b7791f;
  }

  #login-screen .auth-case-question .app-icon svg,
  #login-screen .auth-case-results .app-icon svg,
  #login-screen .auth-trust-row .app-icon svg {
    width: 18px;
    height: 18px;
  }

  #login-screen .auth-case-question p {
    margin: 0;
    color: #334155;
    font-size: 0.9rem;
    font-weight: 600;
    line-height: 1.5;
  }

  #login-screen .auth-case-results {
    display: grid;
    gap: 11px;
    margin: 0;
    padding: 18px 22px;
    list-style: none;
  }

  #login-screen .auth-case-results li {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    color: #334155;
    font-size: 0.82rem;
    line-height: 1.35;
  }

  #login-screen .auth-case-results .app-icon {
    color: #15803d;
  }

  #login-screen .auth-case-sources {
    display: grid;
    gap: 4px;
    padding: 14px 22px 17px;
    border-top: 1px solid #e2e8f0;
  }

  #login-screen .auth-case-sources span {
    color: #64748b;
    font-size: 0.68rem;
  }

  #login-screen .auth-case-sources strong {
    color: #334155;
    font-size: 0.76rem;
    font-weight: 650;
    line-height: 1.45;
  }

  #login-screen .auth-trust-row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 24px;
    margin-top: 20px;
    color: #64748b;
  }

  #login-screen .auth-trust-row > div {
    display: inline-flex;
    gap: 7px;
    align-items: center;
    font-size: 0.72rem;
    font-weight: 650;
  }

  #login-screen .auth-trust-row .app-icon {
    display: inline-grid;
    width: 18px;
    height: 18px;
    place-items: center;
    color: #b7791f;
  }

  #login-screen .gate-form-panel {
    border: 0;
    background: #ffffff;
  }
}


/* Panel Derecho (Formularios y Acceso) */
.gate-form-panel {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 60px 40px;
  overflow-y: auto;
  background: var(--bg-primary);
  color: var(--text-primary);
  position: relative;
}

/* Contenedor del Formulario */
.gate-form-container {
  width: 100%;
  max-width: 400px;
  display: flex;
  flex-direction: column;
  gap: 36px;
  animation: fadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.gate-header-mobile {
  text-align: center;
  display: none;
}

.gate-logo-mobile-svg {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 auto 16px;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: rgba(212, 175, 55, 0.08);
  border: 1px solid rgba(212, 175, 55, 0.2);
  color: #d4af37;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
}

.gate-header-mobile h2 {
  font-family: var(--font-sans);
  font-size: 1.8rem;
  font-weight: 800;
  margin: 0 0 6px 0;
  color: var(--text-primary);
  letter-spacing: -0.5px;
}

.gate-header-mobile h2 span {
  color: #d4af37;
}

.gate-header-mobile p {
  font-size: 0.88rem;
  color: var(--text-muted);
  margin: 0;
}


/* Tabs Capsule Deslizantes */
.modern-tabs {
  display: flex;
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
  padding: 4px;
  border-radius: 14px;
  width: 100%;
}

.modern-tab-btn {
  flex: 1;
  padding: 12px 16px;
  background: transparent;
  border: none;
  color: var(--text-muted);
  font-size: 0.92rem;
  font-weight: 600;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: 'Inter', var(--font-sans), sans-serif;
  position: relative;
}

.modern-tab-btn:hover {
  color: var(--text-primary);
}

.modern-tab-btn.active {
  background: linear-gradient(135deg, rgba(212, 175, 55, 0.18), rgba(212, 175, 55, 0.06));
  color: #fcd34d;
  box-shadow: 0 0 0 1px rgba(212, 175, 55, 0.35), 0 4px 20px rgba(212, 175, 55, 0.12), inset 0 1px 0 rgba(255,255,255,0.05);
  border: none;
  font-weight: 700;
  text-shadow: 0 0 20px rgba(212, 175, 55, 0.4);
}

.modern-tab-btn:not(.active):hover {
  color: var(--text-primary);
  background: var(--glass-light);
}


/* Formularios y Campos Flotantes */
.gate-form {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.input-field-group {
  position: relative;
  width: 100%;
}

.modern-input {
  width: 100%;
  padding: 16px;
  background: var(--bg-input);
  border: 1px solid var(--border-medium);
  border-radius: 12px;
  color: var(--text-primary);
  font-family: 'Inter', var(--font-sans), sans-serif;
  font-size: 0.95rem;
  outline: none;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

.modern-input:focus {
  border-color: #d4af37;
  background: var(--bg-input);
  box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.12), inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Floating Label Logic */
.floating-label {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-muted);
  font-size: 0.95rem;
  pointer-events: none;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  background: transparent;
  padding: 0 4px;
}

.modern-input:focus ~ .floating-label,
.modern-input:not(:placeholder-shown) ~ .floating-label {
  top: 0;
  transform: translateY(-50%) scale(0.8);
  color: #d4af37;
  background: var(--bg-primary);
  font-weight: 600;
  letter-spacing: 0.5px;
}

/* Autofill fixes */
.modern-input:-webkit-autofill,
.modern-input:-webkit-autofill:hover, 
.modern-input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--text-primary);
  -webkit-box-shadow: 0 0 0 1000px var(--bg-input) inset;
  transition: background-color 5000s ease-in-out 0s;
}


/* Botones Premium */
.btn-premium-action {
  width: 100%;
  padding: 16px;
  border-radius: 12px;
  border: none;
  background: linear-gradient(135deg, #fcd34d, #d4af37);
  color: #05080e;
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.5px;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  box-shadow: 0 8px 24px rgba(212, 175, 55, 0.15);
  font-family: 'Inter', var(--font-sans), sans-serif;
}

.btn-premium-action:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 30px rgba(212, 175, 55, 0.3);
  filter: brightness(1.05);
}

.btn-premium-action:active {
  transform: translateY(0);
}

.btn-premium-action:disabled {
  background: #1e293b;
  color: #64748b;
  cursor: not-allowed;
  box-shadow: none;
  transform: none;
}


/* Formulario de Verificación de 6 dígitos */
.verify-subtitle {
  color: #94a3b8;
  font-size: 0.9rem;
  line-height: 1.5;
  text-align: center;
  margin: 0 0 8px 0;
}

.verification-code-input {
  text-align: center;
  font-size: 1.8rem;
  letter-spacing: 12px;
  font-weight: 800;
  padding-left: 24px;
}

#verification-form .input-field-group,
#login-otp-screen .input-field-group {
  margin-top: 10px;
  margin-bottom: 2px;
}

#verification-code,
#login-otp-input {
  min-height: 66px;
  padding-top: 22px;
  padding-bottom: 12px;
  letter-spacing: clamp(5px, 1.8vw, 10px);
}

#verification-form .input-field-group .floating-label,
#login-otp-screen .input-field-group .floating-label {
  top: 0;
  left: 18px;
  right: auto;
  width: auto;
  transform: translateY(-50%) scale(0.82);
  background: #05080e;
  color: #d4af37;
  z-index: 2;
  letter-spacing: 0.2px;
  white-space: nowrap;
  max-width: calc(100% - 36px);
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
  border-radius: 999px;
}

#verification-form #submit-verify-btn,
#login-otp-screen #verify-login-otp-btn {
  min-height: 54px;
  margin-top: 8px;
  position: relative;
  z-index: 1;
}

.verify-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
  min-height: 28px;
  position: relative;
  z-index: 1;
}

.btn-text-link {
  background: transparent;
  border: none;
  color: #d4af37;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: color 0.2s ease;
  font-family: 'Inter', var(--font-sans), sans-serif;
}

.btn-text-link:hover {
  color: #fcd34d;
  text-decoration: underline;
}

.cooldown-text {
  color: #64748b;
  font-size: 0.85rem;
  white-space: nowrap;
  margin-left: auto;
}

@media (max-width: 520px) {
  #verification-form {
    gap: 16px;
  }

  #verification-code,
  #login-otp-input {
    font-size: 1.35rem;
    letter-spacing: 6px;
  }

  #verification-form #submit-verify-btn,
  #login-otp-screen #verify-login-otp-btn {
    margin-top: 4px;
  }

  .verify-actions {
    align-items: stretch;
    flex-direction: column;
    margin-top: 14px;
    text-align: center;
  }

  .cooldown-text {
    margin-left: 0;
  }

  #resend-code-btn,
  #resend-login-otp-btn {
    min-height: 38px;
  }
}

.cancel-link {
  color: #64748b;
  margin: 16px auto 0;
  display: block;
}

.cancel-link:hover {
  color: #cbd5e1;
}


/* ============================================================
   REDISEÑO DE PANTALLA DE SUSCRIPCIÓN (PLANS GRID & STRIPE PAYMENT)
   ============================================================ */

/* Rediseñar beneficio en el panel de planes */
.plan-summary-panel .premium-benefits-card {
  background: rgba(255, 255, 255, 0.01);
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-radius: 16px;
  padding: 24px;
  margin: 32px 0;
}

.plan-summary-panel .premium-benefits-card h3 {
  font-size: 1rem;
  color: #ffffff;
  margin: 0 0 16px 0;
  font-weight: 600;
}

.plan-summary-panel .benefits-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.plan-summary-panel .benefits-list li {
  display: flex;
  gap: 12px;
  align-items: center;
  font-size: 0.88rem;
  color: #94a3b8;
}

.plan-summary-panel .benefits-list li svg {
  flex-shrink: 0;
}

.secure-checkout-badge {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  color: #475569;
  font-size: 0.8rem;
  line-height: 1.4;
  border-top: 1px solid rgba(255, 255, 255, 0.03);
  padding-top: 24px;
}

.secure-checkout-badge svg {
  color: #64748b;
  flex-shrink: 0;
}


/* Tarjetas de Plan (Subscription Screen) */
.plans-grid {
  display: flex;
  gap: 16px;
  width: 100%;
  margin-bottom: 8px;
}

.plan-card {
  flex: 1;
  background: rgba(255, 255, 255, 0.01);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  padding: 20px 14px;
  text-align: center;
  cursor: pointer;
  position: relative;
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  overflow: hidden;
}

.plan-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top, rgba(212, 175, 55, 0.06), transparent 70%);
  opacity: 0;
  transition: opacity 0.3s ease;
}

.plan-card:hover {
  border-color: rgba(255, 255, 255, 0.12);
  transform: translateY(-2px);
  background: rgba(255, 255, 255, 0.02);
}

.plan-card:hover::before {
  opacity: 1;
}

.plan-card.active {
  border-color: #d4af37;
  background: rgba(212, 175, 55, 0.04);
  box-shadow: 0 0 0 1px #d4af37, 0 8px 30px rgba(212, 175, 55, 0.08);
}

.plan-card.active::before {
  opacity: 1;
  background: radial-gradient(circle at top, rgba(212, 175, 55, 0.12), transparent 70%);
}

.plan-ribbon {
  position: absolute;
  top: 0;
  right: 0;
  background: #d4af37;
  color: #05080e;
  font-size: 0.65rem;
  font-weight: 800;
  padding: 2px 8px;
  border-bottom-left-radius: 8px;
  letter-spacing: 0.5px;
}

.plan-badge {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: #64748b;
  transition: color 0.25s ease;
}

.plan-card.active .plan-badge {
  color: #d4af37;
}

.plan-price {
  margin: 4px 0;
}

.plan-amount {
  font-size: 1.7rem;
  font-weight: 800;
  color: #ffffff;
  display: block;
  letter-spacing: -0.5px;
  line-height: 1;
  transition: color 0.25s ease;
}

.plan-card.active .plan-amount {
  color: #d4af37;
}

.plan-period {
  font-size: 0.72rem;
  color: #64748b;
  font-weight: 500;
  margin-top: 4px;
  display: block;
}

.plan-desc {
  font-size: 0.78rem;
  color: #475569;
  line-height: 1.4;
  margin: 4px 0 0 0;
}

.plan-card.active .plan-desc {
  color: #94a3b8;
}

.payment-note {
  color: #475569;
  font-size: 0.75rem;
  text-align: center;
  margin: 12px 0 0 0;
  line-height: 1.4;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.payment-note svg {
  color: #64748b;
  flex-shrink: 0;
}


/* ============================================================
   MEDIA QUERIES (ADAPTABILIDAD MÓVIL 100% EXCELENTE)
   ============================================================ */

@media (max-width: 860px) {
  .gate-screen {
    grid-template-columns: 1fr;
  }
  
  .gate-brand-panel {
    display: none;
  }
  
  .gate-form-panel {
    padding: 32px 20px;
    background: var(--bg-primary);
    align-items: flex-start;
  }
  
  .gate-form-container {
    max-width: 100%;
    gap: 32px;
    margin-top: 20px;
  }

  .modern-tabs {
    background: var(--surface-soft);
    border-color: var(--border-medium);
  }

  .modern-tab-btn {
    color: var(--text-secondary);
  }

  .modern-input {
    background: var(--bg-input);
    border-color: var(--border-medium);
  }

  .floating-label {
    color: var(--text-secondary);
  }

  .btn-premium-action {
    box-shadow: 0 12px 30px rgba(212, 175, 55, 0.22);
  }
  
  .gate-header-mobile {
    display: block;
  }
  
  .floating-label {
    font-size: 0.9rem;
  }
  
  .modern-input:focus ~ .floating-label,
  .modern-input:not(:placeholder-shown) ~ .floating-label {
    background: var(--bg-primary);
  }
  
  .plans-grid {
    flex-direction: column;
    gap: 12px;
  }
  
  .plan-card {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    text-align: left;
    padding: 16px 20px;
  }
  
  .plan-card::before {
    background: radial-gradient(circle at left, rgba(212, 175, 55, 0.06), transparent 70%);
  }
  
  .plan-ribbon {
    position: relative;
    order: 3;
    border-radius: 6px;
    margin-top: 0;
  }
  
  .plan-price {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
  }
  
  .plan-desc {
    display: none;
  }
}

/* ── Tabs de Método de Pago (PSE vs Tarjeta) ──────────────────── */
.payment-method-tabs {
  display: flex;
  gap: 8px;
  margin-top: 16px;
}

.pay-method-tab {
  flex: 1;
  padding: 10px 8px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 10px;
  color: #94a3b8;
  font-size: 0.80rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.25s ease;
  font-family: 'Inter', sans-serif;
  line-height: 1.3;
}

.pay-method-tab:hover {
  color: #e2e8f0;
  background: rgba(255,255,255,0.06);
}

.pay-method-tab.active {
  background: linear-gradient(135deg,rgba(212,175,55,0.18),rgba(212,175,55,0.06));
  color: #fcd34d;
  border-color: rgba(212,175,55,0.35);
  font-weight: 700;
}
/* ── OTP shake animation ─────────────────────────────────── */
@keyframes shake {
  0%,100% { transform: translateX(0); }
  20%     { transform: translateX(-8px); }
  40%     { transform: translateX(8px); }
  60%     { transform: translateX(-5px); }
  80%     { transform: translateX(5px); }
}
.shake { animation: shake 0.4s ease; }
/* Fase 1 - Sistema de casos */
.cases-section {
  border-bottom: 1px solid var(--border-medium);
  margin-bottom: 14px;
  padding-bottom: 14px;
}

.cases-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.cases-refresh-btn {
  width: 28px;
  height: 28px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  line-height: 1;
}

.cases-refresh-btn:hover {
  color: var(--gold-500);
  border-color: rgba(212, 175, 55, 0.45);
}

.cases-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 280px;
  overflow-y: auto;
  padding-right: 2px;
}

.cases-tools {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 8px;
}

.cases-search-input,
.cases-filter-select {
  width: 100%;
  min-height: 34px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.78rem;
  outline: none;
}

.cases-search-input {
  padding: 8px 10px;
}

.cases-filter-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
}

.cases-filter-select {
  padding: 7px 8px;
}

.cases-search-input:focus,
.cases-filter-select:focus {
  border-color: rgba(212, 175, 55, 0.55);
  box-shadow: 0 0 0 2px rgba(212, 175, 55, 0.1);
}

.case-item {
  width: 100%;
  text-align: left;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text-primary);
  cursor: pointer;
  padding: 10px;
  transition: background 0.18s ease, border-color 0.18s ease;
}

.case-item:hover,
.case-item.active {
  background: rgba(212, 175, 55, 0.08);
  border-color: rgba(212, 175, 55, 0.22);
}

.case-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.case-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.84rem;
  font-weight: 700;
}

.case-status {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 2px 7px;
  background: rgba(148, 163, 184, 0.12);
  color: var(--text-secondary);
  font-size: 0.66rem;
  font-weight: 700;
}

.case-meta {
  color: var(--gold-500);
  font-size: 0.7rem;
  font-weight: 700;
  margin-top: 6px;
  text-transform: capitalize;
}

.case-summary {
  color: var(--text-secondary);
  font-size: 0.72rem;
  line-height: 1.35;
  margin-top: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.case-empty {
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.4;
  padding: 10px;
  border: 1px dashed var(--border-medium);
  border-radius: 8px;
}

.cases-load-more-btn {
  width: 100%;
  margin-top: 8px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  font: inherit;
  font-size: 0.78rem;
  font-weight: 700;
  padding: 9px 10px;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.cases-load-more-btn:hover {
  background: rgba(212, 175, 55, 0.08);
  border-color: rgba(212, 175, 55, 0.35);
  color: var(--gold-500);
}

.case-documents-panel {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
}

.case-documents-title {
  color: var(--text-secondary);
  font-size: 0.7rem;
  font-weight: 850;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.case-documents-list {
  display: flex;
  flex-direction: column;
  gap: 7px;
  max-height: 180px;
  overflow-y: auto;
}

.case-document-item {
  width: 100%;
  border: 1px solid rgba(212, 175, 55, 0.18);
  border-radius: 8px;
  background: rgba(212, 175, 55, 0.06);
  color: var(--text-primary);
  cursor: pointer;
  font: inherit;
  text-align: left;
  padding: 9px;
}

.case-document-item span,
.case-document-item small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.case-document-item span {
  font-size: 0.78rem;
  font-weight: 800;
}

.case-document-item small {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.68rem;
}

/* ==========================================================
   FASE 3 - ANALISIS DE EVIDENCIAS
   ========================================================== */
.case-evidence-btn {
  width: 100%;
  min-height: 42px;
  margin-top: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid rgba(217, 119, 6, 0.28);
  border-radius: 9px;
  background: linear-gradient(135deg, rgba(217, 119, 6, 0.12), rgba(217, 119, 6, 0.04));
  color: var(--text-primary);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 800;
  cursor: pointer;
}

.case-evidence-btn:hover:not(:disabled) {
  border-color: rgba(217, 119, 6, 0.55);
  background: rgba(217, 119, 6, 0.14);
}

.case-evidence-btn:disabled {
  opacity: 0.48;
  cursor: not-allowed;
}

.case-evidence-count {
  min-width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--gold-500);
  color: #fff;
  font-size: 0.7rem;
}

/* ==========================================================
   FASE 5 - MEMORIA LEGAL
   ========================================================== */
.legal-memory-open-btn {
  border-color: rgba(124, 58, 237, 0.24);
  background: linear-gradient(135deg, rgba(124, 58, 237, 0.09), rgba(217, 119, 6, 0.06));
}

.legal-memory-modal[hidden] { display: none; }

.legal-memory-modal {
  box-sizing: border-box;
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: 100vw;
  z-index: 9400;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(10px, 2vw, 24px);
  background: rgba(2, 6, 23, 0.82);
  backdrop-filter: blur(10px);
  overflow: hidden;
}

.legal-memory-shell {
  width: min(1180px, 100%);
  max-width: 100%;
  height: min(920px, calc(100dvh - 24px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(124, 58, 237, 0.28);
  border-radius: 18px;
  background: var(--bg-primary);
  box-shadow: 0 30px 80px rgba(2, 6, 23, 0.46);
}

.legal-memory-grid {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  overflow-y: auto;
  overflow-x: hidden;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
  gap: 14px;
  padding: 16px;
  background: var(--bg-void);
}

.legal-memory-card {
  min-width: 0;
  border: 1px solid var(--border-subtle);
  border-radius: 14px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
  padding: 16px;
}

.legal-memory-card-wide { grid-column: 1 / -1; }

.legal-memory-card h3 {
  margin: 0 0 12px;
  color: var(--text-primary);
  font-size: 1rem;
}

.legal-memory-form-grid,
.legal-memory-split {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
}

.legal-memory-field {
  min-width: 0;
  display: grid;
  gap: 6px;
  color: var(--text-muted);
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.legal-memory-field input,
.legal-memory-field select,
.legal-memory-field textarea,
.legal-memory-textarea,
.legal-memory-row input {
  box-sizing: border-box;
  min-width: 0;
  width: 100%;
  min-height: 40px;
  padding: 9px 10px;
  border: 1px solid var(--border-medium);
  border-radius: 9px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.8rem;
  letter-spacing: 0;
  text-transform: none;
}

.legal-memory-field textarea,
.legal-memory-textarea {
  resize: vertical;
  min-height: 110px;
  line-height: 1.5;
}

.legal-memory-dynamic-list {
  display: grid;
  gap: 8px;
  margin-bottom: 10px;
}

.legal-memory-row {
  min-width: 0;
  display: grid;
  grid-template-columns: 90px 1fr 34px;
  gap: 8px;
  align-items: center;
}

.legal-memory-row-three {
  grid-template-columns: minmax(90px, 0.9fr) minmax(90px, 0.8fr) minmax(130px, 1.2fr) 34px;
}

.legal-memory-row-remove {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  background: var(--bg-primary);
  color: var(--text-muted);
  cursor: pointer;
  font-size: 1.2rem;
  line-height: 1;
}

.legal-memory-case-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.legal-memory-pill {
  display: inline-flex;
  align-items: center;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(124, 58, 237, 0.11);
  color: #6d28d9;
  font-size: 0.68rem;
  font-weight: 900;
}

.legal-memory-pill.is-muted {
  background: var(--bg-void);
  color: var(--text-muted);
}

.legal-memory-privacy p {
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.5;
}

.legal-memory-actions-stack {
  display: grid;
  gap: 8px;
}

.legal-memory-danger {
  background: #dc2626;
  border-color: #dc2626;
}

.legal-memory-recent-list {
  display: grid;
  gap: 8px;
}

.legal-memory-recent-item {
  display: grid;
  gap: 3px;
  width: 100%;
  padding: 10px 11px;
  border: 1px solid var(--border-subtle);
  border-radius: 11px;
  background: var(--bg-void);
  text-align: left;
  cursor: pointer;
}

.legal-memory-recent-item strong {
  color: var(--text-primary);
  font-size: 0.8rem;
}

.legal-memory-recent-item span,
.legal-memory-recent-item small {
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.35;
}

.legal-memory-footer {
  min-width: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  border-top: 1px solid var(--border-subtle);
  background: var(--bg-primary);
}

.legal-memory-footer p {
  margin: 0;
  max-width: 680px;
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.45;
}

.legal-memory-footer > div {
  display: flex;
  gap: 9px;
  flex-shrink: 0;
}

.legal-memory-shell .legal-tools-header > div {
  min-width: 0;
}

@media (max-width: 960px) {
  .legal-memory-grid {
    grid-template-columns: 1fr;
  }

  .legal-memory-card-wide { grid-column: auto; }
}

@media (max-width: 620px) {
  .legal-memory-modal { padding: 0; }
  .legal-memory-shell {
    height: 100dvh;
    border: 0;
    border-radius: 0;
  }
  .legal-memory-grid {
    padding: 12px;
  }
  .legal-memory-form-grid,
  .legal-memory-split,
  .legal-memory-row,
  .legal-memory-row-three {
    grid-template-columns: 1fr;
  }
  .legal-memory-row-remove {
    width: 100%;
  }
  .legal-memory-footer {
    display: grid;
  }
  .legal-memory-footer > div {
    display: grid;
  }
}

/* ==========================================================
   FASE 4 - HERRAMIENTAS LEGALES QUE VENDEN
   ========================================================== */
.legal-tools-open-btn {
  border-color: rgba(15, 23, 42, 0.16);
  background: linear-gradient(135deg, rgba(15, 23, 42, 0.08), rgba(217, 119, 6, 0.07));
}

.legal-tools-modal[hidden] { display: none; }

.legal-tools-modal {
  position: fixed;
  inset: 0;
  z-index: 9300;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(10px, 2vw, 24px);
  background: rgba(2, 6, 23, 0.8);
  backdrop-filter: blur(10px);
}

.legal-tools-shell {
  width: min(1280px, 100%);
  height: min(920px, calc(100dvh - 24px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(217, 119, 6, 0.28);
  border-radius: 18px;
  background: var(--bg-primary);
  box-shadow: 0 30px 80px rgba(2, 6, 23, 0.44);
}

.legal-tools-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 24px 17px;
  color: #f8fafc;
  background:
    radial-gradient(circle at top left, rgba(217,119,6,0.28), transparent 34%),
    #0f1b31;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.legal-tools-header h2 {
  margin: 0;
  font-family: var(--font-serif);
  font-size: clamp(1.35rem, 2.5vw, 1.95rem);
  line-height: 1.15;
}

.legal-tools-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: 260px 1fr;
  background: var(--bg-void);
}

.legal-tools-nav {
  min-height: 0;
  overflow-y: auto;
  padding: 14px;
  border-right: 1px solid var(--border-subtle);
  background: var(--bg-primary);
}

.legal-tool-card {
  width: 100%;
  display: grid;
  gap: 4px;
  margin-bottom: 8px;
  padding: 13px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 12px;
  background: var(--bg-elevated);
  color: var(--text-primary);
  text-align: left;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.legal-tool-card:hover {
  transform: translateY(-1px);
  border-color: rgba(217, 119, 6, 0.32);
}

.legal-tool-card.active {
  border-color: rgba(217, 119, 6, 0.55);
  background: linear-gradient(135deg, rgba(217,119,6,0.14), rgba(255,255,255,0.82));
}

[data-theme="dark"] .legal-tool-card.active {
  background: linear-gradient(135deg, rgba(217,119,6,0.22), rgba(30,41,59,0.92));
}

.legal-tool-card strong {
  font-size: 0.82rem;
  font-weight: 850;
}

.legal-tool-card span {
  color: var(--text-muted);
  font-size: 0.7rem;
  line-height: 1.35;
}

.legal-tools-main {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(360px, 0.9fr) minmax(360px, 1.1fr);
  gap: 14px;
  padding: 16px;
  overflow: hidden;
}

.legal-tools-workbench,
.legal-tools-results {
  min-height: 0;
  overflow-y: auto;
}

.legal-tool-form,
.legal-tool-result,
.legal-tools-history {
  border: 1px solid var(--border-subtle);
  border-radius: 14px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

.legal-tool-form {
  display: grid;
  gap: 14px;
  padding: 18px;
}

.legal-tool-form h3,
.legal-tool-result h3 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1rem;
}

.legal-tool-form p,
.legal-tool-result p,
.legal-tool-result li {
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.55;
}

.legal-tool-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
}

.legal-field {
  display: grid;
  gap: 6px;
}

.legal-field.legal-field-wide { grid-column: 1 / -1; }

.legal-field label,
.legal-checklist-title {
  color: var(--text-muted);
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.legal-field input,
.legal-field select,
.legal-field textarea {
  width: 100%;
  min-height: 40px;
  padding: 9px 10px;
  border: 1px solid var(--border-medium);
  border-radius: 9px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.8rem;
}

.legal-field textarea {
  min-height: 120px;
  resize: vertical;
}

.legal-checklist {
  display: grid;
  gap: 8px;
}

.legal-check {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  padding: 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  background: var(--bg-void);
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.4;
}

.legal-check input {
  margin-top: 2px;
  accent-color: var(--gold-500);
}

.legal-tool-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  align-items: center;
}

.legal-tool-submit,
.legal-tool-secondary {
  min-height: 42px;
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid transparent;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 850;
  cursor: pointer;
}

.legal-tool-submit {
  background: var(--gold-500);
  color: #fff;
}

.legal-tool-submit:hover { background: var(--gold-700); }

.legal-tool-submit:disabled {
  opacity: 0.55;
  cursor: progress;
}

.legal-tool-secondary {
  border-color: var(--border-medium);
  background: var(--bg-primary);
  color: var(--text-primary);
}

.legal-tool-result {
  min-height: 280px;
  padding: 18px;
}

.legal-tool-empty {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.legal-result-total {
  margin: 10px 0 14px;
  padding: 14px;
  border-radius: 13px;
  background: linear-gradient(135deg, rgba(217,119,6,0.13), rgba(217,119,6,0.04));
  border: 1px solid rgba(217,119,6,0.2);
}

.legal-result-total strong {
  display: block;
  color: var(--text-primary);
  font-size: clamp(1.25rem, 3vw, 1.9rem);
}

.legal-result-total span {
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.legal-result-list,
.legal-result-cards {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}

.legal-result-item {
  padding: 11px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 10px;
  background: var(--bg-void);
}

.legal-result-item strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.8rem;
}

.legal-result-item small {
  display: block;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.45;
}

.risk-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 9px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 900;
  text-transform: uppercase;
}

.risk-pill.bajo,
.risk-pill.favorable,
.risk-pill.bien_preparado,
.risk-pill.listo_para_revisar {
  background: rgba(5, 150, 105, 0.13);
  color: #047857;
}

.risk-pill.medio,
.risk-pill.incierto,
.risk-pill.en_desarrollo,
.risk-pill.requiere_completar {
  background: rgba(217, 119, 6, 0.14);
  color: var(--gold-700);
}

.risk-pill.alto,
.risk-pill.desfavorable,
.risk-pill.requiere_atencion_urgente,
.risk-pill.informacion_insuficiente {
  background: rgba(239, 68, 68, 0.13);
  color: #dc2626;
}

.legal-sources {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--border-subtle);
}

.legal-sources a {
  display: block;
  margin-top: 6px;
  color: var(--gold-700);
  font-size: 0.72rem;
  font-weight: 800;
  text-decoration: none;
}

.legal-sources .legal-source-disabled {
  margin-top: 6px;
  font-size: 0.72rem;
  font-weight: 800;
}

.legal-knowledge-hit a {
  display: inline-flex;
  width: fit-content;
  margin-top: 8px;
  color: var(--gold-700);
  font-size: 0.72rem;
  font-weight: 900;
  text-decoration: none;
}

.legal-knowledge-hit .legal-source-disabled {
  display: inline-flex;
  width: fit-content;
  margin-top: 8px;
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.legal-knowledge-hit a:hover {
  text-decoration: underline;
}

.legal-knowledge-hit-head,
.legal-knowledge-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}

.legal-knowledge-actions {
  justify-content: flex-start;
  margin-top: 8px;
  margin-bottom: 0;
}

.legal-knowledge-meta {
  color: var(--text-secondary);
  font-weight: 750;
}

.legal-knowledge-trace {
  margin-top: 14px;
  padding: 12px;
  border: 1px solid rgba(37, 99, 235, 0.16);
  border-radius: 14px;
  background: rgba(239, 246, 255, 0.72);
}

.legal-knowledge-trace summary {
  cursor: pointer;
  color: var(--info-700);
  font-size: 0.74rem;
  font-weight: 900;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.legal-knowledge-trace summary small {
  margin-left: 8px;
  color: var(--text-muted);
  text-transform: none;
}

.legal-knowledge-trace-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}

.legal-knowledge-trace-card {
  display: grid;
  grid-template-columns: 13px 1fr;
  gap: 7px;
  align-items: start;
  padding: 9px;
  border: 1px solid rgba(37, 99, 235, 0.1);
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.78);
}

.legal-knowledge-trace-card strong,
.legal-knowledge-trace-card small {
  grid-column: 2;
}

.legal-knowledge-trace-card strong {
  color: var(--text-primary);
  font-size: 0.72rem;
}

.legal-knowledge-trace-card small {
  color: var(--text-secondary);
  font-size: 0.66rem;
  line-height: 1.35;
}

.legal-knowledge-portals,
.legal-knowledge-suggestions {
  margin-top: 14px;
  padding: 13px;
  border: 1px solid rgba(217, 119, 6, 0.17);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(254, 243, 199, 0.44), rgba(255, 255, 255, 0.7));
}

.legal-knowledge-portals strong,
.legal-knowledge-suggestions strong {
  display: block;
  color: var(--text-primary);
  font-size: 0.8rem;
}

.legal-knowledge-portals small {
  display: block;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.4;
}

.legal-knowledge-portal-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}

.legal-knowledge-portal-grid a {
  display: grid;
  gap: 3px;
  margin: 0;
  padding: 10px;
  border: 1px solid rgba(217, 119, 6, 0.14);
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--gold-700);
  text-decoration: none;
}

.legal-knowledge-portal-grid a:hover {
  border-color: rgba(217, 119, 6, 0.34);
  background: #fffaf0;
  text-decoration: none;
}

.legal-knowledge-portal-grid span {
  font-size: 0.72rem;
  font-weight: 900;
}

.legal-knowledge-suggestions > div {
  margin-top: 10px;
}

.risk-pill.norma,
.risk-pill.jurisprudencia,
.risk-pill.institucional,
.risk-pill.doctrina {
  background: rgba(217, 119, 6, 0.13);
  color: var(--gold-700);
}

.legal-tools-history {
  margin-top: 14px;
  padding: 14px;
}

.legal-history-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 0;
  border-top: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: 0.72rem;
}

.legal-history-row:first-child { border-top: 0; }

@media (max-width: 960px) {
  .legal-tools-layout {
    grid-template-columns: 1fr;
  }

  .legal-tools-nav {
    display: flex;
    gap: 9px;
    overflow-x: auto;
    border-right: 0;
    border-bottom: 1px solid var(--border-subtle);
  }

  .legal-tool-card {
    min-width: 180px;
    margin-bottom: 0;
  }

  .legal-tools-main {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .legal-tools-workbench,
  .legal-tools-results {
    overflow: visible;
  }
}

@media (max-width: 620px) {
  .legal-tools-modal { padding: 0; }
  .legal-tools-shell {
    height: 100dvh;
    border: 0;
    border-radius: 0;
  }
  .legal-tools-header { padding: 17px 16px 14px; }
  .legal-tools-main { padding: 12px; }
  .legal-tool-grid { grid-template-columns: 1fr; }
  .legal-field.legal-field-wide { grid-column: auto; }
  .legal-tool-actions { display: grid; }
  .legal-tool-submit,
  .legal-tool-secondary { width: 100%; }
  .legal-knowledge-trace-grid,
  .legal-knowledge-portal-grid { grid-template-columns: 1fr; }
}

.evidence-modal[hidden] { display: none; }

.evidence-modal {
  position: fixed;
  inset: 0;
  z-index: 9200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(10px, 2vw, 24px);
  background: rgba(2, 6, 23, 0.78);
  backdrop-filter: blur(10px);
}

.evidence-shell {
  width: min(1220px, 100%);
  height: min(900px, calc(100dvh - 24px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(217, 119, 6, 0.26);
  border-radius: 18px;
  background: var(--bg-primary);
  box-shadow: 0 30px 80px rgba(2, 6, 23, 0.42);
}

.evidence-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 24px 17px;
  color: #f8fafc;
  background: #0f1b31;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.evidence-eyebrow,
.evidence-card-kicker {
  margin: 0 0 5px;
  color: var(--gold-300);
  font-size: 0.67rem;
  font-weight: 850;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.evidence-header h2 {
  margin: 0;
  font-family: var(--font-serif);
  font-size: clamp(1.35rem, 2.4vw, 1.85rem);
  line-height: 1.15;
}

.evidence-case-label {
  max-width: 740px;
  margin: 6px 0 0;
  color: #94a3b8;
  font-size: 0.82rem;
}

.evidence-close-btn {
  width: 38px;
  height: 38px;
  flex: 0 0 auto;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 9px;
  background: rgba(255,255,255,0.04);
  color: #cbd5e1;
  font-size: 1.35rem;
  cursor: pointer;
}

.evidence-toolbar {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 24px;
  background: var(--bg-primary);
  border-bottom: 1px solid var(--border-subtle);
}

.evidence-upload-controls,
.evidence-primary-actions {
  display: flex;
  align-items: center;
  gap: 9px;
}

.evidence-select,
.evidence-btn {
  min-height: 40px;
  border-radius: 9px;
  font: inherit;
  font-size: 0.78rem;
  font-weight: 750;
}

.evidence-select {
  min-width: 205px;
  padding: 8px 11px;
  border: 1px solid var(--border-medium);
  background: var(--bg-input);
  color: var(--text-primary);
}

.evidence-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 14px;
  border: 1px solid transparent;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
}

.evidence-btn-primary {
  background: var(--gold-500);
  color: #fff;
}

.evidence-btn-primary:hover { background: var(--gold-700); }

.evidence-btn-secondary {
  border-color: var(--border-medium);
  background: var(--bg-elevated);
  color: var(--text-primary);
}

.evidence-btn:disabled,
.evidence-download-disabled {
  opacity: 0.48;
  pointer-events: none;
}

.evidence-progress {
  padding: 10px 24px;
  background: rgba(217, 119, 6, 0.06);
  border-bottom: 1px solid rgba(217, 119, 6, 0.14);
}

.evidence-progress[hidden],
.evidence-server-warning[hidden] {
  display: none;
}

.evidence-progress-track {
  height: 5px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--border-subtle);
}

.evidence-progress-track span {
  display: block;
  width: 8%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--gold-300), var(--gold-500));
  transition: width 0.25s ease;
}

.evidence-progress p {
  margin: 6px 0 0;
  color: var(--text-secondary);
  font-size: 0.72rem;
}

.evidence-server-warning {
  padding: 9px 24px;
  border-bottom: 1px solid rgba(239, 68, 68, 0.2);
  background: rgba(239, 68, 68, 0.08);
  color: #b91c1c;
  font-size: 0.72rem;
  font-weight: 700;
}

.evidence-tabs {
  flex: 0 0 auto;
  display: flex;
  gap: 4px;
  padding: 0 24px;
  overflow-x: auto;
  background: var(--bg-primary);
  border-bottom: 1px solid var(--border-subtle);
}

.evidence-tab {
  min-height: 46px;
  padding: 0 13px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--text-secondary);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 780;
  cursor: pointer;
  white-space: nowrap;
}

.evidence-tab.active {
  color: var(--gold-700);
  border-bottom-color: var(--gold-500);
}

.evidence-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 20px 24px 28px;
  background: var(--bg-void);
}

.evidence-panel { display: none; }
.evidence-panel.active { display: block; }

.evidence-dropzone {
  min-height: 112px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 22px;
  border: 1px dashed rgba(217, 119, 6, 0.5);
  border-radius: 13px;
  background: rgba(217, 119, 6, 0.055);
  color: var(--text-primary);
  text-align: center;
  cursor: pointer;
}

.evidence-dropzone.dragging {
  border-style: solid;
  background: rgba(217, 119, 6, 0.12);
}

.evidence-dropzone strong { font-size: 0.9rem; }
.evidence-dropzone span { color: var(--text-muted); font-size: 0.74rem; }

.evidence-files-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
  margin-top: 14px;
}

.evidence-file-card {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 12px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

.evidence-file-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.evidence-file-name {
  min-width: 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: 0.82rem;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.evidence-file-meta {
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 0.68rem;
}

.evidence-status {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.12);
  color: var(--text-secondary);
  font-size: 0.64rem;
  font-weight: 850;
}

.evidence-status.completed { background: rgba(5,150,105,0.12); color: #047857; }
.evidence-status.error { background: rgba(239,68,68,0.12); color: #dc2626; }

.evidence-file-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 11px;
}

.evidence-file-identity {
  min-width: 0;
}

.evidence-file-category {
  min-width: 0;
  flex: 1 1 auto;
  height: 34px;
  padding: 6px 8px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.7rem;
}

.evidence-file-download,
.evidence-file-preview {
  flex: 0 0 auto;
  color: var(--gold-700);
  font-size: 0.7rem;
  font-weight: 800;
  text-decoration: none;
}

.evidence-file-preview {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
}

.evidence-preview-modal[hidden] {
  display: none;
}

.evidence-preview-modal {
  position: fixed;
  inset: 0;
  z-index: 9300;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(2, 6, 23, 0.82);
  backdrop-filter: blur(10px);
}

.evidence-preview-shell {
  display: grid;
  width: min(1180px, 100%);
  height: min(900px, calc(100dvh - 32px));
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
  background: var(--bg-primary);
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.4);
}

.evidence-preview-header {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: var(--bg-primary);
  border-bottom: 1px solid var(--border-subtle);
}

.evidence-preview-header h2 {
  max-width: 620px;
  margin: 2px 0 0;
  overflow: hidden;
  color: var(--text-primary);
  font-size: 1rem;
  text-overflow: ellipsis;
  white-space: nowrap;
  letter-spacing: 0;
}

.evidence-preview-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 8px;
  align-items: center;
}

.evidence-preview-actions .evidence-btn {
  min-height: 36px;
  padding: 7px 10px;
  white-space: nowrap;
}

.evidence-preview-actions .app-icon,
.evidence-preview-actions .lucide-icon {
  width: 16px;
  height: 16px;
}

.evidence-preview-frame {
  width: 100%;
  height: 100%;
  background: #fff;
  border: 0;
}

@media (max-width: 680px) {
  .evidence-preview-modal {
    padding: 0;
  }

  .evidence-preview-shell {
    width: 100vw;
    height: 100dvh;
    border: 0;
    border-radius: 0;
  }

  .evidence-preview-header {
    align-items: flex-start;
    padding: max(12px, env(safe-area-inset-top)) 12px 10px;
  }

  .evidence-preview-header h2 {
    max-width: 44vw;
    font-size: 0.88rem;
  }

  .evidence-preview-actions {
    gap: 5px;
  }

  .evidence-preview-actions .evidence-btn {
    min-height: 34px;
    padding: 6px 8px;
    font-size: 0.7rem;
  }
}

@media (max-width: 420px) {
  .evidence-preview-action-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .evidence-preview-actions .evidence-btn {
    width: 36px;
    min-width: 36px;
    padding: 0;
  }

  .evidence-preview-header h2 {
    max-width: 48vw;
  }
}

.evidence-file-delete {
  flex: 0 0 auto;
  border: 0;
  background: transparent;
  color: #dc2626;
  font: inherit;
  font-size: 0.7rem;
  font-weight: 800;
  cursor: pointer;
}

.evidence-file-summary {
  margin-top: 11px;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
  color: var(--text-secondary);
  font-size: 0.74rem;
  line-height: 1.5;
}

.evidence-summary-grid,
.evidence-findings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.evidence-card {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--border-subtle);
  border-radius: 13px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

.evidence-card-wide { grid-column: 1 / -1; }
.evidence-risk-card { border-top: 3px solid #ef4444; }

.evidence-card h3 {
  margin: 0 0 12px;
  color: var(--text-primary);
  font-size: 0.98rem;
}

.evidence-copy,
.evidence-list,
.evidence-date-grid {
  color: var(--text-secondary);
  font-size: 0.8rem;
  line-height: 1.65;
}

.evidence-list ul {
  display: grid;
  gap: 8px;
  margin: 0;
  padding-left: 18px;
}

.evidence-list li::marker { color: var(--gold-500); }
.evidence-risk-card .evidence-list li::marker { color: #ef4444; }
.evidence-empty-copy { color: var(--text-muted); }

.evidence-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.evidence-metric {
  padding: 11px;
  border-radius: 10px;
  background: var(--bg-void);
}

.evidence-metric strong,
.evidence-metric span { display: block; }
.evidence-metric strong { color: var(--text-primary); font-size: 1.15rem; }
.evidence-metric span { margin-top: 2px; color: var(--text-muted); font-size: 0.67rem; }

.evidence-date-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.evidence-date-item {
  padding: 11px 12px;
  border-left: 3px solid var(--gold-500);
  border-radius: 8px;
  background: var(--bg-void);
}

.evidence-date-item strong,
.evidence-date-item span { display: block; }
.evidence-date-item strong { color: var(--text-primary); font-size: 0.76rem; }
.evidence-date-item span { margin-top: 3px; color: var(--text-secondary); font-size: 0.72rem; }

.evidence-timeline {
  position: relative;
  display: grid;
  gap: 0;
  padding-left: 22px;
}

.evidence-timeline::before {
  content: "";
  position: absolute;
  top: 7px;
  bottom: 7px;
  left: 6px;
  width: 2px;
  background: rgba(217, 119, 6, 0.25);
}

.evidence-timeline-item {
  position: relative;
  padding: 0 0 20px 12px;
}

.evidence-timeline-item:last-child { padding-bottom: 0; }

.evidence-timeline-item::before {
  content: "";
  position: absolute;
  top: 5px;
  left: -21px;
  width: 10px;
  height: 10px;
  border: 2px solid var(--bg-elevated);
  border-radius: 50%;
  background: var(--gold-500);
  box-shadow: 0 0 0 2px rgba(217,119,6,0.28);
}

.evidence-timeline-item time {
  color: var(--gold-700);
  font-size: 0.68rem;
  font-weight: 850;
}

.evidence-timeline-item h4 {
  margin: 3px 0;
  color: var(--text-primary);
  font-size: 0.82rem;
}

.evidence-timeline-item p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.5;
}

.evidence-disclaimer {
  flex: 0 0 auto;
  padding: 10px 24px;
  border-top: 1px solid var(--border-subtle);
  background: var(--bg-primary);
  color: var(--text-muted);
  font-size: 0.67rem;
  text-align: center;
}

@media (max-width: 780px) {
  .evidence-modal { padding: 0; }
  .evidence-shell {
    width: 100%;
    height: 100dvh;
    border: 0;
    border-radius: 0;
  }
  .evidence-header { padding: 17px 16px 14px; }
  .evidence-toolbar {
    align-items: stretch;
    flex-direction: column;
    padding: 11px 16px;
  }
  .evidence-upload-controls,
  .evidence-primary-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .evidence-select { min-width: 0; width: 100%; }
  .evidence-tabs { padding: 0 12px; }
  .evidence-body { padding: 14px 14px 24px; }
  .evidence-files-list,
  .evidence-summary-grid,
  .evidence-findings-grid,
  .evidence-date-grid {
    grid-template-columns: 1fr;
  }
  .evidence-card-wide { grid-column: auto; }
}

@media (max-width: 430px) {
  .evidence-upload-controls,
  .evidence-primary-actions { grid-template-columns: 1fr; }
  .evidence-header h2 { font-size: 1.3rem; }
  .evidence-case-label { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .evidence-toolbar { max-height: none; overflow: visible; }
  .evidence-btn, .evidence-select { min-height: 42px; }
}

/* ==========================================================
   DOCUMENTOS V2 - LAYOUT RESPONSIVE Y SELECTOR PROFESIONAL
   ========================================================== */
#doc-modal,
#doc-wizard-modal {
  padding: clamp(12px, 2vw, 24px);
}

#doc-modal .doc-modal-content {
  width: min(1180px, calc(100vw - 32px));
  max-width: 1180px;
  height: min(900px, calc(100dvh - 32px));
  max-height: 900px;
  padding: 0;
  gap: 0;
  overflow: hidden;
  border-radius: 14px;
  background: #0f1b31;
}

#doc-wizard-modal .doc-wizard-content {
  width: min(940px, calc(100vw - 32px));
  max-width: 940px;
  max-height: calc(100dvh - 32px);
  padding: 0;
  gap: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  border-radius: 14px;
  background: #0f1b31;
}

#doc-modal .modal-header,
#doc-wizard-modal .modal-header {
  position: relative;
  z-index: 50;
  flex: 0 0 auto;
  min-height: 68px;
  margin: 0;
  padding: 16px 22px;
  background: #0f1b31;
  border-bottom: 1px solid var(--border-subtle);
}

#doc-wizard-modal .modal-header {
  position: sticky;
  top: 0;
}

#doc-modal .doc-modal-title,
#doc-wizard-modal .doc-modal-title {
  margin: 0;
  color: #f8fafc;
  font-family: var(--font-sans);
  font-size: 1.05rem;
  font-weight: 780;
  letter-spacing: 0;
}

#doc-modal .close-btn,
#doc-wizard-modal .close-btn {
  width: 36px;
  height: 36px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-size: 1.15rem;
  color: #cbd5e1;
}

#doc-modal .doc-studio-toolbar {
  flex: 0 0 auto;
  grid-template-columns: minmax(280px, 380px) minmax(0, 1fr);
  align-items: center;
  padding: 14px 22px;
  background: #0f1b31;
  border-bottom: 1px solid var(--border-subtle);
}

#doc-modal .doc-studio-layout {
  flex: 1 1 auto;
  grid-template-columns: minmax(260px, 320px) minmax(0, 1fr);
  min-height: 0;
  padding: 16px 22px;
  background: var(--bg-primary);
}

#doc-modal .doc-guidance-panel {
  max-height: none;
  padding: 0;
  overflow-y: auto;
  border-radius: 8px;
  background: #111f37;
}

#doc-modal .doc-guidance-panel > summary {
  display: none;
}

#doc-modal .doc-guidance-content {
  padding: 16px;
}

#doc-modal .doc-paper {
  width: 100%;
  min-width: 0;
  min-height: 100%;
  padding: clamp(30px, 4vw, 54px) clamp(28px, 5vw, 64px);
  border-radius: 8px;
  overflow-wrap: anywhere;
  word-break: normal;
}

#doc-modal .doc-actions {
  flex: 0 0 auto;
  min-height: 70px;
  margin: 0;
  padding: 12px 22px;
  background: #0f1b31;
  border-top: 1px solid var(--border-subtle);
}

#doc-modal .doc-action-group {
  flex-wrap: nowrap;
}

#doc-modal .doc-quality-panel {
  justify-content: flex-end;
}

#doc-modal .doc-quality-badge {
  max-width: 240px;
  border-radius: 7px;
  padding: 7px 10px;
  line-height: 1.3;
  white-space: normal;
  color: #cbd5e1;
}

#doc-wizard-modal .doc-wizard-grid,
#doc-wizard-modal .wizard-fields,
#doc-wizard-modal .wizard-notes-label,
#doc-wizard-modal > .wizard-extra-notes {
  margin-right: 22px;
  margin-left: 22px;
}

#doc-wizard-modal .doc-wizard-grid {
  grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
  margin-top: 18px;
}

#doc-wizard-modal .wizard-fields {
  margin-top: 18px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

#doc-wizard-modal .wizard-notes-label {
  margin-top: 18px;
}

#doc-wizard-modal > .wizard-extra-notes {
  width: calc(100% - 44px);
  margin-top: 6px;
}

#doc-wizard-modal .wizard-source-summary {
  max-height: 230px;
  padding: 14px;
  overflow-y: auto;
  border-radius: 8px;
}

#doc-wizard-modal .doc-actions {
  position: sticky;
  bottom: 0;
  z-index: 45;
  margin-top: 20px;
  padding: 12px 22px;
  background: #0f1b31;
  box-shadow: 0 -12px 28px rgba(4, 5, 12, 0.18);
}

.doc-select-native {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.template-picker {
  position: relative;
  width: 100%;
}

.template-picker-trigger {
  width: 100%;
  min-height: 44px;
  padding: 8px 11px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-input);
  color: var(--text-primary);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

.template-picker-trigger:hover,
.template-picker-trigger[aria-expanded="true"] {
  border-color: rgba(212, 175, 55, 0.58);
  box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.09);
}

.template-picker-current {
  min-width: 0;
  overflow: hidden;
  font-size: 0.84rem;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.template-picker-change {
  flex: 0 0 auto;
  color: var(--gold-500);
  font-size: 0.7rem;
  font-weight: 800;
}

.template-picker-popover {
  position: absolute;
  top: calc(100% + 7px);
  left: 0;
  z-index: 200;
  width: min(520px, calc(100vw - 48px));
  padding: 10px;
  border: 1px solid var(--border-medium);
  border-radius: 10px;
  background: #111f37;
  box-shadow: 0 24px 64px rgba(2, 6, 23, 0.44);
}

.template-picker-popover[hidden] {
  display: none;
}

.template-picker-search {
  width: 100%;
  height: 40px;
  margin-bottom: 8px;
  padding: 0 11px;
  border: 1px solid var(--border-medium);
  border-radius: 7px;
  background: var(--bg-input);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.82rem;
  outline: none;
}

.template-picker-search:focus {
  border-color: rgba(212, 175, 55, 0.6);
}

.template-picker-options {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  max-height: 300px;
  overflow-y: auto;
}

.template-picker-group {
  display: grid;
  gap: 6px;
}

.template-picker-group + .template-picker-group {
  padding-top: 10px;
  border-top: 1px solid rgba(148, 163, 184, 0.16);
}

.template-picker-group-title {
  margin: 0;
  padding: 0 4px;
  color: #94A3B8;
  font-size: 0.68rem;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
}

.template-picker-group-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
}

/* Billing and legal terms modals */
.terms-modal-overlay,
.plan-modal-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(7, 11, 18, 0.82);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 9999;
}

.plan-modal-overlay {
  z-index: 8888;
}

.terms-modal-overlay[hidden],
.plan-modal-overlay[hidden] {
  display: none;
}

.terms-modal-shell,
.plan-modal-shell {
  display: flex;
  width: min(100%, 580px);
  max-height: min(90dvh, 760px);
  flex-direction: column;
  overflow: hidden;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 1px solid rgba(212, 175, 55, 0.24);
  border-radius: 8px;
  box-shadow: 0 28px 70px rgba(15, 23, 42, 0.32);
}

.plan-modal-shell {
  width: min(100%, 480px);
}

.terms-modal-header,
.plan-modal-header {
  flex: 0 0 auto;
  padding: 22px 24px 16px;
  background: var(--bg-primary);
  border-bottom: 1px solid var(--border-subtle);
}

.plan-modal-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  gap: 14px;
  align-items: center;
  justify-content: space-between;
}

.terms-modal-title-row,
.plan-modal-title-row {
  display: flex;
  gap: 12px;
  align-items: center;
}

.terms-modal-icon,
.plan-modal-icon {
  flex: 0 0 auto;
  color: var(--gold-500);
}

.terms-modal-header h2,
.plan-modal-header h3 {
  margin: 0;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 1.08rem;
  letter-spacing: 0;
}

.terms-modal-header p {
  margin: 6px 0 0 34px;
  color: var(--text-muted);
  font-size: 0.78rem;
}

.terms-modal-body {
  min-height: 0;
  flex: 1 1 auto;
  padding: 22px 24px;
  overflow: auto;
  color: var(--text-secondary);
  font-size: 0.87rem;
  line-height: 1.7;
}

.terms-modal-body h3 {
  margin: 22px 0 10px;
  color: var(--gold-500);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0;
}

.terms-modal-body h3:first-child {
  margin-top: 0;
}

.terms-modal-body p {
  margin: 0 0 12px;
}

.terms-modal-body ul {
  margin: 8px 0 14px;
  padding-left: 20px;
}

.terms-modal-body li {
  margin-bottom: 7px;
}

.terms-modal-body strong {
  color: var(--text-primary);
}

.terms-modal-body .terms-danger-text {
  color: #b91c1c;
}

.terms-acceptance-note {
  margin-top: 22px;
  padding: 14px 15px;
  color: color-mix(in srgb, var(--gold-500) 78%, var(--text-primary));
  background: rgba(212, 175, 55, 0.08);
  border-left: 3px solid var(--gold-500);
  border-radius: 6px;
}

.terms-modal-footer {
  flex: 0 0 auto;
  padding: 16px 24px 20px;
  background: var(--bg-primary);
  border-top: 1px solid var(--border-subtle);
}

.terms-modal-actions {
  display: flex;
  gap: 12px;
}

.terms-secondary-btn,
.terms-primary-btn {
  min-height: 44px;
  font-family: var(--font-sans);
  font-weight: 750;
  cursor: pointer;
  border-radius: 6px;
}

.terms-secondary-btn {
  flex: 1;
  color: var(--text-secondary);
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
}

.terms-primary-btn {
  flex: 2;
  color: #111827;
  background: var(--gold-500);
  border: 1px solid var(--gold-700);
}

.plan-modal-content {
  min-height: 0;
  flex: 1 1 auto;
  padding: 24px;
  overflow-y: auto;
  color: var(--text-secondary);
}

.plan-loading {
  padding: 20px;
  color: var(--text-muted);
  font-size: 0.9rem;
  text-align: center;
}

.plan-loading-error {
  color: #ef4444;
}

.plan-modal-close {
  display: inline-flex;
  width: 38px;
  height: 38px;
  padding: 0;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  cursor: pointer;
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
}

.plan-status-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}

.plan-status-row > span,
.plan-detail-item dt {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.plan-status-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 800;
}

.plan-status-ok {
  color: #166534;
  background: rgba(34, 197, 94, 0.14);
  border: 1px solid rgba(34, 197, 94, 0.35);
}

.plan-status-danger {
  color: #b91c1c;
  background: rgba(239, 68, 68, 0.12);
  border: 1px solid rgba(239, 68, 68, 0.28);
}

.plan-status-muted {
  color: var(--text-secondary);
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
}

.plan-status-free {
  color: #4338ca;
  background: rgba(99, 102, 241, 0.12);
  border: 1px solid rgba(99, 102, 241, 0.28);
}

.plan-detail-list {
  display: grid;
  gap: 0;
  margin: 0 0 18px;
}

.plan-detail-item {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 13px 0;
  border-bottom: 1px solid var(--border-subtle);
}

.plan-detail-item dt,
.plan-detail-item dd {
  margin: 0;
}

.plan-detail-item dd {
  color: var(--text-primary);
  font-size: 0.86rem;
  font-weight: 650;
  text-align: right;
}

.plan-price {
  color: var(--gold-500);
  font-weight: 850;
}

.plan-price-free {
  color: #16a34a;
}

.plan-days {
  display: inline-block;
  margin-left: 6px;
  font-size: 0.76rem;
  font-weight: 750;
}

.plan-days-ok { color: #16a34a; }
.plan-days-warn { color: #b7791f; }
.plan-days-danger { color: #dc2626; }

.plan-alert,
.plan-last-payment,
.plan-note {
  margin-bottom: 16px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid var(--border-subtle);
  background: var(--surface-soft);
}

.plan-alert p,
.plan-note p {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.55;
}

.plan-alert-danger {
  border-color: rgba(239, 68, 68, 0.26);
  background: rgba(239, 68, 68, 0.08);
}

.plan-alert-danger p {
  color: #dc2626;
}

.plan-alert-pending {
  border-color: rgba(14, 165, 233, 0.28);
  background: rgba(14, 165, 233, 0.09);
}

.plan-alert-pending p {
  color: #0369a1;
}

.plan-alert-danger span {
  color: var(--text-muted);
}

.plan-last-payment p {
  margin: 0 0 8px;
  color: var(--text-muted);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.plan-last-payment div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.plan-last-payment strong {
  color: var(--text-primary);
  font-size: 0.9rem;
}

.plan-last-payment span {
  color: var(--text-muted);
  font-size: 0.8rem;
}

.plan-note {
  border-color: rgba(212, 175, 55, 0.2);
  background: rgba(212, 175, 55, 0.07);
}

.plan-note p {
  color: color-mix(in srgb, var(--gold-500) 62%, var(--text-secondary));
}

.plan-note-cancelled {
  border-color: var(--border-subtle);
  background: var(--surface-soft);
}

.plan-note-cancelled p {
  color: var(--text-secondary);
}

.plan-cancel-btn {
  width: 100%;
  min-height: 46px;
  border: 1px solid rgba(239, 68, 68, 0.34);
  border-radius: 13px;
  background: transparent;
  color: #dc2626;
  font: 750 0.86rem var(--font-sans);
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}

.plan-cancel-btn:hover {
  background: rgba(239, 68, 68, 0.08);
  transform: translateY(-1px);
}

.plan-access-note {
  margin: 8px 0 0;
  color: var(--text-muted);
  font-size: 0.73rem;
  text-align: center;
}

[data-theme="dark"] .terms-modal-overlay,
[data-theme="dark"] .plan-modal-overlay,
body.dark .terms-modal-overlay,
body.dark .plan-modal-overlay {
  background: rgba(2, 6, 23, 0.82);
}

[data-theme="dark"] .terms-modal-shell,
[data-theme="dark"] .plan-modal-shell,
body.dark .terms-modal-shell,
body.dark .plan-modal-shell {
  background: #0f1623;
  border-color: rgba(212, 175, 55, 0.28);
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.6);
}

[data-theme="dark"] .plan-status-ok,
body.dark .plan-status-ok {
  color: #86efac;
}

[data-theme="dark"] .plan-status-danger,
body.dark .plan-status-danger,
[data-theme="dark"] .plan-alert-danger p,
body.dark .plan-alert-danger p,
[data-theme="dark"] .plan-cancel-btn,
body.dark .plan-cancel-btn {
  color: #fca5a5;
}

[data-theme="dark"] .plan-alert-pending p,
body.dark .plan-alert-pending p {
  color: #bae6fd;
}

[data-theme="dark"] .plan-status-free,
body.dark .plan-status-free {
  color: #a5b4fc;
}

.template-picker-option {
  min-width: 0;
  min-height: 38px;
  padding: 8px 9px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: #cbd5e1;
  cursor: pointer;
  font: inherit;
  font-size: 0.76rem;
  line-height: 1.3;
  text-align: left;
}

.template-picker-option:hover {
  background: rgba(148, 163, 184, 0.09);
  color: var(--text-primary);
}

.template-picker-option.active {
  border-color: rgba(212, 175, 55, 0.34);
  background: rgba(212, 175, 55, 0.1);
  color: var(--gold-500);
  font-weight: 800;
}

[data-theme="dark"] .template-picker-group-title,
.dark-mode .template-picker-group-title {
  color: #CBD5E1;
}

.doc-source-list a,
.wizard-source-summary a {
  display: block;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--border-subtle);
  border-radius: 7px;
  overflow-wrap: anywhere;
  background: rgba(148, 163, 184, 0.04);
}

#doc-modal .doc-field label,
#doc-wizard-modal .doc-field label,
#doc-modal .doc-guidance-panel h4,
#doc-modal .doc-structured-fields h5,
#doc-modal .doc-checklist h5,
#doc-modal .doc-source-list h5,
#doc-wizard-modal .wizard-field,
#doc-wizard-modal .wizard-notes-label,
#doc-wizard-modal .wizard-mini-checklist h5,
#doc-wizard-modal .wizard-source-summary strong {
  color: #e2e8f0;
}

#doc-modal .structured-field-copy strong,
#doc-modal .doc-checklist label,
#doc-wizard-modal .wizard-mini-checklist label,
#doc-wizard-modal .wizard-source-summary small,
#doc-modal .doc-panel-note,
#doc-wizard-modal .doc-panel-note {
  color: #94a3b8;
}

#doc-modal .structured-field-copy small,
#doc-modal .legal-governance-status strong,
#doc-wizard-modal .legal-governance-status strong {
  color: #f8fafc;
}

#doc-modal .legal-governance-status span,
#doc-wizard-modal .legal-governance-status span,
#doc-modal .source-authority,
#doc-wizard-modal .source-authority,
#doc-modal .source-status,
#doc-wizard-modal .source-status {
  color: #94a3b8;
}

#doc-modal .doc-action-secondary,
#doc-wizard-modal .doc-action-secondary {
  color: #cbd5e1;
}

#doc-modal #save-doc-btn {
  color: #e2e8f0;
}

#doc-wizard-modal .wizard-source-summary {
  background: #111f37;
}

#doc-wizard-modal .wizard-source-summary a,
#doc-modal .doc-source-list a {
  color: #e2e8f0;
}

@media (max-width: 768px) {
  #doc-modal,
  #doc-wizard-modal {
    padding: 0;
    align-items: stretch;
  }

  #doc-modal .doc-modal-content,
  #doc-wizard-modal .doc-wizard-content {
    width: 100vw;
    max-width: none;
    height: 100dvh;
    max-height: none;
    border: 0;
    border-radius: 0;
  }

  #doc-modal .modal-header,
  #doc-wizard-modal .modal-header {
    min-height: 60px;
    padding: 12px 16px;
  }

  #doc-modal .doc-modal-title,
  #doc-wizard-modal .doc-modal-title {
    max-width: calc(100vw - 76px);
    font-size: 0.98rem;
  }

  #doc-modal .doc-studio-toolbar {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
    padding: 12px 16px;
  }

  #doc-modal .doc-quality-panel {
    justify-content: flex-start;
    flex-wrap: nowrap;
    padding-bottom: 2px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  #doc-modal .doc-quality-panel::-webkit-scrollbar {
    display: none;
  }

  #doc-modal .doc-quality-badge {
    flex: 0 0 auto;
    max-width: 210px;
    white-space: nowrap;
  }

  #doc-modal .doc-studio-layout {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px 16px 18px;
    overflow-y: auto;
  }

  #doc-modal .doc-paper {
    order: 1;
    flex: 0 0 auto;
    min-height: 54dvh;
    padding: 26px 20px;
    overflow: visible;
    font-size: 0.9rem;
    line-height: 1.7;
  }

  #doc-modal .doc-guidance-panel {
    order: 2;
    flex: 0 0 auto;
    max-height: none;
    overflow: visible;
  }

  #doc-modal .doc-guidance-panel > summary {
    display: flex;
    min-height: 46px;
    padding: 0 14px;
    align-items: center;
    justify-content: space-between;
    color: var(--text-primary);
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 800;
    list-style: none;
  }

  #doc-modal .doc-guidance-panel > summary::-webkit-details-marker {
    display: none;
  }

  #doc-modal .doc-guidance-panel > summary::after {
    content: "Ver";
    color: var(--gold-500);
    font-size: 0.68rem;
  }

  #doc-modal .doc-guidance-panel[open] > summary::after {
    content: "Ocultar";
  }

  #doc-modal .doc-guidance-content {
    padding: 0 14px 14px;
  }

  #doc-modal .doc-actions {
    min-height: auto;
    padding: 10px 16px max(10px, env(safe-area-inset-bottom));
    flex-direction: column-reverse;
    gap: 8px;
  }

  #doc-modal #cancel-doc-btn {
    display: none;
  }

  #doc-modal .doc-action-group {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  #doc-modal #save-doc-btn {
    grid-column: 1 / -1;
  }

  #doc-modal .doc-action-primary {
    grid-column: auto;
  }

  #doc-modal .doc-action-btn {
    min-width: 0;
    min-height: 42px;
    padding: 0 10px;
    font-size: 0.78rem;
  }

  #doc-wizard-modal .doc-wizard-grid,
  #doc-wizard-modal .wizard-fields,
  #doc-wizard-modal .wizard-notes-label,
  #doc-wizard-modal > .wizard-extra-notes {
    margin-right: 16px;
    margin-left: 16px;
  }

  #doc-wizard-modal .doc-wizard-grid {
    grid-template-columns: minmax(0, 1fr);
    margin-top: 14px;
  }

  #doc-wizard-modal .wizard-fields {
    grid-template-columns: minmax(0, 1fr);
    margin-top: 14px;
  }

  #doc-wizard-modal .wizard-source-summary {
    max-height: 220px;
  }

  #doc-wizard-modal > .wizard-extra-notes {
    width: calc(100% - 32px);
  }

  #doc-wizard-modal .doc-actions {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    gap: 8px;
    padding: 10px 16px max(10px, env(safe-area-inset-bottom));
  }

  #doc-wizard-modal .doc-action-btn {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    padding: 0 10px;
    font-size: 0.78rem;
  }

  .template-picker-popover {
    position: fixed;
    top: 70px;
    right: 12px;
    left: 12px;
    width: auto;
    max-height: calc(100dvh - 140px);
  }

  .template-picker-options {
    grid-template-columns: minmax(0, 1fr);
    max-height: calc(100dvh - 210px);
  }

  .template-picker-group-list {
    grid-template-columns: minmax(0, 1fr);
  }

  .terms-modal-overlay,
  .plan-modal-overlay {
    align-items: stretch;
    justify-content: stretch;
    padding: 0;
  }

  .terms-modal-shell,
  .plan-modal-shell {
    width: 100vw;
    max-width: 100vw;
    height: 100dvh;
    max-height: 100dvh;
    border-radius: 0;
  }

  .terms-modal-header,
  .plan-modal-header {
    padding: max(18px, env(safe-area-inset-top)) 18px 14px;
  }

  .terms-modal-header p {
    margin-left: 0;
  }

  .terms-modal-body {
    padding: 18px;
    font-size: 0.84rem;
  }

  .terms-modal-footer {
    padding: 14px 18px max(18px, env(safe-area-inset-bottom));
  }

  .plan-modal-content {
    padding: 18px;
  }

  .plan-detail-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
  }

  .plan-detail-item dd {
    text-align: left;
  }
}

@media (min-width: 769px) and (max-height: 760px) {
  #doc-modal .doc-modal-content {
    height: calc(100dvh - 24px);
  }

  #doc-wizard-modal .doc-wizard-content {
    max-height: calc(100dvh - 24px);
  }
}

@media (max-width: 360px) {
  #doc-modal .doc-paper {
    padding-right: 18px;
    padding-left: 18px;
  }

  #doc-modal .doc-paper h1 {
    font-size: 1.45rem;
    line-height: 1.35;
    overflow-wrap: normal;
    word-break: normal;
  }

  #doc-modal .doc-paper h2 {
    font-size: 1.18rem;
    line-height: 1.4;
  }

  #doc-modal .doc-action-btn {
    font-size: 0.73rem;
  }
}

/* ============================================================
   SISTEMA DE PRODUCTO RESPONSIVE
   Componentes, superficies y jerarquia mobile-first.
   ============================================================ */

html,
body,
button,
input,
select,
textarea {
  font-family: var(--font-sans) ;
}

body {
  background:
    radial-gradient(circle at 12% 8%, rgba(194, 135, 45, 0.08), transparent 28%),
    radial-gradient(circle at 86% 4%, rgba(37, 99, 235, 0.07), transparent 30%),
    var(--bg-void);
}

button,
a,
input,
select,
textarea {
  -webkit-tap-highlight-color: transparent;
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}

.app-container {
  background:
    radial-gradient(circle at 10% 0%, rgba(194, 135, 45, 0.07), transparent 32%),
    radial-gradient(circle at 92% 6%, rgba(14, 165, 233, 0.07), transparent 36%),
    var(--bg-void);
}

.brand-title,
.legal-tools-header h2,
.evidence-header h2,
.doc-paper h1,
.doc-paper h2 {
  font-family: var(--font-sans) ;
  letter-spacing: -0.035em;
}

.btn-premium-action,
.doc-action-primary,
.legal-tool-submit,
.evidence-btn-primary,
.btn-new-chat {
  border: 0;
  border-radius: 999px;
  background: linear-gradient(135deg, #C2872D, #A96816);
  color: #FFFFFF;
  box-shadow: 0 12px 26px rgba(194, 135, 45, 0.22);
  transition: transform 160ms ease, box-shadow 160ms ease, filter 160ms ease;
}

.btn-premium-action:hover,
.doc-action-primary:hover,
.legal-tool-submit:hover,
.evidence-btn-primary:hover,
.btn-new-chat:hover {
  transform: translateY(-1px);
  filter: brightness(1.03);
  box-shadow: 0 16px 34px rgba(194, 135, 45, 0.28);
}

.btn-premium-action:active,
.doc-action-primary:active,
.legal-tool-submit:active,
.evidence-btn-primary:active,
.btn-new-chat:active {
  transform: translateY(0);
  box-shadow: 0 8px 18px rgba(194, 135, 45, 0.22);
}

/* Sidebar premium */
.sidebar {
  width: 304px;
  min-width: 304px;
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(20px);
  border-right: 1px solid rgba(15, 23, 42, 0.08);
  box-shadow: 18px 0 46px rgba(15, 23, 42, 0.05);
}

[data-theme="dark"] .sidebar {
  background: rgba(15, 23, 42, 0.86);
}

.new-chat-container {
  padding: 18px 18px 10px;
}

.btn-new-chat {
  min-height: 48px;
  justify-content: center;
  font-weight: 800;
  letter-spacing: -0.01em;
}

.sidebar-content {
  padding: 0 14px 14px;
}

.menu-section {
  margin: 12px 0;
}

.menu-title,
.case-documents-title,
.evidence-card-kicker {
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 850;
  letter-spacing: 0.08em;
}

.cases-search-input,
.cases-filter-select,
.modern-input,
.doc-field input,
.doc-field select,
.doc-select,
.wizard-field input,
.wizard-extra-notes,
.legal-field input,
.legal-field select,
.legal-field textarea,
.evidence-select,
.legal-memory-field input,
.legal-memory-field select,
.legal-memory-field textarea,
.legal-memory-textarea {
  min-height: 46px;
  border: 1px solid rgba(15, 23, 42, 0.11);
  border-radius: 16px;
  background: var(--bg-input);
  color: var(--text-primary);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
  transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
}

.cases-search-input:focus,
.cases-filter-select:focus,
.modern-input:focus,
.doc-field input:focus,
.doc-field select:focus,
.doc-select:focus,
.wizard-field input:focus,
.wizard-extra-notes:focus,
.legal-field input:focus,
.legal-field select:focus,
.legal-field textarea:focus,
.evidence-select:focus,
.legal-memory-field input:focus,
.legal-memory-field select:focus,
.legal-memory-field textarea:focus,
.legal-memory-textarea:focus {
  border-color: rgba(194, 135, 45, 0.5);
  box-shadow: var(--shadow-focus);
}

.cases-filter-row {
  grid-template-columns: 1fr;
}

.case-item {
  padding: 12px;
  border: 1px solid rgba(15, 23, 42, 0.07);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.72);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.035);
}

.case-item:hover,
.case-item.active {
  background: #FFFFFF;
  border-color: rgba(194, 135, 45, 0.28);
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.07);
}

.case-status {
  padding: 4px 8px;
  border: 1px solid rgba(16, 185, 129, 0.16);
  background: rgba(16, 185, 129, 0.10);
  color: #047857;
  font-size: 0.64rem;
  font-weight: 850;
}

.case-meta {
  color: var(--gold-700);
}

.sidebar-tool-option {
  min-height: 58px;
  margin-top: 9px;
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid rgba(15, 23, 42, 0.09);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.68);
  color: var(--text-primary);
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.045);
}

.sidebar-tool-option:hover:not(:disabled) {
  border-color: rgba(194, 135, 45, 0.28);
  background: #FFFFFF;
  transform: translateY(-1px);
}

.sidebar-tool-icon {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background: var(--surface-warm);
  color: var(--gold-700);
}

.sidebar-tool-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
  text-align: left;
}

.sidebar-tool-copy strong {
  color: var(--text-primary);
  font-size: 0.82rem;
  line-height: 1.15;
}

.sidebar-tool-copy small {
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.case-evidence-count {
  min-width: 28px;
  height: 28px;
  background: var(--surface-soft);
  border: 1px solid rgba(15, 23, 42, 0.08);
  color: var(--gold-700);
  font-weight: 900;
}

.menu-button {
  border-radius: 16px;
  padding: 11px 12px;
}

.menu-button.active {
  background: rgba(194, 135, 45, 0.10);
  color: var(--text-primary);
}

/* Modales y formularios */
.modal-overlay,
.legal-tools-modal,
.legal-memory-modal,
.evidence-modal {
  background: rgba(15, 23, 42, 0.42);
  backdrop-filter: blur(18px);
}

.modal-content,
.legal-tools-shell,
.legal-memory-shell,
.evidence-shell {
  border: 1px solid var(--border-subtle) ;
  border-radius: 24px ;
  background: var(--bg-primary) ;
  box-shadow: 0 26px 80px rgba(15, 23, 42, 0.18) ;
}

#doc-modal .doc-modal-content,
#doc-wizard-modal .doc-wizard-content {
  border-radius: 24px;
  background: #FFFFFF;
}

#doc-modal .modal-header,
#doc-wizard-modal .modal-header,
.legal-tools-header,
.evidence-header {
  color: var(--text-primary);
  background:
    radial-gradient(circle at 10% 0%, rgba(194, 135, 45, 0.12), transparent 38%),
    linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.94));
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
}

#doc-modal .doc-modal-title,
#doc-wizard-modal .doc-modal-title,
.legal-tools-header h2,
.evidence-header h2 {
  color: var(--text-primary);
  font-size: clamp(1.15rem, 2vw, 1.55rem);
  font-weight: 850;
}

.evidence-eyebrow {
  color: var(--gold-700);
}

.close-btn,
.evidence-close-btn {
  width: 40px;
  height: 40px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--text-muted);
}

.close-btn:hover,
.evidence-close-btn:hover {
  background: #FFFFFF;
  color: var(--text-primary);
  box-shadow: var(--shadow-soft);
}

#doc-wizard-modal .doc-wizard-content {
  width: min(960px, calc(100vw - 28px));
  padding-bottom: 0;
}

.doc-wizard-stepper {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding: 18px 22px 0;
}

.doc-wizard-step {
  min-width: 0;
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  grid-template-areas:
    "num title"
    "num copy";
  column-gap: 10px;
  align-items: center;
  padding: 12px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 18px;
  background: var(--surface-soft);
  color: var(--text-muted);
  text-align: left;
}

.doc-wizard-step span {
  grid-area: num;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #FFFFFF;
  border: 1px solid rgba(15, 23, 42, 0.08);
  font-size: 0.82rem;
  font-weight: 900;
}

.doc-wizard-step strong {
  grid-area: title;
  color: var(--text-primary);
  font-size: 0.82rem;
  line-height: 1.15;
}

.doc-wizard-step small {
  grid-area: copy;
  margin-top: 2px;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.doc-wizard-step.active,
.doc-wizard-step.complete {
  border-color: rgba(194, 135, 45, 0.28);
  background: var(--surface-warm);
}

.doc-wizard-step.active span,
.doc-wizard-step.complete span {
  background: linear-gradient(135deg, #C2872D, #A96816);
  border-color: transparent;
  color: #FFFFFF;
}

#doc-wizard-modal .doc-wizard-grid,
#doc-wizard-modal .wizard-fields,
#doc-wizard-modal .wizard-notes-label,
#doc-wizard-modal > .wizard-extra-notes {
  margin-right: 24px;
  margin-left: 24px;
}

#doc-wizard-modal .doc-wizard-grid {
  gap: 16px;
  margin-top: 18px;
}

#doc-wizard-modal .wizard-fields {
  gap: 16px;
  margin-top: 18px;
}

.wizard-field {
  display: grid;
  gap: 8px;
  color: var(--text-secondary) ;
  font-size: 0.78rem;
  font-weight: 800;
}

.wizard-field span,
#doc-modal .doc-field label,
#doc-wizard-modal .doc-field label,
#doc-wizard-modal .wizard-notes-label {
  color: var(--text-secondary) ;
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: none;
}

.wizard-field input,
.wizard-extra-notes {
  width: 100%;
  padding: 12px 14px;
  font-size: 0.95rem;
}

#doc-wizard-modal .wizard-source-summary,
#doc-modal .doc-guidance-panel,
#doc-modal .doc-source-list a,
.wizard-mini-checklist,
.doc-checklist {
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 20px;
  background: var(--surface-soft);
}

#doc-wizard-modal .wizard-source-summary {
  max-height: 260px;
  padding: 16px;
}

#doc-wizard-modal .wizard-source-summary strong,
#doc-wizard-modal .wizard-source-summary small,
#doc-wizard-modal .wizard-mini-checklist h5,
#doc-wizard-modal .wizard-mini-checklist label,
#doc-modal .doc-guidance-panel h4,
#doc-modal .doc-structured-fields h5,
#doc-modal .doc-checklist h5,
#doc-modal .doc-source-list h5 {
  color: var(--text-primary) ;
}

#doc-wizard-modal .wizard-source-summary a,
#doc-modal .doc-source-list a {
  color: var(--text-primary) ;
  background: rgba(255, 255, 255, 0.86);
}

#doc-wizard-modal .wizard-source-summary .source-status,
#doc-wizard-modal .wizard-source-summary .source-authority,
#doc-modal .doc-source-list .source-status,
#doc-modal .doc-source-list .source-authority {
  color: var(--text-muted) ;
}

#doc-modal .doc-studio-toolbar,
#doc-modal .doc-actions,
#doc-wizard-modal .doc-actions {
  background: #FFFFFF;
  border-color: rgba(15, 23, 42, 0.08);
}

#doc-modal .doc-studio-layout {
  gap: 18px;
  padding: 20px 24px;
  background: var(--surface-soft);
}

#doc-modal .doc-guidance-panel {
  background: #FFFFFF;
}

#doc-modal .doc-paper {
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 24px;
  background: #FFFFFF;
  box-shadow: 0 14px 42px rgba(15, 23, 42, 0.06);
}

.doc-action-btn,
.evidence-btn,
.legal-tool-secondary {
  min-height: 44px;
  border-radius: 999px;
  font-weight: 800;
}

.doc-action-secondary,
.legal-tool-secondary,
.evidence-btn-secondary {
  border: 1px solid rgba(15, 23, 42, 0.10);
  background: #FFFFFF;
  color: var(--text-primary) ;
}

.doc-action-secondary:hover,
.legal-tool-secondary:hover,
.evidence-btn-secondary:hover {
  background: var(--surface-soft);
  box-shadow: var(--shadow-soft);
}

.template-picker-trigger {
  min-height: 48px;
  border-radius: 16px;
  background: #FFFFFF;
}

.template-picker-popover {
  border-radius: 20px;
  background: #FFFFFF;
}

.template-picker-option {
  border-radius: 14px;
  color: var(--text-primary);
}

.template-picker-option:hover,
.template-picker-option.active {
  background: var(--surface-warm);
  color: var(--gold-700);
}

/* Centro de herramientas como segmented control */
.legal-tools-shell {
  width: min(1240px, 100%);
  height: min(900px, calc(100dvh - 24px));
}

.legal-tools-header {
  padding: 22px 24px 16px;
}

.legal-tools-layout {
  grid-template-columns: 1fr;
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--surface-soft);
}

.legal-tools-nav {
  display: flex;
  gap: 10px;
  padding: 14px 16px;
  overflow-x: auto;
  overflow-y: hidden;
  border-right: 0;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  background: rgba(255, 255, 255, 0.84);
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
}

.legal-tools-nav::-webkit-scrollbar {
  height: 0;
}

.legal-tool-card {
  width: auto;
  min-width: clamp(154px, 18vw, 220px);
  margin: 0;
  scroll-snap-align: start;
  border-radius: 999px;
  grid-template-columns: 1fr;
  gap: 1px;
  padding: 12px 16px;
  background: #FFFFFF;
  box-shadow: none;
}

.legal-tool-card strong {
  font-size: 0.78rem;
  white-space: nowrap;
}

.legal-tool-card span {
  overflow: hidden;
  font-size: 0.66rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.legal-tool-card.active {
  border-color: rgba(194, 135, 45, 0.32);
  background: linear-gradient(135deg, #FFF7E7, #FFFFFF);
  box-shadow: 0 10px 24px rgba(194, 135, 45, 0.13);
}

.legal-tools-main {
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  gap: 18px;
  padding: 18px;
}

.legal-tool-form,
.legal-tool-result,
.legal-tools-history,
.legal-memory-card,
.evidence-card {
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 12px 34px rgba(15, 23, 42, 0.05);
}

.legal-tool-form {
  gap: 18px;
  padding: 22px;
}

.legal-tool-grid {
  grid-template-columns: 1fr;
  gap: 14px;
}

.legal-field {
  gap: 8px;
}

.legal-field label,
.legal-checklist-title {
  color: var(--text-secondary);
  font-size: 0.76rem;
  letter-spacing: 0;
  text-transform: none;
}

.legal-field input,
.legal-field select,
.legal-field textarea {
  width: 100%;
  min-height: 50px;
  padding: 12px 14px;
  font-size: 1rem;
}

.legal-field textarea {
  min-height: 132px;
}

.legal-check {
  border-radius: 18px;
  background: var(--surface-soft);
}

.legal-tool-result {
  padding: 22px;
}

.legal-result-total,
.legal-result-item {
  border-radius: 20px;
}

.legal-result-total {
  background: linear-gradient(135deg, #FFF7E7, #FFFFFF);
}

.risk-pill {
  border-radius: 999px;
  letter-spacing: 0.02em;
}

/* Fuentes verificadas del chat como acordeón */
.message-bubble {
  border-radius: 24px;
}

.message-bubble-wrapper.assistant .message-bubble {
  border: 1px solid rgba(15, 23, 42, 0.07);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 10px 34px rgba(15, 23, 42, 0.06);
}

.chat-legal-sources {
  margin-top: 14px;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 20px;
  background: #FFFFFF;
}

.chat-legal-sources-header {
  min-height: 54px;
  margin: 0;
  padding: 12px 14px;
  cursor: pointer;
  list-style: none;
}

.chat-legal-sources-header::-webkit-details-marker {
  display: none;
}

.chat-legal-sources-header span {
  display: grid;
  gap: 2px;
  color: var(--text-primary);
  text-transform: none;
  letter-spacing: 0;
}

.chat-legal-sources-header strong {
  color: var(--text-primary);
  font-size: 0.82rem;
}

.chat-legal-sources-header small {
  color: var(--text-muted);
  font-size: 0.68rem;
  font-weight: 700;
}

.chat-legal-sources-header b {
  color: var(--gold-700);
  transition: transform 160ms ease;
}

.chat-legal-sources[open] .chat-legal-sources-header b {
  transform: rotate(180deg);
}

.chat-legal-sources-list {
  gap: 8px;
  padding: 0 12px 12px;
}

.chat-legal-source-item {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 10px;
  align-items: flex-start;
  padding: 11px 12px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 16px;
  background: var(--surface-soft);
}

.chat-legal-source-item:hover {
  border-color: rgba(194, 135, 45, 0.26);
  background: #FFFFFF;
}

.chat-source-number {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--surface-warm);
  color: var(--gold-700);
  font-size: 0.76rem;
  font-weight: 900;
}

.chat-source-copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.chat-source-copy strong {
  font-size: 0.78rem;
}

.chat-source-copy small,
.chat-legal-sources-note {
  color: var(--text-muted);
  font-size: 0.68rem;
}

.chat-legal-sources-note {
  padding: 0 14px 12px;
}

.chat-official-pathway,
.chat-followups,
.legal-trace-box {
  border-radius: 20px;
}

/* Responsive */
@media (max-width: 1100px) {
  .legal-tools-main {
    grid-template-columns: 1fr;
    overflow-y: auto;
  }

  .legal-tools-workbench,
  .legal-tools-results {
    overflow: visible;
  }
}

@media (max-width: 768px) {
  .sidebar {
    width: min(90vw, 340px);
    min-width: 0;
  }

  .modal-content,
  .legal-tools-shell,
  .legal-memory-shell,
  .evidence-shell,
  #doc-modal .doc-modal-content,
  #doc-wizard-modal .doc-wizard-content {
    border-radius: 0 ;
  }

  #doc-wizard-modal .doc-wizard-content,
  #doc-modal .doc-modal-content,
  .legal-tools-shell,
  .legal-memory-shell,
  .evidence-shell {
    width: 100vw;
    height: 100dvh;
    max-height: none;
  }

  .doc-wizard-stepper {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 14px 14px 0;
  }

  .doc-wizard-step {
    grid-template-columns: 30px 1fr;
    padding: 10px 12px;
  }

  #doc-wizard-modal .doc-wizard-grid,
  #doc-wizard-modal .wizard-fields,
  #doc-wizard-modal .wizard-notes-label,
  #doc-wizard-modal > .wizard-extra-notes {
    margin-right: 14px;
    margin-left: 14px;
  }

  #doc-wizard-modal .doc-wizard-grid,
  #doc-wizard-modal .wizard-fields,
  #doc-modal .doc-studio-toolbar,
  #doc-modal .doc-studio-layout {
    grid-template-columns: 1fr;
  }

  #doc-modal .doc-studio-layout {
    padding: 14px;
  }

  #doc-modal .doc-guidance-panel {
    max-height: 34dvh;
  }

  #doc-modal .doc-actions,
  #doc-wizard-modal .doc-actions {
    padding: 12px 14px max(12px, env(safe-area-inset-bottom));
  }

  #doc-modal .doc-action-group,
  .doc-actions,
  .legal-tool-actions,
  .evidence-toolbar,
  .evidence-primary-actions {
    flex-wrap: wrap;
  }

  .doc-action-btn,
  .legal-tool-submit,
  .legal-tool-secondary,
  .evidence-btn {
    flex: 1 1 auto;
  }

  .legal-tools-header,
  .evidence-header,
  .legal-memory-shell .legal-tools-header {
    padding: 18px 16px 14px;
  }

  .legal-tools-nav {
    padding: 12px 12px;
  }

  .legal-tool-card {
    min-width: 168px;
    padding: 11px 14px;
  }

  .legal-tools-main {
    display: block;
    min-height: 0;
    padding: 12px 12px 76px;
    overflow-y: auto ;
    overscroll-behavior: contain;
  }

  .legal-tools-workbench,
  .legal-tools-results {
    min-height: auto ;
    overflow: visible ;
  }

  .legal-tools-results {
    margin-top: 12px;
  }

  .legal-tool-form,
  .legal-tool-result,
  .legal-memory-card,
  .evidence-card {
    border-radius: 20px;
    padding: 16px;
  }

  .message-bubble {
    max-width: 94%;
    border-radius: 22px;
  }

  .chat-legal-source-item {
    grid-template-columns: 28px minmax(0, 1fr);
  }
}

@media (max-width: 420px) {
  .sidebar-tool-option {
    grid-template-columns: 34px minmax(0, 1fr) auto;
  }

  .sidebar-tool-copy small {
    white-space: normal;
  }

  .legal-tool-card {
    min-width: 152px;
  }

  .doc-wizard-step small {
    white-space: normal;
  }
}

/* ============================================================
   LAYOUT MOVIL DEL SIDEBAR
   Drawer estable por transform para telefonos y PWA.
   ============================================================ */
@media (max-width: 768px) {
  .app-container {
    width: 100vw;
    max-width: 100vw;
    overflow: hidden;
  }

  .main-content {
    flex: 0 0 100vw;
    width: 100vw;
    max-width: 100vw;
  }

  .sidebar {
    position: fixed ;
    top: 0 ;
    bottom: 0 ;
    left: 0 ;
    width: min(88vw, 340px) ;
    min-width: 0 ;
    max-width: 340px ;
    height: 100dvh ;
    transform: translateX(-105%);
    transition: transform var(--duration-normal) var(--ease-out), box-shadow var(--duration-normal) var(--ease-out);
    z-index: 30 ;
    will-change: transform;
  }

  .sidebar.open {
    transform: translateX(0);
  }

  .sidebar-overlay {
    z-index: 25 ;
  }

  .sidebar-overlay.open,
  .sidebar-overlay.active {
    display: block;
  }

  .chat-header-modern,
  .chat-input-container,
  #welcome-screen {
    width: 100%;
    max-width: 100vw;
  }
}

/* ============================================================
   MOBILE + PWA POLISH v18
   Capa final de seguridad responsive para cPanel/PWA.
   ============================================================ */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  max-width: 100%;
  min-height: 100%;
  overflow-x: hidden;
}

body.sidebar-open {
  overflow: hidden;
  touch-action: none;
}

img,
svg,
video,
canvas {
  max-width: 100%;
}

select,
textarea,
input,
button {
  font: inherit;
}

.pwa-install-banner[hidden] {
  display: none;
}

.pwa-install-banner {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 1200;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto auto;
  gap: 12px;
  align-items: center;
  width: min(520px, calc(100vw - 36px));
  padding: 14px;
  border: 1px solid rgba(194, 135, 45, 0.26);
  border-radius: 18px;
  background: rgba(15, 23, 42, 0.94);
  color: #f8fafc;
  box-shadow: 0 22px 60px rgba(15, 23, 42, 0.34), 0 0 0 1px rgba(255, 255, 255, 0.03) inset;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.pwa-install-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  border: 1px solid rgba(194, 135, 45, 0.28);
  background: rgba(194, 135, 45, 0.14);
  color: #f3c562;
}

.pwa-install-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.pwa-install-copy strong {
  color: #f8fafc;
  font-size: 0.88rem;
  line-height: 1.2;
}

.pwa-install-copy small {
  color: #a9b7cc;
  font-size: 0.74rem;
  line-height: 1.35;
}

.pwa-install-action,
.pwa-install-dismiss {
  min-height: 40px;
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  font-weight: 800;
}

.pwa-install-action {
  padding: 0 16px;
  background: linear-gradient(135deg, #f4c95d, #d88706);
  color: #111827;
  box-shadow: 0 10px 24px rgba(216, 135, 6, 0.24);
}

.pwa-install-dismiss {
  width: 40px;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, 0.06);
  color: #cbd5e1;
}

@media (max-width: 768px) {
  html,
  body {
    width: 100%;
    height: var(--app-height, 100dvh);
    min-height: var(--app-height, 100dvh);
    overscroll-behavior-x: none;
  }

  input,
  select,
  textarea {
    font-size: 16px ;
  }

  .app-container {
    position: fixed;
    inset: var(--visual-viewport-top, 0px) 0 auto 0;
    width: 100vw;
    max-width: 100vw;
    height: var(--app-height, 100dvh);
    min-height: var(--app-height, 100dvh);
    overflow: hidden;
  }

  .main-content {
    position: relative;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto ;
    flex: 0 0 100vw ;
    width: 100vw ;
    max-width: 100vw ;
    min-width: 0 ;
    height: var(--app-height, 100dvh) ;
    overflow: hidden ;
  }

  .sidebar {
    width: min(88vw, 340px) ;
    max-width: 340px ;
    transform: translate3d(-110%, 0, 0);
    border-right: 1px solid rgba(15, 23, 42, 0.10) ;
    box-shadow: none ;
    overflow-y: auto ;
    -webkit-overflow-scrolling: touch;
  }

  .sidebar.open {
    transform: translate3d(0, 0, 0);
    box-shadow: 22px 0 70px rgba(15, 23, 42, 0.32) ;
  }

  .sidebar-overlay {
    position: fixed ;
    inset: 0 ;
    width: 100vw ;
    height: 100dvh ;
    background: rgba(15, 23, 42, 0.48) ;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
  }

  .sidebar-content {
    overflow-x: hidden ;
  }

  .cases-tools,
  .cases-list,
  .case-documents-panel,
  .sidebar-tool-option {
    width: 100% ;
    min-width: 0 ;
  }

  .cases-filter-row {
    display: grid;
    grid-template-columns: 1fr ;
    gap: 8px ;
  }

  .cases-search-input,
  .cases-filter-select {
    width: 100% ;
    min-width: 0 ;
  }

  .case-card,
  .case-document-item,
  .history-case-btn {
    max-width: 100% ;
    overflow-wrap: anywhere;
  }

  .chat-header-modern {
    position: relative ;
    z-index: 20 ;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto ;
    gap: 10px ;
    width: 100vw ;
    height: auto ;
    min-height: 64px ;
    padding: max(8px, env(safe-area-inset-top)) 12px 8px ;
    grid-row: 1 ;
  }

  .chat-header,
  .header-actions {
    min-width: 0 ;
  }

  .chat-header h2 {
    overflow: hidden ;
    font-size: 1rem ;
    line-height: 1.15 ;
    text-overflow: ellipsis ;
    white-space: nowrap ;
  }

  .status-indicator {
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .header-actions {
    display: flex;
    gap: 8px ;
    align-items: center ;
  }

  .header-icon-btn,
  .header-tools-btn,
  .call-btn-modern,
  .live-call-btn.futuristic-btn {
    flex: 0 0 44px ;
    width: 44px ;
    height: 44px ;
    min-width: 44px ;
    min-height: 44px ;
    padding: 0 ;
    border-radius: 999px ;
  }

  .chat-area {
    grid-row: 2 ;
    height: auto ;
    min-height: 0 ;
    padding: 18px 14px 22px ;
    overflow-x: hidden ;
    overflow-y: auto ;
    scroll-padding-bottom: 120px;
    -webkit-overflow-scrolling: touch;
  }

  #welcome-screen,
  .welcome-screen-modern {
    width: 100% ;
    max-width: 100% ;
    height: auto ;
    min-height: 100% ;
    justify-content: flex-start ;
    padding: 24px 10px 120px ;
  }

  #welcome-screen .welcome-title,
  #welcome-screen h1 {
    max-width: 100% ;
    margin: 0 0 14px ;
    color: var(--text-primary) ;
    font-size: 2rem ;
    line-height: 1.12 ;
    letter-spacing: 0 ;
    text-wrap: balance;
  }

  #welcome-screen .welcome-subtitle,
  #welcome-screen p {
    max-width: 100% ;
    margin: 0 0 26px ;
    font-size: 1rem ;
    line-height: 1.55 ;
  }

  .suggestion-chips-container {
    width: 100% ;
    display: grid;
    grid-template-columns: 1fr ;
    gap: 12px ;
  }

  .welcome-tools-card,
  .suggestion-chip {
    width: 100% ;
    min-height: 56px ;
    justify-content: flex-start ;
    border-radius: 16px ;
    text-align: left ;
    overflow: hidden ;
  }

  .message-bubble-wrapper {
    max-width: 100% ;
  }

  .message-bubble {
    max-width: min(92vw, 720px) ;
    overflow-wrap: anywhere ;
    word-break: normal ;
  }

  .message-bubble pre,
  .message-bubble code,
  .message-bubble table {
    max-width: 100%;
    overflow-x: auto;
  }

  .chat-input-container {
    position: relative ;
    inset: auto ;
    grid-row: 3 ;
    z-index: 40 ;
    width: 100% ;
    max-width: 100vw ;
    padding: 10px 12px max(10px, env(safe-area-inset-bottom)) ;
    background: linear-gradient(180deg, rgba(248, 250, 252, 0), rgba(248, 250, 252, 0.96) 22%, rgba(248, 250, 252, 0.98)) ;
  }

  body.keyboard-open .chat-area {
    padding-top: 10px ;
    padding-bottom: 8px ;
    scroll-padding-bottom: 18px;
  }

  body.keyboard-open .chat-input-container {
    padding-top: 6px ;
    padding-bottom: max(6px, env(safe-area-inset-bottom)) ;
  }

  [data-theme="dark"] .chat-input-container {
    background: linear-gradient(180deg, rgba(7, 17, 31, 0), rgba(7, 17, 31, 0.96) 22%, rgba(7, 17, 31, 0.98)) ;
  }

  .chat-input-wrapper-modern {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 44px 44px ;
    gap: 8px ;
    width: 100% ;
    max-width: 760px ;
    min-height: 58px ;
    margin: 0 auto ;
    padding: 7px ;
    border-radius: 28px ;
  }

  .input-content-area {
    min-width: 0 ;
    width: 100% ;
  }

  .chat-input-modern {
    width: 100% ;
    min-height: 34px ;
    max-height: 34dvh ;
    padding: 7px 0 ;
    line-height: 1.35 ;
    overflow-y: auto ;
  }

  .attach-btn-modern,
  .mic-btn-modern,
  .send-btn-modern {
    width: 44px ;
    height: 44px ;
    min-width: 44px ;
    min-height: 44px ;
  }

  .attachment-menu {
    position: fixed ;
    right: 12px ;
    bottom: calc(82px + env(safe-area-inset-bottom)) ;
    left: 12px ;
    width: auto ;
    max-width: none ;
  }

  .modal-overlay,
  .legal-tools-modal,
  .legal-memory-modal,
  .evidence-modal,
  #doc-modal,
  #doc-wizard-modal,
  #terms-modal-overlay,
  #mi-plan-overlay {
    padding: 0 ;
    align-items: stretch ;
    justify-content: stretch ;
  }

  .modal-content,
  .legal-tools-shell,
  .legal-memory-shell,
  .evidence-shell,
  #doc-modal .doc-modal-content,
  #doc-wizard-modal .doc-wizard-content {
    width: 100vw ;
    max-width: 100vw ;
    height: 100dvh ;
    max-height: 100dvh ;
    border-radius: 0 ;
    overflow: hidden ;
  }

  .modal-content {
    overflow-y: auto ;
    padding-bottom: max(18px, env(safe-area-inset-bottom)) ;
  }

  #doc-modal .doc-paper {
    width: 100% ;
    min-height: auto ;
    max-height: 54dvh ;
    padding: 22px 18px ;
    overflow: auto ;
    border-radius: 16px ;
    font-size: 0.9rem ;
    line-height: 1.62 ;
  }

  #doc-modal .doc-paper,
  #doc-modal .doc-paper * {
    overflow-wrap: anywhere ;
    word-break: normal ;
  }

  #doc-modal .doc-studio-layout {
    min-height: 0 ;
  }

  #doc-modal .doc-actions,
  #doc-wizard-modal .doc-actions {
    flex: 0 0 auto ;
    border-top: 1px solid rgba(15, 23, 42, 0.08) ;
    background: rgba(255, 255, 255, 0.98) ;
  }

  #doc-modal .doc-action-group,
  #doc-wizard-modal .doc-actions {
    display: grid;
    grid-template-columns: 1fr 1fr ;
    gap: 8px ;
  }

  #doc-modal #save-doc-btn,
  #doc-modal #copy-doc-btn,
  #doc-wizard-modal #generate-guided-doc-btn {
    grid-column: 1 / -1 ;
  }

  .doc-action-btn {
    min-width: 0 ;
    white-space: nowrap ;
  }

  .template-picker-popover {
    right: 12px ;
    left: 12px ;
    width: auto ;
  }

  .call-screen-overlay {
    min-height: 100dvh ;
    padding: max(20px, env(safe-area-inset-top)) 18px max(18px, env(safe-area-inset-bottom)) ;
  }

  .call-container.glass-panel {
    width: 100% ;
    max-width: 430px ;
    min-height: calc(100dvh - 48px) ;
    padding: 26px 18px 20px ;
  }

  .call-title {
    font-size: 1rem ;
    letter-spacing: 0.14em ;
    text-align: center ;
  }

  .call-status {
    min-height: 22px ;
    text-align: center ;
  }

  .call-avatar-container {
    min-height: 250px ;
    display: grid;
    place-items: center ;
  }

  .ai-orb {
    transform: scale(0.82);
  }

  .call-transcript {
    width: 100% ;
    max-height: 26dvh ;
    overflow-y: auto ;
    padding: 0 4px ;
    font-size: 1rem ;
    line-height: 1.55 ;
    text-align: center ;
  }

  #subscription-screen.gate-screen,
  #login-screen.gate-screen {
    min-height: 100dvh ;
    width: 100vw ;
    max-width: 100vw ;
    padding: max(14px, env(safe-area-inset-top)) 12px max(14px, env(safe-area-inset-bottom)) ;
    overflow-x: hidden ;
    overflow-y: auto ;
  }

  .gate-card,
  .gate-form-panel,
  .subscription-checkout-panel {
    width: 100% ;
    max-width: min(560px, calc(100vw - 24px)) ;
    padding: 20px 16px ;
    border-radius: 20px ;
  }

  #login-screen .gate-form-panel {
    flex: 0 0 auto ;
    align-items: stretch ;
    justify-content: flex-start ;
    width: min(100%, 366px) ;
    max-width: 366px ;
    padding-right: 0 ;
    padding-left: 0 ;
  }

  #login-screen .gate-form-container {
    width: 100% ;
    max-width: 366px ;
    min-width: 0 ;
    gap: 24px ;
    margin: 16px 0 0 ;
  }

  #login-screen .modern-tabs,
  #login-screen .gate-form,
  #login-screen .input-field-group,
  #login-screen .modern-input,
  #login-screen .btn-premium-action {
    width: 100% ;
    max-width: 100% ;
    min-width: 0 ;
  }

  #login-screen .modern-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr ;
    gap: 4px ;
  }

  #login-screen .modern-tab-btn {
    min-width: 0 ;
    padding: 12px 8px ;
    white-space: normal ;
    line-height: 1.2 ;
  }

  #subscription-screen.gate-screen {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    overflow-y: auto;
  }

  #subscription-screen .gate-brand-panel,
  #subscription-screen .gate-form-panel {
    width: 100% ;
    max-width: 760px ;
    margin-right: auto ;
    margin-left: auto ;
  }

  .subscription-checkout .plans-grid {
    display: grid;
    grid-template-columns: 1fr ;
  }

  .subscription-checkout .plan-card {
    text-align: left ;
    align-items: flex-start ;
  }

  .payment-form-grid,
  .payment-summary,
  .payment-consents {
    width: 100% ;
  }

  .payment-form-grid {
    grid-template-columns: 1fr ;
  }

  .subscription-pay-button {
    width: 100% ;
  }

  .pwa-install-banner {
    right: 10px;
    bottom: calc(92px + env(safe-area-inset-bottom));
    left: 10px;
    width: auto;
    grid-template-columns: 38px minmax(0, 1fr) auto;
    padding: 12px;
  }

  .pwa-install-icon {
    width: 38px;
    height: 38px;
  }

  .pwa-install-dismiss {
    position: absolute;
    top: -10px;
    right: -6px;
    width: 30px;
    height: 30px;
    min-height: 30px;
    border: 1px solid rgba(255, 255, 255, 0.10);
    background: #111827;
  }

  .pwa-install-action {
    grid-column: 1 / -1;
    width: 100%;
  }
}

@media (max-width: 390px) {
  #welcome-screen .welcome-title,
  #welcome-screen h1 {
    font-size: 1.68rem ;
  }

  .chat-input-wrapper-modern {
    grid-template-columns: 42px minmax(0, 1fr) 42px 42px ;
    gap: 6px ;
  }

  .attach-btn-modern,
  .mic-btn-modern,
  .send-btn-modern {
    width: 42px ;
    height: 42px ;
    min-width: 42px ;
    min-height: 42px ;
  }
}

@media (min-width: 769px) {
  .pwa-install-banner {
    bottom: 22px;
  }
}

/* ============================================================
   FASE 3 - LANDING PUBLICA, SEO Y CONVERSION
   ============================================================ */

.landing-screen {
  display: block;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  overflow-x: hidden;
  overflow-y: auto;
  background: #05080f;
  color: #f8fafc;
  font-family: var(--font-sans);
  scroll-behavior: smooth;
  position: relative;
  z-index: 1;
}

.landing-screen button,
.landing-screen a {
  font: inherit;
  letter-spacing: 0;
}

.landing-hero {
  min-height: 760px;
  position: relative;
  display: flex;
  align-items: center;
  padding: 96px 72px 96px;
  overflow: hidden;
  isolation: isolate;
}

.landing-hero-media,
.landing-hero-shade {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.landing-hero-media {
  z-index: -3;
  background-image: url('landing-hero-abogado-ia.png');
  background-size: cover;
  background-position: center right;
}

.landing-hero-shade {
  z-index: -2;
  background:
    linear-gradient(90deg, rgba(5, 8, 15, 0.98) 0%, rgba(5, 8, 15, 0.90) 34%, rgba(5, 8, 15, 0.42) 72%, rgba(5, 8, 15, 0.28) 100%),
    linear-gradient(180deg, rgba(5, 8, 15, 0.60) 0%, rgba(5, 8, 15, 0.06) 58%, #05080f 100%);
}

.landing-nav {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 76px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 72px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(5, 8, 15, 0.58);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  z-index: 4;
}

.landing-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: #ffffff;
  text-decoration: none;
  font-weight: 800;
  font-size: 1rem;
}

.landing-brand img {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  box-shadow: 0 12px 28px rgba(217, 119, 6, 0.18);
}

.landing-brand strong {
  color: #fcd34d;
  font-size: 0.86rem;
  font-weight: 700;
}

.landing-nav-actions {
  display: flex;
  align-items: center;
  gap: 16px;
}

.landing-nav-actions a,
.landing-nav-actions button {
  color: #dbeafe;
  text-decoration: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  font-weight: 700;
  font-size: 0.94rem;
}

.landing-nav-actions button {
  min-height: 42px;
  padding: 0 18px;
  border-radius: 8px;
  color: #05080f;
  background: #fcd34d;
  box-shadow: 0 14px 32px rgba(217, 119, 6, 0.22);
}

.landing-hero-copy {
  width: 100%;
  max-width: 720px;
  position: relative;
  z-index: 3;
}

.landing-kicker {
  margin: 0 0 14px;
  color: #fcd34d;
  font-size: 0.82rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0;
}

#landing-title {
  margin: 0;
  color: #ffffff;
  font-size: 5.3rem;
  line-height: 0.96;
  font-weight: 900;
  letter-spacing: 0;
}

.landing-hero-subtitle {
  max-width: 640px;
  margin: 24px 0 0;
  color: #dbeafe;
  font-size: 1.24rem;
  line-height: 1.65;
  letter-spacing: 0;
}

.landing-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 34px;
}

.landing-primary-cta,
.landing-secondary-cta,
.landing-feature-card button,
.landing-price-card button {
  min-height: 52px;
  border-radius: 8px;
  border: 1px solid transparent;
  padding: 0 22px;
  cursor: pointer;
  font-weight: 900;
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.landing-primary-cta,
.landing-price-card button {
  color: #08111f;
  background: #fcd34d;
  box-shadow: 0 18px 42px rgba(217, 119, 6, 0.26);
}

.landing-secondary-cta,
.landing-feature-card button {
  color: #f8fafc;
  background: rgba(15, 23, 42, 0.62);
  border-color: rgba(255, 255, 255, 0.18);
}

.landing-primary-cta:hover,
.landing-secondary-cta:hover,
.landing-feature-card button:hover,
.landing-price-card button:hover {
  transform: translateY(-1px);
}

.landing-hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 26px;
}

.landing-hero-facts span {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 0 12px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  color: #e5e7eb;
  border: 1px solid rgba(255, 255, 255, 0.10);
  font-size: 0.88rem;
  font-weight: 700;
}

.landing-trust-strip {
  width: calc(100% - 48px);
  max-width: 1180px;
  margin: -58px auto 0;
  position: relative;
  z-index: 5;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.10);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.28);
}

.landing-trust-strip div {
  min-height: 138px;
  padding: 24px;
  background: rgba(8, 13, 24, 0.92);
}

.landing-trust-strip strong,
.landing-trust-strip span {
  display: block;
}

.landing-trust-strip strong {
  color: #ffffff;
  font-size: 1rem;
  line-height: 1.35;
}

.landing-trust-strip span {
  margin-top: 10px;
  color: #b6c2d4;
  line-height: 1.55;
  font-size: 0.92rem;
}

.landing-section {
  width: calc(100% - 48px);
  max-width: 1180px;
  margin: 0 auto;
  padding: 96px 0;
}

.landing-section-copy {
  max-width: 760px;
  margin-bottom: 34px;
}

.landing-section h2 {
  color: #ffffff;
  font-size: 3rem;
  line-height: 1.08;
  margin: 0;
  letter-spacing: 0;
}

.landing-section-copy p,
.landing-responsible > p {
  margin-top: 18px;
  color: #cbd5e1;
  font-size: 1.08rem;
  line-height: 1.8;
  letter-spacing: 0;
}

.landing-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.landing-feature-card,
.landing-price-card,
.landing-includes,
.landing-responsible {
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.10);
  background: rgba(15, 23, 42, 0.72);
  box-shadow: 0 18px 46px rgba(0, 0, 0, 0.18);
}

.landing-feature-card {
  min-height: 294px;
  padding: 24px;
}

.landing-feature-card span {
  display: inline-flex;
  color: #fcd34d;
  font-size: 0.82rem;
  font-weight: 900;
  margin-bottom: 24px;
}

.landing-feature-card h3,
.landing-includes h3 {
  color: #ffffff;
  font-size: 1.08rem;
  line-height: 1.35;
  margin: 0;
  letter-spacing: 0;
}

.landing-feature-card p {
  color: #b6c2d4;
  line-height: 1.7;
  font-size: 0.94rem;
  margin: 14px 0 0;
}

.landing-feature-card button {
  width: 100%;
  margin-top: 20px;
}

.landing-pricing {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.landing-price-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.landing-price-card {
  padding: 30px;
}

.landing-price-card-featured {
  border-color: rgba(252, 211, 77, 0.46);
  background: rgba(30, 41, 59, 0.84);
}

.landing-price-card p {
  color: #fcd34d;
  font-weight: 900;
  margin: 0;
}

.landing-price-card strong {
  display: block;
  margin-top: 10px;
  color: #ffffff;
  font-size: 3rem;
  line-height: 1.05;
  letter-spacing: 0;
}

.landing-price-card > span,
.landing-price-card em {
  display: block;
  color: #cbd5e1;
  font-style: normal;
  margin-top: 8px;
  line-height: 1.6;
}

.landing-price-card button {
  width: 100%;
  margin-top: 24px;
}

.landing-includes {
  margin-top: 16px;
  padding: 28px;
}

.landing-includes ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 20px;
  list-style: none;
  margin: 18px 0 0;
  padding: 0;
}

.landing-includes li {
  color: #dbeafe;
  line-height: 1.65;
  padding-left: 20px;
  position: relative;
}

.landing-includes li::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #fcd34d;
  position: absolute;
  left: 0;
  top: 0.7em;
}

.landing-responsible {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
  gap: 34px;
  align-items: start;
  padding: 32px;
  margin-bottom: 72px;
}

.landing-responsible h2 {
  font-size: 2.1rem;
}

.landing-responsible > p {
  margin: 0;
}

@media (max-width: 1100px) {
  .landing-hero {
    min-height: 700px;
    padding: 100px 38px 82px;
  }

  .landing-nav {
    padding: 0 38px;
  }

  #landing-title {
    font-size: 4.2rem;
  }

  .landing-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .landing-trust-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .landing-screen {
    height: 100dvh;
  }

  .landing-nav {
    height: 68px;
    padding: 0 16px;
  }

  .landing-brand {
    gap: 8px;
    font-size: 0.92rem;
  }

  .landing-brand img {
    width: 30px;
    height: 30px;
  }

  .landing-brand strong {
    display: none;
  }

  .landing-nav-actions {
    gap: 10px;
  }

  .landing-nav-actions a {
    display: none;
  }

  .landing-nav-actions button {
    min-height: 38px;
    padding: 0 14px;
    font-size: 0.86rem;
  }

  .landing-hero {
    min-height: 736px;
    padding: 96px 18px 54px;
    align-items: flex-start;
  }

  .landing-hero-media {
    background-position: 62% center;
  }

  .landing-hero-shade {
    background:
      linear-gradient(180deg, rgba(5, 8, 15, 0.94) 0%, rgba(5, 8, 15, 0.78) 42%, rgba(5, 8, 15, 0.62) 100%),
      linear-gradient(90deg, rgba(5, 8, 15, 0.96), rgba(5, 8, 15, 0.52));
  }

  .landing-hero-copy {
    max-width: 100%;
  }

  #landing-title {
    font-size: 3.1rem;
    line-height: 1;
  }

  .landing-hero-subtitle {
    font-size: 1.04rem;
    line-height: 1.65;
    margin-top: 18px;
  }

  .landing-cta-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-top: 26px;
  }

  .landing-primary-cta,
  .landing-secondary-cta {
    width: 100%;
  }

  .landing-hero-facts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .landing-trust-strip {
    width: calc(100% - 28px);
    margin-top: -36px;
    grid-template-columns: 1fr;
  }

  .landing-trust-strip div {
    min-height: auto;
    padding: 20px;
  }

  .landing-section {
    width: calc(100% - 28px);
    padding: 62px 0;
  }

  .landing-section h2 {
    font-size: 2.1rem;
  }

  .landing-card-grid,
  .landing-price-grid,
  .landing-includes ul,
  .landing-responsible {
    grid-template-columns: 1fr;
  }

  .landing-feature-card {
    min-height: auto;
  }

  .landing-price-card {
    padding: 24px;
  }

  .landing-price-card strong {
    font-size: 2.45rem;
  }

  .landing-includes,
  .landing-responsible {
    padding: 22px;
  }

  .landing-responsible {
    gap: 18px;
    margin-bottom: 42px;
  }

  .landing-responsible h2 {
    font-size: 1.8rem;
  }
}

@media (max-width: 390px) {
  #landing-title {
    font-size: 2.72rem;
  }

  .landing-section h2 {
    font-size: 1.88rem;
  }

  .landing-price-card strong {
    font-size: 2.18rem;
  }
}

/* ============================================================
   FASE UX - PULIDO VISUAL DE CONFIANZA, VENTAS Y LECTURA
   ============================================================ */

.landing-hero-subtitle {
  color: #f8fafc;
  font-size: clamp(1.1rem, 1.35vw, 1.34rem);
  line-height: 1.72;
  text-shadow: 0 1px 22px rgba(0, 0, 0, 0.28);
}

.landing-primary-cta,
.landing-secondary-cta,
.landing-feature-card button,
.landing-price-card button {
  min-height: 56px;
  padding: 0 28px;
  border-radius: 8px;
  font-size: 1rem;
}

.landing-primary-cta,
.landing-price-card button {
  background: linear-gradient(135deg, #ffe27a, #f4b938);
  box-shadow: 0 18px 42px rgba(217, 119, 6, 0.34);
}

.landing-secondary-cta,
.landing-feature-card button {
  border-color: rgba(248, 250, 252, 0.34);
  background: rgba(15, 23, 42, 0.78);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
}

.landing-primary-cta:hover,
.landing-secondary-cta:hover,
.landing-feature-card button:hover,
.landing-price-card button:hover {
  transform: translateY(-2px);
  border-color: rgba(252, 211, 77, 0.56);
  box-shadow: 0 22px 52px rgba(217, 119, 6, 0.30);
}

.landing-hero-facts {
  gap: 12px;
}

.landing-hero-facts span {
  min-height: 46px;
  padding: 0 16px;
  background: rgba(15, 23, 42, 0.72);
  border-color: rgba(248, 250, 252, 0.18);
  color: #f8fafc;
  box-shadow: 0 14px 32px rgba(0, 0, 0, 0.18);
}

.landing-hero-facts span::before {
  content: "";
  width: 8px;
  height: 8px;
  margin-right: 10px;
  border-radius: 50%;
  background: #fcd34d;
  box-shadow: 0 0 0 5px rgba(252, 211, 77, 0.12);
}

.landing-trust-strip div,
.landing-feature-card,
.landing-price-card,
.landing-includes,
.landing-responsible {
  background: rgba(15, 23, 42, 0.86);
  border-color: rgba(148, 163, 184, 0.18);
}

.landing-feature-card,
.landing-price-card {
  position: relative;
  overflow: hidden;
  padding: 28px;
}

.landing-feature-card::after,
.landing-price-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.landing-feature-card p,
.landing-price-card > span,
.landing-price-card em,
.landing-includes li {
  color: #d7e0ec;
}

.landing-price-grid {
  gap: clamp(22px, 3vw, 34px);
  align-items: stretch;
}

.landing-price-card {
  display: flex;
  flex-direction: column;
  min-height: 316px;
}

.landing-price-card button {
  margin-top: auto;
}

.landing-price-card-featured {
  border-color: rgba(252, 211, 77, 0.72);
  background:
    linear-gradient(180deg, rgba(252, 211, 77, 0.13), rgba(15, 23, 42, 0.88) 42%),
    rgba(15, 23, 42, 0.92);
  box-shadow: 0 24px 70px rgba(217, 119, 6, 0.18);
}

.landing-value-badge {
  align-self: flex-start;
  margin-bottom: 14px;
  padding: 6px 10px;
  border: 1px solid rgba(252, 211, 77, 0.42);
  border-radius: 8px;
  background: rgba(252, 211, 77, 0.14);
  color: #fde68a;
  font-size: 0.74rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0;
}

.landing-includes ul {
  gap: 14px 24px;
}

.landing-includes li {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 10px;
  align-items: flex-start;
  padding-left: 0;
}

.landing-includes li::before {
  position: static;
  content: "✓";
  width: 24px;
  height: 24px;
  display: inline-grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(252, 211, 77, 0.16);
  color: #fcd34d;
  font-size: 0.84rem;
  font-weight: 900;
}

.sidebar-content {
  padding: 8px 18px 18px;
}

.menu-section {
  margin: 18px 0 20px;
}

.menu-title,
.case-documents-title {
  color: #7a8799;
  font-size: 0.66rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.menu-button {
  min-height: 48px;
  margin: 4px 0;
  padding: 12px 14px;
  border-radius: 8px;
}

.sidebar-tool-option,
.case-item,
.case-document-item,
.history-case-btn {
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.045);
}

.sidebar-tool-icon svg,
.menu-button svg,
.header-icon-btn svg,
.header-tools-btn svg {
  stroke-width: 2;
}

.welcome-tools-card,
.suggestion-chip,
.suggestion-card,
.legal-tool-card,
.legal-result-item,
.legal-tools-history,
.legal-memory-card,
.evidence-card {
  border: 1px solid rgba(15, 23, 42, 0.09) ;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.055) ;
}

.welcome-tools-card:hover,
.suggestion-chip:hover,
.suggestion-card:hover,
.legal-tool-card:hover {
  transform: translateY(-1px);
  border-color: rgba(194, 135, 45, 0.26) ;
  box-shadow: 0 16px 34px rgba(15, 23, 42, 0.08) ;
}

.cases-search-input,
.cases-filter-select,
.modern-input,
.doc-field input,
.doc-field select,
.doc-select,
.wizard-field input,
.wizard-extra-notes,
.legal-field input,
.legal-field select,
.legal-field textarea,
.evidence-select,
.legal-memory-field input,
.legal-memory-field select,
.legal-memory-field textarea,
.legal-memory-textarea,
.chat-input-wrapper-modern {
  border-radius: 8px;
  background-color: rgba(248, 250, 252, 0.96);
}

.cases-search-input:focus,
.cases-filter-select:focus,
.modern-input:focus,
.doc-field input:focus,
.doc-field select:focus,
.doc-select:focus,
.wizard-field input:focus,
.wizard-extra-notes:focus,
.legal-field input:focus,
.legal-field select:focus,
.legal-field textarea:focus,
.evidence-select:focus,
.legal-memory-field input:focus,
.legal-memory-field select:focus,
.legal-memory-field textarea:focus,
.legal-memory-textarea:focus {
  border-color: rgba(194, 135, 45, 0.58);
  box-shadow: 0 0 0 3px rgba(194, 135, 45, 0.12);
}

.legal-memory-form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 16px;
}

.legal-memory-field {
  min-width: 0;
}

.legal-memory-card h3 {
  margin-bottom: 16px;
}

.message-bubble {
  border-radius: 18px;
  line-height: 1.62;
}

.message-bubble p,
.message-bubble li {
  line-height: 1.62;
}

.message-bubble-wrapper.user .message-bubble {
  border-radius: 18px 18px 6px 18px;
  background: #182235;
  color: #ffffff;
}

.message-bubble-wrapper.assistant .message-bubble {
  border-radius: 18px 18px 18px 6px;
  background: rgba(255, 255, 255, 0.98);
  border-color: rgba(15, 23, 42, 0.08);
}

[data-theme="dark"] .message-bubble-wrapper.assistant .message-bubble {
  background: rgba(23, 31, 47, 0.96);
  border-color: rgba(148, 163, 184, 0.18);
}

.pwa-install-banner {
  width: min(430px, calc(100vw - 36px));
  grid-template-columns: 34px minmax(0, 1fr) auto auto;
  padding: 10px 12px;
  border-radius: 8px;
  opacity: 0.96;
}

.pwa-install-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
}

.pwa-install-copy strong {
  font-size: 0.82rem;
}

.pwa-install-copy small {
  font-size: 0.7rem;
}

.pwa-install-action,
.pwa-install-dismiss {
  min-height: 34px;
}

.pwa-install-action {
  padding: 0 13px;
}

@media (max-width: 760px) {
  .landing-hero-subtitle {
    color: #f8fafc;
    font-size: 1.08rem;
  }

  .landing-primary-cta,
  .landing-secondary-cta {
    min-height: 54px;
  }

  .landing-hero-facts span {
    width: 100%;
    justify-content: flex-start;
  }

  .landing-price-grid {
    gap: 18px;
  }

  .landing-price-card {
    min-height: auto;
  }

  .sidebar-content {
    padding: 10px 16px 18px;
  }

  .menu-button {
    min-height: 50px;
  }

  .legal-memory-form-grid {
    grid-template-columns: 1fr;
  }

  .pwa-install-banner {
    bottom: calc(92px + env(safe-area-inset-bottom));
    grid-template-columns: 32px minmax(0, 1fr) auto;
    gap: 9px;
  }
}

/* Pulido final: el banner PWA no debe tapar el trabajo principal en mobile. */
@media (max-width: 760px) {
  .pwa-install-banner {
    right: 12px ;
    bottom: calc(78px + env(safe-area-inset-bottom)) ;
    left: 12px ;
    width: auto ;
    min-height: 48px ;
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) auto 30px ;
    gap: 8px ;
    padding: 8px ;
    border-radius: 8px ;
  }

  .pwa-install-icon {
    width: 30px ;
    height: 30px ;
    border-radius: 8px ;
  }

  .pwa-install-copy {
    gap: 0 ;
  }

  .pwa-install-copy strong {
    font-size: 0.78rem ;
    line-height: 1.1 ;
  }

  .pwa-install-copy small {
    max-width: 100% ;
    overflow: hidden ;
    font-size: 0.66rem ;
    line-height: 1.15 ;
    text-overflow: ellipsis ;
    white-space: nowrap ;
  }

  .pwa-install-action {
    grid-column: auto ;
    width: auto ;
    min-height: 32px ;
    padding: 0 12px ;
    font-size: 0.78rem ;
  }

  .pwa-install-dismiss {
    position: static ;
    width: 30px ;
    height: 30px ;
    min-height: 30px ;
  }
}

.legal-result-item:nth-child(even),
.case-document-item:nth-child(even),
.evidence-file-card:nth-child(even),
.history-item:nth-child(even) {
  background-image: linear-gradient(0deg, rgba(15, 23, 42, 0.018), rgba(15, 23, 42, 0.018));
}

.legal-result-item + .legal-result-item,
.case-document-item + .case-document-item,
.evidence-file-card + .evidence-file-card,
.history-item + .history-item {
  margin-top: 8px;
}

/* ============================================================
   ESTADOS DE TEMA E INTERACCION
   Dia/noche, encabezado, compositor, drawer y llamada.
   ============================================================ */

.chat-header-modern {
  background: rgba(255, 255, 255, 0.88);
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

[data-theme="dark"] .chat-header-modern {
  background: rgba(12, 22, 39, 0.94) ;
  border-bottom-color: rgba(148, 163, 184, 0.14) ;
}

.dark-mode .chat-header-modern {
  background: rgba(12, 22, 39, 0.94) ;
  border-bottom-color: rgba(148, 163, 184, 0.14) ;
}

.header-left,
.header-right {
  min-width: 0;
}

.header-left {
  display: flex;
  align-items: center;
  gap: 12px;
}

.header-right {
  margin-left: auto;
  justify-content: flex-end;
}

.chat-input-wrapper-modern {
  background: rgba(255, 255, 255, 0.94) ;
  border-color: rgba(15, 23, 42, 0.12) ;
  color: #0F172A ;
}

.chat-input-modern {
  color: #0F172A ;
  caret-color: #C2872D;
}

.chat-input-modern::placeholder {
  color: #64748B ;
}

.attach-btn-modern,
.mic-btn-modern {
  color: #64748B ;
}

[data-theme="dark"] .chat-input-wrapper-modern {
  background: rgba(15, 23, 42, 0.96) ;
  border-color: rgba(148, 163, 184, 0.22) ;
  box-shadow: 0 18px 54px rgba(0, 0, 0, 0.34), inset 0 0 0 1px rgba(255, 255, 255, 0.04) ;
  color: #F8FAFC ;
}

.dark-mode .chat-input-wrapper-modern {
  background: rgba(15, 23, 42, 0.96) ;
  border-color: rgba(148, 163, 184, 0.22) ;
  box-shadow: 0 18px 54px rgba(0, 0, 0, 0.34), inset 0 0 0 1px rgba(255, 255, 255, 0.04) ;
  color: #F8FAFC ;
}

[data-theme="dark"] .chat-input-modern {
  color: #F8FAFC ;
  caret-color: #FCD34D;
}

.dark-mode .chat-input-modern {
  color: #F8FAFC ;
  caret-color: #FCD34D;
}

[data-theme="dark"] .chat-input-modern::placeholder {
  color: rgba(226, 232, 240, 0.68) ;
}

.dark-mode .chat-input-modern::placeholder {
  color: rgba(226, 232, 240, 0.68) ;
}

[data-theme="dark"] .attach-btn-modern,
[data-theme="dark"] .mic-btn-modern {
  color: #CBD5E1 ;
}

.dark-mode .attach-btn-modern,
.dark-mode .mic-btn-modern {
  color: #CBD5E1 ;
}

[data-theme="dark"] .attach-btn-modern:hover,
[data-theme="dark"] .mic-btn-modern:hover {
  background: rgba(252, 211, 77, 0.10) ;
  color: #FFFFFF ;
}

.dark-mode .attach-btn-modern:hover,
.dark-mode .mic-btn-modern:hover {
  background: rgba(252, 211, 77, 0.10) ;
  color: #FFFFFF ;
}

@media (max-width: 768px) {
  body.sidebar-open .chat-input-container {
    opacity: 0 ;
    visibility: hidden;
    pointer-events: none;
  }

  .chat-header-modern {
    display: flex;
    align-items: center ;
    justify-content: space-between ;
    gap: 10px ;
    min-height: 64px ;
    padding: max(8px, env(safe-area-inset-top)) 12px 8px ;
  }

  .header-left {
    flex: 1 1 auto ;
    min-width: 0 ;
    overflow: hidden ;
  }

  .header-brand {
    min-width: 0 ;
    overflow: hidden ;
  }

  .header-brand h2 {
    min-width: 0 ;
    max-width: 100% ;
    overflow: hidden ;
    text-overflow: ellipsis ;
    white-space: nowrap ;
  }

  .header-right {
    flex: 0 0 auto ;
    display: flex;
    align-items: center ;
    justify-content: flex-end ;
    gap: 8px ;
    margin-left: 0 ;
  }

  #header-legal-tools-btn strong {
    display: none;
  }

  .sidebar {
    display: flex;
    flex-direction: column ;
    z-index: 120 ;
    overflow: hidden ;
    background: rgba(255, 255, 255, 0.96) ;
  }

  [data-theme="dark"] .sidebar {
    background: rgba(8, 17, 32, 0.98) ;
  }

  .dark-mode .sidebar {
    background: rgba(8, 17, 32, 0.98) ;
  }

  .sidebar-overlay {
    z-index: 100 ;
  }

  .sidebar-content {
    flex: 1 1 auto ;
    min-height: 0 ;
    overflow-y: auto ;
    overflow-x: hidden ;
    padding-bottom: 14px ;
    -webkit-overflow-scrolling: touch;
  }

  .user-profile {
    flex: 0 0 auto ;
    position: sticky ;
    bottom: 0 ;
    z-index: 3 ;
    background: rgba(248, 250, 252, 0.98) ;
    box-shadow: 0 -12px 28px rgba(15, 23, 42, 0.08) ;
  }

  [data-theme="dark"] .user-profile {
    background: rgba(7, 17, 31, 0.98) ;
    box-shadow: 0 -12px 28px rgba(0, 0, 0, 0.34) ;
  }

  .dark-mode .user-profile {
    background: rgba(7, 17, 31, 0.98) ;
    box-shadow: 0 -12px 28px rgba(0, 0, 0, 0.34) ;
  }

  .user-profile-header {
    min-height: 52px ;
    cursor: pointer;
  }

  .profile-dropdown {
    right: 12px ;
    left: 12px ;
    bottom: calc(100% + 10px) ;
    width: auto ;
    max-width: none ;
  }

  .chat-input-container {
    background: linear-gradient(180deg, rgba(245, 247, 251, 0), rgba(245, 247, 251, 0.96) 22%, #F5F7FB 100%) ;
  }

  [data-theme="dark"] .chat-input-container {
    background: linear-gradient(180deg, rgba(7, 17, 31, 0), rgba(7, 17, 31, 0.96) 22%, #07111F 100%) ;
  }

  .dark-mode .chat-input-container {
    background: linear-gradient(180deg, rgba(7, 17, 31, 0), rgba(7, 17, 31, 0.96) 22%, #07111F 100%) ;
  }

  .chat-input-wrapper-modern {
    background: rgba(255, 255, 255, 0.96) ;
  }

  [data-theme="dark"] .chat-input-wrapper-modern {
    background: rgba(15, 23, 42, 0.98) ;
  }

  .dark-mode .chat-input-wrapper-modern {
    background: rgba(15, 23, 42, 0.98) ;
  }

  .call-screen-overlay {
    background: radial-gradient(circle at 50% 38%, rgba(14, 165, 233, 0.14), transparent 34%), #050B18 ;
  }

  .call-container.glass-panel {
    border-color: rgba(148, 163, 184, 0.12) ;
    background: rgba(3, 10, 23, 0.72) ;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03), 0 30px 80px rgba(0,0,0,0.28) ;
  }

  .call-transcript {
    color: #F8FAFC ;
    overflow-wrap: anywhere ;
  }
}

@media (min-width: 769px) {
  .sidebar {
    z-index: 15;
  }

  .chat-input-container {
    background: transparent ;
  }

[data-theme="dark"] .chat-input-container::before {
    background: linear-gradient(to top, rgba(17, 24, 39, 0.96) 30%, transparent) ;
  }

  .dark-mode .chat-input-container::before {
    background: linear-gradient(to top, rgba(17, 24, 39, 0.96) 30%, transparent) ;
  }
}

/* Fuentes verificadas, copiloto documental, audiencias y vigilancia */
.chat-sources-toggle {
  position: relative;
}

.chat-sources-count {
  position: absolute;
  top: 5px;
  right: 4px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  display: grid;
  place-items: center;
  border: 2px solid var(--bg-primary);
  border-radius: 999px;
  background: #b45309;
  color: #fff;
  font-size: 0.58rem;
  font-weight: 800;
  line-height: 1;
}

.chat-sources-panel[hidden] { display: none; }

.chat-sources-panel {
  position: absolute;
  z-index: 45;
  top: 64px;
  right: 0;
  bottom: 0;
  width: min(380px, 100%);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  border-left: 1px solid var(--border-subtle);
  background: rgba(255, 255, 255, 0.98);
  box-shadow: -20px 0 48px rgba(15, 23, 42, 0.14);
  backdrop-filter: blur(18px);
}

.chat-sources-panel-header,
.chat-sources-panel-footer {
  padding: 18px;
  border-bottom: 1px solid var(--border-subtle);
}

.chat-sources-panel-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.chat-sources-panel-header p {
  margin: 0 0 4px;
  color: #a16207;
  font-size: 0.68rem;
  font-weight: 850;
  text-transform: uppercase;
}

.chat-sources-panel-header h3 {
  margin: 0;
  color: var(--text-primary);
  font-size: 1.02rem;
}

.chat-sources-panel-header button {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: transparent;
  color: var(--text-secondary);
  font-size: 1.3rem;
  cursor: pointer;
}

.chat-sources-panel-body {
  min-height: 0;
  padding: 12px;
  overflow-y: auto;
}

.chat-sources-panel-empty {
  min-height: 180px;
  display: grid;
  align-content: center;
  gap: 8px;
  padding: 28px;
  text-align: center;
  color: var(--text-secondary);
}

.chat-sources-panel-empty strong { color: var(--text-primary); }

.chat-source-panel-item {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 10px;
  padding: 14px 10px;
  border-bottom: 1px solid var(--border-subtle);
}

.chat-source-panel-rank {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(217, 119, 6, 0.12);
  color: #a16207;
  font-size: 0.72rem;
  font-weight: 850;
}

.chat-source-panel-type {
  color: #a16207;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
}

.chat-source-panel-item h4 {
  margin: 5px 0;
  color: var(--text-primary);
  font-size: 0.82rem;
  line-height: 1.4;
}

.chat-source-panel-item p,
.chat-source-panel-item small {
  display: block;
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.7rem;
  line-height: 1.45;
}

.chat-source-panel-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.chat-source-panel-actions a,
.chat-source-panel-actions button,
.chat-sources-panel-footer button {
  min-height: 34px;
  padding: 7px 10px;
  border: 1px solid var(--border-medium);
  border-radius: 6px;
  background: transparent;
  color: var(--text-primary);
  font: inherit;
  font-size: 0.7rem;
  font-weight: 750;
  text-decoration: none;
  cursor: pointer;
}

.chat-structured-analytics,
.chat-structured-records,
.chat-norm-registry {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-elevated);
}

.chat-structured-analytics > strong,
.chat-structured-records > h4,
.chat-norm-registry > h4 {
  margin: 0;
  color: var(--text-primary);
  font-size: 0.9rem;
}

.chat-structured-analytics > small,
.chat-structured-analytics > p,
.chat-structured-records > p,
.chat-norm-registry > p {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.5;
}

.chat-structured-analytics > div {
  display: grid;
  gap: 3px;
  padding-top: 8px;
  border-top: 1px solid var(--border-subtle);
}

.chat-structured-analytics > div b {
  color: var(--text-secondary);
  font-size: 0.68rem;
}

.chat-structured-analytics > div span {
  color: var(--text-muted);
  font-size: 0.7rem;
  line-height: 1.45;
}

.chat-source-panel-record { margin-top: 2px; }
.chat-source-panel-norm { margin-top: 2px; }
.chat-norm-registry-warning {
  padding-top: 8px;
  border-top: 1px solid var(--border-subtle);
}

.chat-sources-panel-footer {
  display: grid;
  gap: 8px;
  border-top: 1px solid var(--border-subtle);
  border-bottom: 0;
}

.chat-sources-panel-footer button {
  background: var(--text-primary);
  color: var(--bg-primary);
}

.chat-sources-panel-footer small {
  color: var(--text-muted);
  font-size: 0.64rem;
  text-align: center;
}

.doc-copilot {
  display: grid;
  gap: 9px;
  margin-bottom: 18px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border-subtle);
}

.doc-copilot h4,
.doc-copilot p { margin: 0; }
.doc-copilot p,
.doc-copilot small { color: var(--text-secondary); font-size: 0.7rem; line-height: 1.45; }
.doc-copilot label { color: var(--text-primary); font-size: 0.68rem; font-weight: 800; }
.doc-copilot textarea {
  width: 100%;
  resize: vertical;
  min-height: 82px;
  padding: 10px;
  border: 1px solid var(--border-medium);
  border-radius: 6px;
  background: var(--bg-primary);
  color: var(--text-primary);
  font: inherit;
  font-size: 0.76rem;
}
.doc-copilot button {
  min-height: 38px;
  border: 0;
  border-radius: 6px;
  background: #b45309;
  color: #fff;
  font-weight: 800;
  cursor: pointer;
}

.doc-mobile-tabs,
.doc-mobile-editor {
  display: none;
}

.doc-editor-pane {
  min-width: 0;
  min-height: 0;
  display: flex;
}

.doc-editor-pane .doc-paper {
  flex: 1 1 auto;
}

.doc-workspace-chat {
  max-height: 230px;
  display: grid;
  gap: 8px;
  padding-right: 4px;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.doc-workspace-message {
  display: grid;
  gap: 4px;
  padding: 9px 10px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-primary);
}

.doc-workspace-message.user {
  margin-left: 18px;
  border-color: rgba(180, 83, 9, 0.22);
  background: rgba(180, 83, 9, 0.08);
}

.doc-workspace-message strong {
  color: var(--text-primary);
  font-size: 0.66rem;
}

.doc-workspace-message p,
.doc-workspace-empty {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.7rem;
  line-height: 1.45;
}

@media (max-width: 768px) {
  #doc-modal {
    align-items: stretch;
    padding: 0;
  }

  #doc-modal .doc-modal-content {
    width: 100vw;
    max-width: 100vw;
    height: 100dvh;
    max-height: 100dvh;
    border: 0 ;
    border-radius: 0 ;
  }

  #doc-modal .modal-header {
    min-height: 54px;
    padding: max(8px, env(safe-area-inset-top)) 14px 8px;
  }

  #doc-modal .doc-modal-title {
    overflow: hidden;
    font-size: 1rem;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  #doc-modal .doc-studio-toolbar {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    padding: 9px 12px;
  }

  #doc-modal .doc-quality-panel {
    flex-wrap: wrap;
    justify-content: flex-start;
    overflow: visible;
    scrollbar-width: none;
  }

  #doc-modal .doc-quality-panel::-webkit-scrollbar,
  #doc-modal .doc-action-group::-webkit-scrollbar {
    display: none;
  }

  #doc-modal .doc-quality-badge {
    flex: 0 0 auto;
    max-width: 100%;
    white-space: nowrap;
  }

  .doc-mobile-tabs {
    min-height: 46px;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    padding: 5px 8px;
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-primary);
  }

  .doc-mobile-tabs button {
    min-width: 0;
    min-height: 36px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.76rem;
    font-weight: 800;
  }

  .doc-mobile-tabs button.active {
    background: rgba(180, 83, 9, 0.11);
    color: #9a4b08;
  }

  #doc-modal .doc-studio-layout {
    flex: 1 1 auto;
    min-height: 0;
    padding: 0;
    overflow: hidden;
  }

  #doc-modal .doc-editor-pane {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
  }

  #doc-modal .doc-mobile-editor {
    width: 100%;
    min-height: 100%;
    display: block;
    padding: 22px 18px calc(28px + env(safe-area-inset-bottom));
    resize: none;
    overflow-y: auto;
    border: 0;
    border-radius: 0;
    outline: none;
    background: #fffdf8;
    color: #1c1a17;
    font-family: var(--font-serif);
    font-size: 16px;
    line-height: 1.68;
    letter-spacing: 0;
    caret-color: #a64f08;
    -webkit-overflow-scrolling: touch;
  }

  #doc-modal .doc-paper {
    display: none;
  }

  #doc-modal .doc-paper[data-official-preview="runt-transfer"] {
    min-height: 100%;
    display: block;
    overflow: auto;
  }

  #doc-modal .doc-guidance-panel {
    width: 100%;
    height: 100%;
    max-height: none;
    display: none;
    border: 0;
    border-radius: 0;
    overflow-y: auto;
    background: var(--bg-primary);
  }

  #doc-modal.doc-mobile-view-assistant .doc-guidance-panel,
  #doc-modal.doc-mobile-view-review .doc-guidance-panel {
    display: block;
  }

  #doc-modal.doc-mobile-view-assistant .doc-editor-pane,
  #doc-modal.doc-mobile-view-review .doc-editor-pane {
    display: none;
  }

  #doc-modal .doc-guidance-panel > summary {
    display: none;
  }

  #doc-modal .doc-guidance-content {
    padding: 16px 14px calc(26px + env(safe-area-inset-bottom));
  }

  #doc-modal.doc-mobile-view-assistant .doc-guidance-content > h4,
  #doc-modal.doc-mobile-view-assistant #doc-structured-fields,
  #doc-modal.doc-mobile-view-assistant #doc-missing-fields,
  #doc-modal.doc-mobile-view-assistant #doc-source-list {
    display: none;
  }

  #doc-modal.doc-mobile-view-review .doc-copilot {
    display: none;
  }

  #doc-modal .doc-copilot {
    min-height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
  }

  #doc-modal .doc-workspace-chat {
    max-height: min(14dvh, 110px);
  }

  #doc-modal #doc-ai-instruction {
    min-height: 104px;
    max-height: 180px;
    font-size: 16px;
  }

  #doc-modal .doc-copilot button {
    position: static;
    min-height: 46px;
    box-shadow: 0 8px 20px rgba(120, 53, 15, 0.22);
  }

  #doc-modal .doc-actions {
    min-height: auto;
    padding: 8px 10px max(8px, env(safe-area-inset-bottom));
    overflow: visible;
  }

  #doc-modal .doc-action-group {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    overflow: visible;
  }

  #doc-modal .doc-action-btn,
  #doc-modal #save-doc-btn,
  #doc-modal .doc-action-primary {
    min-width: 0;
    min-height: 42px;
    grid-column: auto;
  }

  #doc-modal #save-doc-btn {
    grid-column: 1 / -1;
  }

  #doc-modal #copy-doc-btn {
    grid-column: 1 / -1;
  }

  #doc-modal.doc-mobile-view-assistant .doc-actions,
  #doc-modal.doc-mobile-view-review .doc-actions {
    display: none;
  }
}

[data-theme="dark"] .template-picker-trigger,
[data-theme="dark"] .template-picker-popover,
.dark-mode .template-picker-trigger,
.dark-mode .template-picker-popover {
  border-color: rgba(148, 163, 184, 0.28);
  background: #111f37;
  color: #f8fafc;
}

[data-theme="dark"] .template-picker-search,
.dark-mode .template-picker-search {
  border-color: rgba(148, 163, 184, 0.28);
  background: #0b1424;
  color: #f8fafc;
}

[data-theme="dark"] .template-picker-option,
.dark-mode .template-picker-option {
  color: #e2e8f0;
}

[data-theme="dark"] #doc-modal .doc-mobile-tabs,
.dark-mode #doc-modal .doc-mobile-tabs,
[data-theme="dark"] #doc-modal .doc-guidance-panel,
.dark-mode #doc-modal .doc-guidance-panel {
  background: #0b1424;
}

[data-theme="dark"] #doc-modal .doc-mobile-tabs button.active,
.dark-mode #doc-modal .doc-mobile-tabs button.active {
  background: rgba(217, 119, 6, 0.2);
  color: #fbbf24;
}

[data-theme="dark"] #doc-modal .doc-mobile-editor,
.dark-mode #doc-modal .doc-mobile-editor {
  border-color: rgba(148, 163, 184, 0.18);
  background: #0d1728;
  color: #f8fafc;
  caret-color: #fbbf24;
}

[data-theme="dark"] #doc-modal .doc-workspace-message,
.dark-mode #doc-modal .doc-workspace-message {
  background: #111f37;
}

[data-theme="dark"] #doc-modal .doc-workspace-message.user,
.dark-mode #doc-modal .doc-workspace-message.user {
  background: rgba(217, 119, 6, 0.14);
}

[data-theme="dark"] #doc-modal .doc-action-secondary,
.dark-mode #doc-modal .doc-action-secondary,
[data-theme="dark"] #doc-modal #save-doc-btn,
.dark-mode #doc-modal #save-doc-btn {
  border-color: rgba(148, 163, 184, 0.3);
  background: #111f37;
  color: #f8fafc ;
}

[data-theme="dark"] #doc-modal .doc-action-word,
.dark-mode #doc-modal .doc-action-word {
  border-color: rgba(96, 165, 250, 0.38);
  background: rgba(59, 130, 246, 0.14);
  color: #93c5fd;
}

[data-theme="dark"] #doc-modal .doc-action-pdf,
.dark-mode #doc-modal .doc-action-pdf {
  border-color: rgba(248, 113, 113, 0.38);
  background: rgba(239, 68, 68, 0.12);
  color: #fca5a5;
}
.doc-copilot button:disabled { opacity: 0.55; cursor: wait; }

.evidence-transcription {
  margin-top: 10px;
  border-top: 1px solid var(--border-subtle);
  padding-top: 10px;
}
.evidence-transcription summary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--text-primary);
  cursor: pointer;
  font-size: 0.76rem;
  font-weight: 800;
}
.evidence-transcription summary small { color: var(--text-muted); font-weight: 600; }
.evidence-transcription-summary { color: var(--text-secondary); font-size: 0.75rem; line-height: 1.55; }
.evidence-transcription-points { margin-top: 10px; }
.evidence-transcription-points > strong { color: var(--text-primary); font-size: 0.72rem; }
.evidence-transcript-segments {
  max-height: 360px;
  margin-top: 12px;
  overflow-y: auto;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
}
.evidence-transcript-segments > div {
  display: grid;
  grid-template-columns: 54px 110px minmax(0, 1fr);
  gap: 8px;
  padding: 9px;
  border-bottom: 1px solid var(--border-subtle);
  font-size: 0.7rem;
}
.evidence-transcript-segments time { color: #a16207; font-weight: 800; }
.evidence-transcript-segments p { margin: 0; color: var(--text-secondary); }
.evidence-transcription pre { max-height: 360px; overflow: auto; white-space: pre-wrap; color: var(--text-secondary); }
.evidence-transcript-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.evidence-transcript-actions button,
.evidence-transcript-actions a {
  margin-top: 10px;
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  padding: 7px 10px;
  border: 1px solid var(--border-medium);
  border-radius: 6px;
  background: transparent;
  color: var(--text-primary);
  font-size: 0.7rem;
  font-weight: 750;
  text-decoration: none;
  cursor: pointer;
}

.judicial-watch-dashboard { grid-column: 1 / -1; margin-top: 18px; }
.judicial-watch-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}
.judicial-watch-summary > div {
  display: grid;
  gap: 3px;
  padding: 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
}
.judicial-watch-summary strong { color: var(--text-primary); font-size: 1.15rem; }
.judicial-watch-summary span { color: var(--text-muted); font-size: 0.68rem; }
.judicial-watch-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.judicial-watch-columns section > h4,
.judicial-snapshot-form h4 { margin: 0 0 10px; color: var(--text-primary); font-size: 0.82rem; }
.judicial-process-item,
.judicial-alert-item {
  padding: 12px 0;
  border-bottom: 1px solid var(--border-subtle);
}
.judicial-process-item > div,
.judicial-alert-item > div,
.judicial-process-item footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.judicial-process-item span,
.judicial-alert-item span { color: var(--text-muted); font-size: 0.65rem; text-transform: uppercase; }
.judicial-process-item strong,
.judicial-alert-item strong { color: var(--text-primary); font-size: 0.76rem; }
.judicial-process-item p,
.judicial-alert-item p,
.judicial-process-item small,
.judicial-alert-item small { display: block; margin: 5px 0; color: var(--text-secondary); font-size: 0.7rem; line-height: 1.45; }
.judicial-process-item a,
.judicial-alert-item button { color: #a16207; font-size: 0.68rem; font-weight: 800; }
.judicial-alert-item.critical { border-left: 3px solid #dc2626; padding-left: 9px; }
.judicial-alert-item.warning { border-left: 3px solid #d97706; padding-left: 9px; }
.judicial-snapshot-form {
  display: grid;
  gap: 10px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border-subtle);
}
.judicial-snapshot-form > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.judicial-snapshot-form label { display: grid; gap: 5px; color: var(--text-secondary); font-size: 0.68rem; }
.judicial-snapshot-form input,
.judicial-snapshot-form select,
.judicial-snapshot-form textarea {
  width: 100%;
  padding: 9px;
  border: 1px solid var(--border-medium);
  border-radius: 6px;
  background: var(--bg-primary);
  color: var(--text-primary);
  font: inherit;
}
.judicial-snapshot-form button {
  min-height: 40px;
  border: 0;
  border-radius: 6px;
  background: var(--text-primary);
  color: var(--bg-primary);
  font-weight: 800;
  cursor: pointer;
}

[data-theme="dark"] .chat-sources-panel,
.dark-mode .chat-sources-panel {
  background: rgba(9, 18, 32, 0.98);
  box-shadow: -20px 0 48px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .chat-structured-analytics,
[data-theme="dark"] .chat-structured-records,
[data-theme="dark"] .chat-norm-registry,
.dark-mode .chat-structured-analytics,
.dark-mode .chat-structured-records,
.dark-mode .chat-norm-registry {
  background: #111f37;
  border-color: #31415d;
}

@media (max-width: 768px) {
  .chat-sources-panel {
    position: fixed;
    top: 60px;
    width: 100vw;
    max-width: 100vw;
    z-index: 60;
  }
  body.chat-sources-open .chat-input-container { visibility: hidden; pointer-events: none; }
  .header-tools-btn strong { display: none; }
  .evidence-transcript-segments > div { grid-template-columns: 50px minmax(0, 1fr); }
  .evidence-transcript-segments p { grid-column: 1 / -1; }
  .judicial-watch-columns,
  .judicial-snapshot-form > div { grid-template-columns: 1fr; }
  .judicial-watch-summary { grid-template-columns: repeat(3, minmax(82px, 1fr)); overflow-x: auto; }
}

/* ==========================================================
   FASE 7 QA - MODAL DOCUMENTAL LEGIBLE EN MODO OSCURO
   ========================================================== */
[data-theme="dark"] #doc-modal .doc-modal-content,
.dark-mode #doc-modal .doc-modal-content,
[data-theme="dark"] #doc-wizard-modal .doc-wizard-content,
.dark-mode #doc-wizard-modal .doc-wizard-content {
  background: #0B1424 ;
  color: #E5E7EB ;
}

[data-theme="dark"] #doc-modal .modal-header,
.dark-mode #doc-modal .modal-header,
[data-theme="dark"] #doc-modal .doc-studio-toolbar,
.dark-mode #doc-modal .doc-studio-toolbar,
[data-theme="dark"] #doc-modal .doc-actions,
.dark-mode #doc-modal .doc-actions,
[data-theme="dark"] #doc-wizard-modal .modal-header,
.dark-mode #doc-wizard-modal .modal-header,
[data-theme="dark"] #doc-wizard-modal .doc-actions,
.dark-mode #doc-wizard-modal .doc-actions {
  background: rgba(11, 20, 36, 0.98) ;
  border-color: rgba(148, 163, 184, 0.16) ;
  color: #F8FAFC ;
}

[data-theme="dark"] #doc-modal .doc-modal-title,
.dark-mode #doc-modal .doc-modal-title,
[data-theme="dark"] #doc-wizard-modal .doc-modal-title,
.dark-mode #doc-wizard-modal .doc-modal-title,
[data-theme="dark"] #doc-modal .doc-field label,
.dark-mode #doc-modal .doc-field label,
[data-theme="dark"] #doc-modal .doc-guidance-panel h4,
.dark-mode #doc-modal .doc-guidance-panel h4,
[data-theme="dark"] #doc-modal .doc-structured-fields h5,
.dark-mode #doc-modal .doc-structured-fields h5,
[data-theme="dark"] #doc-modal .doc-checklist h5,
.dark-mode #doc-modal .doc-checklist h5,
[data-theme="dark"] #doc-modal .doc-source-list h5,
.dark-mode #doc-modal .doc-source-list h5 {
  color: #F8FAFC ;
}

[data-theme="dark"] #doc-modal .close-btn,
.dark-mode #doc-modal .close-btn,
[data-theme="dark"] #doc-wizard-modal .close-btn,
.dark-mode #doc-wizard-modal .close-btn {
  background: rgba(15, 23, 42, 0.92) ;
  border: 1px solid rgba(148, 163, 184, 0.22) ;
  color: #CBD5E1 ;
}

[data-theme="dark"] #doc-modal .doc-studio-layout,
.dark-mode #doc-modal .doc-studio-layout {
  background: #111B2D ;
}

[data-theme="dark"] #doc-modal .doc-select,
.dark-mode #doc-modal .doc-select,
[data-theme="dark"] #doc-wizard-modal .doc-select,
.dark-mode #doc-wizard-modal .doc-select {
  background: rgba(15, 23, 42, 0.96) ;
  border-color: rgba(148, 163, 184, 0.28) ;
  color: #F8FAFC ;
}

[data-theme="dark"] #doc-modal .doc-quality-badge,
.dark-mode #doc-modal .doc-quality-badge,
[data-theme="dark"] #doc-modal .missing-field,
.dark-mode #doc-modal .missing-field {
  background: rgba(15, 23, 42, 0.9) ;
  border-color: rgba(148, 163, 184, 0.22) ;
  color: #E2E8F0 ;
}

[data-theme="dark"] #doc-modal .doc-quality-badge.warn,
.dark-mode #doc-modal .doc-quality-badge.warn {
  background: rgba(245, 158, 11, 0.12) ;
  border-color: rgba(245, 158, 11, 0.38) ;
  color: #FBBF24 ;
}

[data-theme="dark"] #doc-modal .doc-quality-badge.ok,
.dark-mode #doc-modal .doc-quality-badge.ok {
  background: rgba(16, 185, 129, 0.12) ;
  border-color: rgba(16, 185, 129, 0.38) ;
  color: #6EE7B7 ;
}

[data-theme="dark"] #doc-modal .doc-guidance-panel,
.dark-mode #doc-modal .doc-guidance-panel {
  background: rgba(7, 17, 31, 0.98) ;
  border: 1px solid rgba(148, 163, 184, 0.16) ;
  color: #E2E8F0 ;
}

[data-theme="dark"] #doc-modal .doc-guidance-panel > summary,
.dark-mode #doc-modal .doc-guidance-panel > summary {
  background: rgba(15, 23, 42, 0.94) ;
  color: #F8FAFC ;
}

[data-theme="dark"] #doc-modal .doc-panel-note,
.dark-mode #doc-modal .doc-panel-note,
[data-theme="dark"] #doc-modal .structured-field-copy small,
.dark-mode #doc-modal .structured-field-copy small,
[data-theme="dark"] #doc-modal .source-status,
.dark-mode #doc-modal .source-status,
[data-theme="dark"] #doc-modal .source-authority,
.dark-mode #doc-modal .source-authority {
  color: #CBD5E1 ;
}

[data-theme="dark"] #doc-modal .structured-field-copy strong,
.dark-mode #doc-modal .structured-field-copy strong,
[data-theme="dark"] #doc-modal .doc-checklist label,
.dark-mode #doc-modal .doc-checklist label {
  color: #F1F5F9 ;
}

[data-theme="dark"] #doc-modal .doc-source-list a,
.dark-mode #doc-modal .doc-source-list a,
[data-theme="dark"] #doc-modal .legal-source-disabled,
.dark-mode #doc-modal .legal-source-disabled {
  background: rgba(15, 23, 42, 0.92) ;
  border-color: rgba(148, 163, 184, 0.18) ;
  color: #F8FAFC ;
}

[data-theme="dark"] #doc-modal .doc-action-btn:disabled,
.dark-mode #doc-modal .doc-action-btn:disabled,
[data-theme="dark"] #doc-wizard-modal .doc-action-btn:disabled,
.dark-mode #doc-wizard-modal .doc-action-btn:disabled {
  background: rgba(15, 23, 42, 0.72) ;
  border-color: rgba(148, 163, 184, 0.16) ;
  color: rgba(203, 213, 225, 0.56) ;
  box-shadow: none ;
  opacity: 1 ;
}

[data-theme="dark"] #doc-modal .doc-action-official,
.dark-mode #doc-modal .doc-action-official {
  color: #67E8F9 ;
  border-color: rgba(103, 232, 249, 0.28) ;
  background: rgba(8, 145, 178, 0.14) ;
}

[data-theme="dark"] #doc-modal .doc-paper,
.dark-mode #doc-modal .doc-paper {
  background: #FFFDF8 ;
  color: #111827 ;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.24) ;
}

[data-theme="dark"] #doc-modal .doc-paper *,
.dark-mode #doc-modal .doc-paper * {
  color: inherit;
}

@media (max-width: 768px) {
  [data-theme="dark"] #doc-modal .doc-actions,
  .dark-mode #doc-modal .doc-actions,
  [data-theme="dark"] #doc-wizard-modal .doc-actions,
  .dark-mode #doc-wizard-modal .doc-actions {
    background: rgba(11, 20, 36, 0.98) ;
    border-top-color: rgba(148, 163, 184, 0.16) ;
  }

  [data-theme="dark"] #doc-modal .doc-paper,
  .dark-mode #doc-modal .doc-paper {
    background: #FFFDF8 ;
    color: #111827 ;
  }
}

/* ==========================================================
   PANEL ADMIN PRIVADO - ANALITICA SIN DATOS SENSIBLES
   ========================================================== */
.admin-dashboard-modal[hidden] {
  display: none;
}

.admin-dashboard-modal {
  position: fixed;
  inset: 0;
  z-index: 9100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(15, 23, 42, 0.54);
  backdrop-filter: blur(12px);
}

.admin-dashboard-shell {
  width: min(1180px, 100%);
  max-height: min(880px, calc(100vh - 40px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 20px;
  background: rgba(248, 250, 252, 0.98);
  color: #0F172A;
  box-shadow: 0 30px 90px rgba(15, 23, 42, 0.28);
}

.admin-dashboard-header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 24px;
  border-bottom: 1px solid rgba(148, 163, 184, 0.18);
}

.admin-dashboard-header h2 {
  margin: 2px 0 6px;
  font-family: var(--font-sans);
  font-size: 1.35rem;
  color: inherit;
}

.admin-dashboard-header p {
  margin: 0;
  color: #64748B;
  font-size: 0.88rem;
}

.admin-dashboard-controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.admin-dashboard-controls select,
.admin-dashboard-controls button:not(.evidence-close-btn) {
  height: 40px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 10px;
  background: #FFFFFF;
  color: #0F172A;
  font-family: var(--font-sans);
  font-weight: 700;
  padding: 0 12px;
}

.admin-dashboard-controls button:not(.evidence-close-btn) {
  cursor: pointer;
  background: #0F172A;
  color: #FFFFFF;
}

.admin-dashboard-body {
  overflow: auto;
  padding: 22px 24px 26px;
}

.admin-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.admin-dashboard-metric,
.admin-dashboard-card {
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 16px;
  background: #FFFFFF;
  box-shadow: 0 12px 30px rgba(15, 23, 42, 0.05);
}

.admin-dashboard-metric {
  padding: 15px;
}

.admin-dashboard-metric span,
.admin-dashboard-card h3 {
  display: block;
  color: #64748B;
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.admin-dashboard-metric strong {
  display: block;
  margin-top: 8px;
  font-size: 1.55rem;
  color: #0F172A;
}

.admin-dashboard-metric small,
.admin-dashboard-empty {
  color: #64748B;
  font-size: 0.78rem;
}

.admin-dashboard-columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.admin-dashboard-card {
  min-height: 190px;
  padding: 16px;
}

.admin-dashboard-card-wide {
  grid-column: span 2;
}

.admin-dashboard-card h3 {
  margin: 0 0 12px;
  color: #334155;
}

.admin-dashboard-row,
.admin-dashboard-event,
.admin-dashboard-daily-row {
  display: grid;
  gap: 8px;
  padding: 10px 0;
  border-bottom: 1px solid rgba(148, 163, 184, 0.14);
}

.admin-dashboard-row {
  grid-template-columns: minmax(0, 1fr) 110px;
  align-items: center;
}

.admin-dashboard-row strong,
.admin-dashboard-event strong {
  display: block;
  color: #0F172A;
  font-size: 0.9rem;
  overflow-wrap: anywhere;
}

.admin-dashboard-row small,
.admin-dashboard-event span,
.admin-dashboard-event small,
.admin-dashboard-daily-row small {
  color: #64748B;
  font-size: 0.76rem;
}

.admin-dashboard-row > span {
  height: 8px;
  border-radius: 999px;
  background: linear-gradient(90deg, #D4AF37 var(--admin-bar), rgba(148, 163, 184, 0.22) var(--admin-bar));
}

.admin-dashboard-daily-row {
  grid-template-columns: 70px minmax(100px, 1fr) 48px minmax(140px, 1fr);
  align-items: center;
}

.admin-dashboard-daily-row > span,
.admin-dashboard-daily-row strong {
  color: #0F172A;
  font-size: 0.78rem;
  font-weight: 800;
}

.admin-dashboard-daily-row div {
  height: 10px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.2);
  overflow: hidden;
}

.admin-dashboard-daily-row i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #0EA5E9, #D4AF37);
}

.admin-health-summary {
  display: grid;
  gap: 12px;
}

.admin-health-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 14px;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  background: #F8FAFC;
}

.admin-health-head strong {
  color: #0F172A;
  font-size: 0.95rem;
}

.admin-health-head span,
.admin-health-note {
  color: #64748B;
  font-size: 0.78rem;
}

.admin-health-ok {
  border-color: rgba(34, 197, 94, 0.24);
  background: rgba(34, 197, 94, 0.08);
}

.admin-health-warn {
  border-color: rgba(212, 175, 55, 0.28);
  background: rgba(212, 175, 55, 0.08);
}

.admin-health-fail {
  border-color: rgba(239, 68, 68, 0.26);
  background: rgba(239, 68, 68, 0.08);
}

.admin-health-list {
  display: grid;
  gap: 8px;
}

.admin-health-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 12px;
  background: #FFFFFF;
}

.admin-health-row strong {
  display: block;
  color: #0F172A;
  font-size: 0.84rem;
}

.admin-health-row small {
  display: block;
  margin-top: 3px;
  color: #64748B;
  font-size: 0.74rem;
  line-height: 1.35;
}

.admin-health-row > span {
  min-width: 54px;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.16);
  color: #334155;
  font-size: 0.68rem;
  font-weight: 900;
  text-align: center;
}

.admin-health-row.admin-health-ok > span { color: #166534; background: rgba(34, 197, 94, 0.12); }
.admin-health-row.admin-health-warn > span { color: #8A6D1D; background: rgba(212, 175, 55, 0.14); }
.admin-health-row.admin-health-fail > span { color: #B91C1C; background: rgba(239, 68, 68, 0.12); }

.admin-health-note {
  margin: 0;
  line-height: 1.45;
}

[data-theme="dark"] .admin-health-head,
.dark-mode .admin-health-head,
[data-theme="dark"] .admin-health-row,
.dark-mode .admin-health-row {
  background: rgba(15, 23, 42, 0.72);
  border-color: rgba(148, 163, 184, 0.16);
}

[data-theme="dark"] .admin-health-head strong,
.dark-mode .admin-health-head strong,
[data-theme="dark"] .admin-health-row strong,
.dark-mode .admin-health-row strong {
  color: #F8FAFC;
}

[data-theme="dark"] .admin-health-head span,
.dark-mode .admin-health-head span,
[data-theme="dark"] .admin-health-row small,
.dark-mode .admin-health-row small,
[data-theme="dark"] .admin-health-note,
.dark-mode .admin-health-note {
  color: #94A3B8;
}

[data-theme="dark"] .admin-dashboard-modal,
.dark-mode .admin-dashboard-modal {
  background: rgba(2, 6, 23, 0.72);
}

[data-theme="dark"] .admin-dashboard-shell,
.dark-mode .admin-dashboard-shell {
  background: #0B1424;
  color: #F8FAFC;
  border-color: rgba(148, 163, 184, 0.16);
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.5);
}

[data-theme="dark"] .admin-dashboard-header,
.dark-mode .admin-dashboard-header {
  border-bottom-color: rgba(148, 163, 184, 0.16);
}

[data-theme="dark"] .admin-dashboard-header p,
.dark-mode .admin-dashboard-header p,
[data-theme="dark"] .admin-dashboard-metric span,
.dark-mode .admin-dashboard-metric span,
[data-theme="dark"] .admin-dashboard-metric small,
.dark-mode .admin-dashboard-metric small,
[data-theme="dark"] .admin-dashboard-empty,
.dark-mode .admin-dashboard-empty,
[data-theme="dark"] .admin-dashboard-row small,
.dark-mode .admin-dashboard-row small,
[data-theme="dark"] .admin-dashboard-event span,
.dark-mode .admin-dashboard-event span,
[data-theme="dark"] .admin-dashboard-event small,
.dark-mode .admin-dashboard-event small,
[data-theme="dark"] .admin-dashboard-daily-row small,
.dark-mode .admin-dashboard-daily-row small {
  color: #CBD5E1;
}

[data-theme="dark"] .admin-dashboard-metric,
.dark-mode .admin-dashboard-metric,
[data-theme="dark"] .admin-dashboard-card,
.dark-mode .admin-dashboard-card {
  background: rgba(15, 23, 42, 0.94);
  border-color: rgba(148, 163, 184, 0.14);
  box-shadow: none;
}

[data-theme="dark"] .admin-dashboard-metric strong,
.dark-mode .admin-dashboard-metric strong,
[data-theme="dark"] .admin-dashboard-card h3,
.dark-mode .admin-dashboard-card h3,
[data-theme="dark"] .admin-dashboard-row strong,
.dark-mode .admin-dashboard-row strong,
[data-theme="dark"] .admin-dashboard-event strong,
.dark-mode .admin-dashboard-event strong,
[data-theme="dark"] .admin-dashboard-daily-row > span,
.dark-mode .admin-dashboard-daily-row > span,
[data-theme="dark"] .admin-dashboard-daily-row strong,
.dark-mode .admin-dashboard-daily-row strong {
  color: #F8FAFC;
}

[data-theme="dark"] .admin-dashboard-controls select,
.dark-mode .admin-dashboard-controls select {
  background: #111B2D;
  border-color: rgba(148, 163, 184, 0.22);
  color: #F8FAFC;
}

[data-theme="dark"] .admin-dashboard-controls button:not(.evidence-close-btn),
.dark-mode .admin-dashboard-controls button:not(.evidence-close-btn) {
  background: #D4AF37;
  color: #07111F;
}

@media (max-width: 900px) {
  .admin-dashboard-modal {
    padding: 0;
  }

  .admin-dashboard-shell {
    width: 100%;
    height: 100%;
    max-height: none;
    border-radius: 0;
  }

  .admin-dashboard-header {
    flex-direction: column;
    padding: 18px;
  }

  .admin-dashboard-controls {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
  }

  .admin-dashboard-body {
    padding: 16px;
  }

  .admin-dashboard-grid,
  .admin-dashboard-columns {
    grid-template-columns: 1fr;
  }

  .admin-dashboard-card-wide {
    grid-column: auto;
  }

  .admin-dashboard-daily-row {
    grid-template-columns: 56px minmax(90px, 1fr) 42px;
  }

  .admin-dashboard-daily-row small {
    grid-column: 2 / -1;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms ;
    animation-iteration-count: 1 ;
    scroll-behavior: auto ;
    transition-duration: 0.01ms ;
  }

  .pulse-ring,
  .call-bg-glow,
  .orb-core,
  .orb-ring,
  .ai-orb.listening .orb-core,
  .ai-orb.speaking .orb-core,
  .typing-dots span,
  .w-bar {
    animation: none ;
  }
}

.app-toast-root {
  position: fixed;
  top: max(18px, env(safe-area-inset-top));
  right: 18px;
  z-index: 12000;
  display: grid;
  gap: 10px;
  width: min(420px, calc(100vw - 28px));
  pointer-events: none;
}

.app-toast {
  pointer-events: auto;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 28px;
  align-items: start;
  gap: 10px;
  padding: 14px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(15, 23, 42, 0.10);
  box-shadow: 0 20px 60px rgba(15, 23, 42, 0.18);
  color: #0F172A;
  animation: appToastIn 180ms ease-out;
}

.app-toast p {
  margin: 0;
  color: inherit;
  font-size: 0.9rem;
  line-height: 1.45;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.app-toast-icon,
.app-toast-close {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
}

.app-toast-icon {
  color: #FFFFFF;
  background: #2563EB;
}

.app-toast-success .app-toast-icon {
  background: #059669;
}

.app-toast-error .app-toast-icon {
  background: #DC2626;
}

.app-toast-close {
  border: 0;
  background: rgba(15, 23, 42, 0.06);
  color: #334155;
  cursor: pointer;
  font-size: 1rem;
}

.app-toast.is-leaving {
  animation: appToastOut 180ms ease-in forwards;
}

[data-theme="dark"] .app-toast,
.dark-mode .app-toast {
  background: rgba(15, 23, 42, 0.96);
  border-color: rgba(148, 163, 184, 0.18);
  color: #F8FAFC;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48);
}

[data-theme="dark"] .app-toast-close,
.dark-mode .app-toast-close {
  background: rgba(255, 255, 255, 0.10);
  color: #E2E8F0;
}

@keyframes appToastIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes appToastOut {
  to { opacity: 0; transform: translateY(-8px) scale(0.98); }
}

@media (max-width: 640px) {
  .app-toast-root {
    top: auto;
    right: 14px;
    left: 14px;
    bottom: calc(86px + env(safe-area-inset-bottom));
    width: auto;
  }
}

.app-dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 13000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(2, 6, 23, 0.52);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  animation: appDialogFadeIn 140ms ease-out;
}

.app-dialog-overlay.is-leaving {
  animation: appDialogFadeOut 140ms ease-in forwards;
}

.app-dialog {
  width: min(440px, 100%);
  padding: 22px;
  border-radius: 18px;
  background: #FFFFFF;
  border: 1px solid rgba(15, 23, 42, 0.10);
  box-shadow: 0 32px 90px rgba(15, 23, 42, 0.32);
  color: #0F172A;
}

.app-dialog h3 {
  margin: 0 0 10px;
  color: inherit;
  font-size: 1.05rem;
  line-height: 1.25;
  font-weight: 900;
}

.app-dialog p {
  margin: 0;
  color: #475569;
  font-size: 0.92rem;
  line-height: 1.55;
}

.app-dialog-input {
  width: 100%;
  height: 46px;
  margin-top: 16px;
  padding: 0 13px;
  border-radius: 12px;
  border: 1px solid rgba(15, 23, 42, 0.14);
  background: #F8FAFC;
  color: #0F172A;
  font: inherit;
  font-weight: 800;
  outline: none;
}

.app-dialog-input:focus {
  border-color: rgba(212, 175, 55, 0.64);
  box-shadow: 0 0 0 4px rgba(212, 175, 55, 0.13);
}

.app-dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 20px;
}

.app-dialog-btn {
  min-height: 42px;
  padding: 0 16px;
  border-radius: 10px;
  border: 1px solid rgba(15, 23, 42, 0.12);
  cursor: pointer;
  font: inherit;
  font-weight: 900;
}

.app-dialog-cancel {
  background: #FFFFFF;
  color: #334155;
}

.app-dialog-confirm {
  border-color: transparent;
  background: #D97706;
  color: #111827;
  box-shadow: 0 12px 28px rgba(217, 119, 6, 0.18);
}

.app-dialog-danger .app-dialog-confirm {
  background: #DC2626;
  color: #FFFFFF;
  box-shadow: 0 12px 28px rgba(220, 38, 38, 0.18);
}

[data-theme="dark"] .app-dialog,
.dark-mode .app-dialog {
  background: #0F172A;
  color: #F8FAFC;
  border-color: rgba(148, 163, 184, 0.18);
}

[data-theme="dark"] .app-dialog p,
.dark-mode .app-dialog p {
  color: #CBD5E1;
}

[data-theme="dark"] .app-dialog-input,
.dark-mode .app-dialog-input {
  background: #111B2D;
  border-color: rgba(148, 163, 184, 0.22);
  color: #F8FAFC;
}

[data-theme="dark"] .app-dialog-cancel,
.dark-mode .app-dialog-cancel {
  background: rgba(255, 255, 255, 0.08);
  color: #E2E8F0;
  border-color: rgba(148, 163, 184, 0.18);
}

@keyframes appDialogFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes appDialogFadeOut {
  to { opacity: 0; }
}

@media (max-width: 520px) {
  .app-dialog {
    border-radius: 16px;
    padding: 18px;
  }

  .app-dialog-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .app-dialog-btn {
    width: 100%;
  }
}

/* Dark theme: legal tools must never inherit the light modal surfaces. */
[data-theme="dark"] .legal-tools-shell {
  border-color: rgba(148, 163, 184, 0.18) ;
  background: var(--bg-primary) ;
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.48) ;
}

[data-theme="dark"] .legal-tools-header {
  color: var(--text-primary);
  background:
    radial-gradient(circle at 10% 0%, rgba(217, 119, 6, 0.17), transparent 38%),
    linear-gradient(180deg, rgba(15, 23, 42, 0.99), rgba(10, 20, 36, 0.98));
  border-bottom-color: rgba(148, 163, 184, 0.16);
}

[data-theme="dark"] .legal-tools-header h2,
[data-theme="dark"] .legal-tools-header p,
[data-theme="dark"] .legal-tools-header .evidence-eyebrow {
  color: var(--text-primary);
}

[data-theme="dark"] .legal-tools-layout {
  background: var(--bg-void);
}

[data-theme="dark"] .legal-tools-nav {
  border-color: rgba(148, 163, 184, 0.14);
  background: rgba(15, 23, 42, 0.96);
}

[data-theme="dark"] .legal-tool-card,
[data-theme="dark"] .legal-tool-form,
[data-theme="dark"] .legal-tool-result,
[data-theme="dark"] .legal-tools-history {
  border-color: rgba(148, 163, 184, 0.16);
  background: var(--bg-elevated);
  color: var(--text-primary);
  box-shadow: 0 12px 34px rgba(0, 0, 0, 0.2);
}

[data-theme="dark"] .legal-tool-card.active {
  border-color: rgba(252, 211, 77, 0.42);
  background: linear-gradient(135deg, rgba(217, 119, 6, 0.25), rgba(30, 41, 59, 0.98));
}

[data-theme="dark"] .legal-tool-card strong,
[data-theme="dark"] .legal-tool-form h3,
[data-theme="dark"] .legal-tool-result h3,
[data-theme="dark"] .legal-tools-history h3 {
  color: var(--text-primary);
}

[data-theme="dark"] .legal-tool-card span,
[data-theme="dark"] .legal-tool-form p,
[data-theme="dark"] .legal-tool-result p,
[data-theme="dark"] .legal-tool-result li,
[data-theme="dark"] .legal-tools-history p,
[data-theme="dark"] .legal-tools-history small,
[data-theme="dark"] .legal-field label,
[data-theme="dark"] .legal-checklist-title {
  color: var(--text-secondary);
}

[data-theme="dark"] .legal-field input,
[data-theme="dark"] .legal-field select,
[data-theme="dark"] .legal-field textarea {
  border-color: rgba(148, 163, 184, 0.2);
  background: var(--bg-input);
  color: var(--text-primary);
  color-scheme: dark;
}

[data-theme="dark"] .legal-tool-secondary {
  border-color: rgba(148, 163, 184, 0.2);
  background: var(--bg-elevated);
  color: var(--text-primary) ;
}

[data-theme="dark"] .legal-tools-modal .evidence-close-btn {
  border-color: rgba(148, 163, 184, 0.2);
  background: rgba(30, 41, 59, 0.92);
  color: var(--text-primary);
}
/* Shell autenticado y ajustes de cuenta con componentes semánticos compartidos. */
.file-preview-chip {
  display: flex;
  align-items: center;
  align-self: flex-start;
  max-width: min(220px, 100%);
  gap: 6px;
  margin-bottom: 4px;
  padding: 5px 8px;
  overflow: hidden;
  color: var(--text-gold);
  font-size: 0.75rem;
  white-space: nowrap;
  background: rgba(201, 168, 76, 0.1);
  border: 1px solid var(--border-medium);
  border-radius: 6px;
}

.file-preview-chip[hidden] {
  display: none;
}

.file-preview-chip > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.file-preview-remove {
  display: inline-grid;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  padding: 0;
  color: var(--red-400);
  cursor: pointer;
  background: transparent;
  border: 0;
  border-radius: 4px;
  place-items: center;
}

.file-preview-remove:hover,
.file-preview-remove:focus-visible {
  background: rgba(220, 38, 38, 0.1);
}

.settings-modal {
  z-index: 500;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.settings-modal[hidden] {
  display: none;
}

.settings-modal:not([hidden]) {
  display: flex;
}

.settings-dialog {
  position: relative;
  width: min(540px, 100%);
  max-height: min(720px, calc(100dvh - 40px));
  padding: 28px;
  overflow: auto;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  box-shadow: 0 24px 56px rgba(15, 23, 42, 0.2);
}

.settings-close-btn {
  position: absolute;
  top: 16px;
  right: 16px;
  display: inline-grid;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--text-secondary);
  cursor: pointer;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  place-items: center;
}

.settings-close-btn:hover,
.settings-close-btn:focus-visible {
  color: var(--text-primary);
  background: var(--surface-soft);
  border-color: var(--border-subtle);
}

.settings-header {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding-right: 42px;
}

.settings-avatar {
  display: grid;
  width: 54px;
  height: 54px;
  color: #f8cd45;
  font-family: var(--font-serif);
  font-size: 1rem;
  font-weight: 800;
  background: #111827;
  border: 2px solid var(--border-medium);
  border-radius: 50%;
  place-items: center;
}

.settings-avatar img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

.settings-eyebrow {
  margin: 0 0 3px;
  color: var(--text-gold);
  font-size: 0.7rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0;
}

.settings-header h2 {
  margin: 0;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 1.25rem;
  line-height: 1.25;
  letter-spacing: 0;
}

.settings-header p:last-child {
  margin: 4px 0 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.settings-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin: 24px 0 18px;
  padding: 4px;
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
}

#settings-modal .profile-tab-btn {
  min-height: 40px;
  min-width: 0;
  padding: 8px;
  color: var(--text-secondary);
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
  background: transparent;
  border: 0;
  border-radius: 6px;
}

@media (max-width: 380px) {
  #settings-modal .profile-tab-btn {
    padding-inline: 4px;
    font-size: 0.78rem;
  }
}

#settings-modal .profile-tab-btn.active {
  color: var(--text-primary);
  background: var(--bg-primary);
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.1);
}

.settings-panel {
  gap: 14px;
}

.settings-panel:not([hidden]) {
  display: grid;
}

.settings-panel[hidden] {
  display: none;
}

.settings-field {
  display: grid;
  gap: 6px;
}

.settings-field > span,
.settings-plan-heading span,
.settings-plan-details dt {
  color: var(--text-secondary);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0;
}

.settings-field > strong {
  min-width: 0;
  padding: 12px 14px;
  overflow: hidden;
  color: var(--text-primary);
  font-size: 0.88rem;
  font-weight: 600;
  text-overflow: ellipsis;
  background: var(--surface-soft);
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
}

.settings-security-note {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 12px;
  background: rgba(16, 185, 129, 0.07);
  border: 1px solid rgba(16, 185, 129, 0.2);
  border-radius: 6px;
}

.settings-security-note > .app-icon {
  display: grid;
  width: 32px;
  height: 32px;
  color: #059669;
  place-items: center;
}

.settings-security-note strong {
  color: var(--text-primary);
  font-size: 0.82rem;
}

.settings-security-note p {
  margin: 3px 0 0;
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.45;
}

#settings-modal .settings-danger-zone {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px 14px;
  align-items: center;
  margin: 4px 0 0;
  padding: 14px;
  background: rgba(220, 38, 38, 0.04);
  border: 1px solid rgba(220, 38, 38, 0.18);
  border-radius: 6px;
}

#settings-modal .settings-danger-zone > div {
  display: block;
}

#settings-modal .settings-danger-zone strong {
  color: var(--text-primary);
  font-size: 0.82rem;
}

#settings-modal .settings-danger-zone p {
  margin: 4px 0 0;
  color: var(--text-secondary);
  font-size: 0.72rem;
  line-height: 1.45;
}

#settings-modal .settings-danger-zone button {
  min-height: 38px;
  padding: 8px 11px;
  color: #b91c1c;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  background: transparent;
  border: 1px solid rgba(220, 38, 38, 0.3);
  border-radius: 6px;
}

#settings-modal .settings-danger-zone small {
  grid-column: 1 / -1;
  color: var(--text-secondary);
}

.settings-plan-card {
  padding: 18px;
  color: var(--text-primary);
  background: var(--surface-warm);
  border: 1px solid color-mix(in srgb, var(--gold-500) 24%, var(--border-subtle));
  border-radius: 8px;
}

.settings-plan-heading {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  justify-content: space-between;
}

.settings-plan-heading strong {
  display: block;
  margin-top: 3px;
  color: var(--gold-700);
  font-size: 1.15rem;
}

.settings-plan-status {
  flex: 0 0 auto;
  padding: 4px 7px;
  color: var(--gold-700);
  font-size: 0.68rem;
  font-weight: 800;
  background: var(--accent-soft);
  border: 1px solid color-mix(in srgb, var(--gold-500) 28%, transparent);
  border-radius: 5px;
}

.settings-plan-details {
  display: grid;
  gap: 8px;
  margin: 16px 0 0;
}

.settings-plan-details > div {
  display: grid;
  grid-template-columns: minmax(100px, 0.8fr) minmax(0, 1.2fr);
  gap: 12px;
  align-items: center;
  padding-top: 10px;
  border-top: 1px solid var(--border-subtle);
}

.settings-plan-details dt {
  color: var(--text-secondary);
}

.settings-plan-details dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
  color: var(--text-primary);
  font-size: 0.78rem;
  font-weight: 700;
  text-align: right;
}

.settings-plan-action {
  width: 100%;
  min-height: 42px;
  padding: 10px 14px;
  color: #111827;
  font-size: 0.82rem;
  font-weight: 800;
  cursor: pointer;
  background: #f8cd45;
  border: 1px solid #d9ad20;
  border-radius: 6px;
}

[data-theme="dark"] .settings-dialog {
  background: #101827;
  border-color: #2a3546;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.46);
}

[data-theme="dark"] #settings-modal .profile-tab-btn.active {
  background: #192334;
}

[data-theme="dark"] .settings-field > strong {
  background: #151f2f;
  border-color: #2a3546;
}

[data-theme="dark"] .settings-tabs,
[data-theme="dark"] .settings-close-btn:hover,
[data-theme="dark"] .settings-close-btn:focus-visible {
  background: #151f2f;
  border-color: #2a3546;
}

[data-theme="dark"] .settings-plan-card {
  color: #f8fafc;
  background: #111827;
  border-color: #263244;
}

[data-theme="dark"] .settings-plan-heading strong,
[data-theme="dark"] .settings-plan-status {
  color: #f8cd45;
}

[data-theme="dark"] .settings-plan-status {
  background: rgba(248, 205, 69, 0.1);
  border-color: rgba(248, 205, 69, 0.25);
}

[data-theme="dark"] .settings-plan-details > div {
  border-top-color: rgba(255, 255, 255, 0.1);
}

[data-theme="dark"] .settings-plan-details dt {
  color: #94a3b8;
}

[data-theme="dark"] .settings-plan-details dd {
  color: #f8fafc;
}

@media (max-width: 560px) {
  .settings-modal {
    align-items: flex-end;
    padding: 0;
  }

  .settings-dialog {
    width: 100%;
    max-height: 92dvh;
    padding: 22px 16px max(18px, env(safe-area-inset-bottom));
    border-right: 0;
    border-bottom: 0;
    border-left: 0;
    border-radius: 8px 8px 0 0;
  }

  .settings-header {
    grid-template-columns: 46px minmax(0, 1fr);
    padding-right: 36px;
  }

  .settings-avatar {
    width: 46px;
    height: 46px;
  }

  #settings-modal .settings-danger-zone {
    grid-template-columns: 1fr;
  }

  #settings-modal .settings-danger-zone button {
    width: 100%;
  }

  .settings-plan-details > div {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .settings-plan-details dd {
    text-align: left;
  }
}

/* ==========================================================
   PWA MOVIL, TECLADO Y TEMA OSCURO COHERENTE
   ========================================================== */
[data-theme="dark"],
[data-theme="dark"] body,
body.dark-mode {
  color-scheme: dark;
  background: #050b16;
}

[data-theme="dark"] .app-container,
[data-theme="dark"] .main-content,
[data-theme="dark"] .chat-area,
.dark-mode .app-container,
.dark-mode .main-content,
.dark-mode .chat-area {
  color: #f8fafc;
  background-color: #07111f;
}

[data-theme="dark"] .sidebar,
.dark-mode .sidebar {
  color: #f8fafc;
  background: #081120;
  border-right-color: rgba(148, 163, 184, 0.16);
}

[data-theme="dark"] .cases-search-input,
[data-theme="dark"] .cases-filter-select,
.dark-mode .cases-search-input,
.dark-mode .cases-filter-select {
  color: #f8fafc;
  background-color: #111f37;
  border-color: rgba(148, 163, 184, 0.22);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
}

[data-theme="dark"] .cases-search-input::placeholder,
.dark-mode .cases-search-input::placeholder {
  color: #94a3b8;
  opacity: 1;
}

[data-theme="dark"] .cases-filter-select option,
.dark-mode .cases-filter-select option {
  color: #f8fafc;
  background: #111f37;
}

[data-theme="dark"] .case-item,
[data-theme="dark"] .sidebar-tool-option,
[data-theme="dark"] .case-document-item,
[data-theme="dark"] .history-case-btn,
.dark-mode .case-item,
.dark-mode .sidebar-tool-option,
.dark-mode .case-document-item,
.dark-mode .history-case-btn {
  color: #f8fafc;
  background: rgba(17, 31, 55, 0.9);
  border-color: rgba(148, 163, 184, 0.16);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

[data-theme="dark"] .case-item:hover,
[data-theme="dark"] .case-item.active,
[data-theme="dark"] .sidebar-tool-option:hover:not(:disabled),
.dark-mode .case-item:hover,
.dark-mode .case-item.active,
.dark-mode .sidebar-tool-option:hover:not(:disabled) {
  color: #fff;
  background: #172640;
  border-color: rgba(245, 190, 68, 0.34);
}

[data-theme="dark"] .case-title,
[data-theme="dark"] .sidebar-tool-copy strong,
[data-theme="dark"] .case-document-item span,
.dark-mode .case-title,
.dark-mode .sidebar-tool-copy strong,
.dark-mode .case-document-item span {
  color: #f8fafc;
}

[data-theme="dark"] .case-summary,
[data-theme="dark"] .sidebar-tool-copy small,
[data-theme="dark"] .case-document-item small,
.dark-mode .case-summary,
.dark-mode .sidebar-tool-copy small,
.dark-mode .case-document-item small {
  color: #b8c5d8;
}

[data-theme="dark"] #doc-modal .doc-copilot textarea,
[data-theme="dark"] #doc-modal .doc-workspace-message,
.dark-mode #doc-modal .doc-copilot textarea,
.dark-mode #doc-modal .doc-workspace-message {
  color: #f8fafc;
  background: #111f37;
  border-color: rgba(148, 163, 184, 0.22);
}

[data-theme="dark"] #doc-modal .doc-copilot textarea::placeholder,
.dark-mode #doc-modal .doc-copilot textarea::placeholder {
  color: #94a3b8;
  opacity: 1;
}

@media (max-width: 768px) {
  [data-theme="dark"] .app-container,
  [data-theme="dark"] .main-content,
  [data-theme="dark"] .chat-area,
  .dark-mode .app-container,
  .dark-mode .main-content,
  .dark-mode .chat-area {
    background: #07111f;
  }

  [data-theme="dark"] #doc-modal .doc-modal-content,
  [data-theme="dark"] #doc-modal .doc-studio-layout,
  [data-theme="dark"] #doc-modal .doc-guidance-content,
  .dark-mode #doc-modal .doc-modal-content,
  .dark-mode #doc-modal .doc-studio-layout,
  .dark-mode #doc-modal .doc-guidance-content {
    color: #f8fafc;
    background: #0b1424;
  }

  body.keyboard-open .main-content,
  body.keyboard-open .chat-area {
    min-height: 0;
  }
}

[hidden] {
  display: none;
}

body.modal-open {
  overflow: hidden;
}

.gate-mobile-mark {
  width: 48px;
  height: 48px;
}

.password-requirements {
  margin: -4px 2px 4px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.45;
}

.forgot-password-btn {
  width: fit-content;
  min-height: 32px;
  margin: -4px 0 2px auto;
  padding: 4px 0;
  border: 0;
  background: transparent;
  color: var(--gold-500);
  cursor: pointer;
  font: 700 0.8rem var(--font-sans);
}

.forgot-password-btn:hover,
.forgot-password-btn:focus-visible {
  color: var(--gold-700);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.password-recovery-screen {
  width: 100%;
}

.password-recovery-heading {
  margin-bottom: 22px;
}

#login-screen .password-recovery-heading h3 {
  color: var(--text-primary);
}

#login-screen .password-recovery-heading p,
#login-screen .password-recovery-status {
  color: var(--text-muted);
}

#login-screen .password-recovery-heading .otp-icon {
  border: 1px solid rgba(212, 175, 55, 0.24);
  background: rgba(212, 175, 55, 0.08);
  color: #d4af37;
}

#login-screen .password-recovery-screen .cancel-link {
  color: var(--text-muted);
}

#login-screen .password-recovery-screen .cancel-link:hover,
#login-screen .password-recovery-screen .cancel-link:focus-visible {
  color: #fcd34d;
}

#password-recovery-request-step,
.password-recovery-reset-step {
  display: grid;
  gap: 16px;
}

#password-recovery-request-step[hidden],
.password-recovery-reset-step[hidden] {
  display: none;
}

.password-recovery-status {
  min-height: 20px;
  margin: 12px 0 2px;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.5;
  text-align: center;
}

.password-recovery-screen .cancel-link {
  width: 100%;
  min-height: 40px;
  margin-top: 4px;
}

.privacy-setup-notice {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--gold-500) 35%, var(--border-medium));
  border-radius: 8px;
  background: color-mix(in srgb, var(--gold-500) 9%, var(--bg-elevated));
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.45;
}

.privacy-consent-field {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  color: var(--text-secondary);
  font-size: 0.76rem;
  line-height: 1.5;
}

#login-screen .privacy-consent-field {
  color: var(--text-secondary);
  font-size: 0.78rem;
}

#login-screen .privacy-consent-field a {
  color: var(--gold-700);
}

#login-screen .password-requirements {
  color: var(--text-muted);
}

.privacy-consent-field[hidden] {
  display: none;
}

/* El formulario de pago conserva sus tokens propios; el acceso utiliza su
   superficie clara dedicada definida en el componente de autenticacion. */
#subscription-screen .modern-input {
  border-color: var(--border-medium);
  background: var(--bg-input);
  color: var(--text-primary);
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

#subscription-screen .modern-input:focus {
  border-color: #d4af37;
  background: var(--bg-input);
  box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.12), inset 0 2px 4px rgba(0, 0, 0, 0.1);
}

#login-screen .modern-input:-webkit-autofill,
#login-screen .modern-input:-webkit-autofill:hover,
#login-screen .modern-input:-webkit-autofill:focus,
#subscription-screen .modern-input:-webkit-autofill,
#subscription-screen .modern-input:-webkit-autofill:hover,
#subscription-screen .modern-input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--text-primary);
  -webkit-box-shadow: 0 0 0 1000px var(--bg-input) inset;
}

[data-theme="light"] #subscription-screen .subscription-checkout-panel {
  background: #f6f8fc;
}

[data-theme="light"] #subscription-screen .subscription-checkout-header h2,
[data-theme="light"] #subscription-screen .card-form-heading h3,
[data-theme="light"] #subscription-screen .subscription-checkout .plan-badge,
[data-theme="light"] #subscription-screen .subscription-checkout .plan-amount,
[data-theme="light"] #subscription-screen .payment-summary strong,
[data-theme="light"] #subscription-screen .consent-row strong {
  color: #111827;
}

[data-theme="light"] #subscription-screen .subscription-checkout .plan-card.active .plan-amount {
  color: #a16207;
}

[data-theme="light"] #subscription-screen .subscription-checkout-header p,
[data-theme="light"] #subscription-screen .card-form-heading p,
[data-theme="light"] #subscription-screen .payment-summary span,
[data-theme="light"] #subscription-screen .consent-row,
[data-theme="light"] #subscription-screen .renewal-explainer,
[data-theme="light"] #subscription-screen .secure-payment-note {
  color: #526174;
}

[data-theme="light"] #subscription-screen #payment-form-container {
  border-top-color: rgba(15, 23, 42, 0.10);
}

[data-theme="light"] #subscription-screen .card-brands span,
[data-theme="light"] #subscription-screen .payment-summary {
  border-color: rgba(15, 23, 42, 0.11);
  background: rgba(255, 255, 255, 0.78);
}

[data-theme="light"] #subscription-screen .card-brands span {
  color: #526174;
}

[data-theme="light"] #subscription-screen .consent-row input {
  border-color: #9aa7b7;
  background: #ffffff;
}

[data-theme="light"] #subscription-screen .consent-row input:checked {
  border-color: #b7791f;
  background: #d4af37;
  box-shadow: inset 0 0 0 3px #ffffff;
}

[data-theme="light"] #subscription-screen .card-status-message {
  border-color: rgba(2, 132, 199, 0.22);
  background: rgba(14, 165, 233, 0.08);
  color: #075985;
}

.privacy-consent-field input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--gold-500);
}

.privacy-consent-field a,
.landing-legal-footer a,
.landing-legal-footer button {
  color: var(--gold-700);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.privacy-links-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  margin: 14px 0;
}

.privacy-links-row a {
  color: var(--gold-700);
  font-size: 0.82rem;
  font-weight: 700;
  text-underline-offset: 3px;
}

.privacy-request-form {
  display: grid;
  gap: 8px;
}

.privacy-request-form label {
  color: var(--text-secondary);
  font-size: 0.76rem;
  font-weight: 700;
}

.privacy-request-form select,
.privacy-request-form textarea {
  width: 100%;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-elevated);
  color: var(--text-primary);
  font: inherit;
}

.privacy-request-form select {
  min-height: 44px;
  padding: 0 12px;
}

.privacy-request-form textarea {
  min-height: 100px;
  padding: 12px;
  resize: vertical;
}

.privacy-request-form small {
  min-height: 1.3em;
  color: var(--text-secondary);
}

.theme-dark {
  color-scheme: dark;
}

.status-admin,
.status-free {
  color: var(--gold-500);
}

.status-active {
  color: var(--green-500);
}

.inline-feedback {
  margin: 6px 0 0;
  font-size: 0.82rem;
  text-align: center;
}

.inline-feedback-error,
.input-error {
  color: var(--red-500);
  border-color: var(--red-500);
}

.inline-feedback-success {
  color: var(--green-500);
}

.document-export-surface {
  padding: 40px;
  color: #000;
  font: 12pt/1.6 Inter, Arial, sans-serif;
}

.runt-export-surface {
  padding: 0;
}

.document-verification-card {
  margin: 24px 0;
  padding: 14px;
  border: 1px solid #d7dce5;
  border-radius: 8px;
  background: #f8fafc;
  font-family: Inter, Arial, sans-serif;
}

.document-verification-title {
  margin-bottom: 8px;
  color: #111827;
  font-size: 12px;
  font-weight: 800;
}

.document-verification-body {
  color: #4b5563;
  font-size: 10px;
  line-height: 1.55;
}

.document-verification-sources {
  margin: 6px 0 0 16px;
  padding: 0;
}

.document-export-header {
  margin-bottom: 24px;
  padding-bottom: 14px;
  border-bottom: 1px solid #d7dce5;
  font-family: Inter, Arial, sans-serif;
}

.document-export-brand {
  color: #8a6d1d;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
}

.document-export-title {
  margin-top: 4px;
  color: #111827;
  font-size: 18px;
  font-weight: 800;
}

.document-export-meta,
.document-export-footer {
  color: #6b7280;
  font-size: 10px;
}

.document-export-meta {
  margin-top: 6px;
  font-size: 11px;
}

.document-export-footer {
  margin-top: 28px;
  padding-top: 10px;
  border-top: 1px solid #d7dce5;
  font-family: Inter, Arial, sans-serif;
}

.official-form-page {
  aspect-ratio: 1700 / 2200;
}

.legal-tool-note,
.legal-tool-empty {
  color: var(--text-muted);
  font-size: 0.72rem;
}

.legal-tool-note {
  margin-top: 12px;
}

.legal-tool-empty {
  font-size: 0.75rem;
}

.legal-tool-channel {
  margin-top: 8px;
}

.avatar-with-image {
  overflow: hidden;
}

.assistant-avatar-image {
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
}

.message-file-chip {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-bottom: 8px;
  padding: 6px 10px;
  border: 1px solid rgb(255 255 255 / 20%);
  border-radius: 8px;
  background: rgb(255 255 255 / 15%);
  font-size: 0.78rem;
}

.message-file-icon {
  font-size: 1.1rem;
}

.message-file-name {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.typing-message-bubble {
  padding: 12px 20px;
}

.document-reading-bubble {
  width: 100%;
  max-width: 300px;
}

.doc-progress-heading {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}

.doc-progress-text {
  color: var(--text-secondary);
  font-size: 0.9rem;
  font-weight: 500;
}

.doc-progress-track {
  width: 100%;
  height: 6px;
  overflow: hidden;
  border-radius: 3px;
  background: var(--border-medium);
}

.doc-progress-fill {
  width: 0;
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--gold-300), var(--gold-500));
  transition: width 0.3s ease;
}

.otp-heading {
  margin-bottom: 20px;
  text-align: center;
}

.otp-icon {
  display: flex;
  width: 56px;
  height: 56px;
  margin: 0 auto 14px;
  align-items: center;
  justify-content: center;
  border: 1px solid color-mix(in srgb, var(--gold-500) 30%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--gold-500) 12%, var(--bg-elevated));
}

.otp-heading h3 {
  margin: 0 0 8px;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 1.2rem;
}

.otp-heading p,
.otp-resend {
  color: var(--text-muted);
  font-size: 0.83rem;
}

.otp-heading p {
  margin: 0;
}

.otp-heading strong {
  color: var(--text-secondary);
}

.otp-code-input {
  text-align: center;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: 8px;
}

.verification-code-label {
  right: 0;
  left: 0;
  text-align: center;
}

.otp-submit {
  margin-top: 16px;
}

.otp-resend {
  width: 100%;
  margin-top: 8px;
  padding: 10px;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-family: var(--font-sans);
}

.spinner-text {
  margin-top: 15px;
  color: var(--text-secondary);
  font-size: 0.9rem;
  text-align: center;
}

.recording-actions {
  display: flex;
  gap: 8px;
}

.record-stop-btn {
  padding: 10px;
  border-radius: 50%;
  background: rgb(255 255 255 / 10%);
}

.landing-legal-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  align-items: center;
  justify-content: center;
  padding: 28px clamp(20px, 5vw, 72px) 36px;
  color: var(--text-muted);
  font-size: 0.78rem;
  text-align: center;
}

.landing-legal-footer button {
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  font: inherit;
}

@media (max-width: 640px) {
  .privacy-consent-field {
    font-size: 0.76rem;
    line-height: 1.48;
  }

  .landing-legal-footer {
    flex-direction: column;
  }
}

/* Recorrido interactivo para nuevos usuarios */
.product-tour-modal[hidden],
#landing-screen[hidden],
#login-screen[hidden],
#subscription-screen[hidden] {
  display: none;
}

.product-tour-modal {
  position: fixed;
  inset: 0;
  z-index: 10020;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 22px;
  background: rgb(2 6 23 / 72%);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.product-tour-shell {
  width: min(1040px, 100%);
  max-height: min(92dvh, 850px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--bg-elevated);
  color: var(--text-primary);
  box-shadow: 0 30px 90px rgb(2 6 23 / 38%);
}

.product-tour-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  gap: 18px;
  align-items: start;
  padding: 24px 28px 18px;
  border-bottom: 1px solid var(--border-subtle);
  background: var(--bg-primary);
}

.product-tour-header p,
.product-tour-kicker {
  display: block;
  margin: 0 0 7px;
  color: var(--gold-500);
  font-size: 0.75rem;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
}

.product-tour-header h2,
.product-tour-question h3 {
  margin: 0;
  color: var(--text-primary);
  letter-spacing: 0;
}

.product-tour-header h2 {
  font-size: clamp(1.35rem, 2.2vw, 2rem);
  line-height: 1.12;
}

.product-tour-header > div > span,
.product-tour-question p {
  display: block;
  margin-top: 9px;
  color: var(--text-secondary);
  line-height: 1.55;
}

.product-tour-close {
  width: 42px;
  height: 42px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--text-secondary);
  cursor: pointer;
}

.product-tour-progress {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 13px 28px;
  border-bottom: 1px solid var(--border-subtle);
  background: var(--bg-primary);
}

.product-tour-progress-track {
  height: 7px;
  overflow: hidden;
  border-radius: 7px;
  background: color-mix(in srgb, var(--gold-300) 14%, var(--surface-soft));
}

.product-tour-progress-track span {
  width: 20%;
  height: 100%;
  display: block;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--gold-300), var(--gold-500));
  transition: width 220ms ease;
}

.product-tour-progress strong {
  color: var(--text-muted);
  font-size: 0.76rem;
}

.product-tour-content {
  min-height: 400px;
  overflow-y: auto;
  padding: 24px 28px 28px;
  background: var(--bg-primary);
}

.product-tour-step[hidden] {
  display: none;
}

.product-tour-question {
  max-width: 760px;
  margin-bottom: 20px;
}

.product-tour-question h3 {
  font-size: clamp(1.25rem, 2vw, 1.65rem);
  line-height: 1.2;
}

.product-tour-options {
  display: grid;
  gap: 12px;
}

.product-tour-profile-options {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.product-tour-scenario-options,
.product-tour-evidence-options {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.product-tour-options button,
.product-tour-capabilities button {
  min-width: 0;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--text-primary);
  cursor: pointer;
  text-align: left;
  transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
}

.product-tour-options button {
  min-height: 126px;
  padding: 18px;
}

.product-tour-options button:hover,
.product-tour-options button.selected,
.product-tour-capabilities button:hover,
.product-tour-capabilities button.selected {
  border-color: color-mix(in srgb, var(--gold-500) 62%, var(--border-medium));
  background: color-mix(in srgb, var(--gold-300) 10%, var(--surface-soft));
}

.product-tour-options button:focus-visible,
.product-tour-capabilities button:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--gold-500) 78%, white);
  outline-offset: 2px;
}

.product-tour-options button.selected {
  box-shadow: inset 3px 0 0 var(--gold-500);
}

.product-tour-options .app-icon {
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  margin-bottom: 13px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--gold-300) 14%, var(--surface-soft));
  color: var(--gold-500);
}

.product-tour-options strong,
.product-tour-options small {
  display: block;
}

.product-tour-options strong {
  line-height: 1.35;
}

.product-tour-options small {
  margin-top: 7px;
  color: var(--text-secondary);
  line-height: 1.45;
}

.product-tour-evidence-options button {
  min-height: 108px;
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}

.product-tour-evidence-options button > span {
  width: 24px;
  height: 24px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border-medium);
  border-radius: 50%;
  color: var(--gold-700);
  font-weight: 900;
}

.product-tour-feedback {
  margin: 16px 0 0;
  padding: 12px 14px;
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  line-height: 1.5;
}

.product-tour-feedback[hidden] {
  display: none;
}

.product-tour-feedback.is-success {
  border-color: rgb(5 150 105 / 35%);
  background: rgb(5 150 105 / 9%);
  color: var(--success-text, #047857);
}

.product-tour-feedback.is-error {
  border-color: rgb(220 38 38 / 30%);
  background: rgb(220 38 38 / 8%);
  color: var(--danger-text, #b91c1c);
}

.product-tour-result {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(260px, 0.75fr);
  gap: 14px;
}

.product-tour-result-main,
.product-tour-source-preview,
.product-tour-capability-detail {
  border: 1px solid var(--border-medium);
  border-radius: 8px;
  background: var(--surface-soft);
}

.product-tour-result-main {
  padding: 20px;
}

.product-tour-result-heading {
  display: flex;
  gap: 9px;
  align-items: center;
  color: var(--gold-700);
}

.product-tour-result-main > p {
  margin: 14px 0 18px;
  color: var(--text-secondary);
  line-height: 1.6;
}

.product-tour-result-row {
  display: grid;
  grid-template-columns: minmax(130px, 0.42fr) minmax(0, 1fr);
  gap: 14px;
  padding: 13px 0;
  border-top: 1px solid var(--border-subtle);
}

.product-tour-result-row span {
  color: var(--text-muted);
  font-size: 0.78rem;
  font-weight: 800;
}

.product-tour-result-row strong {
  font-size: 0.9rem;
  line-height: 1.45;
}

.product-tour-source-preview {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  gap: 12px;
  align-content: start;
  padding: 20px;
}

.product-tour-source-preview > .app-icon {
  color: #059669;
}

.product-tour-source-preview small,
.product-tour-source-preview strong,
.product-tour-source-preview p {
  display: block;
}

.product-tour-source-preview small {
  color: #059669;
  font-weight: 900;
  text-transform: uppercase;
}

.product-tour-source-preview strong {
  margin-top: 8px;
  line-height: 1.45;
}

.product-tour-source-preview p {
  margin: 10px 0 0;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.5;
}

.product-tour-capability-layout {
  display: grid;
  grid-template-columns: minmax(290px, 0.72fr) minmax(0, 1.28fr);
  gap: 14px;
}

.product-tour-capabilities {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.product-tour-capabilities button {
  min-height: 78px;
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 9px;
  align-items: start;
  padding: 12px;
}

.product-tour-capabilities strong,
.product-tour-capabilities small {
  display: block;
}

.product-tour-capabilities small {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.35;
}

.product-tour-capability-detail {
  min-height: 250px;
  padding: 24px;
}

.product-tour-capability-detail h4 {
  margin: 0;
  font-size: 1.2rem;
}

.product-tour-capability-detail p {
  margin: 12px 0 16px;
  color: var(--text-secondary);
  line-height: 1.65;
}

.product-tour-capability-detail ul {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.product-tour-capability-detail li {
  position: relative;
  padding-left: 20px;
  line-height: 1.45;
}

.product-tour-capability-detail li::before {
  content: '✓';
  position: absolute;
  left: 0;
  color: #059669;
  font-weight: 900;
}

.product-tour-discovery {
  display: grid;
  gap: 7px;
  margin-top: 20px;
  padding: 15px;
  border: 1px solid color-mix(in srgb, var(--gold-500) 30%, var(--border-medium));
  border-radius: 8px;
  background: color-mix(in srgb, var(--gold-300) 9%, var(--surface-warm));
}

.product-tour-discovery small {
  color: var(--gold-700);
  font-size: 0.7rem;
  font-weight: 900;
  text-transform: uppercase;
}

.product-tour-discovery strong,
.product-tour-discovery span {
  display: block;
  line-height: 1.45;
}

.product-tour-discovery strong {
  font-size: 0.84rem;
}

.product-tour-discovery span {
  color: var(--text-secondary);
  font-size: 0.8rem;
}

.product-tour-capability-detail > small {
  display: block;
  margin-top: 20px;
  padding-top: 14px;
  border-top: 1px solid var(--border-subtle);
  color: var(--text-muted);
  line-height: 1.45;
}

.product-tour-footer {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  padding: 16px 28px calc(16px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--border-subtle);
  background: var(--bg-elevated);
}

.product-tour-primary,
.product-tour-secondary {
  min-height: 44px;
  padding: 0 18px;
  border-radius: 8px;
  font-weight: 900;
  cursor: pointer;
}

.product-tour-primary {
  border: 1px solid var(--gold-500);
  background: var(--gold-300);
  color: #111827;
}

.product-tour-primary:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.product-tour-secondary {
  border: 1px solid var(--border-medium);
  background: transparent;
  color: var(--text-secondary);
}

[data-theme="dark"] .product-tour-shell,
[data-theme="dark"] .product-tour-footer {
  background: #0b1220;
}

[data-theme="dark"] .product-tour-header,
[data-theme="dark"] .product-tour-progress,
[data-theme="dark"] .product-tour-content {
  background: #0b1220;
}

[data-theme="dark"] .product-tour-feedback.is-success {
  color: #6ee7b7;
}

[data-theme="dark"] .product-tour-feedback.is-error {
  color: #fca5a5;
}

[data-theme="dark"] .product-tour-modal {
  background: rgb(1 5 15 / 84%);
}

[data-theme="dark"] .product-tour-close,
[data-theme="dark"] .product-tour-options button,
[data-theme="dark"] .product-tour-capabilities button,
[data-theme="dark"] .product-tour-result-main,
[data-theme="dark"] .product-tour-source-preview,
[data-theme="dark"] .product-tour-capability-detail {
  background: #111b2d;
  border-color: rgb(148 163 184 / 22%);
}

[data-theme="dark"] .product-tour-discovery {
  background: rgb(212 175 55 / 8%);
  border-color: rgb(212 175 55 / 28%);
}

[data-theme="dark"] .product-tour-result-heading,
[data-theme="dark"] .product-tour-discovery small,
[data-theme="dark"] .product-tour-evidence-options button > span {
  color: #fcd34d;
}

@media (max-width: 760px) {
  .product-tour-modal {
    align-items: stretch;
    padding: 0;
  }

  .product-tour-shell {
    width: 100vw;
    max-height: 100dvh;
    min-height: 100dvh;
    border: 0;
    border-radius: 0;
  }

  .product-tour-header {
    grid-template-columns: minmax(0, 1fr) 40px;
    padding: max(16px, env(safe-area-inset-top)) 16px 14px;
  }

  .product-tour-header > div > span {
    font-size: 0.82rem;
    line-height: 1.42;
  }

  .product-tour-progress {
    padding: 11px 16px;
  }

  .product-tour-content {
    min-height: 0;
    flex: 1 1 auto;
    padding: 18px 16px 22px;
  }

  .product-tour-profile-options,
  .product-tour-scenario-options,
  .product-tour-evidence-options,
  .product-tour-result,
  .product-tour-capability-layout {
    grid-template-columns: 1fr;
  }

  .product-tour-profile-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .product-tour-options button {
    min-height: 112px;
    padding: 14px;
  }

  .product-tour-evidence-options button {
    min-height: 76px;
  }

  .product-tour-result-row {
    grid-template-columns: 1fr;
    gap: 5px;
  }

  .product-tour-capability-detail {
    min-height: 220px;
  }

  .product-tour-footer {
    position: sticky;
    bottom: 0;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  }

  .product-tour-footer button {
    flex: 1 1 0;
  }
}

@media (max-width: 380px) {
  .product-tour-profile-options,
  .product-tour-capabilities {
    grid-template-columns: 1fr;
  }

  .product-tour-profile-options button {
    min-height: 88px;
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 2px 12px;
    align-items: center;
    padding: 12px 14px;
  }

  .product-tour-profile-options .app-icon {
    grid-row: 1 / 3;
    margin: 0;
  }

  .product-tour-profile-options strong,
  .product-tour-profile-options small {
    grid-column: 2;
  }

  .product-tour-profile-options small {
    margin-top: 0;
  }

  .product-tour-header h2 {
    font-size: 1.22rem;
  }
}

/* Release 1.0: encabezado móvil estable en anchos compactos. */
@media (max-width: 400px) {
  #chat-sources-toggle {
    display: none;
  }

  .chat-header-modern {
    gap: 8px;
    padding-inline: 12px;
  }

  .header-left,
  .header-right {
    gap: 8px;
  }

  .header-brand-title {
    font-size: 1rem;
    white-space: nowrap;
  }
}

/* El estado del drawer debe prevalecer incluso si el teclado virtual sigue
   reportado durante la transicion entre autenticacion y la aplicacion. */
@media (max-width: 768px) {
  body.sidebar-open #sidebar.sidebar {
    left: 0;
    transform: translate3d(0, 0, 0);
  }
}

/* ============================================================
   V148 - PORTADA COMERCIAL LEXOIA
   Sistema claro de producto, instalacion y conversion.
   ============================================================ */

.landing-screen {
  width: 100%;
  height: 100dvh;
  overflow-x: hidden;
  overflow-y: auto;
  background: #f7f6f2;
  color: #111827;
  font-family: var(--font-sans);
  scroll-behavior: smooth;
}

.landing-screen button,
.landing-screen a {
  font: inherit;
  letter-spacing: 0;
}

.landing-hero {
  min-height: min(780px, 88dvh);
  padding: 118px max(5vw, 28px) 68px;
  display: flex;
  align-items: center;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: #f7f6f2;
}

.landing-hero-media,
.landing-hero-shade {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.landing-hero-media {
  z-index: -2;
  background: #f7f6f2 url('landing-hero-lexoia-v148.png') center right / cover no-repeat;
}

.landing-hero-shade {
  z-index: -1;
  background: linear-gradient(90deg, #f7f6f2 0%, rgba(247, 246, 242, 0.98) 36%, rgba(247, 246, 242, 0.82) 58%, rgba(247, 246, 242, 0.2) 100%);
}

.landing-nav {
  position: absolute;
  inset: 0 0 auto;
  height: 76px;
  padding: 0 max(5vw, 28px);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 28px;
  border-bottom: 1px solid rgba(44, 48, 56, 0.12);
  background: rgba(247, 246, 242, 0.92);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  z-index: 5;
}

.landing-brand {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  color: #171a20;
  text-decoration: none;
  font-size: 1.04rem;
  font-weight: 850;
}

.landing-brand img {
  width: 38px;
  height: 38px;
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(23, 26, 32, 0.1);
}

.landing-brand-accent {
  color: #d7b36b;
}

.landing-nav-links {
  justify-self: center;
  display: flex;
  align-items: center;
  gap: 28px;
}

.landing-nav-links a {
  color: #566071;
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 650;
}

.landing-nav-links a:hover,
.landing-nav-links a:focus-visible {
  color: #171a20;
}

.landing-nav-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.landing-nav-actions button {
  min-height: 42px;
  padding: 0 16px;
  border-radius: 7px;
  cursor: pointer;
  font-size: 0.88rem;
  font-weight: 800;
}

.landing-install-nav {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #303744;
  border: 1px solid #d4cec2;
  background: rgba(255, 255, 255, 0.42);
}

.landing-login-cta {
  color: #0a101a;
  border: 1px solid #c89b4d;
  background: #c89b4d;
}

.landing-hero-copy {
  width: min(680px, 100%);
  position: relative;
  z-index: 2;
  color: #171a20;
  text-shadow: none;
}

.landing-kicker {
  margin: 0 0 14px;
  color: #865b20;
  font-size: 0.78rem;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: 0;
}

.landing-hero .landing-kicker,
.landing-install .landing-kicker {
  color: #865b20;
}

#landing-title {
  margin: 0;
  color: #171a20;
  font-size: clamp(4.6rem, 8vw, 7rem);
  line-height: 0.9;
  font-weight: 900;
  letter-spacing: 0;
}

.landing-hero-lead {
  max-width: 660px;
  margin: 26px 0 0;
  color: #3f4857;
  font-size: clamp(1.18rem, 1.7vw, 1.48rem);
  line-height: 1.62;
  font-weight: 520;
}

.landing-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}

.landing-primary-cta,
.landing-secondary-cta {
  min-height: 54px;
  padding: 0 22px;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  cursor: pointer;
  font-weight: 820;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.landing-primary-cta {
  color: #111827;
  border: 1px solid #c89b4d;
  background: #c89b4d;
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.24);
}

.landing-secondary-cta {
  color: #171a20;
  border: 1px solid #beb7aa;
  background: rgba(255, 255, 255, 0.56);
}

.landing-primary-cta:hover,
.landing-secondary-cta:hover {
  transform: translateY(-1px);
}

.landing-install-note {
  margin: 13px 0 0;
  color: #687181;
  font-size: 0.84rem;
  line-height: 1.5;
}

.landing-hero-facts {
  margin-top: 28px;
  display: flex;
  flex-wrap: wrap;
  gap: 0;
}

.landing-hero-facts span {
  min-height: 34px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  color: #434c5b;
  border-left: 1px solid rgba(23, 26, 32, 0.24);
  border-color: rgba(23, 26, 32, 0.24);
  background: transparent;
  box-shadow: none;
  font-size: 0.83rem;
  font-weight: 650;
}

.landing-hero-facts span:first-child {
  padding-left: 0;
  border-left: 0;
}

.landing-hero-facts strong {
  margin-right: 5px;
  color: #865b20;
}

.landing-proof {
  width: min(1240px, calc(100% - 48px));
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-bottom: 1px solid #dfe3e8;
  background: transparent;
}

.landing-proof > div {
  min-height: 148px;
  padding: 30px;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: 15px;
  align-items: start;
  border-right: 1px solid #e3e6ea;
}

.landing-proof > div:last-child {
  border-right: 0;
}

.landing-proof .app-icon,
.landing-capability-list .app-icon,
.landing-audience-grid .app-icon {
  width: 40px;
  height: 40px;
  padding: 9px;
  border: 1px solid #decba8;
  border-radius: 7px;
  color: #865b20;
  background: #fbf7ef;
}

.landing-proof p {
  margin: 0;
}

.landing-proof strong,
.landing-proof small {
  display: block;
}

.landing-proof strong {
  color: #111827;
  font-size: 0.98rem;
}

.landing-proof small {
  margin-top: 7px;
  color: #667085;
  font-size: 0.86rem;
  line-height: 1.55;
}

.landing-section,
.landing-band-inner,
.landing-legal-footer {
  width: min(1180px, calc(100% - 48px));
  margin-inline: auto;
}

.landing-section {
  padding: 112px 0;
}

.landing-section-heading {
  max-width: 760px;
  margin-bottom: 42px;
}

.landing-section-heading-wide {
  max-width: 880px;
}

.landing-section h2,
.landing-band h2 {
  margin: 0;
  color: #101827;
  font-size: clamp(2.25rem, 4.4vw, 4.1rem);
  line-height: 1.04;
  font-weight: 830;
  letter-spacing: 0;
}

.landing-section-heading > p:last-child,
.landing-sources-copy > p,
.landing-install-inner > div > p,
.landing-responsible p {
  margin: 20px 0 0;
  color: #596579;
  font-size: 1.06rem;
  line-height: 1.75;
}

.landing-product-visual {
  margin: 0;
  overflow: hidden;
  border: 1px solid #d9dee5;
  border-radius: 8px;
  background: #111a27;
  box-shadow: 0 30px 70px rgba(15, 23, 42, 0.16);
}

.landing-product-visual img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 8.6;
  object-fit: cover;
}

.landing-product-visual figcaption {
  padding: 20px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  color: #dfe6ef;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.landing-product-visual figcaption strong {
  color: #ffffff;
}

.landing-product-visual figcaption span {
  color: #aeb9c8;
  font-size: 0.9rem;
}

.landing-capability-list {
  margin-top: 34px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid #dfe3e8;
  border-left: 1px solid #dfe3e8;
}

.landing-capability-list article {
  min-height: 190px;
  padding: 30px;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: 18px;
  border-right: 1px solid #dfe3e8;
  border-bottom: 1px solid #dfe3e8;
  background: transparent;
}

.landing-capability-list strong {
  color: #101827;
  font-size: 1.04rem;
}

.landing-capability-list p {
  margin: 9px 0 0;
  color: #647084;
  line-height: 1.65;
}

.landing-band {
  width: 100%;
  background: #f7f6f2;
  border-block: 1px solid #dfe1e3;
}

.landing-band-inner {
  padding: 104px 0;
}

.landing-audiences .landing-kicker,
.landing-audiences h2 {
  color: #101827;
}

.landing-audiences .landing-kicker {
  color: #865b20;
}

.landing-audience-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid #dfe3e8;
  border-left: 1px solid #dfe3e8;
}

.landing-audience-grid article {
  min-height: 260px;
  padding: 28px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  border-right: 1px solid #dfe3e8;
  border-bottom: 1px solid #dfe3e8;
}

.landing-audience-grid .app-icon {
  color: #d7b36b;
  border-color: rgba(200, 155, 77, 0.34);
  background: rgba(200, 155, 77, 0.08);
}

.landing-audience-grid strong {
  margin-top: 36px;
  color: #101827;
  font-size: 1.16rem;
}

.landing-audience-grid p {
  margin: 10px 0 0;
  color: #647084;
  line-height: 1.65;
}

.landing-text-cta {
  margin-top: 30px;
  padding: 0;
  min-height: 42px;
  color: #865b20;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-weight: 820;
}

.landing-audiences .landing-text-cta {
  color: #865b20;
}

.landing-sources {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: 76px;
  align-items: center;
}

.landing-sources-copy h2 {
  font-size: clamp(2.4rem, 4.6vw, 4.4rem);
}

.landing-sources-copy ul {
  margin: 30px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 14px;
}

.landing-sources-copy li {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 10px;
  color: #435064;
  line-height: 1.55;
}

.landing-sources-copy li .app-icon {
  width: 22px;
  height: 22px;
  color: #0d8a63;
}

.landing-source-directory {
  padding: 34px;
  border: 1px solid #d9dee5;
  border-radius: 8px;
  background: transparent;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.1);
}

.landing-source-directory > p {
  margin: 0 0 20px;
  color: #707b8d;
  font-size: 0.76rem;
  font-weight: 850;
  text-transform: uppercase;
}

.landing-source-directory > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid #e2e6eb;
  border-left: 1px solid #e2e6eb;
}

.landing-source-directory span {
  min-height: 58px;
  padding: 12px;
  display: flex;
  align-items: center;
  color: #263247;
  border-right: 1px solid #e2e6eb;
  border-bottom: 1px solid #e2e6eb;
  font-size: 0.88rem;
  font-weight: 720;
}

.landing-guides {
  padding: 112px 0;
  border-block: 1px solid #dfe3e8;
}

.landing-guides-intro {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.75fr);
  gap: 80px;
  align-items: end;
}

.landing-guides-intro > div:last-child > p {
  margin: 0 0 24px;
  color: #596579;
  font-size: 1rem;
  line-height: 1.72;
}

.landing-guide-directory {
  margin-top: 56px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid #d7dce2;
}

.landing-guide-directory a {
  min-height: 158px;
  padding: 26px 24px;
  display: flex;
  flex-direction: column;
  border-right: 1px solid #d7dce2;
  border-bottom: 1px solid #d7dce2;
  color: #111827;
  text-decoration: none;
  transition: background-color 180ms ease;
}

.landing-guide-directory a:nth-child(3n) {
  border-right: 0;
}

.landing-guide-directory a:hover,
.landing-guide-directory a:focus-visible {
  background: rgba(200, 155, 77, 0.07);
}

.landing-guide-directory span {
  color: #9a6b28;
  font-size: 0.72rem;
  font-weight: 850;
}

.landing-guide-directory strong {
  margin-top: 22px;
  font-size: 1.04rem;
}

.landing-guide-directory small {
  margin-top: 7px;
  color: #667085;
  font-size: 0.84rem;
  line-height: 1.45;
}

.landing-install {
  background: #f7f6f2;
  border-block: 1px solid #dfe1e3;
}

.landing-install-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);
  gap: 70px;
  align-items: center;
}

.landing-install h2 {
  color: #171a20;
  font-size: clamp(2.25rem, 4vw, 3.7rem);
}

.landing-install .landing-kicker {
  color: #865b20;
}

.landing-install-inner > div > p {
  color: #5d626b;
}

.landing-install-actions {
  display: grid;
  gap: 11px;
}

.landing-install-actions .landing-secondary-cta {
  color: #171a20;
  border-color: #aaa49a;
  background: transparent;
}

.landing-install-actions .landing-primary-cta {
  color: #ffffff;
  border-color: #171a20;
  background: #171a20;
  box-shadow: 0 16px 34px rgba(23, 26, 32, 0.18);
}

.landing-install-actions small {
  color: #77736d;
  line-height: 1.5;
  text-align: center;
}

.landing-pricing .landing-section-heading {
  margin-inline: auto;
  text-align: center;
}

.landing-price-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}

.landing-price-card {
  min-height: 480px;
  padding: 34px;
  display: flex;
  flex-direction: column;
  border: 1px solid #d8dde4;
  border-radius: 8px;
  background: transparent;
  box-shadow: none;
}

.landing-price-card::after {
  content: none;
}

.landing-price-card-featured {
  color: #171a20;
  border-color: #b8893c;
  background: rgba(200, 155, 77, 0.07);
  box-shadow: 0 20px 46px rgba(55, 42, 20, 0.08);
}

.landing-value-badge {
  align-self: flex-start;
  margin-bottom: 18px;
  padding: 7px 10px;
  border: 1px solid rgba(200, 155, 77, 0.5);
  border-radius: 6px;
  color: #d7b36b;
  background: rgba(200, 155, 77, 0.09);
  font-size: 0.74rem;
  font-weight: 850;
  text-transform: uppercase;
}

.landing-price-card p {
  margin: 0;
  color: #986517;
  font-weight: 850;
}

.landing-price-card-featured p {
  color: #d7b36b;
}

.landing-price-card strong {
  display: block;
  margin-top: 10px;
  color: #101827;
  font-size: clamp(2.7rem, 5vw, 4.3rem);
  line-height: 1;
}

.landing-price-card-featured strong {
  color: #101827;
}

.landing-price-card span,
.landing-price-card em {
  display: block;
  margin-top: 9px;
  color: #6a7587;
  font-style: normal;
}

.landing-price-card-featured span,
.landing-price-card-featured em {
  color: #6a7587;
}

.landing-price-card ul {
  margin: 28px 0;
  padding: 24px 0 0;
  display: grid;
  gap: 13px;
  list-style: none;
  border-top: 1px solid #e3e6eb;
}

.landing-price-card-featured ul {
  border-top-color: #ded6c8;
}

.landing-price-card li {
  padding-left: 20px;
  position: relative;
  color: #4f5c70;
  line-height: 1.5;
}

.landing-price-card-featured li {
  color: #4f5c70;
}

.landing-price-card li::before {
  content: "";
  width: 7px;
  height: 7px;
  position: absolute;
  left: 0;
  top: 0.55em;
  border-radius: 50%;
  background: #13916a;
}

.landing-price-card button {
  width: 100%;
  min-height: 52px;
  margin-top: auto;
  border: 1px solid #b8893c;
  border-radius: 7px;
  color: #101827;
  background: #c89b4d;
  cursor: pointer;
  font-weight: 850;
}

.landing-responsible {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.9fr);
  gap: 70px;
  align-items: start;
  border-top: 1px solid #d9dee5;
  margin-bottom: 0;
  padding: 82px 0;
  border-inline: 0;
  border-bottom: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.landing-responsible h2 {
  font-size: clamp(2.2rem, 4vw, 3.7rem);
}

.landing-legal-footer {
  padding: 38px 0 44px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 24px 50px;
  align-items: center;
  border-top: 1px solid #d6dbe2;
}

.landing-footer-brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.landing-footer-brand img {
  border-radius: 7px;
}

.landing-footer-brand strong,
.landing-footer-brand span {
  display: block;
}

.landing-footer-brand strong {
  color: #111827;
}

.landing-footer-brand span {
  margin-top: 2px;
  color: #697487;
  font-size: 0.8rem;
}

.landing-footer-links {
  justify-self: end;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 18px;
}

.landing-footer-links a {
  color: #3f4b5e;
  text-decoration: none;
  font-size: 0.84rem;
  font-weight: 650;
}

.landing-legal-footer > p {
  grid-column: 1 / -1;
  margin: 0;
  color: #7d8797;
  font-size: 0.8rem;
}

.landing-install-dialog {
  width: min(480px, calc(100% - 28px));
  padding: 34px;
  position: fixed;
  border: 1px solid #d6dbe2;
  border-radius: 8px;
  color: #111827;
  background: #ffffff;
  box-shadow: 0 28px 90px rgba(15, 23, 42, 0.28);
}

.landing-install-dialog::backdrop {
  background: rgba(6, 12, 21, 0.66);
}

.landing-install-dialog > img {
  border-radius: 8px;
}

.landing-install-dialog h2 {
  margin: 0;
  font-size: 1.75rem;
  line-height: 1.15;
}

.landing-install-dialog > p:not(.landing-kicker) {
  color: #5f6b7d;
  line-height: 1.65;
}

.landing-install-dialog ol {
  margin: 20px 0 26px;
  padding-left: 20px;
  color: #344155;
  line-height: 1.7;
}

.landing-install-dialog .landing-primary-cta {
  width: 100%;
}

.landing-install-dialog-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid #dde2e8;
  border-radius: 7px;
  color: #4b576a;
  background: #ffffff;
  cursor: pointer;
}

.landing-scrolled .landing-nav {
  background: rgba(247, 246, 242, 0.98);
  box-shadow: 0 12px 32px rgba(23, 26, 32, 0.08);
}

.landing-motion-ready [data-reveal] {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 560ms cubic-bezier(.2, .7, .2, 1) var(--reveal-delay, 0ms),
    transform 560ms cubic-bezier(.2, .7, .2, 1) var(--reveal-delay, 0ms);
}

.landing-motion-ready [data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

.landing-product-visual,
.landing-audience-grid article,
.landing-price-card,
.landing-source-directory {
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.landing-product-visual:hover {
  transform: translateY(-3px);
  box-shadow: 0 36px 82px rgba(15, 23, 42, 0.2);
}

.landing-audience-grid article:hover {
  background: rgba(200, 155, 77, 0.04);
}

.landing-price-card:hover,
.landing-source-directory:hover {
  transform: translateY(-2px);
}

.landing-screen button:active {
  transform: translateY(1px);
}

.landing-screen button:focus-visible,
.landing-screen a:focus-visible {
  outline: 3px solid rgba(200, 155, 77, 0.46);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .landing-screen {
    scroll-behavior: auto;
  }

  .landing-motion-ready [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .landing-product-visual,
  .landing-audience-grid article,
  .landing-price-card,
  .landing-source-directory,
  .landing-primary-cta,
  .landing-secondary-cta {
    transition: none;
  }
}

@media (max-width: 1040px) {
  .landing-nav-links {
    display: none;
  }

  .landing-nav {
    grid-template-columns: 1fr auto;
  }

  .landing-proof,
  .landing-audience-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .landing-proof > div:nth-child(2) {
    border-right: 0;
  }

  .landing-proof > div:last-child {
    grid-column: 1 / -1;
    border-top: 1px solid #e3e6ea;
  }

  .landing-audience-grid article {
    min-height: 220px;
  }

  .landing-sources,
  .landing-install-inner,
  .landing-responsible {
    grid-template-columns: 1fr;
    gap: 42px;
  }
}

@media (max-width: 720px) {
  .landing-hero {
    min-height: 760px;
    padding: 104px 18px 52px;
    align-items: flex-start;
  }

  .landing-hero-media {
    background-image: none;
    background-color: #f7f6f2;
  }

  .landing-hero-shade {
    background: transparent;
  }

  .landing-nav {
    height: 68px;
    padding: 0 16px;
    gap: 12px;
  }

  .landing-brand img {
    width: 34px;
    height: 34px;
  }

  .landing-install-nav span:last-child {
    display: none;
  }

  .landing-install-nav {
    width: 42px;
    padding: 0;
    justify-content: center;
  }

  .landing-nav-actions button {
    padding-inline: 13px;
  }

  #landing-title {
    font-size: clamp(3.7rem, 19vw, 5.2rem);
  }

  .landing-hero-lead {
    font-size: 1.08rem;
    line-height: 1.62;
  }

  .landing-cta-row {
    display: grid;
    grid-template-columns: 1fr;
  }

  .landing-primary-cta,
  .landing-secondary-cta {
    width: 100%;
  }

  .landing-hero-facts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .landing-hero-facts span,
  .landing-hero-facts span:first-child {
    min-height: 28px;
    padding: 0 0 0 12px;
    border-left: 2px solid rgba(200, 155, 77, 0.72);
  }

  .landing-proof,
  .landing-capability-list,
  .landing-audience-grid,
  .landing-price-grid {
    grid-template-columns: 1fr;
  }

  .landing-guides {
    padding: 76px 0;
  }

  .landing-guides-intro {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .landing-guide-directory {
    grid-template-columns: 1fr;
    margin-top: 38px;
  }

  .landing-guide-directory a,
  .landing-guide-directory a:nth-child(3n) {
    min-height: 124px;
    padding: 22px 4px;
    border-right: 0;
  }

  .landing-guide-directory strong {
    margin-top: 14px;
  }

  .landing-proof {
    width: calc(100% - 28px);
  }

  .landing-proof > div,
  .landing-proof > div:nth-child(2),
  .landing-proof > div:last-child {
    min-height: auto;
    padding: 22px;
    grid-column: auto;
    border-right: 0;
    border-top: 0;
    border-bottom: 1px solid #e3e6ea;
  }

  .landing-section,
  .landing-band-inner,
  .landing-legal-footer {
    width: calc(100% - 28px);
  }

  .landing-section,
  .landing-band-inner {
    padding: 74px 0;
  }

  .landing-section h2,
  .landing-band h2 {
    font-size: 2.25rem;
  }

  .landing-section-heading {
    margin-bottom: 30px;
  }

  .landing-product-visual img {
    aspect-ratio: 4 / 3;
    object-position: 68% center;
  }

  .landing-product-visual figcaption {
    display: grid;
    gap: 6px;
    padding: 18px;
  }

  .landing-capability-list article {
    min-height: auto;
    padding: 24px 20px;
  }

  .landing-audience-grid article {
    min-height: auto;
    padding: 24px;
  }

  .landing-audience-grid strong {
    margin-top: 22px;
  }

  .landing-source-directory,
  .landing-price-card,
  .landing-install-dialog {
    padding: 24px;
  }

  .landing-source-directory > div {
    grid-template-columns: 1fr;
  }

  .landing-source-directory span {
    min-height: 50px;
  }

  .landing-install-actions {
    width: 100%;
  }

  .landing-price-card {
    min-height: 440px;
  }

  .landing-legal-footer {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .landing-footer-links {
    justify-self: start;
    justify-content: flex-start;
    display: grid;
    gap: 12px;
  }

  .landing-legal-footer > p {
    grid-column: auto;
  }
}

@media (max-width: 380px) {
  .landing-brand {
    gap: 8px;
  }

  .landing-nav-actions {
    gap: 6px;
  }

  .landing-login-cta {
    font-size: 0.8rem;
  }

  .landing-hero {
    min-height: 790px;
  }

  .landing-section h2,
  .landing-band h2 {
    font-size: 2rem;
  }
}

} /* @layer components */
