/* GlosaCero — estilos de la aplicación */
  /* ═══════════════════════════════════════════════════════════
     TOKENS — tema claro
     ═══════════════════════════════════════════════════════════ */
  :root{
    color-scheme: light;
    --font-sans:'Plus Jakarta Sans','Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
    --font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Consolas,monospace;

    --bg:#f4f5fa; --bg-glow-1:rgba(59,130,246,0.14); --bg-glow-2:rgba(14,165,233,0.10);
    --shell:rgba(255,255,255,0.72); --shell-border:rgba(15,23,42,0.08);
    --surface:#ffffff; --surface-solid:#ffffff; --surface-raised:#ffffff;
    --input-bg:#ffffff; --input-bg-hover:#fafafa;
    --border:#e4e4e7; --border-strong:#d4d4d8; --border-soft:#f4f4f5;
    --text:#18181b; --text-muted:#52525b; --text-faint:#71717a;

    --primary:#3b82f6; --primary-hover:#2563eb; --primary-2:#1d4ed8;
    --primary-soft:rgba(59,130,246,0.12); --primary-soft-text:#1d4ed8;
    --primary-ring:rgba(59,130,246,0.4);
    --grad-primary:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);
    --btn-ledge:#1d4ed8; --btn-ledge-neutral:#d4d4d8; --edge-light:rgba(255,255,255,0.95);
    --glass-modal:rgba(255,255,255,0.78); --card-translucent:rgba(244,244,245,0.55);

    --success:#10b981; --success-hover:#059669; --success-soft:#dcfce7; --success-soft-text:#166534; --success-border:#86efac;
    --warn:#f59e0b; --warn-soft:#fef3c7; --warn-soft-text:#92400e; --warn-border:#fcd34d;
    --danger:#e11d48; --danger-hover:#be123c; --danger-soft:#ffe4e6; --danger-soft-hover:#fecdd3; --danger-soft-text:#9f1239; --danger-border:#fda4af;

    --radius-sm:8px; --radius:12px; --radius-lg:16px; --radius-xl:22px;
    --shadow-sm:0 1px 2px rgba(15,23,42,0.05);
    --shadow-md:0 10px 30px -12px rgba(15,23,42,0.18);
    --shadow-xl:0 40px 80px -30px rgba(15,23,42,0.28), 0 0 0 1px rgba(15,23,42,0.03);
    --shadow-primary:0 8px 22px -8px rgba(59,130,246,0.65);
    --overlay:rgba(15,23,42,0.45);

    --dropzone-border:#bfdbfe; --dropzone-border-strong:#93c5fd;
    --info-soft:#dbeafe; --info-soft-text:#1d4ed8;
    --pink-soft:#fce7f3; --pink-soft-text:#9d174d;
    --violet-soft:#ede9fe; --violet-soft-text:#6d28d9;
    --sky-soft:#e0f2fe; --sky-soft-text:#0369a1;
    --teal-soft:#ccfbf1; --teal-soft-text:#0f766e;
    --orange-soft:#ffedd5; --orange-soft-text:#c2410c;
    --indigo-soft:#e0e7ff; --indigo-soft-text:#4338ca;
    --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  }

  /* ═══════════════════════════════════════════════════════════
     TOKENS — tema oscuro premium (Zinc-950 + Indigo/Violet)
     ═══════════════════════════════════════════════════════════ */
  html[data-theme="dark"]{
    color-scheme: dark;
    --bg:#09090b; --bg-glow-1:rgba(59,130,246,0.20); --bg-glow-2:rgba(14,165,233,0.12);
    --shell:rgba(24,24,27,0.62); --shell-border:rgba(255,255,255,0.08);
    --surface:rgba(39,39,42,0.45); --surface-solid:#18181b; --surface-raised:#1f1f23;
    --input-bg:rgba(9,9,11,0.55); --input-bg-hover:rgba(9,9,11,0.75);
    --border:rgba(255,255,255,0.09); --border-strong:rgba(255,255,255,0.16); --border-soft:rgba(255,255,255,0.04);
    --text:#fafafa; --text-muted:#a1a1aa; --text-faint:#8b8b95;

    --primary:#3b82f6; --primary-hover:#2563eb; --primary-2:#1d4ed8;
    --btn-ledge:#1e40af; --btn-ledge-neutral:#0a0a0c; --edge-light:rgba(255,255,255,0.15);
    --glass-modal:rgba(24,24,27,0.72); --card-translucent:rgba(255,255,255,0.035);
    --primary-soft:rgba(59,130,246,0.15); --primary-soft-text:#bfdbfe;
    --primary-ring:rgba(59,130,246,0.4);

    --success:#10b981; --success-hover:#34d399; --success-soft:rgba(16,185,129,0.14); --success-soft-text:#6ee7b7; --success-border:rgba(16,185,129,0.35);
    --warn:#f59e0b; --warn-soft:rgba(245,158,11,0.13); --warn-soft-text:#fcd34d; --warn-border:rgba(245,158,11,0.35);
    --danger:#f43f5e; --danger-hover:#fb7185; --danger-soft:rgba(244,63,94,0.14); --danger-soft-hover:rgba(244,63,94,0.24); --danger-soft-text:#fda4af; --danger-border:rgba(244,63,94,0.40);

    --shadow-sm:0 1px 2px rgba(0,0,0,0.4);
    --shadow-md:0 16px 40px -16px rgba(0,0,0,0.7);
    --shadow-xl:0 50px 100px -30px rgba(0,0,0,0.85), inset 0 1px 0 rgba(255,255,255,0.05);
    --shadow-primary:0 10px 28px -10px rgba(59,130,246,0.85);
    --overlay:rgba(3,3,5,0.66);

    --dropzone-border:rgba(96,165,250,0.35); --dropzone-border-strong:rgba(96,165,250,0.55);
    --info-soft:rgba(59,130,246,0.16); --info-soft-text:#93c5fd;
    --pink-soft:rgba(236,72,153,0.16); --pink-soft-text:#f9a8d4;
    --violet-soft:rgba(139,92,246,0.18); --violet-soft-text:#c4b5fd;
    --sky-soft:rgba(14,165,233,0.16); --sky-soft-text:#7dd3fc;
    --teal-soft:rgba(20,184,166,0.16); --teal-soft-text:#5eead4;
    --orange-soft:rgba(249,115,22,0.16); --orange-soft-text:#fdba74;
    --indigo-soft:rgba(99,102,241,0.18); --indigo-soft-text:#a5b4fc;
    --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  }

  /* ═══════════════════════════════════════════════════════════
     BASE
     ═══════════════════════════════════════════════════════════ */
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  html { -webkit-text-size-adjust: 100%; }
  body {
    font-family: var(--font-sans); background: var(--bg); color: var(--text); min-height: 100vh;
    font-size: 14px; line-height: 1.5; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
    transition: background-color 0.2s, color 0.2s;
  }
  body::before {
    content:''; position: fixed; inset: 0; z-index: -1; pointer-events: none;
    background:
      radial-gradient(900px 600px at 8% -10%, var(--bg-glow-1), transparent 60%),
      radial-gradient(800px 600px at 105% 110%, var(--bg-glow-2), transparent 60%);
  }
  body::after {
    content:''; position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: .5;
    background-image: linear-gradient(var(--border-soft) 1px, transparent 1px), linear-gradient(90deg, var(--border-soft) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
    -webkit-mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
  }

  /* Ajustes base (antes los aportaba Tailwind) */
  *, *::before, *::after { border-width: 0; border-style: solid; border-color: var(--border); }
  h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }
  ol, ul { list-style: none; }
  a { color: inherit; text-decoration: inherit; }
  img, svg, video, canvas { display: block; vertical-align: middle; }
  img, video { max-width: 100%; height: auto; }
  button, input, select, textarea { font: inherit; color: inherit; letter-spacing: inherit; }
  button, [role="button"] { cursor: pointer; background-color: transparent; background-image: none; }
  button:disabled { cursor: default; }
  .help-pop ol { list-style: decimal; }
  ::selection { background: var(--primary-ring); }
  * { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; }
  *::-webkit-scrollbar { width: 6px; height: 6px; }
  *::-webkit-scrollbar-track { background: transparent; }
  *::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 20px; border: none; }
  *::-webkit-scrollbar-thumb:hover { background: var(--text-faint); }
  *::-webkit-scrollbar-corner { background: transparent; }
  :focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  input:focus-visible, select:focus-visible, textarea:focus-visible { outline: none; }

  /* ═══════════════════════════════════════════════════════════
     LOGIN
     ═══════════════════════════════════════════════════════════ */
  #loginScreen {
    position: fixed; inset: 0; z-index: 999; display: flex; align-items: center; justify-content: center; padding: 16px;
    background:
      radial-gradient(700px 500px at 30% 20%, var(--bg-glow-1), transparent 60%),
      radial-gradient(600px 500px at 75% 85%, var(--bg-glow-2), transparent 60%),
      var(--bg);
  }
  .login-card {
    position: relative; width: min(400px, 100%); padding: 2.75rem 2.25rem 2.25rem; text-align: center;
    background: var(--shell); border: 1px solid var(--shell-border); border-radius: var(--radius-xl);
    border-top: 1px solid var(--edge-light); border-left: 1px solid var(--edge-light);
    box-shadow: var(--shadow-xl); backdrop-filter: blur(20px) saturate(140%); -webkit-backdrop-filter: blur(20px) saturate(140%);
  }
  .login-card::before {
    content:''; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; pointer-events: none;
    background: linear-gradient(160deg, rgba(96,165,250,0.55), transparent 40%, transparent 70%, rgba(37,99,235,0.35));
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  }
  .login-logo {
    width: 56px; height: 56px; margin: 0 auto 1.25rem; border-radius: 16px; display: flex; align-items: center; justify-content: center;
    background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary);
  }
  .login-card h2 { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; margin-bottom: 6px; color: var(--text); }
  .login-card p { font-size: 14px; color: var(--text-muted); margin-bottom: 1.75rem; }
  .login-card input {
    width: 100%; padding: 14px 16px; margin-bottom: 12px; text-align: center; letter-spacing: 0.18em;
    font-family: var(--font-mono); font-size: 15px;
  }
  .login-card button {
    width: 100%; padding: 13px; border: none; border-radius: var(--radius); cursor: pointer;
    font-family: inherit; font-size: 15px; font-weight: 600; color: #fff; background: var(--grad-primary);
    box-shadow: 0 4px 0 var(--btn-ledge), var(--shadow-primary); transition: all 0.2s ease;
  }
  .login-card button:hover { transform: translateY(-1px); filter: brightness(1.08); box-shadow: 0 5px 0 var(--btn-ledge), 0 14px 30px -10px rgba(59,130,246,0.85); }
  .login-card button:active { transform: translateY(4px); filter: brightness(0.96); box-shadow: none; transition-duration: 0.06s; }
  .login-error { font-size: 13px; color: var(--danger); margin-top: 10px; display: none; font-weight: 500; }
  .login-foot { margin-top: 1.5rem; font-size: 12px; color: var(--text-faint); display: flex; align-items: center; justify-content: center; gap: 6px; }

  /* ═══════════════════════════════════════════════════════════
     APP SHELL — card principal glassmorphism
     ═══════════════════════════════════════════════════════════ */
  #appScreen { display: none; padding: clamp(16px, 4vw, 48px) 16px; }
  .container {
    max-width: 1140px; margin: 0 auto; padding: clamp(18px, 3vw, 32px);
    background: var(--shell); border: 1px solid var(--shell-border); border-radius: var(--radius-xl);
    border-top: 1px solid var(--edge-light); border-left: 1px solid var(--edge-light);
    box-shadow: var(--shadow-xl); backdrop-filter: blur(24px) saturate(140%); -webkit-backdrop-filter: blur(24px) saturate(140%);
  }

  .app-topbar {
    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;
    padding-bottom: 1.25rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--border);
  }
  .app-topbar-title { display: flex; align-items: center; gap: 12px; }
  .app-topbar-title .app-logo {
    width: 42px; height: 42px; border-radius: 12px; flex-shrink: 0; display: flex; align-items: center; justify-content: center;
    background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary);
  }
  .app-topbar h1 { font-size: 19px; font-weight: 700; margin: 0; letter-spacing: -0.02em; color: var(--text); }
  .app-topbar-sub { font-size: 12px; color: var(--text-muted); font-weight: 500; }
  .app-topbar-actions { display: flex; align-items: center; gap: 8px; }
  .license-badge {
    display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 12px 0 10px; border-radius: 999px;
    font-size: 12px; font-weight: 600; background: var(--success-soft); color: var(--success-soft-text); border: 1px solid var(--success-border);
  }
  .license-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--success); animation: licensePulse 2s infinite; }
  @keyframes licensePulse { 0%{box-shadow:0 0 0 0 rgba(16,185,129,0.55);} 70%{box-shadow:0 0 0 6px rgba(16,185,129,0);} 100%{box-shadow:0 0 0 0 rgba(16,185,129,0);} }
  .session-control { position: relative; display: flex; align-items: center; gap: 8px; }

  .settings-popover {
    display: none; position: absolute; top: 46px; right: 0; z-index: 50; width: 220px; padding: 8px;
    background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-md);
  }
  .settings-popover.open { display: block; animation: popIn 0.16s ease; }
  @keyframes popIn { from { opacity: 0; transform: translateY(-4px) scale(0.98); } to { opacity: 1; transform: none; } }
  
  .settings-popover button.logout-btn { width: 100%; margin-top: 4px; }
  .logout-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 9px 12px; border: 1px solid var(--danger-border); border-radius: var(--radius-sm); cursor: pointer;
    font-family: inherit; font-size: 13px; font-weight: 600; background: var(--danger-soft); color: var(--danger-soft-text); transition: all 0.2s ease;
  }
  .logout-btn:hover { background: var(--danger-soft-hover); }
  .logout-btn:active { transform: scale(0.98); }

  /* ═══════════════════════════════════════════════════════════
     FORMULARIOS
     ═══════════════════════════════════════════════════════════ */
  label { font-size: 12px; font-weight: 600; color: var(--text-muted); display: block; margin-bottom: 6px; letter-spacing: 0.01em; }
  html input[type="text"], html input[type="number"], html input[type="email"], html input[type="password"], html select, html textarea {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    width: 100%; padding: 11px 14px; font-family: inherit; font-size: 14px; color: var(--text);
    background-color: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius);
    outline: none; box-shadow: var(--shadow-sm); transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;
  }
  html input[type="text"]:hover, html input[type="number"]:hover, html input[type="email"]:hover, html input[type="password"]:hover, html select:hover, html textarea:hover { border-color: var(--border-strong); background-color: var(--input-bg-hover); }
  input::placeholder, textarea::placeholder { color: var(--text-faint); opacity: 1; }
  html input:focus, html select:focus, html textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); background-color: var(--input-bg); }
  html select { padding-right: 38px; cursor: pointer; background-image: var(--select-arrow); background-repeat: no-repeat; background-position: right 12px center; background-size: 16px; }
  select option { background: var(--surface-solid); color: var(--text); }
  input[type="number"]::-webkit-inner-spin-button { opacity: .5; }
  input[type="checkbox"] { width: 16px !important; height: 16px; accent-color: var(--primary); cursor: pointer; }

  /* ═══════════════════════════════════════════════════════════
     TABS DE MODO — segmented control
     ═══════════════════════════════════════════════════════════ */
  .mode-tabs {
    display: inline-flex; gap: 4px; padding: 4px; margin-bottom: 1.5rem; width: fit-content; max-width: 100%; overflow-x: auto;
    background: var(--input-bg); border: 1px solid var(--border); border-radius: 14px; box-shadow: inset 0 1px 2px rgba(0,0,0,0.06);
  }
  .mode-tab {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 9px 20px; border: none; border-radius: 10px; background: none; cursor: pointer; white-space: nowrap;
    font-family: inherit; font-size: 14px; font-weight: 600; color: var(--text-muted); transition: all 0.2s ease;
  }
  .mode-tab:hover:not(.active) { color: var(--text); background: var(--border-soft); }
  .mode-tab:active { transform: scale(0.97); }
  .mode-tab.active { background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary); }

  .global-config { display: grid; gap: 14px; margin-bottom: 1.25rem; }
  .gc-agrup { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gc-paquete { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  /* ═══════════════════════════════════════════════════════════
     DROPZONES
     ═══════════════════════════════════════════════════════════ */
  .drop-zone, .pkg-drop-zone {
    position: relative; overflow: hidden; text-align: center; cursor: pointer;
    padding: 2.5rem 1.25rem; border: 2px dashed var(--dropzone-border); border-radius: var(--radius-lg);
    background: linear-gradient(180deg, var(--primary-soft), transparent 140%), var(--surface);
    transition: all 0.2s ease;
  }
  .pkg-drop-zone { margin-bottom: 1.25rem; }
  .drop-zone, .agrup-drop { animation: pulse-shadow 2.8s ease-out infinite; }
  .drop-zone:hover, .drop-zone.over, .agrup-drop:hover, .agrup-drop.over { animation: none; }
  @keyframes pulse-shadow {
    0%   { box-shadow: 0 0 0 0 rgba(59,130,246,0.28), 0 0 0 0 rgba(59,130,246,0.12); }
    70%  { box-shadow: 0 0 0 12px rgba(59,130,246,0), 0 0 28px 6px rgba(59,130,246,0); }
    100% { box-shadow: 0 0 0 0 rgba(59,130,246,0), 0 0 0 0 rgba(59,130,246,0); }
  }
  .drop-zone::before, .pkg-drop-zone::before {
    content:''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(96,165,250,0.08), transparent); background-size: 200% 100%;
    animation: dropShimmer 3.2s linear infinite;
  }
  .drop-zone:hover, .drop-zone.over, .pkg-drop-zone:hover, .pkg-drop-zone.over {
    border-color: var(--primary); border-style: solid; background: var(--primary-soft);
    box-shadow: 0 0 0 4px var(--primary-ring), inset 0 0 40px rgba(59,130,246,0.08);
  }
  .drop-zone.over, .pkg-drop-zone.over { transform: scale(1.005); }
  .drop-icon {
    position: relative; width: 52px; height: 52px; margin: 0 auto 4px; border-radius: 14px; display: flex; align-items: center; justify-content: center;
    color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border);
    animation: dropFloat 2.6s ease-in-out infinite; transition: all 0.2s ease;
  }
  .drop-zone:hover .drop-icon, .drop-zone.over .drop-icon, .pkg-drop-zone:hover .drop-icon, .pkg-drop-zone.over .drop-icon {
    background: var(--grad-primary); color: #fff; border-color: transparent; box-shadow: var(--shadow-primary);
  }
  .drop-zone p, .pkg-drop-zone p { margin: 4px 0 0; font-size: 13px; color: var(--text-muted); position: relative; }
  .drop-zone strong, .pkg-drop-zone strong { font-size: 15px; font-weight: 600; color: var(--text); display: block; margin-top: 10px; position: relative; }
  @keyframes dropShimmer { 0%{background-position:200% 0;} 100%{background-position:-200% 0;} }
  @keyframes dropFloat { 0%,100%{transform:translateY(0);} 50%{transform:translateY(-4px);} }

  .agrup-drop {
    display: block; margin-bottom: 10px; padding: 1.25rem 1rem; text-align: center; cursor: pointer;
    font-size: 13px; color: var(--text-muted); border: 1.5px dashed var(--dropzone-border); border-radius: var(--radius);
    background: var(--input-bg); transition: all 0.2s ease;
  }
  .agrup-drop:hover, .agrup-drop.over { background: var(--primary-soft); border-color: var(--primary); border-style: solid; color: var(--text); box-shadow: 0 0 0 4px var(--primary-ring); }
  .agrup-drop strong { display: block; color: var(--text); font-size: 14px; font-weight: 600; margin-bottom: 3px; }
  .agrup-drop span { font-size: 12px; color: var(--text-muted); }
  .folder-drop { padding: 1.75rem 1rem; background: linear-gradient(180deg, var(--primary-soft), transparent 160%); border-color: var(--dropzone-border-strong); }
  .folder-drop strong { color: var(--primary-soft-text); font-size: 15px; }
  .folder-help { font-size: 12px; color: var(--text-muted); margin: 8px 2px 0; line-height: 1.5; }

  /* ═══════════════════════════════════════════════════════════
     BLOQUES / CARDS DE RESULTADOS
     ═══════════════════════════════════════════════════════════ */
  .result-block {
    margin-top: 1.5rem; overflow: hidden; background: var(--surface);
    border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  }
  .result-header {
    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px;
    padding: 12px 16px; background: var(--border-soft); border-bottom: 1px solid var(--border);
  }
  .result-title { font-size: 14px; font-weight: 600; color: var(--text); letter-spacing: -0.01em; }
  .result-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .badge {
    display: inline-flex; align-items: center; font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 999px;
    background: var(--primary-soft); color: var(--primary-soft-text); border: 1px solid var(--dropzone-border);
  }
  .badge-green { background: var(--success-soft); color: var(--success-soft-text); border-color: var(--success-border); }
  .badge-orange { background: var(--warn-soft); color: var(--warn-soft-text); border-color: var(--warn-border); }

  /* ═══════════════════════════════════════════════════════════
     BOTONES
     ═══════════════════════════════════════════════════════════ */
  .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 14px; cursor: pointer; white-space: nowrap;
    font-family: inherit; font-size: 13px; font-weight: 500; color: var(--text);
    background: var(--surface-raised); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 4px 0 var(--btn-ledge-neutral);
    transition: all 0.2s ease;
  }
  .btn:hover { border-color: var(--border-strong); transform: translateY(-1px); box-shadow: 0 5px 0 var(--btn-ledge-neutral), var(--shadow-md); }
  .btn:active { transform: translateY(4px); box-shadow: none; transition-duration: 0.06s; }
  .btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
  .btn-primary, .btn-blue {
    color: #fff; font-weight: 600; border-color: transparent; background: var(--grad-primary); box-shadow: 0 4px 0 var(--btn-ledge), var(--shadow-primary);
  }
  .btn-primary:hover, .btn-blue:hover { filter: brightness(1.1); border-color: transparent; box-shadow: 0 5px 0 var(--btn-ledge), 0 14px 30px -10px rgba(59,130,246,0.9); }
  .btn-primary:active, .btn-blue:active { filter: brightness(0.95); box-shadow: none; }
  .btn-primary:disabled { filter: saturate(0.5); }
  .btn-danger { background: var(--danger); color: #fff; border-color: var(--danger); font-weight: 600; box-shadow: 0 4px 0 #9f1239; }
  .btn-danger:active { box-shadow: none; }
  .btn-danger:hover { background: var(--danger-hover); }
  .btn-ghost { color: var(--text-muted); border-color: transparent; background: transparent; box-shadow: none; }
  .btn-ghost:hover { color: var(--text); background: var(--border-soft); border-color: transparent; box-shadow: none; transform: none; }
  .btn-ghost:active { transform: translateY(1px); }
  /* Rojo solo para acciones destructivas (Limpiar, Eliminar) */
  .btn-ghost-danger:hover { color: var(--danger-soft-text); background: var(--danger-soft); }
  /* Acción secundaria con acento (mostrar/ocultar paneles, nueva entidad) */
  .btn-soft { color: var(--primary-soft-text); background: var(--primary-soft); border-color: var(--dropzone-border); box-shadow: none; font-weight: 600; }
  .btn-soft:hover { color: var(--primary-soft-text); background: rgba(59,130,246,0.22); border-color: var(--primary); box-shadow: none; }
  .btn-soft:active { transform: translateY(1px); }
  .btn-sm { padding: 6px 12px; font-size: 12.5px; }
  .btn svg, .mode-tab svg, .logout-btn svg { flex-shrink: 0; }

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

  .mono { font-family: var(--font-mono); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .old-name { color: var(--text-muted); }
  .new-name { color: var(--text); font-weight: 600; }
  .arrow { color: var(--primary); opacity: .7; text-align: center; font-size: 13px; }
  .val-input {
    font-family: var(--font-mono) !important; font-size: 12.5px !important; padding: 7px 10px !important;
    border-radius: var(--radius-sm) !important; width: 100%; background: var(--input-bg); box-shadow: none !important;
  }
  .val-input:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 3px var(--primary-ring) !important; }
  textarea.val-input { resize: vertical; line-height: 1.5; }
  .row-action-btn {
    display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; padding: 0;
    border: 1px solid transparent; background: transparent; cursor: pointer; color: var(--text-faint);
    font-size: 14px; border-radius: 7px; transition: all 0.2s ease; line-height: 1;
  }
  .row-action-btn:hover { color: var(--primary-soft-text); background: var(--primary-soft); border-color: var(--dropzone-border); transform: translateY(-1px); }
  .row-action-btn:active { transform: scale(0.92); }
  .row-action-btn.danger:hover { color: var(--danger-soft-text); background: var(--danger-soft); border-color: var(--danger-border); }

  .agrup-lote-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin-bottom: 12px; }
  .panel-body { padding: 16px; }

  .agrup-group { border-bottom: 1px solid var(--border-soft); }
  .agrup-group:last-child { border-bottom: none; }
  .agrup-group-header {
    display: flex; align-items: center; gap: 10px; padding: 10px 16px; cursor: pointer; user-select: none;
    background: var(--border-soft); transition: background-color 0.15s ease;
  }
  .agrup-group-header:hover { background: var(--primary-soft); }
  .agrup-group-header::before { content: '▾'; color: var(--primary); font-size: 11px; flex-shrink: 0; transition: transform 0.2s; }
  .agrup-group.collapsed .agrup-group-header::before { content: '▸'; }
  .agrup-group.collapsed .agrup-group-files { display: none; }
  .agrup-group-title { display: flex; flex-direction: column; justify-content: center; gap: 1px; min-width: 0; }
  .agrup-group-code { font-family: var(--font-mono); font-weight: 600; font-size: 13px; color: var(--text); }
  .agrup-group-admission { color: var(--text-muted); font-size: 11px; line-height: 1.3; }
  .agrup-group-count { margin-left: auto; }
  .agrup-group-files { padding: 6px 16px 10px 20px; margin: 4px 0 8px 12px; border-left: 2px solid var(--border); }
  .agrup-queue-toolbar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--border); }
  .agrup-queue-search { flex: 1; min-width: 200px; padding-left: 38px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b8b95' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: 13px center; background-size: 16px; }
  .agrup-queue-scroll { max-height: 620px; overflow-y: auto; }
  .agrup-file-row {
    display: grid; grid-template-columns: 40px 1fr 16px 1fr auto 24px 24px; gap: 8px; align-items: center;
    padding: 6px 8px; margin: 0 -8px; font-size: 13px; border-radius: var(--radius-sm); transition: transform 0.2s ease, background-color 0.2s ease;
  }
  .agrup-file-row:hover { background: var(--border-soft); transform: translateX(4px); }
  .agrup-remove { grid-column: 7; }
  .agrup-preview { grid-column: 6; }
  .agrup-details-btn, .row-details-btn {
    width: fit-content; cursor: pointer; border: none; background: transparent; font-family: inherit;
    color: var(--text-muted); font-size: 11px; font-weight: 500; white-space: nowrap; padding: 2px 6px; border-radius: 6px; transition: all 0.15s;
  }
  .agrup-details-btn { grid-column: 5; }
  .row-details-btn { grid-column: 1 / -1; margin-top: 2px; }
  .agrup-details-btn:hover, .row-details-btn:hover { color: var(--primary-soft-text); background: var(--primary-soft); }
  .agrup-details-btn::before, .row-details-btn::before { content: '▸ '; color: var(--text-faint); }
  .agrup-details-btn.active::before, .row-details-btn.active::before { content: '▾ '; color: var(--primary); }
  .agrup-details-panel { display: none; grid-column: 1 / -1; margin: 4px 0 6px 46px; }
  .agrup-details-panel.open { display: block; animation: popIn 0.16s ease; }
  .agrup-details-panel .ai-note { padding: 10px 12px; border-radius: var(--radius); background: var(--input-bg); border: 1px solid var(--border); }

  .tipo-tag { font-family: var(--font-mono); font-size: 10.5px; padding: 3px 6px; border-radius: 6px; font-weight: 700; text-align: center; letter-spacing: 0.03em; }
  .tag-CRC { background: var(--info-soft); color: var(--info-soft-text); box-shadow: 0 0 10px rgba(59, 130, 246, 0.22); }
  .tag-FEV { background: var(--success-soft); color: var(--success-soft-text); box-shadow: 0 0 10px rgba(16, 185, 129, 0.2); }
  .tag-HEV { background: var(--warn-soft); color: var(--warn-soft-text); box-shadow: 0 0 10px rgba(245, 158, 11, 0.2); }
  .tag-OPF { background: var(--pink-soft); color: var(--pink-soft-text); box-shadow: 0 0 10px rgba(236, 72, 153, 0.2); }
  .tag-PDE { background: var(--violet-soft); color: var(--violet-soft-text); box-shadow: 0 0 10px rgba(139, 92, 246, 0.22); }
  .tag-HAU { background: var(--sky-soft); color: var(--sky-soft-text); box-shadow: 0 0 10px rgba(14, 165, 233, 0.2); }
  .tag-EPI { background: var(--teal-soft); color: var(--teal-soft-text); box-shadow: 0 0 10px rgba(20, 184, 166, 0.2); }
  .tag-HAM { background: var(--orange-soft); color: var(--orange-soft-text); box-shadow: 0 0 10px rgba(249, 115, 22, 0.2); }
  .tag-PDX { background: var(--indigo-soft); color: var(--indigo-soft-text); box-shadow: 0 0 10px rgba(99, 102, 241, 0.22); }
  .empty-state {
    display: flex; align-items: center; justify-content: center; text-align: center; margin: 16px;
    padding: 3rem 1.5rem; border: 2px dashed var(--border-strong); border-radius: var(--radius-lg);
    background: var(--surface-raised); color: var(--text-muted); font-size: 14.5px; font-weight: 500; line-height: 1.5;
  }

  /* Paquete */
  .pkg-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; padding: 16px; }
  .pkg-card { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--surface); transition: border-color 0.25s, box-shadow 0.25s, transform 0.25s cubic-bezier(.2,.8,.2,1); transform-origin: center bottom; }
  .pkg-card:hover { border-color: var(--dropzone-border-strong); box-shadow: 0 18px 36px -14px rgba(0,0,0,0.45), 0 0 0 1px var(--primary-ring); transform: perspective(1000px) translateY(-5px) rotateX(2deg); }
  .pkg-card-header { padding: 10px 14px; background: var(--border-soft); border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; gap: 6px; }
  .pkg-card-body { padding: 14px; display: flex; flex-direction: column; gap: 10px; }
  .pkg-file-badge { display: flex; align-items: center; gap: 8px; background: var(--success-soft); border: 1px solid var(--success-border); border-radius: var(--radius-sm); padding: 9px 12px; min-height: 44px; }
  .pkg-file-badge svg { stroke: var(--success-soft-text); flex-shrink: 0; }
  .pkg-file-badge span { font-family: var(--font-mono); font-size: 12px; font-weight: 600; color: var(--success-soft-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .pkg-file-empty { display: flex; align-items: center; justify-content: center; background: var(--input-bg); border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); padding: 9px 12px; min-height: 44px; font-size: 12px; color: var(--text-faint); }
  .pkg-result { font-family: var(--font-mono); font-size: 12px; padding: 8px 10px; background: var(--primary-soft); border: 1px solid var(--dropzone-border); border-radius: var(--radius-sm); color: var(--primary-soft-text); word-break: break-all; }

  /* Progreso y auditoría */
  .progress-wrap { height: 6px; background: var(--border-soft); margin: 12px 16px 6px; border-radius: 999px; overflow: hidden; display: none; }
  .progress-bar { height: 6px; background: var(--grad-primary); width: 0%; border-radius: inherit; transition: width 0.25s ease; box-shadow: 0 0 12px rgba(59,130,246,0.6); }
  .status-msg { font-size: 12px; color: var(--text-muted); padding: 0 16px 10px; display: none; }
  .audit-panel { display: none; margin: 12px 16px; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--border-soft); }
  .audit-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; font-size: 13px; font-weight: 700; color: var(--text); }
  .audit-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-bottom: 10px; }
  .audit-card { padding: 10px 12px; border-radius: var(--radius-sm); background: var(--surface-raised); border: 1px solid var(--border); font-size: 11px; color: var(--text-muted); }
  .audit-card strong { display: block; color: var(--text); font-size: 18px; font-weight: 700; margin-bottom: 1px; letter-spacing: -0.02em; }
  .audit-list { display: grid; gap: 6px; max-height: 170px; overflow: auto; }
  .audit-row { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: start; padding: 9px 10px; border-radius: var(--radius-sm); background: var(--surface-raised); border: 1px solid var(--border-soft); font-size: 11px; color: var(--text-muted); }
  .audit-row strong { display: block; color: var(--text); font-size: 12px; margin-bottom: 2px; }
  .audit-muted { color: var(--text-muted); }
  .audit-missing { color: var(--warn-soft-text); }
  .audit-ok { color: var(--success-soft-text); }
  .audit-review { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border-strong); font-size: 11px; color: var(--text-muted); }

  /* Banner IA y chips */
  /* Estado de la lectura: informativo (azul), no de advertencia */
  .ai-activity { display: none; position: relative; margin: -6px 0 1.25rem; padding: 10px 14px 10px 32px; border-radius: var(--radius-sm); background: var(--primary-soft); border: 1px solid var(--dropzone-border); color: var(--primary-soft-text); font-size: 12.5px; font-weight: 500; }
  .ai-activity::before { content:''; position: absolute; left: 13px; top: 50%; width: 8px; height: 8px; margin-top: -4px; border-radius: 50%; background: var(--primary); box-shadow: 0 0 0 0 rgba(59,130,246,0.6); animation: activityPulse 1.6s ease-out infinite; }
  @keyframes activityPulse { 0% { box-shadow: 0 0 0 0 rgba(59,130,246,0.55); } 70% { box-shadow: 0 0 0 6px rgba(59,130,246,0); } 100% { box-shadow: 0 0 0 0 rgba(59,130,246,0); } }
  .ai-note { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 2px; font-size: 11px; color: var(--text-muted); }
  .ai-chip { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; font-weight: 500; background: var(--primary-soft); color: var(--primary-soft-text); }
  .ai-ok { background: var(--success-soft); color: var(--success-soft-text); }
  .ai-warn { background: var(--warn-soft); color: var(--warn-soft-text); }
  .ai-error { background: var(--danger-soft); color: var(--danger-soft-text); }

  /* ═══════════════════════════════════════════════════════════
     OVERLAYS — procesamiento, entidades, preview
     ═══════════════════════════════════════════════════════════ */
  body.ai-busy { overflow: hidden; }
  .ai-processing-overlay, .entity-manager-overlay {
    position: fixed; inset: 0; display: none; align-items: center; justify-content: center; padding: 20px;
    background: var(--overlay); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  }
  .ai-processing-overlay { z-index: 2000; }
  .entity-manager-overlay { z-index: 2100; }
  .ai-processing-overlay.visible, .entity-manager-overlay.visible { display: flex; animation: fadeIn 0.18s ease; }
  @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
  .ai-processing-card, .entity-manager-card {
    background: var(--surface-solid); border: 1px solid var(--border); border-radius: var(--radius-xl); box-shadow: var(--shadow-xl);
    animation: popIn 0.22s ease;
  }
  .ai-processing-card {
    width: min(460px, 100%); padding: 28px; text-align: center;
    background: var(--glass-modal);
    border-top: 1px solid rgba(255,255,255,0.1); border-left: 1px solid rgba(255,255,255,0.1);
    backdrop-filter: blur(24px) saturate(150%); -webkit-backdrop-filter: blur(24px) saturate(150%);
  }
  /* Spinner tipo cometa: anillo cónico con estela + cabeza luminosa */
  .ai-processing-spinner {
    position: relative; width: 48px; height: 48px; margin: 0 auto 18px; border-radius: 50%; border: none;
    filter: drop-shadow(0 0 6px rgba(59,130,246,0.55));
    animation: aiSpin 0.9s linear infinite;
  }
  .ai-processing-spinner::before {
    content:''; position: absolute; inset: 0; border-radius: 50%;
    background: conic-gradient(from 0deg, rgba(59,130,246,0) 0deg, rgba(59,130,246,0.08) 70deg, rgba(59,130,246,0.55) 220deg, var(--primary) 320deg, #93c5fd 358deg, rgba(59,130,246,0) 360deg);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3.5px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3.5px));
  }
  .ai-processing-spinner::after {
    content:''; position: absolute; top: -1px; left: 50%; width: 6px; height: 6px; margin-left: -3px; border-radius: 50%;
    background: #eff6ff; box-shadow: 0 0 6px 2px rgba(96,165,250,0.9), 0 0 14px 4px rgba(59,130,246,0.5);
  }
  .ai-processing-card h2 { margin-bottom: 6px; font-size: 18px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); }
  .ai-processing-card p { color: var(--text-muted); font-size: 13px; line-height: 1.5; }
  .ai-processing-file { min-height: 18px; margin-top: 14px; color: var(--text); font-family: var(--font-mono); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .ai-processing-track-label { display: flex; justify-content: space-between; font-size: 11px; font-weight: 500; color: var(--text-muted); margin-top: 14px; }
  .ai-processing-track-label strong { color: var(--text); font-variant-numeric: tabular-nums; }
  .ai-processing-track { height: 8px; margin-top: 5px; border-radius: 999px; background: var(--border-soft); border: 1px solid var(--border); }
  /* Barras luminosas: resplandor + franjas en movimiento + destello que recorre la barra */
  .ai-processing-fill {
    position: relative; overflow: hidden; width: 0%; height: 100%; border-radius: inherit;
    background: var(--grad-primary); box-shadow: 0 0 12px var(--primary), 0 0 4px rgba(147,197,253,0.6);
    transition: width 0.25s ease;
  }
  .ai-processing-fill::before {
    content:''; position: absolute; inset: 0;
    background: repeating-linear-gradient(-45deg, rgba(255,255,255,0.18) 0 6px, transparent 6px 12px);
    background-size: 17px 100%; animation: fillStripes 0.6s linear infinite;
  }
  .ai-processing-fill::after {
    content:''; position: absolute; top: 0; bottom: 0; left: 0; width: 60%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.55), transparent);
    animation: fillShimmer 1.6s ease-in-out infinite;
  }
  .ai-processing-fill-file { background: linear-gradient(90deg, #f59e0b, #f97316); box-shadow: 0 0 12px rgba(249,115,22,0.75), 0 0 4px rgba(253,186,116,0.6); }
  .ai-processing-fill:not([style*="width"]), .ai-processing-fill[style*="width: 0%"] { box-shadow: none; }
  @keyframes fillStripes { from { background-position: 0 0; } to { background-position: 17px 0; } }
  @keyframes fillShimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(270%); } }
  .ai-processing-status { display: flex; justify-content: space-between; gap: 10px; margin-top: 8px; color: var(--text-muted); font-size: 12px; }
  .ai-processing-log { margin-top: 14px; padding: 10px 12px; border-radius: var(--radius); background: var(--input-bg); border: 1px solid var(--border); text-align: left; color: var(--text-muted); font-size: 11.5px; line-height: 1.45; max-height: 96px; overflow: auto; }
  .ai-processing-log strong { display: block; margin-bottom: 4px; color: var(--text); font-size: 11.5px; }
  .ai-processing-log div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #aiCancelBtn { width: 100%; justify-content: center; margin-top: 14px; padding: 10px; background: var(--danger-soft); color: var(--danger-soft-text); border: 1px solid var(--danger-border); font-weight: 600; box-shadow: 0 4px 0 var(--danger-border); }
  #aiCancelBtn:hover { background: var(--danger-soft-hover); box-shadow: 0 5px 0 var(--danger-border); }
  #aiCancelBtn:active { box-shadow: none; }
  @keyframes aiSpin { to { transform: rotate(360deg); } }

  .entity-manager-card { width: min(900px, 100%); max-height: 88vh; display: flex; flex-direction: column; padding: 24px 26px; }
  .entity-manager-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
  .entity-manager-header h2 { font-size: 18px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); }
  .entity-manager-hint { font-size: 13px; color: var(--text-muted); line-height: 1.5; margin-bottom: 16px; }
  .entity-manager-body { display: grid; grid-template-columns: 1.1fr 1fr; gap: 18px; overflow: auto; padding: 2px; }
  .entity-form-col { display: grid; gap: 10px; align-content: start; }
  .entity-form-col label { margin-bottom: 4px; }
  .entity-list { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; max-height: 60vh; overflow: auto; align-content: start; }
  .entity-card {
    border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; display: flex; flex-direction: column; gap: 8px;
    background: var(--card-translucent); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  }
  .entity-card:hover { transform: translateY(-2px); border-color: var(--primary-ring); box-shadow: var(--shadow-md); }
  .entity-card.inactive { opacity: 0.5; }
  .entity-card-top { display: flex; align-items: center; gap: 8px; }
  /* LED: el halo hereda el color que el JS pone en línea (background) */
  .entity-card-dot { position: relative; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; box-shadow: inset 0 -1px 2px rgba(0,0,0,0.25), inset 0 1px 1px rgba(255,255,255,0.5); }
  .entity-card-dot::after {
    content:''; position: absolute; inset: -3px; border-radius: 50%; background: inherit; filter: blur(5px); opacity: 0.85; z-index: -1;
    animation: ledGlow 2.4s ease-in-out infinite;
  }
  .entity-card.inactive .entity-card-dot::after { display: none; }
  @keyframes ledGlow { 0%,100% { opacity: 0.55; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.15); } }
  .entity-row-name { font-weight: 600; font-size: 13px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
  .entity-row-count { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
  .entity-card-actions { display: flex; gap: 6px; flex-wrap: wrap; }
  .entity-card-actions .btn { padding: 5px 10px; font-size: 11.5px; }
  .entity-import-drop { border: 1.5px dashed var(--dropzone-border); border-radius: var(--radius-sm); padding: 10px 14px; text-align: center; font-size: 12px; color: var(--text-muted); cursor: pointer; transition: all 0.2s ease; }
  .entity-import-drop:hover, .entity-import-drop.over { background: var(--primary-soft); border-color: var(--primary); border-style: solid; color: var(--text); }
  .entity-manager-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
  .entity-manager-status { font-size: 12px; color: var(--success-soft-text); font-weight: 600; }
  .entity-quick-btn { border: none; background: none; color: var(--primary-soft-text); cursor: pointer; font-family: inherit; font-size: 11px; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; padding: 0; margin-left: 5px; }
  .checkbox-label { display: flex !important; align-items: center; gap: 8px; margin-top: 4px; color: var(--text); font-weight: 500; cursor: pointer; }

  .preview-drawer-overlay { position: fixed; inset: 0; z-index: 2200; display: none; background: var(--overlay); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
  .preview-drawer-overlay.visible { display: block; }
  .preview-drawer {
    position: absolute; top: 0; right: 0; height: 100%; width: min(900px, 96vw); display: flex; flex-direction: column;
    background: var(--surface-solid); border-left: 1px solid var(--border); box-shadow: -24px 0 60px rgba(0,0,0,0.35);
    transform: translateX(100%); transition: transform 0.26s cubic-bezier(.2,.8,.2,1);
  }
  .preview-drawer-overlay.visible .preview-drawer { transform: translateX(0); }
  .preview-drawer-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--border); }
  .preview-drawer-header h3 { font-size: 13.5px; font-family: var(--font-mono); font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .preview-drawer-body { flex: 1; display: grid; grid-template-columns: 1.2fr 1fr; overflow: hidden; }
  .preview-drawer-pdf { background: rgba(0,0,0,0.25); border-right: 1px solid var(--border); }
  .preview-drawer-pdf iframe { width: 100%; height: 100%; border: none; display: block; background: #fff; }
  .preview-drawer-fields { padding: 18px 20px; overflow: auto; display: flex; flex-direction: column; gap: 12px; }
  .preview-field { display: flex; flex-direction: column; gap: 4px; }
  .preview-field-label { font-size: 11px; color: var(--text-muted); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; }
  .preview-field-value { font-family: var(--font-mono); font-size: 12.5px; padding: 9px 12px; border-radius: var(--radius-sm); background: var(--input-bg); border: 1px solid var(--border); color: var(--text); word-break: break-all; }
  .preview-field-value.empty { color: var(--text-faint); font-style: italic; }

  /* Toasts */
  .toast-container { position: fixed; bottom: 20px; right: 20px; z-index: 3000; display: flex; flex-direction: column; gap: 8px; max-width: min(360px, calc(100vw - 32px)); }
  .toast {
    display: flex; align-items: flex-start; gap: 8px; padding: 12px 14px; border-radius: var(--radius);
    background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-md);
    font-size: 13px; font-weight: 500; color: var(--text); animation: toastIn 0.22s cubic-bezier(.2,.8,.2,1);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  }
  .toast-success { border-color: var(--success-border); background: var(--success-soft); color: var(--success-soft-text); }
  .toast-warn { border-color: var(--warn-border); background: var(--warn-soft); color: var(--warn-soft-text); }
  .toast-danger { border-color: var(--danger-border); background: var(--danger-soft); color: var(--danger-soft-text); }
  html[data-theme="dark"] .toast-success { background: linear-gradient(rgba(16,185,129,0.16), rgba(16,185,129,0.16)), var(--surface-raised); }
  html[data-theme="dark"] .toast-warn { background: linear-gradient(rgba(245,158,11,0.14), rgba(245,158,11,0.14)), var(--surface-raised); }
  html[data-theme="dark"] .toast-danger { background: linear-gradient(rgba(244,63,94,0.16), rgba(244,63,94,0.16)), var(--surface-raised); }
  .toast-fade { opacity: 0; transform: translateX(10px); transition: all 0.25s ease; }
  @keyframes toastIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } }

  /* ═══════════════════════════════════════════════════════════
     DIÁLOGO PROPIO (confirmar / ingresar dato)
     ═══════════════════════════════════════════════════════════ */
  .ui-dialog-overlay {
    position: fixed; inset: 0; z-index: 2600; display: none; align-items: center; justify-content: center; padding: 16px;
    background: var(--overlay); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  }
  .ui-dialog-overlay.visible { display: flex; animation: fadeIn 0.16s ease; }
  .ui-dialog-card {
    width: min(400px, 100%); padding: 26px 24px 20px; text-align: center;
    background: var(--glass-modal); border: 1px solid var(--border); border-top-color: var(--edge-light); border-left-color: var(--edge-light);
    border-radius: var(--radius-xl); box-shadow: var(--shadow-xl);
    backdrop-filter: blur(24px) saturate(150%); -webkit-backdrop-filter: blur(24px) saturate(150%);
    animation: popIn 0.2s cubic-bezier(.2,.8,.2,1);
  }
  .ui-dialog-icon {
    width: 46px; height: 46px; margin: 0 auto 14px; border-radius: 14px; display: flex; align-items: center; justify-content: center;
    color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border);
  }
  .ui-dialog-icon svg { width: 22px; height: 22px; }
  .ui-dialog-icon.is-danger { color: var(--danger-soft-text); background: var(--danger-soft); border-color: var(--danger-border); }
  .ui-dialog-card h2 { font-size: 17px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); margin-bottom: 6px; }
  .ui-dialog-card p { font-size: 13.5px; line-height: 1.55; color: var(--text-muted); margin-bottom: 18px; word-break: break-word; }
  #uiDialogInput { margin: -4px 0 18px; }
  #uiDialogInput.is-invalid { border-color: var(--danger); box-shadow: 0 0 0 4px var(--danger-soft); animation: shake 0.3s ease; }
  @keyframes shake { 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }
  .ui-dialog-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .ui-dialog-actions .btn { padding: 10px 14px; font-size: 14px; }
  .ui-dialog-actions .btn-ghost { border-color: var(--border); }

  /* ═══════════════════════════════════════════════════════════
     AJUSTES DE LA AUDITORÍA VISUAL
     ═══════════════════════════════════════════════════════════ */
  /* Íconos dentro de toasts */
  .toast > span:first-child { display: flex; flex-shrink: 0; margin-top: 1px; }
  .toast > span:last-child { line-height: 1.45; }

  /* Paquete: acciones y estado vacío de cada ranura */
  .pkg-card-actions { display: flex; gap: 2px; }
  .pkg-slot-empty { font-size: 11px; font-weight: 600; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.06em; }

  /* Gestor de memoria */
  .entity-new-btn { width: 100%; margin-bottom: 10px; padding: 10px 14px; }
  .entity-list .empty-state { grid-column: 1 / -1; margin: 0; }
  .entity-import-drop { display: flex; align-items: center; justify-content: center; gap: 8px; }
  .entity-import-drop svg { flex-shrink: 0; color: var(--primary-soft-text); }
  .entity-card-actions .btn-ghost { padding: 5px 8px; }

  /* Panel de vista previa */
  .preview-drawer-header { background: var(--border-soft); }
  .preview-drawer-fields::before {
    content: 'Datos detectados'; display: block; padding-bottom: 10px; margin-bottom: 2px; border-bottom: 1px solid var(--border);
    font-size: 13px; font-weight: 700; color: var(--text); letter-spacing: -0.01em;
  }
  .preview-drawer-fields .btn-blue { margin-top: 6px; width: 100%; padding: 10px 14px; }

  /* ═══════════════════════════════════════════════════════════
     GLOSACERO — login, usuario y panel de administrador
     ═══════════════════════════════════════════════════════════ */
  .login-card form { display: grid; gap: 10px; }
  .login-card input[type="email"], .login-card input[type="password"] {
    width: 100%; padding: 14px 16px; text-align: left; letter-spacing: normal; font-family: var(--font-sans); font-size: 15px; margin: 0;
  }
  .login-card button:disabled { opacity: .6; cursor: wait; transform: none; }
  .login-error { line-height: 1.45; }
  .login-error.is-info { color: var(--warn-soft-text); }
  .settings-popover { width: 250px; }
  .settings-popover-user { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--border); }
  .settings-popover-user strong { font-size: 13px; color: var(--text); }
  .settings-popover-user span { font-size: 12px; color: var(--text-muted); word-break: break-all; }
  .settings-popover-plan { margin-top: 4px; font-weight: 600; color: var(--success-soft-text) !important; }
  .license-badge.is-warn { background: var(--warn-soft); color: var(--warn-soft-text); border-color: var(--warn-border); }
  .license-badge.is-warn .license-dot { background: var(--warn); }
  .entity-badge-catalog { display: inline-flex; align-items: center; gap: 4px; width: fit-content; font-size: 10.5px; font-weight: 700; letter-spacing: .03em; padding: 2px 8px; border-radius: 999px; color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border); }
  .entity-card-readonly { font-size: 11.5px; color: var(--text-faint); }

  /* Encabezado: institución */
  .app-topbar-sub { display: flex; align-items: center; gap: 5px; }
  .app-topbar-sub.has-org { color: var(--primary-soft-text); font-weight: 600; font-size: 12.5px; }
  .app-topbar-sub svg { flex-shrink: 0; }
  .license-badge.is-admin-badge { background: var(--primary-soft); color: var(--primary-soft-text); border-color: var(--dropzone-border); }
  .license-badge.is-admin-badge .license-dot { background: var(--primary); animation: none; }
  /* Menú de cuenta */
  .settings-popover { width: 260px; padding: 6px; }
  .settings-popover-org { color: var(--primary-soft-text) !important; font-weight: 600; }
  .menu-item {
    display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; margin: 2px 0 6px;
    border: none; border-radius: var(--radius-sm); background: transparent; cursor: pointer;
    font-family: inherit; font-size: 13px; font-weight: 500; color: var(--text); text-align: left; transition: background .15s;
  }
  .menu-item:hover { background: var(--border-soft); }
  .menu-item svg { color: var(--text-muted); }

  /* Panel de usuarios: pestañas */
  .admin-card { width: min(1000px, 100%); }
  .admin-tabs { display: flex; gap: 4px; padding: 4px; margin-bottom: 16px; width: fit-content; border-radius: 12px; background: var(--input-bg); border: 1px solid var(--border); }
  .admin-tab { display: inline-flex; align-items: center; gap: 7px; padding: 8px 16px; border: none; border-radius: 9px; background: none; cursor: pointer; font-family: inherit; font-size: 13.5px; font-weight: 600; color: var(--text-muted); transition: all .2s; }
  .admin-tab:hover:not(.active) { color: var(--text); background: var(--border-soft); }
  .admin-tab.active { color: #fff; background: var(--grad-primary); box-shadow: var(--shadow-primary); }
  .admin-tab-count { min-width: 20px; padding: 1px 6px; border-radius: 999px; font-size: 11px; background: rgba(255,255,255,.18); }
  .admin-tab:not(.active) .admin-tab-count { background: var(--border-soft); color: var(--text-muted); }
  .admin-pane { display: grid; gap: 12px; overflow: auto; min-height: 0; }
  .admin-footnote { font-size: 12px; color: var(--text-faint); line-height: 1.5; }

  /* Lista de usuarios en filas */
  .admin-list { display: grid; gap: 8px; }
  .admin-row {
    display: grid; grid-template-columns: 40px minmax(0, 1.5fr) minmax(0, 1.1fr) auto minmax(0, 1.1fr) auto;
    gap: 14px; align-items: center; padding: 12px 14px; border-radius: var(--radius);
    background: var(--card-translucent); border: 1px solid var(--border); transition: border-color .2s, background .2s;
  }
  .admin-row:hover { border-color: var(--border-strong); }
  .admin-row.is-off { opacity: .7; }
  .admin-row-avatar { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border); }
  .admin-row-main { display: grid; gap: 2px; min-width: 0; }
  .admin-row-main strong { font-size: 13.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .admin-row-main span { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .admin-you { font-weight: 500; color: var(--text-faint); }
  .admin-row-org { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; font-size: 12.5px; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .admin-row-org svg { flex-shrink: 0; color: var(--primary-soft-text); }
  .admin-row-org.is-person { font-weight: 500; color: var(--text-faint); }
  .admin-row-pills { display: flex; gap: 5px; flex-wrap: wrap; }
  .admin-row-meta { display: grid; gap: 2px; font-size: 11.5px; color: var(--text-muted); min-width: 0; }
  .admin-row-meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .admin-pill.role { color: var(--text-muted); background: var(--border-soft); }

  /* Formulario de usuario */
  .admin-form-section { margin-bottom: 14px; }
  .admin-form-label { font-size: 12px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px; }
  .admin-type { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .admin-type-option { margin: 0 !important; cursor: pointer; }
  .admin-type-option input { position: absolute; opacity: 0; pointer-events: none; }
  .admin-type-option > span {
    display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; padding: 12px 14px;
    border-radius: var(--radius); border: 1px solid var(--border); background: var(--card-translucent); transition: all .2s;
  }
  .admin-type-option svg { grid-row: span 2; color: var(--text-muted); }
  .admin-type-option strong { font-size: 13.5px; color: var(--text); }
  .admin-type-option small { font-size: 12px; font-weight: 500; color: var(--text-muted); }
  .admin-type-option input:checked + span { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 3px var(--primary-ring); }
  .admin-type-option input:checked + span svg { color: var(--primary-soft-text); }
  .admin-type-option input:focus-visible + span { outline: 2px solid var(--primary); outline-offset: 2px; }
  .admin-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  .admin-field { display: grid; gap: 6px; align-content: start; }
  .admin-field label { margin: 0; }
  .admin-field input:disabled, .admin-field select:disabled { opacity: .6; cursor: not-allowed; }
  .admin-hint { font-weight: 500; color: var(--text-faint); }
  .admin-link { justify-self: start; border: none; background: none; padding: 0; cursor: pointer; font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--primary-soft-text); text-decoration: underline; text-underline-offset: 2px; }
  .admin-field input[type="date"] { -webkit-appearance: none; appearance: none; width: 100%; padding: 11px 14px; font-family: inherit; font-size: 14px; color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius); color-scheme: inherit; }
  .admin-field input[type="date"]:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); }
  .admin-form-security { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
  .admin-security-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 12.5px; color: var(--text-muted); }
  .admin-security-row b { color: var(--text); }
  .admin-security-actions { display: flex; gap: 6px; flex-wrap: wrap; }
  .admin-form-actions { display: flex; justify-content: space-between; gap: 10px; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border); }
  .admin-form-actions .btn-primary { padding: 10px 22px; font-size: 14px; }
  html[data-theme="dark"] .admin-field input[type="date"] { color-scheme: dark; }
  @media (max-width: 860px) {
    .admin-row { grid-template-columns: 40px minmax(0, 1fr) auto; }
    .admin-row-org-col, .admin-row-meta { grid-column: 2 / -1; }
    .admin-row-pills { grid-column: 2 / -1; }
    .admin-row > .btn { grid-column: 3; grid-row: 1; }
  }
  @media (max-width: 600px) {
    .admin-type, .admin-form-grid { grid-template-columns: 1fr; }
  }

  /* Ayuda contextual (?) */
  .result-title-wrap { display: flex; align-items: center; gap: 8px; }
  .help-wrap { position: relative; display: inline-flex; }
  .help-btn {
    width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; padding: 0;
    border-radius: 50%; border: 1px solid var(--border); background: var(--surface); color: var(--text-faint); cursor: pointer; transition: all .2s ease;
  }
  .help-btn:hover, .help-btn[aria-expanded="true"] { color: var(--primary-soft-text); border-color: var(--dropzone-border-strong); background: var(--primary-soft); }
  .help-pop {
    display: none; position: absolute; top: calc(100% + 8px); left: -8px; z-index: 60; width: min(380px, calc(100vw - 48px));
    padding: 14px 16px; border-radius: var(--radius); background: var(--surface-raised); border: 1px solid var(--border);
    box-shadow: var(--shadow-md); font-size: 12.5px; line-height: 1.55; color: var(--text-muted); font-weight: 400;
  }
  .help-pop.open { display: block; animation: popIn .16s ease; }
  .help-pop strong { display: block; font-size: 13px; color: var(--text); margin-bottom: 6px; }
  .help-pop ol { padding-left: 18px; display: grid; gap: 4px; }
  .help-pop b { color: var(--text); font-weight: 600; }
  .help-pop p { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
  .result-block:has(.help-pop.open) { overflow: visible; }


  /* Mientras se verifica la sesión guardada no se muestra el login (evita el parpadeo) */
  body.gc-booting #loginScreen .login-card { visibility: hidden; }
  body.gc-booting #loginScreen::after {
    content: ''; position: absolute; top: 50%; left: 50%; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%;
    border: 3px solid var(--primary-soft); border-top-color: var(--primary); animation: aiSpin .8s linear infinite;
  }


  /* Login: enlace legal */
  .login-legal { margin-top: 10px; font-size: 11.5px; line-height: 1.5; color: var(--text-faint); }
  .login-legal a { color: var(--primary-soft-text); text-decoration: underline; text-underline-offset: 2px; }
  a.menu-item { text-decoration: none; }

  /* Estadísticas del administrador */
  .stats-head { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
  .stats-updated { font-size: 12px; color: var(--text-faint); }
  .stats-alert { padding: 10px 12px; border-radius: var(--radius-sm); font-size: 12.5px; font-weight: 500; }
  .stats-alert.warn { color: var(--warn-soft-text); background: var(--warn-soft); border: 1px solid var(--warn-border); }
  .stats-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .stats-card { display: grid; gap: 2px; padding: 14px; border-radius: var(--radius); background: var(--card-translucent); border: 1px solid var(--border); }
  .stats-card span { font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .stats-card strong { font-size: 26px; font-weight: 700; letter-spacing: -.02em; color: var(--text); font-variant-numeric: tabular-nums; line-height: 1.2; }
  .stats-card strong.stats-small { font-size: 18px; padding: 4px 0; }
  .stats-card small { font-size: 11.5px; color: var(--text-faint); }
  .stats-panel { padding: 14px; border-radius: var(--radius); background: var(--card-translucent); border: 1px solid var(--border); }
  .stats-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; font-size: 13px; color: var(--text); }
  .stats-panel-head span { font-size: 11.5px; color: var(--text-faint); }
  .stats-legend { display: inline-flex; align-items: center; gap: 6px; }
  .stats-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-left: 6px; }
  .stats-legend i.a, .stats-bar-a { background: var(--primary); }
  .stats-legend i.i, .stats-bar-i { background: var(--success); }
  .stats-chart { display: grid; grid-template-columns: repeat(14, minmax(0, 1fr)); gap: 6px; align-items: end; height: 150px; }
  .stats-bar { display: grid; grid-template-rows: 1fr auto; gap: 4px; height: 100%; min-width: 0; }
  .stats-bar-cols { display: flex; align-items: flex-end; justify-content: center; gap: 2px; height: 100%; border-bottom: 1px solid var(--border); }
  .stats-bar-cols span { width: 42%; min-height: 2px; border-radius: 3px 3px 0 0; transition: height .3s ease; }
  .stats-bar-label { font-size: 10px; color: var(--text-faint); text-align: center; white-space: nowrap; overflow: hidden; }
  .stats-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .stats-list { display: grid; gap: 6px; }
  .stats-list li { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13px; color: var(--text); }
  .stats-list li b { font-variant-numeric: tabular-nums; }
  .stats-li-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .stats-li-name span { color: var(--text-faint); }
  .stats-empty { color: var(--text-faint) !important; font-size: 12.5px !important; }
  .stats-link { justify-self: start; font-size: 13px; font-weight: 600; color: var(--primary-soft-text); text-decoration: underline; text-underline-offset: 3px; }
  @media (max-width: 760px) {
    .stats-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stats-two { grid-template-columns: 1fr; }
    .stats-bar-label { font-size: 8.5px; }
  }

  /* Solo administrador */
  body:not(.is-admin) .admin-only { display: none !important; }
  /* Entidades: la lista usa todo el ancho cuando el formulario está cerrado */
  .entity-manager-body:has(#entityFormCol[style*="none"]) { grid-template-columns: 1fr; }
  .entity-manager-body:has(#entityFormCol[style*="none"]) .entity-list { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }

  /* [hidden] siempre gana (los botones con display propio lo ignoraban) */
  [hidden] { display: none !important; }

  /* Barra superior: botones con texto y menú de usuario */
  .topbar-btn { height: 38px; padding: 0 12px; font-weight: 600; color: var(--text-muted); border: 1px solid var(--border) !important; background: var(--surface) !important; }
  .topbar-btn:hover { color: var(--text) !important; background: var(--primary-soft) !important; border-color: var(--dropzone-border-strong) !important; }
  .user-chip {
    display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 10px 0 4px; cursor: pointer;
    font-family: inherit; font-size: 13px; font-weight: 600; color: var(--text);
    border: 1px solid var(--border); border-radius: 999px; background: var(--surface); transition: all .2s ease;
  }
  .user-chip:hover, .user-chip[aria-expanded="true"] { border-color: var(--dropzone-border-strong); background: var(--primary-soft); }
  .user-chip svg { color: var(--text-faint); }
  .user-avatar {
    width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; letter-spacing: .02em; color: #fff; background: var(--grad-primary);
  }
  .user-chip-name { max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .settings-popover { top: 46px; }

  /* Guía cuando no hay archivos */
  .empty-guide { text-align: left; max-width: 640px; margin: 0 auto; }
  .empty-guide-title { font-size: 15px; font-weight: 700; color: var(--text); text-align: center; margin-bottom: 4px; }
  .empty-guide-sub { font-size: 13px; color: var(--text-muted); text-align: center; margin-bottom: 18px; }
  .empty-guide-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .empty-guide-step { padding: 14px; border-radius: var(--radius); background: var(--card-translucent); border: 1px solid var(--border); }
  .empty-guide-step b { display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; margin-bottom: 8px; border-radius: 50%; font-size: 12px; color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border); }
  .empty-guide-step strong { display: block; font-size: 13px; color: var(--text); margin-bottom: 2px; }
  .empty-guide-step span { font-size: 12px; line-height: 1.45; color: var(--text-muted); }
  @media (max-width: 700px) {
    .empty-guide-steps { grid-template-columns: 1fr; }
    .topbar-btn span, .user-chip-name { display: none; }
    .topbar-btn { padding: 0 10px; }
  }

  /* Mostrar / ocultar contraseña */
  .password-field { position: relative; }
  .password-field input { padding-right: 46px !important; }
  .password-toggle {
    position: absolute; top: 50%; right: 6px; transform: translateY(-50%);
    width: 34px; height: 34px; display: flex; align-items: center; justify-content: center;
    border: none; border-radius: 8px; background: transparent; color: var(--text-faint); cursor: pointer; transition: all .2s ease;
  }
  .password-toggle:hover { color: var(--text); background: var(--border-soft); }
  .password-toggle[aria-pressed="true"] { color: var(--primary-soft-text); }
  .login-card .password-field input { text-align: left; letter-spacing: normal; font-family: var(--font-sans); font-size: 15px; padding: 14px 46px 14px 16px; margin: 0; }
  .login-card .password-toggle { width: 36px !important; padding: 0 !important; box-shadow: none !important; background: transparent !important; transform: translateY(-50%) !important; filter: none !important; }
  .login-card .password-toggle:hover { background: var(--border-soft) !important; }

  /* Nuevo cliente */
  .admin-new { padding: 14px; margin-bottom: 14px; border-radius: var(--radius); background: var(--primary-soft); border: 1px solid var(--dropzone-border); }

  .admin-new-result { margin-top: 12px; padding: 12px; border-radius: var(--radius-sm); font-size: 13px; line-height: 1.6; color: var(--success-soft-text); background: var(--success-soft); border: 1px solid var(--success-border); }
  .admin-new-result code { font-family: var(--font-mono); font-size: 12.5px; color: var(--text); }
  .admin-new-result .btn { margin-top: 8px; }

  .admin-card { width: min(980px, 100%); }
  .admin-toolbar { display: flex; gap: 8px; margin-bottom: 12px; }
  .admin-toolbar input { flex: 1; }
  .admin-list { display: grid; gap: 10px; overflow: auto; padding: 2px; }

  .admin-new input[type="date"] { -webkit-appearance: none; appearance: none; width: 100%; padding: 7px 10px; font-family: inherit; font-size: 13px; color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); color-scheme: inherit; }
  
  .admin-plan-quick { display: flex; gap: 6px; flex-wrap: wrap; }
  
  .admin-switch { display: inline-flex !important; align-items: center; gap: 8px; margin: 0 !important; font-size: 12.5px !important; font-weight: 600; color: var(--text) !important; cursor: pointer; }
  .admin-switch input { position: absolute; opacity: 0; width: 0 !important; height: 0; }
  .admin-switch-track { position: relative; width: 36px; height: 20px; border-radius: 999px; background: var(--border-strong); transition: background .2s; flex-shrink: 0; }
  .admin-switch-track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); transition: transform .2s; }
  .admin-switch input:checked + .admin-switch-track { background: var(--success); }
  .admin-switch input:checked + .admin-switch-track::after { transform: translateX(16px); }
  .admin-switch input:focus-visible + .admin-switch-track { box-shadow: 0 0 0 3px var(--primary-ring); }
  .admin-switch input:disabled + .admin-switch-track { opacity: .5; }
  .admin-pill { display: inline-flex; width: fit-content; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
  .admin-pill.ok { color: var(--success-soft-text); background: var(--success-soft); }
  .admin-pill.warn { color: var(--warn-soft-text); background: var(--warn-soft); }
  .admin-pill.off { color: var(--danger-soft-text); background: var(--danger-soft); }
  .admin-pill.admin { color: var(--primary-soft-text); background: var(--primary-soft); }

  /* Colores fijos que el JS escribe en línea: se adaptan al tema sin tocar la lógica */
  [style*="color:#aaa"], [style*="rgb(170, 170, 170)"], [style*="color:#ccc"] { color: var(--text-faint) !important; }
  [style*="#1a1a1a"], [style*="rgb(26, 26, 26)"] { color: var(--text) !important; }

  /* ═══════════════════════════════════════════════════════════
     RESPONSIVE / ACCESIBILIDAD
     ═══════════════════════════════════════════════════════════ */
  @media (max-width: 900px) {
    .audit-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .entity-manager-body { grid-template-columns: 1fr; }
  }
  @media (max-width: 700px) {
    #appScreen { padding: 12px 8px; }
    .container { border-radius: var(--radius-lg); }
    .gc-agrup, .gc-paquete, .agrup-lote-grid, .pkg-grid { grid-template-columns: 1fr; }
    .audit-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .entity-list { grid-template-columns: 1fr; }
    .preview-drawer-body { grid-template-columns: 1fr; }
    .preview-drawer-pdf { display: none; }
    .mode-tabs { width: 100%; }
    .mode-tab { flex: 1; justify-content: center; padding: 9px 10px; }
    .license-badge { display: none; }
    .result-header { padding: 12px; }

    /* Agrupado: tipo + nombre original + acciones arriba, nombre nuevo debajo */
    .agrup-group-files { margin-left: 6px; padding: 6px 8px 10px 12px; }
    .agrup-file-row { grid-template-columns: 40px minmax(0, 1fr) 26px 26px; row-gap: 4px; margin: 0; padding: 8px 6px; }
    .agrup-file-row:hover { transform: none; }
    .agrup-file-row .arrow { display: none; }
    .agrup-file-row .tipo-tag { grid-column: 1; grid-row: 1; }
    .agrup-file-row .old-name { grid-column: 2; grid-row: 1; }
    .agrup-preview { grid-column: 3; grid-row: 1; }
    .agrup-remove { grid-column: 4; grid-row: 1; }
    .agrup-file-row .new-name, .agrup-file-row .val-input { grid-column: 2 / -1; grid-row: 2; white-space: normal; word-break: break-all; }
    .agrup-details-btn { grid-column: 2 / -1; grid-row: 3; }
    .agrup-details-panel { margin-left: 0; }
    .agrup-queue-toolbar .agrup-queue-search { min-width: 100%; }
  }
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
  }

  .admin-secret-hidden { font-style: italic; color: var(--text-muted); }

  /* ── Fase 2/3: decisiones manuales, paquete sin límite, diálogos con varias líneas ── */
  #uiDialogMessage { white-space: pre-line; }
  .pkg-summary { margin: 0 0 12px; font-size: 13px; color: var(--text-muted); }
  .pkg-summary:empty { display: none; }
  .pkg-summary.is-warn { color: var(--warn-soft-text); font-weight: 600; }
  .pkg-card-title { font-size: 13px; }
  .pkg-origin { display: block; margin-top: 4px; font-size: 11.5px; color: var(--text-muted); }
  .preview-edit { display: flex; flex-direction: column; gap: 6px; }
  .preview-field-hint { font-size: 11.5px; color: var(--text-muted); }

  /* ── Documentos obligatorios configurables ── */
  .req-config-panel { margin: 0 0 16px; padding: 10px 14px; border: 1px solid var(--border); border-radius: 12px; background: var(--card-translucent); }
  .req-config-panel summary { cursor: pointer; font-weight: 600; font-size: 14px; min-height: 32px; display: flex; align-items: center; }
  .req-help { font-size: 12.5px; color: var(--text-muted); margin: 6px 0 10px; }
  .req-row { border: 0; margin: 0 0 10px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; }
  .req-row legend { font-size: 12px; font-weight: 700; color: var(--text-muted); margin-bottom: 4px; }
  .req-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; min-height: 32px; cursor: pointer; }

  /* ── Contraseña propia y recuperación ── */
  .login-forgot { background: none; border: 0; color: var(--primary-soft-text); font: inherit; font-size: 13px; cursor: pointer; margin: 10px auto 0; display: block; min-height: 44px; padding: 0 12px; text-decoration: underline; text-underline-offset: 3px; }
  .pwd-card { background: var(--surface-solid); border: 1px solid var(--border); border-radius: 18px; padding: 24px; width: min(440px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: auto; box-shadow: 0 24px 60px rgba(0,0,0,.35); }
  .pwd-card h2 { font-size: 18px; margin: 0 0 6px; }
  .pwd-help { font-size: 13px; color: var(--text-muted); margin: 0 0 14px; }
  .pwd-card .admin-field { margin-bottom: 12px; }
  .pwd-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
  .audit-row-item { grid-template-columns: 1fr auto !important; }

  /* ── Conflictos por grupo y filtro ── */
  .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
  .badge-danger { background: rgba(239,68,68,.14); color: #f87171; border: 1px solid rgba(239,68,68,.35); }
  :root[data-theme="light"] .badge-danger { color: #b91c1c; }
  .agrup-group-badges { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
  .group-issues { list-style: none; margin: 4px 0 10px; padding: 8px 12px; border-radius: 10px; background: var(--warn-soft); font-size: 12.5px; display: grid; gap: 4px; }
  .group-issues .is-block { color: #f87171; font-weight: 600; }
  :root[data-theme="light"] .group-issues .is-block { color: #b91c1c; }
  .group-issues .is-warn { color: var(--warn-soft-text); }
  .agrup-queue-filter { width: auto !important; flex: 0 1 auto; min-height: 40px; border-radius: 10px; border: 1px solid var(--border); background: var(--input-bg); color: var(--text); padding: 0 10px; font: inherit; font-size: 13px; }
  .agrup-filter-status { font-size: 12px; color: var(--text-muted); }
  .req-config-panel summary::before { content: '▸'; margin-right: 8px; transition: transform .15s; }
  .req-config-panel[open] summary::before { transform: rotate(90deg); }

  /* ── Validación del catálogo ── */
  .field-error { display: block; min-height: 0; font-size: 12px; color: #f87171; margin-top: 4px; }
  :root[data-theme="light"] .field-error { color: #b91c1c; }
  .field-error.is-warning { color: var(--warn-soft-text); }
  .field-error:empty { display: none; }
  .field-help { display: block; font-size: 12px; color: var(--text-muted); margin-top: 4px; }
  .entity-pattern-hint { margin: 6px 0 2px; }
  [aria-invalid="true"] { border-color: #ef4444 !important; }

  /* ═══ Fase 7: accesibilidad ═══ */
  /* Contraste: texto blanco sobre el degradado ≥ 4.5:1 (antes #3b82f6 daba 3.7:1). */
  :root { --grad-primary: linear-gradient(135deg,#2563eb 0%,#1d4ed8 100%); }
  /* Sin animaciones decorativas continuas: solo indicadores de trabajo en curso. */
  .license-dot, .drop-zone, .agrup-drop, .drop-zone::before, .pkg-drop-zone::before, .drop-icon, .entity-card-dot::after { animation: none !important; }
  .drop-zone.over, .agrup-drop.over, .pkg-drop-zone.over { outline: 2px dashed var(--primary); outline-offset: 2px; }
  /* Foco visible en todo control. */
  :where(button, a[href], input, select, textarea, summary, [role=button], [tabindex]):focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  /* Botón de ayuda: área táctil de 44 px sin cambiar su tamaño visual. */
  .help-btn { position: relative; }
  .help-btn::after { content: ''; position: absolute; inset: -10px; }
  /* Pantallas táctiles y móviles: objetivos de al menos 44 px. */
  @media (pointer: coarse), (max-width: 700px) {
    .row-action-btn, .agrup-details-btn, .row-details-btn, .btn-sm, .menu-item, .admin-tab, .mode-tab, .logout-btn, .entity-quick-btn, .password-toggle { min-height: 44px; min-width: 44px; }
    .agrup-file-row { grid-template-columns: 40px minmax(0, 1fr) 44px 44px; }
    .req-check { min-height: 44px; }
  }
  /* Vista previa también en móvil: el PDF arriba y los datos debajo, con desplazamiento. */
  @media (max-width: 700px) {
    .preview-drawer-body { overflow-y: auto; }
    .preview-drawer-pdf { display: block; height: 55vh; border-right: 0; border-bottom: 1px solid var(--border); }
  }
  /* Inicio de sesión en pantallas bajas (móvil horizontal): se puede desplazar, nada queda cortado. */
  #loginScreen { overflow-y: auto; align-items: safe center; }
  @media (max-height: 640px) {
    #loginScreen { align-items: flex-start; }
    .login-card { padding: 1.5rem 1.5rem 1.25rem; margin: auto 0; }
    .login-card .login-logo { width: 44px; height: 44px; margin-bottom: .5rem; }
    .login-card p { margin-bottom: 1rem; }
  }
  .login-card button.login-forgot { width: auto; background: none; box-shadow: none; color: var(--primary-soft-text); font-weight: 500; font-size: 13px; margin: 8px auto 0; padding: 0 12px; min-height: 44px; transform: none; }
  .login-card button.login-forgot:hover, .login-card button.login-forgot:active { background: var(--primary-soft); transform: none; filter: none; box-shadow: none; }
  .preview-open-tab { margin-left: auto; margin-right: 8px; }
  .stats-note { font-size: 12px; color: var(--text-muted); margin: 12px 0 4px; }

  /* ── Un documento por tipo ── */
  .new-name.is-repeated { color: #f87171; }
  :root[data-theme="light"] .new-name.is-repeated { color: #b91c1c; }
  .pkg-card.is-repeated { border-color: rgba(239,68,68,.55) !important; }
  .pkg-dup { font-size: 12px; font-weight: 600; color: #f87171; }
  :root[data-theme="light"] .pkg-dup { color: #b91c1c; }

  /* ── Cuentas incompletas ── */
  .admin-incompletas { display: grid; gap: 6px; margin: 0 0 12px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--warn-border); background: var(--warn-soft); color: var(--warn-soft-text); font-size: 13px; }
  .admin-incompleta-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }

  /* ── Búsqueda de grupos: mismo aspecto que los demás campos ── */
  .agrup-queue-toolbar .agrup-queue-search {
    flex: 1 1 280px; min-width: 0; height: 44px; border-radius: 12px; border: 1px solid var(--border);
    background-color: var(--input-bg); color: var(--text); font: inherit; font-size: 14px;
    padding: 0 14px 0 38px !important; -webkit-appearance: none; appearance: none;
  }
  .agrup-queue-toolbar .agrup-queue-search::placeholder { color: var(--text-faint); }
  .agrup-queue-toolbar .agrup-queue-search:hover { background-color: var(--input-bg-hover); }
  .agrup-queue-toolbar .agrup-queue-search::-webkit-search-cancel-button { cursor: pointer; }
  .agrup-queue-toolbar .agrup-queue-filter { height: 44px; min-height: 44px; border-radius: 12px; }

  /* ── Verificación en dos pasos ── */
  .mfa-qr { display: flex; justify-content: center; margin: 8px 0 12px; }
  .mfa-qr img { background: #fff; padding: 8px; border-radius: 12px; }
  #mfaSecret { word-break: break-all; font-size: 12px; }
  #mfaError { display: block; }
  #mfaError:empty { display: none; }

  /* ── Módulos según el plan ── */
  .mode-tab[hidden] { display: none !important; }
  .mode-tabs.single-mode { display: none; }

  /* ═══════════════════════════════════════════════════════════
     MÓDULOS (nivel 1) — cada uno con sus herramientas (nivel 2)
     ═══════════════════════════════════════════════════════════ */
  .module-nav { display: flex; gap: 10px; margin-bottom: 1.25rem; flex-wrap: wrap; }
  .module-nav.single-mode { display: none; }
  .module-tab {
    display: inline-flex; align-items: center; gap: 12px; min-width: 210px; padding: 12px 18px 12px 12px; text-align: left;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); cursor: pointer;
    font-family: inherit; color: var(--text-muted); transition: border-color .2s ease, background .2s ease, box-shadow .2s ease, transform .1s ease;
  }
  .module-tab[hidden] { display: none !important; }
  .module-tab:hover:not(.active) { border-color: var(--border-strong); color: var(--text); }
  .module-tab:active { transform: scale(0.98); }
  .module-tab:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--primary-ring); }
  .module-ico { display: grid; place-items: center; width: 40px; height: 40px; flex-shrink: 0; border-radius: 12px; background: var(--border-soft); color: var(--text-muted); transition: inherit; }
  .module-txt { display: flex; flex-direction: column; gap: 2px; line-height: 1.2; }
  .module-txt strong { font-size: 15px; font-weight: 700; color: var(--text); }
  .module-txt small { font-size: 12px; font-weight: 500; color: var(--text-faint); }
  .module-tab.active { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 1px var(--primary) inset; }
  .module-tab.active .module-ico { background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary); }
  .module-panel[hidden] { display: none !important; }
  .module-panel .mode-tabs { margin-bottom: 1.25rem; }
  .module-panel .mode-tab { padding: 7px 16px; font-size: 13px; }
  @media (max-width: 640px) {
    .module-nav { flex-wrap: nowrap; }
    .module-tab { flex: 1; min-width: 0; padding: 10px; gap: 8px; }
    .module-ico { width: 32px; height: 32px; border-radius: 10px; }
    .module-txt small { display: none; }
  }
  /* Casillas de módulos en el formulario de usuarios */
  .admin-modulos { border: 0; padding: 0; margin: 0; min-width: 0; }
  .admin-modulos legend { padding: 0; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: var(--text-muted); }
  .admin-modulos-list { display: grid; gap: 8px; }
  .admin-modulo { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; background: var(--input-bg); }
  .admin-modulo:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); }
  .admin-modulo span { display: flex; flex-direction: column; gap: 1px; line-height: 1.25; }
  .admin-modulo strong { font-size: 14px; color: var(--text); }
  .admin-modulo small { font-size: 12px; color: var(--text-faint); }

  /* ── Módulo Pacientes: ciclos de vida ── */
  .ciclos-aviso { margin: 0 0 14px; padding: 10px 14px; border-radius: var(--radius); font-size: 13px; line-height: 1.5;
    background: var(--info-soft); border: 1px solid var(--dropzone-border); color: var(--info-soft-text); }
  html[data-theme="dark"] .ciclos-aviso { background: var(--primary-soft); color: var(--primary-soft-text); }
  .gc-ciclos { grid-template-columns: minmax(180px, 220px) minmax(180px, 260px); align-items: end; }
  .gc-ciclos > div[hidden] { display: none; }
  html input[type="date"]#cFechaCorte { -webkit-appearance: none; appearance: none; width: 100%; padding: 10px 14px; min-height: 44px; font-family: inherit; font-size: 14px;
    color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-sm); color-scheme: light; }
  html[data-theme="dark"] input[type="date"]#cFechaCorte { color-scheme: dark; }
  #cFechaCorte:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); }
  .ciclos-config { margin-top: 0; margin-bottom: 1.25rem; }
  .ciclos-config-body { padding: 14px 16px 16px; }
  .ciclos-map { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; }
  .ciclos-corte { font-weight: 500; color: var(--text-muted); margin-left: 6px; font-size: 12px; }
  .ciclos-resumen { padding: 14px 16px 4px; }
  .ciclos-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; }
  .ciclos-chip { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 2px 8px; padding: 10px 12px; min-height: 44px; text-align: left; cursor: pointer;
    font-family: inherit; color: var(--text); background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: border-color .15s, background .15s; }
  .ciclos-chip span { font-size: 12px; font-weight: 600; color: var(--text-muted); grid-column: 1 / -1; }
  .ciclos-chip strong { font-size: 20px; font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
  .ciclos-chip small { font-size: 12px; color: var(--text-faint); font-variant-numeric: tabular-nums; }
  .ciclos-chip:hover { border-color: var(--border-strong); }
  .ciclos-chip.active { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 3px var(--primary-ring); }
  .ciclos-chip.is-warn span { color: var(--warn-soft-text); }
  .ciclos-chip:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  .ciclos-sexo-wrap { overflow-x: auto; margin-top: 12px; }
  .ciclos-sexo { border-collapse: collapse; font-size: 12.5px; min-width: 420px; }
  .ciclos-sexo th, .ciclos-sexo td { padding: 6px 12px; text-align: right; border-bottom: 1px solid var(--border); font-variant-numeric: tabular-nums; }
  .ciclos-sexo th[scope="row"], .ciclos-sexo thead th:first-child { text-align: left; }
  .ciclos-sexo thead th { font-size: 11.5px; color: var(--text-muted); font-weight: 600; }
  .ciclos-tabla-wrap { margin: 12px 16px 0; overflow: auto; max-height: 520px; border: 1px solid var(--border); border-radius: var(--radius-sm); }
  .ciclos-tabla-wrap:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  .ciclos-tabla { border-collapse: collapse; font-size: 12.5px; width: max-content; min-width: 100%; }
  .ciclos-tabla th, .ciclos-tabla td { padding: 7px 10px; border-bottom: 1px solid var(--border); text-align: left; white-space: nowrap; color: var(--text); }
  .ciclos-tabla thead th { position: sticky; top: 0; z-index: 1; background: var(--surface-solid); font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
  .ciclos-tabla td.num { text-align: right; font-variant-numeric: tabular-nums; color: var(--text-muted); }
  .ciclos-tabla td.obs { white-space: normal; min-width: 240px; max-width: 420px; font-size: 12px; color: var(--warn-soft-text); }
  .ciclos-tabla tr.is-sin td { background: var(--warn-soft); }
  .ciclos-tag { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 600; }
  .ciclos-primera_infancia { background: var(--pink-soft); color: var(--pink-soft-text); }
  .ciclos-infancia { background: var(--orange-soft); color: var(--orange-soft-text); }
  .ciclos-adolescencia { background: var(--violet-soft); color: var(--violet-soft-text); }
  .ciclos-juventud { background: var(--sky-soft); color: var(--sky-soft-text); }
  .ciclos-adultez { background: var(--teal-soft); color: var(--teal-soft-text); }
  .ciclos-vejez { background: var(--indigo-soft); color: var(--indigo-soft-text); }
  .ciclos-sin { background: var(--warn-soft); color: var(--warn-soft-text); border: 1px solid var(--warn-border); }
  .ciclos-vacio { padding: 18px; margin: 0; text-align: center; color: var(--text-muted); font-size: 13px; }
  .ciclos-nota { margin: 8px 16px 14px; font-size: 12px; color: var(--text-muted); }
  .ciclos-nota:empty { margin: 0 0 14px; }
  @media (max-width: 900px) {
    .gc-ciclos { grid-template-columns: 1fr 1fr; }
    .ciclos-map { grid-template-columns: 1fr 1fr; }
  }
  @media (max-width: 640px) {
    .gc-ciclos, .ciclos-map { grid-template-columns: 1fr; }
    .ciclos-tabla-wrap { margin: 12px 8px 0; }
  }

  /* ═══════════════════════════════════════════════════════════
     DISEÑO CON BARRA LATERAL (página completa)
     ═══════════════════════════════════════════════════════════ */
  #appScreen { padding: 0; }
  .app-shell { display: grid; grid-template-columns: 264px minmax(0, 1fr); min-height: 100vh; }
  .side-nav {
    position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; gap: 2px;
    padding: 18px 14px 14px; background: var(--surface-solid); border-right: 1px solid var(--border);
  }
  .side-brand { display: flex; align-items: center; gap: 10px; padding: 2px 6px 14px; }
  .side-brand .app-logo { width: 38px; height: 38px; border-radius: 11px; flex-shrink: 0; display: flex; align-items: center; justify-content: center;
    background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary); }
  .side-brand-txt { min-width: 0; }
  .side-brand h1 { margin: 0; font-size: 16px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); }
  .side-brand .app-topbar-sub { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .side-sec { padding: 14px 10px 6px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
  .side-modules, .side-modules.single-mode { display: flex; flex-direction: column; gap: 2px; margin: 0; flex-wrap: nowrap; }
  .side-item {
    display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 8px 10px; text-align: left; cursor: pointer;
    font-family: inherit; font-size: 13.5px; font-weight: 600; color: var(--text-muted); background: none; border: 0; border-radius: 10px;
    transition: background .15s ease, color .15s ease;
  }
  .side-item[hidden] { display: none !important; }
  .side-item:hover { background: var(--border-soft); color: var(--text); }
  .side-item:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--primary-ring); }
  .side-item > svg { margin: 0 7px 0 7px; }
  .side-modules .module-tab.side-item { flex: none; min-width: 0; gap: 10px; padding: 8px 10px; border: 0; border-radius: 10px; box-shadow: none; background: none; }
  .side-modules .module-tab.side-item:hover:not(.active) { background: var(--border-soft); }
  .side-modules .module-tab.side-item:active { transform: none; }
  .side-modules .module-ico { width: 30px; height: 30px; border-radius: 9px; }
  .side-modules .module-ico svg { width: 17px; height: 17px; }
  .side-modules .module-txt strong { font-size: 14px; }
  .side-modules .module-txt small { display: block; font-size: 11.5px; }
  .side-modules .module-tab.side-item.active { background: var(--primary-soft); box-shadow: none; }
  .side-sub { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 6px 25px; padding-left: 12px; border-left: 1px solid var(--border); }
  .module-tab:not(.active) + .side-sub, .module-tab[hidden] + .side-sub { display: none; }
  .side-sub .mode-tab { justify-content: flex-start; width: 100%; min-height: 38px; padding: 7px 10px; font-size: 13px; border-radius: 8px; background: none; box-shadow: none; color: var(--text-muted); }
  .side-sub .mode-tab svg { width: 15px; height: 15px; }
  .side-sub .mode-tab:hover:not(.active) { background: var(--border-soft); color: var(--text); }
  .side-sub .mode-tab.active { background: var(--border-soft); color: var(--text); box-shadow: none; }
  .side-admin { display: flex; flex-direction: column; gap: 2px; }
  .side-foot { margin-top: auto; display: flex; flex-direction: column; gap: 10px; padding-top: 14px; border-top: 1px solid var(--border); }
  .side-foot .session-control { width: 100%; }
  .side-foot .user-chip { width: 100%; justify-content: flex-start; }
  .side-foot .user-chip-name { display: block !important; flex: 1; max-width: none; text-align: left; }
  .side-foot .settings-popover { top: auto; bottom: calc(100% + 8px); left: 0; right: auto; width: 100%; min-width: 236px; }
  .app-main { min-width: 0; padding: 28px clamp(16px, 3vw, 40px) 48px; }
  .app-main > * { max-width: 1600px; }
  .tool-head { margin-bottom: 20px; }
  .tool-crumb { font-size: 12px; font-weight: 600; color: var(--text-faint); margin-bottom: 4px; }
  .tool-head h2 { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); }
  .tool-head p { margin: 6px 0 0; max-width: 760px; font-size: 13.5px; line-height: 1.5; color: var(--text-muted); }
  .mobile-bar, .side-scrim { display: none; }
  @media (max-width: 960px) {
    .app-shell { grid-template-columns: 1fr; }
    .side-nav { position: fixed; top: 0; bottom: 0; left: 0; z-index: 950; width: min(300px, 86vw); height: auto;
      transform: translateX(-100%); transition: transform .22s ease; box-shadow: var(--shadow-xl); }
    .app-shell.side-open .side-nav { transform: none; }
    .side-scrim { display: block; position: fixed; inset: 0; z-index: 940; background: var(--overlay); opacity: 0; pointer-events: none; transition: opacity .22s ease; }
    .app-shell.side-open .side-scrim { opacity: 1; pointer-events: auto; }
    .mobile-bar { display: flex; align-items: center; gap: 10px; margin: -14px 0 16px; font-size: 16px; color: var(--text); }
    .side-toggle { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; cursor: pointer;
      color: var(--text); background: var(--surface); border: 1px solid var(--border); }
    .app-main { padding: 22px 16px 40px; }
  }
  /* Ciclos de vida en dos columnas cuando hay resultado: ajustes a la izquierda, resultado a la derecha */
  @media (min-width: 1200px) {
    .ciclos-layout:has(#cResultado:not([hidden])) { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 20px; align-items: start; }
    .ciclos-layout:has(#cResultado:not([hidden])) .ciclos-izq { position: sticky; top: 20px; }
    .ciclos-layout:has(#cResultado:not([hidden])) .gc-ciclos { grid-template-columns: 1fr; }
    .ciclos-layout:has(#cResultado:not([hidden])) #cDrop { padding: 1.5rem 1rem; }
    .ciclos-layout:has(#cResultado:not([hidden])) .ciclos-map { grid-template-columns: 1fr; }
    .ciclos-layout .ciclos-der { margin-top: 0; }
  }
  /* Entrada con perfil ficticio: solo aparece en el servidor local de pruebas */
  .demo-box { display: flex; flex-direction: column; gap: 4px; margin-top: 16px; padding: 12px 14px; border: 1px dashed var(--warn-border); border-radius: var(--radius); background: var(--warn-soft); font-size: 12.5px; color: var(--warn-soft-text); text-align: left; }
  .demo-box strong { font-size: 13px; }
  .demo-acts { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
  .demo-acts .btn { flex: 1; justify-content: center; }

  /* ── Vistas dentro de la página: Inicio, Entidades y Usuarios ── */
  .page-view[hidden] { display: none !important; }
  .page-view .entity-manager-card { width: 100%; max-height: none; padding: 0; background: none; border: 0; box-shadow: none; animation: none; }
  .page-view .entity-manager-header { display: none; }
  .page-view .entity-manager-body { overflow: visible; }
  .page-view .admin-card { width: 100%; }
  .side-view.active { background: var(--primary-soft); color: var(--primary-soft-text); }
  .side-theme { margin-bottom: 2px; }
  .side-theme svg { margin: 0 7px; }
  .tool-head.is-inicio h2 { font-size: 26px; }

  .card-lite { padding: 16px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .card-lite h3 { margin: 0 0 10px; font-size: 15px; font-weight: 700; color: var(--text); }
  .inicio-h { margin: 0 0 12px; font-size: 15px; font-weight: 700; color: var(--text); }
  .inicio-mod { display: flex; flex-direction: column; gap: 10px; padding: 16px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); transition: border-color .15s ease, box-shadow .15s ease; }
  .inicio-mod:not(.is-locked):hover { border-color: var(--dropzone-border-strong); box-shadow: var(--shadow-md); }
  .inicio-mod-h { display: flex; align-items: center; gap: 12px; }
  .inicio-mod-h .module-ico { width: 42px; height: 42px; border-radius: 12px; background: var(--grad-primary); color: #fff; box-shadow: var(--shadow-primary); }
  .inicio-mod-h h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--text); }
  .inicio-mod-h p { margin: 2px 0 0; font-size: 12px; color: var(--text-faint); }
  .inicio-mod-d { margin: 0; font-size: 13px; line-height: 1.5; color: var(--text-muted); flex: 1; }
  .inicio-mod-f { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
  .inicio-tools { display: flex; gap: 6px; flex-wrap: wrap; }
  .inicio-tool { padding: 5px 10px; min-height: 32px; font-family: inherit; font-size: 12px; font-weight: 600; color: var(--text-muted); background: var(--input-bg); border: 1px solid var(--border); border-radius: 999px; cursor: pointer; }
  button.inicio-tool:hover { color: var(--primary-soft-text); border-color: var(--dropzone-border-strong); }
  .inicio-mod.is-locked { opacity: .72; border-style: dashed; }
  .inicio-mod.is-locked .module-ico { background: var(--border-soft); color: var(--text-faint); box-shadow: none; }
  .inicio-lock { font-size: 12px; font-weight: 600; color: var(--text-faint); }
  .inicio-acciones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .inicio-accion { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; min-height: 44px; text-align: left; font-family: inherit; cursor: pointer;
    background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); }
  .inicio-accion strong { font-size: 13px; color: var(--text); }
  .inicio-accion span { font-size: 11.5px; color: var(--text-faint); }
  .inicio-accion:hover { border-color: var(--primary); background: var(--primary-soft); }
  .inicio-txt { margin: 0; font-size: 13px; line-height: 1.55; color: var(--text-muted); }
  .inicio-news { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
  @media (max-width: 640px) { .inicio-acciones { grid-template-columns: 1fr; } }

  /* ── Tarjeta de cuenta (pie de la barra) ── */
  .side-foot .user-chip { padding: 8px 10px 8px 8px; min-height: 52px; border-radius: 12px; }
  .user-chip-txt { display: flex; flex-direction: column; flex: 1; min-width: 0; text-align: left; line-height: 1.25; }
  .side-foot .user-chip-txt .user-chip-name { font-size: 13.5px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .user-chip-plan { font-size: 11.5px; font-weight: 500; color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .user-chip-plan.is-warn { color: var(--warn-soft-text); font-weight: 700; }

  /* ── Encabezado con vigencia (Inicio) ── */
  .tool-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
  .tool-acceso { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; font-size: 12.5px; font-weight: 600; color: var(--success-soft-text);
    background: var(--success-soft); border: 1px solid var(--success-border); border-radius: 999px; white-space: nowrap; }
  .tool-acceso[hidden] { display: none; }
  .tool-acceso.is-warn { color: var(--warn-soft-text); background: var(--warn-soft); border-color: var(--warn-border); }
  .tool-acceso.is-warn .license-dot { background: var(--warn); }

  /* ── Inicio ── */
  .inicio-mods { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; margin-bottom: 24px; }
  .inicio-mod-h { position: relative; }
  .inicio-tag { margin-left: auto; align-self: flex-start; padding: 3px 9px; font-size: 11px; font-weight: 700; color: var(--text-faint); background: var(--border-soft); border: 1px solid var(--border); border-radius: 999px; }
  .inicio-lock b { color: var(--text-muted); font-weight: 600; }
  .inicio-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 14px; align-items: start; }
  .inicio-news li { display: flex; gap: 12px; align-items: flex-start; }
  .inicio-news-f { flex-shrink: 0; min-width: 62px; padding: 3px 8px; font-size: 11px; font-weight: 700; text-align: center; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 999px; }
  .inicio-news strong { display: block; font-size: 13px; color: var(--text); }
  .inicio-news p { margin: 2px 0 0; font-size: 12.5px; line-height: 1.45; color: var(--text-muted); }
  @media (max-width: 900px) { .inicio-grid { grid-template-columns: 1fr; } }

  /* ── Entidades: lista a la izquierda, editor por pasos a la derecha ── */
  #entityManagerOverlay .entity-manager-hint { max-width: 900px; margin: -6px 0 18px; }
  .ent-layout { display: grid; grid-template-columns: minmax(280px, 340px) minmax(0, 1fr); gap: 18px; align-items: start; }
  .ent-list-panel { position: sticky; top: 20px; display: flex; flex-direction: column; gap: 10px; padding: 14px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .ent-list-h { display: flex; gap: 8px; }
  .ent-list-h input { flex: 1; min-width: 0; padding: 9px 12px; }
  .ent-list { display: flex; flex-direction: column; gap: 4px; max-height: calc(100vh - 330px); min-height: 120px; overflow-y: auto; margin: 0 -4px; padding: 0 4px; }
  .ent-list-empty { padding: 18px 8px; text-align: center; font-size: 13px; color: var(--text-faint); }
  .ent-row { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 6px 6px 6px 10px; border: 1px solid transparent; border-radius: 10px; }
  .ent-row:hover { background: var(--border-soft); }
  .ent-row.is-current { background: var(--primary-soft); border-color: var(--dropzone-border); }
  .ent-row.is-off { opacity: .6; }
  .ent-row .entity-card-dot { width: 9px; height: 9px; border-radius: 50%; }
  .ent-row-main { display: flex; flex-direction: column; gap: 1px; min-width: 0; padding: 4px 0; text-align: left; background: none; border: 0; cursor: pointer; font-family: inherit; color: var(--text); }
  .ent-row-main:disabled { cursor: default; }
  .ent-row-main strong { font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ent-row-main span { font-size: 11.5px; color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ent-row-acts { display: flex; gap: 2px; opacity: 0; transition: opacity .15s ease; }
  .ent-row:hover .ent-row-acts, .ent-row:focus-within .ent-row-acts, .ent-row.is-current .ent-row-acts { opacity: 1; }
  .ent-mini { padding: 5px 8px; min-height: 30px; font-family: inherit; font-size: 11.5px; font-weight: 600; color: var(--text-muted); background: none; border: 0; border-radius: 7px; cursor: pointer; }
  .ent-mini:hover { background: var(--surface-raised); color: var(--text); }
  .ent-mini.is-danger:hover { background: var(--danger-soft); color: var(--danger-soft-text); }
  .ent-row-ro { font-size: 11px; color: var(--text-faint); }
  .ent-save { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 10px; border-top: 1px solid var(--border); }
  .ent-save .entity-manager-status { font-size: 12px; color: var(--text-faint); }
  .ent-save .entity-manager-status.is-pending { color: var(--warn-soft-text); font-weight: 700; }
  .ent-backup summary { font-size: 12px; color: var(--text-faint); cursor: pointer; padding: 4px 0; }
  .ent-backup-body { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
  .ent-empty { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 28px; border: 1.5px dashed var(--border-strong); border-radius: var(--radius-lg); color: var(--text-muted); font-size: 13px; line-height: 1.5; }
  .ent-empty[hidden] { display: none; }
  .ent-empty strong { font-size: 15px; color: var(--text); }
  .ent-editor { gap: 14px; padding: 18px 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .ent-editor-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
  .ent-editor-h h3 { margin: 0; font-size: 17px; font-weight: 700; color: var(--text); }
  .ent-step { display: flex; flex-direction: column; gap: 12px; padding: 14px 16px; background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius); }
  .ent-step-h { display: flex; gap: 12px; align-items: flex-start; }
  .ent-step-n { flex-shrink: 0; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; font-size: 12px; font-weight: 700; color: #fff; background: var(--grad-primary); }
  .ent-step-h strong { display: block; font-size: 14px; color: var(--text); }
  .ent-step-h span { font-size: 12.5px; line-height: 1.45; color: var(--text-muted); }
  .ent-drop { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 18px; font-size: 13px; }
  .ent-grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .ent-grid2 textarea { width: 100%; font-family: var(--font-mono); font-size: 13px; }
  .ent-learn { display: flex; flex-direction: column; }
  .ent-learn-empty { margin: 0; padding: 10px 0; font-size: 12.5px; color: var(--text-faint); }
  .ent-learn-h, .ent-learn-row { display: grid; grid-template-columns: minmax(130px, .8fr) minmax(120px, .8fr) minmax(200px, 1.4fr); gap: 12px; align-items: start; }
  .ent-learn-h { padding: 0 0 6px; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-faint); border-bottom: 1px solid var(--border); }
  .ent-learn-row { padding: 9px 0; border-bottom: 1px solid var(--border); }
  .ent-learn-row:last-child { border-bottom: 0; }
  .ent-learn-k { padding-top: 8px; font-size: 13px; font-weight: 600; color: var(--text); }
  .ent-learn-v { padding-top: 8px; font-size: 13px; color: var(--success-soft-text); word-break: break-all; }
  .ent-learn-v.is-miss { color: var(--warn-soft-text); font-weight: 600; }
  .ent-learn-in { display: flex; flex-direction: column; gap: 3px; }
  .ent-learn-in input { padding: 8px 10px; font-size: 13px; }
  .ent-learn-st { font-size: 11.5px; color: var(--text-faint); }
  .ent-learn-st.is-ok { color: var(--success-soft-text); font-weight: 600; }
  .ent-learn-st.is-err { color: var(--danger-soft-text); font-weight: 600; }
  .ent-adv summary { font-size: 12.5px; font-weight: 600; color: var(--text-muted); cursor: pointer; padding: 4px 0; }
  .ent-adv .field-help { margin: 6px 0 10px; }
  .ent-adv input { width: 100%; font-family: var(--font-mono); font-size: 12.5px; }
  .ent-editor-f { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding-top: 4px; }
  .ent-editor-acts { display: flex; gap: 8px; }
  @media (max-width: 1100px) {
    .ent-layout { grid-template-columns: 1fr; }
    .ent-list-panel { position: static; }
    .ent-list { max-height: 360px; }
  }
  @media (max-width: 700px) {
    .ent-grid2, .ent-learn-h, .ent-learn-row { grid-template-columns: 1fr; }
    .ent-learn-h { display: none; }
    .ent-learn-k, .ent-learn-v { padding-top: 0; }
  }

  /* ── Usuarios: resumen, barra de herramientas y tabla ── */
  .page-view .admin-tabs { display: none; }
  .admin-resumen { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 16px; }
  .admin-stat { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; text-align: left; font-family: inherit; cursor: pointer;
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); transition: border-color .15s ease; }
  .admin-stat:hover:not(.is-static) { border-color: var(--primary); }
  .admin-stat.is-static { cursor: default; }
  .admin-stat span { font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .admin-stat strong { font-size: 24px; font-weight: 700; letter-spacing: -0.02em; color: var(--text); font-variant-numeric: tabular-nums; }
  .admin-stat.is-warn strong { color: var(--warn-soft-text); }
  .admin-stat.is-off strong { color: var(--danger-soft-text); }
  .page-view .admin-toolbar { align-items: center; flex-wrap: wrap; }
  .page-view .admin-toolbar input { flex: 1; min-width: 220px; }
  .page-view .admin-toolbar select { width: auto; min-width: 190px; }
  .page-view .admin-list { gap: 0; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; }
  .page-view .admin-row { grid-template-columns: minmax(220px, 1.5fr) minmax(150px, 1.1fr) minmax(150px, 1fr) 130px minmax(170px, 1.1fr) 74px;
    gap: 14px; padding: 12px 16px; background: none; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; }
  .page-view .admin-row:last-child { border-bottom: 0; }
  .page-view .admin-row:hover:not(.admin-row-head) { background: var(--border-soft); }
  .admin-row-head { padding-top: 10px !important; padding-bottom: 10px !important; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-faint); background: var(--input-bg) !important; }
  .admin-row-user { display: flex; align-items: center; gap: 12px; min-width: 0; }
  .admin-row-user .admin-row-avatar { flex-shrink: 0; }
  .admin-plan { font-size: 12.5px; font-weight: 600; color: var(--text); }
  .page-view .admin-list > .empty-state { margin: 0; border: 0; }
  .admin-form-top { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
  .admin-form-top h3 { margin: 0; font-size: 17px; font-weight: 700; color: var(--text); }
  .page-view #adminPaneForm form { max-width: 980px; padding: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .page-view .stats-head { margin-bottom: 12px; }
  @media (max-width: 1100px) {
    .page-view .admin-row { grid-template-columns: minmax(0, 1fr) auto; }
    .page-view .admin-row > div:not(.admin-row-user) { grid-column: 1; }
    .page-view .admin-row > .btn { grid-column: 2; grid-row: 1; }
    .admin-row-head { display: none !important; }
  }

  /* Números de los pasos visibles en ambos temas (la regla de .ent-step-h span les quitaba el blanco) */
  .ent-step-h .ent-step-n { color: #fff; font-size: 12px; }
  .ent-col { display: flex; flex-direction: column; gap: 12px; }

  /* ── Colores por módulo (etiquetas del plan y tarjetas) ── */
  .mod-chips { display: flex; flex-wrap: wrap; gap: 4px; }
  .mod-chip { display: inline-flex; align-items: center; padding: 3px 9px; font-size: 11.5px; font-weight: 700; border-radius: 999px; border: 1px solid transparent; white-space: nowrap; }
  .mod-chip.mod-soportes { color: var(--info-soft-text); background: var(--info-soft); border-color: var(--dropzone-border); }
  .mod-chip.mod-rips { color: var(--violet-soft-text); background: var(--violet-soft); }
  .mod-chip.mod-pacientes { color: var(--teal-soft-text); background: var(--teal-soft); }
  .mod-chip.mod-res202 { color: var(--orange-soft-text); background: var(--orange-soft); }
  .mod-chip.mod-admin { color: var(--primary-soft-text); background: var(--primary-soft); border-color: var(--dropzone-border); }
  html[data-theme="dark"] .mod-chip.mod-soportes { color: var(--primary-soft-text); background: var(--primary-soft); }

  /* ── Formulario de usuario por secciones ── */
  .page-view #adminUserForm .admin-form-section + .admin-form-grid { margin-top: 14px; }
  .admin-form-plan { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--border); }
  .admin-form-plan .admin-form-grid { margin-bottom: 14px; }
  .admin-form-plan .admin-modulos legend { font-size: 12px; font-weight: 600; color: var(--text-muted); margin-bottom: 8px; }
  .admin-modulos[hidden] { display: none; }
  .admin-hint-admin { margin: 0 0 12px; font-size: 12.5px; }
  .admin-form-plan .admin-modulos-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .admin-modulo { position: relative; align-items: flex-start; gap: 12px; padding: 12px 14px; transition: border-color .15s ease, background .15s ease; }
  .admin-modulo input { position: absolute; opacity: 0; pointer-events: none; }
  .admin-modulo:focus-within { box-shadow: 0 0 0 3px var(--primary-ring); }
  .admin-modulo-ico { display: grid; place-items: center; flex-shrink: 0; width: 34px; height: 34px; border-radius: 10px; color: var(--text-faint); background: var(--border-soft); }
  .admin-modulo-ico svg { width: 18px; height: 18px; }
  .admin-modulo-txt { flex: 1; min-width: 0; }
  .admin-modulo-check { flex-shrink: 0; width: 20px; height: 20px; margin-top: 2px; border-radius: 6px; border: 1.5px solid var(--border-strong); }
  .admin-modulo:has(input:checked) .admin-modulo-ico { color: #fff; background: var(--grad-primary); }
  .admin-modulo:has(input:checked) .admin-modulo-check { border-color: var(--primary); background: var(--primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / 14px no-repeat; }
  #adminFieldActivo { margin-top: 14px; }
  @media (max-width: 860px) { .admin-form-plan .admin-modulos-list { grid-template-columns: 1fr; } }

  /* ── Formulario de usuario: formulario + resumen en vivo ── */
  .admin-form-top { flex-direction: column; align-items: flex-start; gap: 2px; }
  .admin-back { padding: 4px 0; font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--text-muted); background: none; border: 0; cursor: pointer; }
  .admin-back:hover { color: var(--primary-soft-text); }
  .admin-form-top h3 { font-size: 20px; }
  .admin-form-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 18px; align-items: start; max-width: 1320px; }
  .page-view #adminPaneForm form { max-width: none; }
  .page-view #adminUserForm > .admin-form-grid { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
  .admin-preview { position: sticky; top: 20px; display: flex; flex-direction: column; gap: 14px; padding: 18px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .admin-preview-k { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
  .admin-preview-user { display: flex; align-items: center; gap: 12px; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
  .admin-preview-user .admin-row-avatar { flex-shrink: 0; width: 44px; height: 44px; font-size: 15px; }
  .admin-preview-user strong { display: block; font-size: 15px; color: var(--text); word-break: break-word; }
  .admin-preview-user span { font-size: 12px; color: var(--text-muted); }
  .admin-preview .is-empty { color: var(--text-faint) !important; font-weight: 500; }
  .admin-preview-dl { display: flex; flex-direction: column; gap: 12px; margin: 0; }
  .admin-preview-dl dt { font-size: 11.5px; font-weight: 600; color: var(--text-faint); margin-bottom: 3px; }
  .admin-preview-dl dd { margin: 0; font-size: 13px; font-weight: 600; color: var(--text); word-break: break-all; }
  .admin-preview-dl dd small { font-weight: 500; color: var(--text-muted); }
  .admin-preview-warn { color: var(--warn-soft-text); }
  /* Botones rápidos de vigencia, todos iguales */
  .admin-plan-quick { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 8px; }
  .admin-quick { min-height: 36px; padding: 6px 8px; font-family: inherit; font-size: 12.5px; font-weight: 600; color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border); border-radius: var(--radius-sm); cursor: pointer; }
  .admin-quick:hover { border-color: var(--primary); }
  .admin-quick:last-child { color: var(--text-muted); background: var(--input-bg); border-color: var(--border); }
  /* Tarjetas de módulos: una sola línea de subtítulo y sin doble borde al seleccionarlas */
  .admin-modulo { align-items: center; }
  .admin-modulo:focus-within { box-shadow: none; }
  .admin-modulo:has(input:focus-visible) { box-shadow: 0 0 0 3px var(--primary-ring); }
  .admin-modulo small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
  .admin-modulo-check { margin-top: 0; }
  @media (max-width: 1200px) {
    .admin-form-layout { grid-template-columns: 1fr; }
    .admin-preview { position: static; }
  }
  /* El ícono del módulo centrado en su cuadro (la regla general de .admin-modulo span lo apilaba arriba) */
  .admin-modulo .admin-modulo-ico { display: grid; place-items: center; flex-direction: initial; }
  .admin-modulo .admin-modulo-check { display: block; }
  .admin-modulo:not(:has(input:checked)) { background: var(--surface); }
  .admin-modulo:not(:has(input:checked)) strong { color: var(--text-muted); }

  /* ── Módulo Res. 202 ── */
  .r202-cabecera { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); gap: 16px; align-items: stretch; margin-bottom: 14px; }
  .r202-periodo { grid-template-columns: 1fr; margin: 0; align-content: start; }
  .r202-drop { margin: 0; padding: 1.5rem 1rem; }
  .r202-drop.is-compact { padding: 1rem; }
  .r202-drop.is-compact .drop-icon { display: none; }
  .r202-resumen { margin-bottom: 14px; }
  .r202-barra { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; margin-bottom: 14px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .r202-entrega { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .r202-entrega input, .r202-entrega select { padding: 9px 12px; }
  .r202-acciones { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
  .r202-nombre { margin: 0; font-size: 12px; color: var(--text-muted); }
  .r202-nombre code { font-family: var(--font-mono); font-size: 12px; color: var(--text); background: var(--input-bg); padding: 2px 6px; border-radius: 6px; }
  .r202-nombre span { color: var(--text-faint); }
  .r202-ok { margin: 0 0 14px; padding: 10px 12px; font-size: 13px; color: var(--success-soft-text); background: var(--success-soft); border: 1px solid var(--success-border); border-radius: var(--radius-sm); }
  .r202-info { margin: 0 0 14px; padding: 10px 12px; font-size: 13px; color: var(--info-soft-text); background: var(--info-soft); border: 1px solid var(--dropzone-border); border-radius: var(--radius-sm); }
  .r202-mapeo { margin-bottom: 14px; padding: 12px 14px; font-size: 13px; color: var(--warn-soft-text); background: var(--warn-soft); border: 1px solid var(--warn-border); border-radius: var(--radius); }
  .r202-mapeo summary { cursor: pointer; }
  .r202-mapeo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px 12px; margin-top: 10px; }
  .r202-mapeo-grid label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-size: 12px; color: var(--text); }
  .r202-mapeo-grid select { padding: 7px 10px; font-size: 12.5px; }
  .r202-mapeo-fila { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 10px; }
  .r202-mapeo-fila label { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--text); }
  .r202-mapeo-fila input, .r202-mapeo-fila select { width: auto; padding: 6px 10px; }
  .r202-grid { display: grid; grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.3fr); gap: 14px; align-items: start; }
  .r202-sec-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
  .r202-sec-h h3 { margin: 0; }
  .r202-sec-h h3 small { font-weight: 600; color: var(--text-faint); }
  .r202-reglas-lista { display: flex; flex-direction: column; gap: 4px; max-height: 560px; overflow-y: auto; }
  .r202-regla { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; text-align: left; font-family: inherit; cursor: pointer; background: none; border: 1px solid transparent; border-radius: var(--radius-sm); }
  .r202-regla:hover { background: var(--border-soft); }
  .r202-regla.is-on { background: var(--primary-soft); border-color: var(--dropzone-border); }
  .r202-regla-t { display: flex; flex-direction: column; min-width: 0; }
  .r202-regla-t b { font-size: 12.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .r202-regla-t small { font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .r202-regla strong { font-size: 14px; color: var(--text); font-variant-numeric: tabular-nums; }
  .r202-sev { display: inline-block; padding: 2px 8px; font-size: 11px; font-weight: 700; border-radius: 999px; white-space: nowrap; }
  .r202-sev.is-e { color: var(--danger-soft-text); background: var(--danger-soft); }
  .r202-sev.is-w { color: var(--warn-soft-text); background: var(--warn-soft); }
  .r202-nota { margin: 10px 0 0; font-size: 12px; line-height: 1.5; color: var(--text-faint); }
  .r202-filtros { display: flex; gap: 8px; }
  .r202-filtros input { width: 220px; padding: 7px 10px; font-size: 13px; }
  .r202-filtros select { width: auto; padding: 7px 34px 7px 10px; font-size: 13px; }
  .r202-filas { display: flex; flex-direction: column; }
  .r202-fila { display: grid; grid-template-columns: 70px minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: 9px 6px; border-bottom: 1px solid var(--border); }
  .r202-fila:last-child { border-bottom: 0; }
  .r202-fila.is-on { background: var(--primary-soft); border-radius: var(--radius-sm); }
  .r202-linea { font-size: 12px; color: var(--text-faint); font-variant-numeric: tabular-nums; }
  .r202-persona { display: flex; flex-direction: column; min-width: 0; }
  .r202-persona b { font-size: 13px; color: var(--text); }
  .r202-persona small { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .r202-cuentas { display: flex; gap: 4px; }
  .r202-pager { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 10px; font-size: 12.5px; color: var(--text-muted); }
  .r202-derecha { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
  .r202-editor { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); scroll-margin-top: 16px; }
  .r202-editor .r202-campos { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
  .r202-hallazgos { display: flex; flex-direction: column; gap: 8px; margin: 0 0 14px; }
  .r202-hallazgos li { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; color: var(--text); }
  .r202-hallazgos small { display: block; color: var(--text-muted); font-size: 12px; }
  .r202-campos { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
  .r202-campo { display: flex; flex-direction: column; gap: 5px; margin: 0; padding: 10px 12px; background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius-sm); }
  .r202-campo.is-falla { border-color: var(--danger-border); }
  .r202-campo span { display: flex; flex-direction: column; }
  .r202-campo b { font-size: 12.5px; color: var(--text); }
  .r202-campo small { font-size: 11.5px; font-weight: 500; color: var(--text-faint); }
  .r202-campo input, .r202-campo select { padding: 8px 10px; font-size: 13px; }
  .r202-permitido { white-space: pre-line; }
  .r202-editor-f { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
  .r202-editor-f label { display: flex; flex-direction: column; gap: 4px; margin: 0; min-width: 280px; }
  .r202-editor-f > div { display: flex; gap: 8px; }
  @media (max-width: 1100px) { .r202-grid, .r202-cabecera { grid-template-columns: 1fr; } }
  @media (max-width: 700px) {
    .r202-entrega { grid-template-columns: 1fr; }
    .r202-fila { grid-template-columns: minmax(0, 1fr) auto; }
    .r202-linea, .r202-cuentas { grid-column: 1; }
    .r202-filtros { flex-wrap: wrap; } .r202-filtros input { width: 100%; }
  }

  /* ═══ Correcciones automáticas (Res. 202) ═══ */
  .r202-corr { margin-bottom: 16px; }
  .r202-corr-h { display: flex; flex-direction: column; gap: 2px; margin: 16px 0 8px; font-size: 13px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; color: var(--text-muted); }
  .r202-corr-h span { font-size: 12.5px; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--text-faint); }
  .r202-corr-h.is-regla { color: var(--warn-soft-text); }
  html[data-theme="dark"] .r202-corr-h.is-regla { color: var(--warn); }
  .r202-corr-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 8px; }
  .r202-op { border: 1px solid var(--border); border-radius: var(--radius); background: var(--input-bg); transition: border-color .15s, background .15s, box-shadow .15s; }
  .r202-op:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 1px var(--primary) inset; }
  .r202-op.is-vacia { opacity: .55; }
  .r202-op-main { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: start; padding: 12px 14px; cursor: pointer; }
  .r202-op.is-vacia .r202-op-main { cursor: default; }
  .r202-op-main input { width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--primary); cursor: inherit; }
  .r202-op-t { display: grid; gap: 3px; min-width: 0; }
  .r202-op-t b { font-size: 13.5px; color: var(--text); }
  .r202-op-t small { font-size: 12px; line-height: 1.45; color: var(--text-muted); }
  .r202-op-n { font-size: 12px; font-weight: 700; white-space: nowrap; color: var(--primary-soft-text); background: var(--primary-soft); padding: 3px 9px; border-radius: 999px; }
  .r202-op.is-vacia .r202-op-n { color: var(--text-faint); background: var(--border-soft); }
  .r202-op-ej { padding: 0 14px 10px 42px; font-size: 12px; }
  .r202-op-ej summary { cursor: pointer; font-weight: 600; color: var(--primary-soft-text); width: max-content; }
  .r202-op-ej ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
  .r202-op-ej li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--text-muted); }
  .r202-op-ej li span { flex-basis: 100%; font-size: 11.5px; color: var(--text-faint); }
  .r202-op-ej code { font-family: var(--font-mono); font-size: 11.5px; padding: 2px 6px; border-radius: 6px; background: var(--danger-soft); color: var(--danger-soft-text); white-space: pre-wrap; word-break: break-all; }
  .r202-op-ej code.is-nuevo { background: var(--success-soft); color: var(--success-soft-text); }
  .r202-op-ej i { font-style: normal; color: var(--text-faint); }
  .r202-op-ej .r202-nota { margin: 6px 0 0; }
  .r202-corr-sin { margin-top: 8px; font-size: 12.5px; color: var(--text-faint); }
  .r202-corr-sin summary { cursor: pointer; width: max-content; }
  .r202-corr-sin ul { margin: 6px 0 0; padding-left: 18px; display: grid; gap: 4px; }
  .r202-corr-sin b { color: var(--text-muted); }
  .r202-corr-pie { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
  .r202-corr-pie span { font-size: 13px; font-weight: 600; color: var(--text-muted); }
  @media (max-width: 720px) { .r202-corr-lista { grid-template-columns: 1fr; } .r202-op-ej { padding-left: 14px; } }

  /* ═══ Calendario propio (96-calendario.js) ═══ */
  .gc-fecha { position: relative; }
  .gc-fecha-nativo { display: none !important; }
  .gc-fecha-btn { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 10px 14px; font-family: inherit; font-size: 14px; text-align: left; color: var(--text); background: var(--input-bg); border: 1px solid var(--border-strong); border-radius: var(--radius); cursor: pointer; transition: border-color .15s, box-shadow .15s, background .15s; }
  .gc-fecha-btn:hover { background: var(--input-bg-hover); border-color: var(--primary); }
  .gc-fecha-btn:focus-visible, .gc-fecha-btn[aria-expanded="true"] { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); }
  .gc-fecha-ico { flex: none; color: var(--primary); }
  .gc-fecha-txt { flex: 1; min-width: 0; font-weight: 600; font-variant-numeric: tabular-nums; }
  .gc-fecha-btn.is-vacio .gc-fecha-txt { font-weight: 500; color: var(--text-faint); }
  .gc-fecha-flecha { flex: none; color: var(--text-faint); transition: transform .2s ease; }
  .gc-fecha-btn[aria-expanded="true"] .gc-fecha-flecha { transform: rotate(180deg); }
  .admin-new .gc-fecha-btn { min-height: 36px; padding: 7px 10px; font-size: 13px; }

  .gc-cal { position: absolute; z-index: 80; top: calc(100% + 8px); left: 0; width: 304px; max-width: calc(100vw - 32px); padding: 12px; background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); animation: gcCalIn .16s ease-out; outline: none; }
  .gc-cal.is-arriba { top: auto; bottom: calc(100% + 8px); }
  .gc-cal.is-der { left: auto; right: 0; }
  .gc-cal.is-cambio .gc-cal-dias, .gc-cal.is-cambio .gc-cal-rejilla { animation: gcCalFade .14s ease-out; }
  .gc-cal-cab { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
  .gc-cal-titulo { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 7px 8px; font-family: inherit; font-size: 14px; font-weight: 700; text-transform: capitalize; color: var(--text); background: none; border: 0; border-radius: 10px; cursor: pointer; }
  .gc-cal-titulo:hover:not(:disabled) { background: var(--primary-soft); color: var(--primary-soft-text); }
  .gc-cal-titulo:disabled { cursor: default; }
  .gc-cal-titulo .gc-fecha-flecha { color: currentColor; opacity: .6; }
  .gc-cal-nav { flex: none; display: grid; place-items: center; width: 34px; height: 34px; color: var(--text-muted); background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .gc-cal-nav:hover { color: var(--primary-soft-text); background: var(--primary-soft); border-color: transparent; }
  .gc-cal-semana { display: grid; grid-template-columns: repeat(7, 1fr); margin-bottom: 4px; font-size: 11px; font-weight: 700; text-align: center; text-transform: uppercase; letter-spacing: .04em; color: var(--text-faint); }
  .gc-cal-semana span { padding: 4px 0; }
  .gc-cal-dias { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
  .gc-cal-dia { position: relative; aspect-ratio: 1; display: grid; place-items: center; padding: 0; font-family: inherit; font-size: 13px; font-weight: 500; font-variant-numeric: tabular-nums; color: var(--text); background: none; border: 0; border-radius: 10px; cursor: pointer; transition: background .12s, color .12s; }
  .gc-cal-dia:hover:not(:disabled) { background: var(--primary-soft); color: var(--primary-soft-text); }
  .gc-cal-dia.is-fuera { color: var(--text-faint); opacity: .5; }
  .gc-cal-dia.is-hoy { font-weight: 800; color: var(--primary-soft-text); }
  .gc-cal-dia.is-hoy::after { content: ""; position: absolute; bottom: 5px; left: 50%; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: currentColor; }
  .gc-cal-dia.is-sel, .gc-cal-op.is-sel { color: #fff; font-weight: 700; background: var(--grad-primary); box-shadow: var(--shadow-primary); opacity: 1; border-color: transparent; }
  .gc-cal-dia.is-sel:hover, .gc-cal-op.is-sel:hover { color: #fff; background: var(--grad-primary); }
  .gc-cal-dia:disabled { opacity: .28; cursor: not-allowed; }
  .gc-cal-dia:focus-visible, .gc-cal-op:focus-visible, .gc-cal-nav:focus-visible, .gc-cal-titulo:focus-visible, .gc-cal-link:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
  .gc-cal-rejilla { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
  .gc-cal-op { padding: 14px 0; font-family: inherit; font-size: 13.5px; font-weight: 600; text-transform: capitalize; font-variant-numeric: tabular-nums; color: var(--text); background: none; border: 1px solid var(--border); border-radius: 12px; cursor: pointer; }
  .gc-cal-op:hover { background: var(--primary-soft); color: var(--primary-soft-text); border-color: transparent; }
  .gc-cal-op.is-hoy:not(.is-sel) { color: var(--primary-soft-text); border-color: var(--primary); }
  .gc-cal-pie { display: flex; justify-content: space-between; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
  .gc-cal-link { padding: 6px 10px; font-family: inherit; font-size: 13px; font-weight: 700; color: var(--primary-soft-text); background: none; border: 0; border-radius: 8px; cursor: pointer; }
  .gc-cal-link:hover:not(:disabled) { background: var(--primary-soft); }
  .gc-cal-link:disabled { opacity: .4; cursor: not-allowed; }
  .gc-cal-link.is-suave { color: var(--text-muted); font-weight: 600; }
  @keyframes gcCalIn { from { opacity: 0; transform: translateY(-4px) scale(.98); } to { opacity: 1; transform: none; } }
  @keyframes gcCalFade { from { opacity: .3; } to { opacity: 1; } }
  @media (prefers-reduced-motion: reduce) { .gc-cal, .gc-cal.is-cambio .gc-cal-dias, .gc-cal.is-cambio .gc-cal-rejilla { animation: none; } }

  /* Avisos del validador que se cierran solos o con la × */
  .r202-aviso { display: flex; align-items: flex-start; gap: 10px; transition: opacity .3s ease, transform .3s ease; }
  .r202-aviso p { flex: 1; margin: 0; }
  .r202-aviso.is-saliendo { opacity: 0; transform: translateY(-4px); }
  .r202-aviso-x { flex: none; display: grid; place-items: center; width: 24px; height: 24px; margin: -2px -4px -2px 0; padding: 0; color: inherit; background: none; border: 0; border-radius: 6px; opacity: .7; cursor: pointer; }
  .r202-aviso-x:hover { opacity: 1; background: rgba(127,127,127,.18); }
  .r202-aviso-x:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; opacity: 1; }

  /* Fechas del editor de registros: texto + calendario + comodín */
  .r202-campo label { cursor: pointer; }
  .r202-fecha { display: flex; gap: 6px; align-items: stretch; }
  .r202-fecha > input { flex: 1; min-width: 0; font-variant-numeric: tabular-nums; }
  .r202-fecha .gc-fecha { flex: none; }
  .gc-fecha-btn.is-icono { width: 40px; min-height: 0; height: 100%; padding: 0; justify-content: center; }
  .gc-fecha-btn.is-icono .gc-fecha-txt, .gc-fecha-btn.is-icono .gc-fecha-flecha { display: none; }
  .r202-fecha .gc-cal { left: auto; right: 0; }
  .r202-comodin { margin-top: 2px; }

  /* Barra de acciones del validador 202: quitar a la izquierda, corregir y menú «Descargar» */
  .r202-acciones { align-items: center; }
  .r202-quitar { margin-right: auto; }
  .r202-menu { position: relative; }
  .r202-menu > .btn { display: inline-flex; align-items: center; gap: 7px; }
  .r202-menu-flecha { transition: transform .2s ease; opacity: .85; }
  .r202-menu > .btn[aria-expanded="true"] .r202-menu-flecha { transform: rotate(180deg); }
  .r202-menu-lista { position: absolute; z-index: 70; top: calc(100% + 8px); right: 0; width: 320px; max-width: calc(100vw - 32px); padding: 6px; background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); animation: gcCalIn .16s ease-out; }
  .r202-menu-lista[hidden] { display: none; }
  .r202-menu-op { display: grid; gap: 2px; width: 100%; padding: 9px 12px; font-family: inherit; text-align: left; color: var(--text); background: none; border: 0; border-radius: 10px; cursor: pointer; }
  .r202-menu-op b { font-size: 13.5px; }
  .r202-menu-op small { font-size: 12px; line-height: 1.4; color: var(--text-muted); }
  .r202-menu-op:hover, .r202-menu-op:focus-visible { outline: none; background: var(--primary-soft); }
  .r202-menu-op:hover b, .r202-menu-op:focus-visible b { color: var(--primary-soft-text); }
  .r202-menu-lista hr { margin: 6px 8px; border: 0; border-top: 1px solid var(--border); }
  @media (prefers-reduced-motion: reduce) { .r202-menu-lista { animation: none; } }
  @media (max-width: 560px) { .r202-quitar { order: 3; margin: 0; } .r202-acciones { justify-content: stretch; } }

  /* Ventana «Descargar TXT» (Res. 202) */
  .r202-txt-card { width: min(540px, 100%); text-align: left; padding: 24px; }
  .r202-txt-cab { display: flex; gap: 14px; align-items: center; margin-bottom: 16px; }
  .r202-txt-cab .ui-dialog-icon { flex: none; margin: 0; }
  .r202-txt-cab h2 { margin: 0 0 2px; }
  .ui-dialog-card .r202-txt-cab p { margin: 0; font-size: 13px; }
  .ui-dialog-card .r202-txt-alerta { margin: 0 0 14px; padding: 10px 12px; font-size: 12.5px; line-height: 1.5; color: var(--warn-soft-text); background: var(--warn-soft); border: 1px solid var(--warn-border); border-radius: var(--radius-sm); }
  .r202-txt-campos { display: grid; gap: 12px; }
  .r202-txt-par { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .r202-txt-campo { display: grid; gap: 6px; align-content: start; }
  .r202-txt-campo label { display: grid; gap: 2px; font-size: 13px; font-weight: 600; color: var(--text); }
  .r202-txt-campo label span { font-size: 11.5px; font-weight: 500; line-height: 1.4; color: var(--text-faint); }
  .r202-txt-campo input, .r202-txt-campo select { width: 100%; }
  .r202-txt-nombre { display: grid; gap: 4px; margin: 16px 0 18px; padding: 12px; background: var(--input-bg); border: 1px dashed var(--border-strong); border-radius: var(--radius); }
  .r202-txt-nombre span { font-size: 11.5px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--text-faint); }
  .r202-txt-nombre code { font-family: var(--font-mono); font-size: 13px; color: var(--text); word-break: break-all; }
  .r202-txt-nombre small { font-size: 11.5px; color: var(--text-faint); }
  @media (max-width: 520px) { .r202-txt-par { grid-template-columns: 1fr; } }
  #r202Codigo { text-transform: uppercase; }
  .r202-barra { flex-direction: row; padding: 10px 12px; }
  .r202-barra .r202-acciones { flex: 1; }

  /* Enlace a la plantilla en blanco bajo la zona de carga (Res. 202) */
  .r202-carga { display: grid; gap: 8px; min-width: 0; }
  .r202-plantilla { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--text-muted); text-align: center; }
  .r202-plantilla[hidden] { display: none; }
  .r202-link { padding: 0; font-family: inherit; font-size: inherit; font-weight: 700; color: var(--primary-soft-text); background: none; border: 0; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
  .r202-link:hover { color: var(--primary); }

  /* Menú «Descargar» v2: iconos por tipo, secciones y formato */
  .r202-menu-lista { width: 330px; padding: 8px; display: grid; gap: 4px; }
  .r202-menu-grupo { display: grid; gap: 2px; }
  .r202-menu-grupo + .r202-menu-grupo { padding-top: 6px; margin-top: 2px; border-top: 1px solid var(--border); }
  .r202-menu-t { padding: 6px 10px 4px; font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-faint); }
  .r202-menu-op { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 8px 10px; transition: background .12s; }
  .r202-menu-txt { display: grid; gap: 1px; min-width: 0; }
  .r202-menu-txt b { font-size: 13.5px; font-weight: 650; }
  .r202-menu-txt small { font-size: 12px; line-height: 1.35; color: var(--text-muted); }
  .r202-menu-ico { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; transition: transform .15s ease; }
  .r202-menu-ico.is-azul { color: var(--info-soft-text); background: var(--info-soft); }
  .r202-menu-ico.is-verde { color: var(--success-soft-text); background: var(--success-soft); }
  .r202-menu-ico.is-ambar { color: var(--warn-soft-text); background: var(--warn-soft); }
  .r202-menu-ico.is-violeta { color: var(--violet-soft-text); background: var(--violet-soft); }
  .r202-menu-ico.is-gris { color: var(--text-muted); background: var(--border-soft); border: 1px solid var(--border); }
  html[data-theme="dark"] .r202-menu-ico.is-azul { color: #93c5fd; background: rgba(59,130,246,.16); }
  html[data-theme="dark"] .r202-menu-ico.is-verde { color: #6ee7b7; background: rgba(16,185,129,.15); }
  html[data-theme="dark"] .r202-menu-ico.is-ambar { color: #fcd34d; background: rgba(245,158,11,.15); }
  html[data-theme="dark"] .r202-menu-ico.is-violeta { color: #c4b5fd; background: rgba(139,92,246,.17); }
  .r202-menu-ext { font-family: var(--font-mono); font-size: 10.5px; font-weight: 600; color: var(--text-faint); padding: 2px 6px; border: 1px solid var(--border); border-radius: 6px; }
  .r202-menu-op:hover .r202-menu-ico, .r202-menu-op:focus-visible .r202-menu-ico { transform: scale(1.06); }
  .r202-menu-op:hover .r202-menu-ext, .r202-menu-op:focus-visible .r202-menu-ext { color: var(--primary-soft-text); border-color: var(--primary); }
  #r202Editor:empty { display: none; }   /* sin editor abierto no suma el espacio de la columna */

  /* ═══ Lista desplegable propia (97-selector.js) ═══ */
  .gc-sel { position: relative; min-width: 0; }
  .gc-sel-nativo { display: none !important; }
  .gc-sel-btn { display: flex; align-items: center; gap: 8px; width: 100%; padding: 11px 12px 11px 14px; font-family: inherit; font-size: 14px; line-height: 1.35; text-align: left; color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-sm); cursor: pointer; transition: border-color .2s, box-shadow .2s, background-color .2s; }
  .gc-sel-btn:hover:not(:disabled) { border-color: var(--border-strong); background: var(--input-bg-hover); }
  .gc-sel-btn:focus-visible, .gc-sel-btn[aria-expanded="true"] { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); }
  .gc-sel-btn:disabled { opacity: .6; cursor: not-allowed; }
  .gc-sel-txt { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .gc-sel-btn.is-vacio .gc-sel-txt { color: var(--text-faint); }
  .gc-sel-flecha { flex: none; color: var(--text-faint); transition: transform .2s ease; }
  .gc-sel-btn[aria-expanded="true"] .gc-sel-flecha { transform: rotate(180deg); color: var(--primary); }
  .r202-campo .gc-sel-btn, .r202-mapeo-grid .gc-sel-btn, .r202-mapeo-fila .gc-sel-btn, .admin-new .gc-sel-btn { padding: 8px 10px; font-size: 13px; }
  .gc-sel:has(> .agrup-queue-filter), .admin-toolbar .gc-sel, .r202-mapeo-fila .gc-sel { width: auto; flex: 0 1 auto; min-width: 190px; }
  .agrup-queue-toolbar .gc-sel-btn { min-height: 44px; border-radius: 12px; font-size: 13px; }

  .gc-sel-pop { position: fixed; z-index: 3000; display: flex; flex-direction: column; max-width: min(440px, calc(100vw - 16px)); padding: 6px; background: var(--surface-raised); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow-xl); animation: gcCalIn .14s ease-out; overflow: hidden; }
  .gc-sel-pop.is-arriba { animation-name: gcSelArriba; }
  .gc-sel-lista { flex: 1; min-height: 0; overflow-y: auto; display: grid; align-content: start; gap: 1px; outline: none; overscroll-behavior: contain; }
  .gc-sel-op { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 8px 10px; font-size: 13.5px; line-height: 1.35; color: var(--text); border-radius: 8px; cursor: pointer; }
  .gc-sel-op[hidden], .gc-sel-grupo[hidden] { display: none; }
  .gc-sel-op.is-activo { color: var(--primary-soft-text); background: var(--primary-soft); }
  .gc-sel-op.is-sel { font-weight: 650; }
  .gc-sel-op[aria-disabled] { opacity: .45; cursor: not-allowed; }
  .gc-sel-check { flex: none; color: var(--primary); opacity: 0; }
  .gc-sel-op.is-sel .gc-sel-check { opacity: 1; }
  .gc-sel-grupo { padding: 8px 10px 4px; font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-faint); }
  .gc-sel-buscar { display: flex; align-items: center; gap: 8px; margin: -2px -2px 6px; padding: 4px 10px 8px; color: var(--text-faint); border-bottom: 1px solid var(--border); }
  html .gc-sel-buscar input { padding: 6px 0; font-size: 13px; background: transparent; border: 0; box-shadow: none; }
  html .gc-sel-buscar input:focus { box-shadow: none; }
  @keyframes gcSelArriba { from { opacity: 0; transform: translateY(4px) scale(.98); } to { opacity: 1; transform: none; } }
  @media (prefers-reduced-motion: reduce) { .gc-sel-pop { animation: none; } }

  /* Filtro segmentado y buscador de «Registros con hallazgos» (Res. 202) */
  .r202-filtros { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
  .r202-seg { display: inline-flex; gap: 2px; padding: 3px; background: var(--input-bg); border: 1px solid var(--border); border-radius: 12px; }
  .r202-seg-op { display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px; font-family: inherit; font-size: 13px; font-weight: 600; color: var(--text-muted); background: none; border: 0; border-radius: 9px; cursor: pointer; transition: background .15s, color .15s; }
  .r202-seg-op span { font-size: 11.5px; font-weight: 700; font-variant-numeric: tabular-nums; padding: 1px 7px; border-radius: 999px; color: var(--text-faint); background: var(--border-soft); }
  .r202-seg-op:hover { color: var(--text); }
  .r202-seg-op.is-on { color: var(--text); background: var(--surface-raised); box-shadow: var(--shadow-sm), 0 0 0 1px var(--border); }
  .r202-seg-op.is-on span { color: var(--primary-soft-text); background: var(--primary-soft); }
  .r202-seg-op.is-error.is-on span { color: var(--danger-soft-text); background: var(--danger-soft); }
  .r202-seg-op.is-warning.is-on span { color: var(--warn-soft-text); background: var(--warn-soft); }
  .r202-seg-op:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
  .r202-buscar { position: relative; display: flex; align-items: center; flex: 0 1 260px; margin: 0; color: var(--text-faint); cursor: text; }
  .r202-buscar svg { position: absolute; left: 11px; pointer-events: none; }
  html .r202-filtros .r202-buscar input { width: 100%; padding: 8px 10px 8px 32px; font-size: 13px; }
  @media (max-width: 720px) { .r202-buscar { flex-basis: 100%; } .r202-seg { width: 100%; } .r202-seg-op { flex: 1; justify-content: center; padding: 6px 8px; } }

  /* ═══ Estadísticas por módulo y por usuario (ajuste 14) ═══ */
  .stats-filtros { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
  .stats-filtro-u { display: grid; gap: 4px; flex: 0 1 360px; min-width: 220px; }
  .stats-filtro-u label { margin: 0; }
  .stats-cards.stats-cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .stats-card strong em { font-size: 15px; font-style: normal; font-weight: 600; color: var(--text-faint); }
  .stats-sec-h { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px; margin: 18px 0 8px; }
  .stats-sec-h strong { font-size: 14px; color: var(--text); }
  .stats-sec-h span { font-size: 12px; color: var(--text-faint); }
  .stats-mods { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
  .stats-mod { position: relative; display: grid; gap: 2px; padding: 14px; font-family: inherit; text-align: left; color: var(--text); background: var(--card-translucent); border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; overflow: hidden; transition: border-color .15s, box-shadow .15s, transform .15s; }
  .stats-mod::before { content: ""; position: absolute; inset: 0 0 auto; height: 3px; background: var(--mod-color, var(--primary)); opacity: .85; }
  .stats-mod.mod-soportes { --mod-color: #3b82f6; } .stats-mod.mod-rips { --mod-color: #8b5cf6; } .stats-mod.mod-pacientes { --mod-color: #14b8a6; } .stats-mod.mod-res202 { --mod-color: #f97316; }
  .stats-mod:hover { border-color: var(--border-strong); transform: translateY(-1px); }
  .stats-mod.is-on { border-color: var(--mod-color); box-shadow: 0 0 0 1px var(--mod-color) inset, var(--shadow-md); }
  .stats-mod:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  .stats-mod-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
  .stats-mod-h small { font-size: 11px; color: var(--text-faint); white-space: nowrap; }
  .stats-mod > strong { font-size: 26px; font-weight: 700; letter-spacing: -.02em; line-height: 1.15; font-variant-numeric: tabular-nums; }
  .stats-mod-q { font-size: 12.5px; color: var(--text-muted); }
  .stats-mod-pie { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); font-size: 12px; color: var(--text-faint); }
  .stats-mod-pie b { color: var(--text); font-variant-numeric: tabular-nums; }
  .stats-quitar { margin-left: 8px; padding: 2px 8px; font-family: inherit; font-size: 11.5px; font-weight: 600; color: var(--primary-soft-text); background: var(--primary-soft); border: 0; border-radius: 999px; cursor: pointer; }
  .stats-line.is-denso .sl-pt { r: 1.6; }
  .stats-usuario { display: flex; align-items: center; gap: 14px; padding: 14px; margin-bottom: 12px; background: var(--card-translucent); border: 1px solid var(--border); border-radius: var(--radius); }
  .stats-avatar { flex: none; display: grid; place-items: center; width: 46px; height: 46px; font-size: 15px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 50%; }
  .stats-usuario-t { flex: 1; min-width: 0; display: grid; gap: 2px; }
  .stats-usuario-t strong { font-size: 15px; color: var(--text); }
  .stats-usuario-t > span { font-size: 12.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .stats-usuario-m { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 4px; }
  .stats-usuario-m small { font-size: 12px; color: var(--text-faint); }
  .stats-list li:has(> .stats-top) { display: block; }
  .stats-top { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px; width: 100%; padding: 6px 8px; margin: 0 -8px; font-family: inherit; font-size: 13px; text-align: left; color: var(--text); background: none; border: 0; border-radius: 8px; cursor: pointer; box-sizing: content-box; }
  .stats-top:hover { background: var(--primary-soft); }
  .stats-top .stats-li-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .stats-top-m { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
  .stats-top-m .mod-chip { padding: 1px 7px; font-size: 10.5px; }
  .stats-top b { font-variant-numeric: tabular-nums; }
  @media (max-width: 1100px) { .stats-mods, .stats-cards.stats-cards-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  @media (max-width: 560px) { .stats-mods, .stats-cards.stats-cards-4 { grid-template-columns: 1fr; } .stats-top { grid-template-columns: minmax(0, 1fr) auto; } .stats-top-m { grid-column: 1 / -1; justify-content: flex-start; } }

  /* Gráfico con una línea por módulo (cada uno con su color) e ingresos en gris punteado */
  .sl-line-soportes { stroke: #3b82f6; } .sl-pt-soportes { fill: #3b82f6; } .sl-stop-soportes { stop-color: #3b82f6; }
  .sl-line-rips { stroke: #8b5cf6; } .sl-pt-rips { fill: #8b5cf6; } .sl-stop-rips { stop-color: #8b5cf6; }
  .sl-line-pacientes { stroke: #14b8a6; } .sl-pt-pacientes { fill: #14b8a6; } .sl-stop-pacientes { stop-color: #14b8a6; }
  .sl-line-res202 { stroke: #f97316; } .sl-pt-res202 { fill: #f97316; } .sl-stop-res202 { stop-color: #f97316; }
  .sl-line-ing { stroke: var(--text-faint); stroke-width: 2; } .sl-pt-ing { fill: var(--text-faint); }
  .stats-line.is-anim .sl-line.sl-line-ing { stroke-dasharray: 5 5; stroke-dashoffset: 0; animation: slFade .5s ease .3s both; }
  .stats-line .sl-line-ing { stroke-dasharray: 5 5; }
  .stats-legend i.soportes, .sl-tip i.soportes { background: #3b82f6; }
  .stats-legend i.rips, .sl-tip i.rips { background: #8b5cf6; }
  .stats-legend i.pacientes, .sl-tip i.pacientes { background: #14b8a6; }
  .stats-legend i.res202, .sl-tip i.res202 { background: #f97316; }
  .stats-legend i.ing, .sl-tip i.ing { background: transparent; border: 2px dashed var(--text-faint); width: 10px; height: 10px; box-sizing: border-box; }
  .stats-legend { flex-wrap: wrap; justify-content: flex-end; row-gap: 4px; }
  .stats-ley { display: inline-flex; align-items: center; gap: 6px; }
  .stats-ley.is-cero { opacity: .45; }
  .sl-pt.is-cero:not(.is-on) { visibility: hidden; }   /* con varias series, los ceros no llenan la base de puntos */
  /* Zona de carga de carpetas (Soportes) con ícono, como las de los demás módulos */
  .agrup-drop { padding: 1.4rem 1rem 1.25rem; }
  .agrup-drop-ico { display: grid; place-items: center; width: 44px; height: 44px; margin: 0 auto 8px; border-radius: 12px; color: var(--primary-soft-text); background: var(--primary-soft); border: 1px solid var(--dropzone-border); transition: transform .2s ease; }
  .agrup-drop:hover .agrup-drop-ico, .agrup-drop.over .agrup-drop-ico { transform: translateY(-2px); }
  .agrup-drop:focus-visible { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px var(--primary-ring); }

  /* ═══ Módulo Glosas (prototipo) ═══ */
  .gl-proto { margin-bottom: 14px; }
  .gl-ayuda { display: block; margin-top: 4px; font-size: 11.5px; line-height: 1.4; color: var(--text-faint); }
  .gl-resumen { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .gl-resumen .admin-stat small { display: block; font-size: 11.5px; color: var(--text-faint); margin-top: 2px; }
  .gl-conceptos { margin-bottom: 14px; }
  .gl-barras { display: grid; gap: 6px; }
  .gl-barra { display: grid; grid-template-columns: minmax(150px, 220px) minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 8px 10px; font-family: inherit; text-align: left; color: var(--text); background: none; border: 1px solid transparent; border-radius: 10px; cursor: pointer; }
  .gl-barra:hover { background: var(--surface-2); }
  .gl-barra.is-on { border-color: var(--gl-color); background: color-mix(in srgb, var(--gl-color) 8%, transparent); }
  .gl-barra-t { display: grid; gap: 1px; }
  .gl-barra-t b { font-size: 13px; }
  .gl-barra-t small { font-size: 11.5px; color: var(--text-faint); }
  .gl-barra-v { height: 10px; background: var(--surface-2); border-radius: 999px; overflow: hidden; }
  .gl-barra-v i { display: block; height: 100%; background: var(--gl-color); border-radius: 999px; }
  .gl-barra strong { font-size: 13px; font-variant-numeric: tabular-nums; }
  /* Color por concepto general del Manual Único */
  .gl-c-DE { --gl-color: #e11d48; } .gl-c-FA { --gl-color: #3b82f6; } .gl-c-TA { --gl-color: #8b5cf6; } .gl-c-SO { --gl-color: #14b8a6; }
  .gl-c-AU { --gl-color: #f97316; } .gl-c-CO { --gl-color: #eab308; } .gl-c-CL { --gl-color: #ec4899; } .gl-c-SA { --gl-color: #64748b; }
  .gl-cod { display: inline-flex; align-items: center; padding: 3px 9px; font-family: var(--font-mono); font-size: 12px; font-weight: 700; color: var(--gl-color, var(--text-muted)); background: color-mix(in srgb, var(--gl-color, #71717a) 13%, transparent); border-radius: 7px; white-space: nowrap; }
  .gl-barra-acc { margin-bottom: 14px; }
  .gl-filas { display: grid; gap: 6px; }
  .gl-fila { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--hairline, var(--border)); border-radius: 10px; background: var(--surface-1, var(--surface)); }
  .gl-fila.is-on { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
  .gl-info { display: grid; gap: 2px; min-width: 0; }
  .gl-info b { font-size: 13.5px; }
  .gl-info small { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gl-estado { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
  .gl-plazo { padding: 3px 9px; font-size: 11.5px; font-weight: 700; border-radius: 999px; white-space: nowrap; }
  .gl-plazo.is-tiempo { color: var(--text-muted); background: var(--surface-2, var(--border-soft)); }
  .gl-plazo.is-pronto { color: var(--warn-soft-text); background: var(--warn-soft); }
  .gl-plazo.is-vencida { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-plazo.is-ok { color: var(--success-soft-text); background: var(--success-soft); }
  .gl-plazo.is-ext { color: var(--violet-soft-text); background: var(--violet-soft); }
  .gl-resp { padding: 3px 9px; font-family: var(--font-mono); font-size: 11.5px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 7px; }
  .gl-editor { margin-bottom: 14px; }
  .gl-ed-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 20px; }
  .gl-ed-desc { display: grid; gap: 8px; margin: 0 0 10px; font-size: 13.5px; line-height: 1.5; color: var(--text); }
  .gl-ed-desc .gl-cod { justify-self: start; font-family: inherit; }
  .gl-ed-obs { margin: 0 0 8px; font-size: 13px; color: var(--text-muted); }
  .gl-ed-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
  .gl-ed-campos label, .gl-ed-resp label { display: grid; gap: 4px; font-size: 12px; font-weight: 600; color: var(--text-muted); margin: 0; }
  .gl-ed-resp { display: grid; gap: 12px; align-content: start; }
  .gl-ed-lbl { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-faint); }
  .gl-ed-opciones { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; }
  .gl-op { display: grid; gap: 2px; padding: 9px 11px; font-family: inherit; text-align: left; color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .gl-op b { font-family: var(--font-mono); font-size: 12.5px; }
  .gl-op small { font-size: 11.5px; color: var(--text-muted); }
  .gl-op:hover { border-color: var(--primary); }
  .gl-op.is-on { border-color: var(--primary); background: var(--primary-soft); box-shadow: 0 0 0 1px var(--primary) inset; }
  .gl-op.is-on b { color: var(--primary-soft-text); }
  .gl-ed-acep.is-oculto { display: none; }
  .gl-ed-resp textarea { width: 100%; resize: vertical; font-family: inherit; font-size: 13px; font-weight: 400; line-height: 1.55; color: var(--text); }
  .gl-ed-pie { display: flex; justify-content: flex-end; gap: 8px; }
  .mod-chip.mod-glosas { color: var(--pink-soft-text); background: var(--pink-soft); }
  @media (max-width: 1100px) { .gl-resumen { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gl-ed-grid { grid-template-columns: 1fr; } }
  @media (max-width: 640px) { .gl-fila { grid-template-columns: 1fr auto; } .gl-info { grid-column: 1 / -1; } .gl-barra { grid-template-columns: 1fr auto; } .gl-barra-v { grid-column: 1 / -1; } }
  .gl-plazo.is-perdida { color: #fff; background: var(--danger); }
  .gl-resumen { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
  .gl-info b em { font-style: normal; font-weight: 500; color: var(--text-faint); font-family: var(--font-mono); font-size: 12px; }
  .gl-perdida { color: var(--danger-soft-text); background: var(--danger-soft); border-color: var(--danger-border); }

  /* Tarifario pactado (Glosas) */
  .gl-tarifario { margin-bottom: 14px; padding: 12px 14px; }
  .gl-tar-ok, .gl-tar-vacio { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
  .gl-tar-ok > div, .gl-tar-vacio > div { flex: 1; min-width: 220px; display: grid; gap: 2px; }
  .gl-tar-ok b, .gl-tar-vacio b { font-size: 13.5px; color: var(--text); }
  .gl-tar-ok small, .gl-tar-vacio small { font-size: 12px; color: var(--text-muted); }
  .gl-tar-ico { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: var(--success-soft-text); background: var(--success-soft); font-weight: 800; }
  .gl-sug { padding: 3px 9px; font-size: 11.5px; font-weight: 700; border-radius: 999px; white-space: nowrap; }
  .gl-sug.is-ok { color: var(--success-soft-text); background: var(--success-soft); }
  .gl-sug.is-acepta { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-sug.is-parcial { color: var(--warn-soft-text); background: var(--warn-soft); }
  .gl-sug.is-nada { color: var(--text-faint); background: var(--surface-2, var(--border-soft)); }
  .gl-tar-caja { margin: 10px 0; padding: 12px; border-radius: var(--radius); border: 1px solid var(--border); background: var(--surface-2, var(--input-bg)); font-size: 13px; }
  .gl-tar-caja.is-ok { border-color: var(--success-border); }
  .gl-tar-caja.is-acepta { border-color: var(--danger-border); }
  .gl-tar-caja.is-parcial { border-color: var(--warn-border); }
  .gl-tar-caja dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 14px; margin: 8px 0; }
  .gl-tar-caja dt { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-faint); }
  .gl-tar-caja dd { margin: 0; color: var(--text); font-variant-numeric: tabular-nums; }
  .gl-tar-caja p { margin: 6px 0 10px; color: var(--text-muted); }

  /* Ciclo de la glosa */
  .gl-plazos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .gl-plazos-t { grid-column: 1 / -1; font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .gl-plazos-t small { font-weight: 500; color: var(--text-faint); }
  .gl-plazos label { display: grid; gap: 4px; margin: 0; font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
  .gl-plazos .gl-ayuda { grid-column: 1 / -1; }
  .gl-embudo { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin-bottom: 14px; padding: 8px; }
  .gl-etapa { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto auto; column-gap: 8px; padding: 10px; font-family: inherit; text-align: left; color: var(--text); background: var(--surface-2, var(--input-bg)); border: 1px solid transparent; border-radius: 10px; cursor: pointer; }
  .gl-etapa span { grid-row: 1 / 4; display: grid; place-items: center; width: 22px; height: 22px; font-size: 11px; font-weight: 800; color: #fff; background: var(--grad-primary); border-radius: 50%; }
  .gl-etapa b { font-size: 12px; color: var(--text-muted); }
  .gl-etapa strong { font-size: 20px; line-height: 1.1; font-variant-numeric: tabular-nums; }
  .gl-etapa small { font-size: 11.5px; color: var(--text-faint); font-variant-numeric: tabular-nums; }
  .gl-etapa:hover { border-color: var(--border-strong); }
  .gl-etapa.is-on { border-color: var(--primary); background: var(--primary-soft); }
  .gl-plazo.is-eps { color: var(--info-soft-text); background: var(--info-soft); }
  .gl-plazo.is-conc { color: var(--violet-soft-text); background: var(--violet-soft); }
  .gl-seg { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
  .gl-pasos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
  .gl-paso { display: flex; gap: 10px; padding: 10px; border-radius: 10px; border: 1px solid var(--border); background: var(--surface-2, var(--input-bg)); }
  .gl-paso > div { display: grid; gap: 6px; min-width: 0; }
  .gl-paso b { font-size: 13px; }
  .gl-paso small { font-size: 12px; color: var(--text-muted); line-height: 1.45; }
  .gl-paso-n { flex: none; display: grid; place-items: center; width: 24px; height: 24px; font-size: 12px; font-weight: 800; border-radius: 50%; color: var(--text-faint); background: var(--border-soft); }
  .gl-paso.is-actual { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
  .gl-paso.is-actual .gl-paso-n { color: #fff; background: var(--grad-primary); }
  .gl-paso.is-hecho .gl-paso-n { color: var(--success-soft-text); background: var(--success-soft); }
  .gl-paso.is-futuro { opacity: .6; }
  .gl-paso-acc { display: grid; gap: 6px; }
  .gl-paso-acc label { display: grid; gap: 3px; margin: 0; font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
  .gl-paso-btns { display: flex; flex-wrap: wrap; gap: 6px; }
  .gl-hist { margin-top: 10px; font-size: 12.5px; }
  .gl-hist summary { cursor: pointer; font-weight: 600; color: var(--primary-soft-text); width: max-content; }
  .gl-hist ul { margin: 8px 0 0; padding-left: 18px; display: grid; gap: 4px; color: var(--text-muted); }
  .gl-hist time { font-family: var(--font-mono); font-size: 11px; color: var(--text-faint); margin-right: 6px; }
  .admin-stat.is-ok strong { color: var(--success); }
  @media (max-width: 1100px) { .gl-embudo { grid-template-columns: repeat(3, minmax(0, 1fr)); } .gl-pasos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  @media (max-width: 640px) { .gl-embudo, .gl-pasos, .gl-plazos { grid-template-columns: 1fr; } }

  /* Guardado en la cuenta (Glosas) */
  .gl-nube-card { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; padding: 10px 14px; }
  .gl-nube { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 220px; font-size: 13px; font-weight: 600; }
  .gl-nube-ico { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; font-size: 14px; }
  .gl-nube.is-ok .gl-nube-ico { color: var(--success-soft-text); background: var(--success-soft); }
  .gl-nube.is-sync .gl-nube-ico { color: var(--info-soft-text); background: var(--info-soft); animation: glPulso 1.2s ease-in-out infinite; }
  .gl-nube.is-error .gl-nube-ico { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-nube.is-local .gl-nube-ico { color: var(--text-faint); background: var(--border-soft); }
  .gl-nube.is-error .gl-nube-txt { color: var(--danger-soft-text); }
  .gl-nube-ayuda { font-size: 12px; color: var(--text-muted); }
  @keyframes glPulso { 50% { opacity: .45; } }
  @media (prefers-reduced-motion: reduce) { .gl-nube.is-sync .gl-nube-ico { animation: none; } }
  .gl-alertas { display: flex; align-items: flex-start; gap: 8px; flex-basis: 100%; margin: 0; padding: 8px 10px; font-size: 12.5px; font-weight: 500; color: var(--text-muted); background: var(--surface-2, var(--input-bg)); border-radius: 8px; cursor: pointer; }
  .gl-alertas b { color: var(--text); }
  .gl-alertas input { margin-top: 2px; }

  /* Panel lateral para responder glosas */
  .gl-drawer-overlay { position: fixed; inset: 0; z-index: 2200; display: none; background: var(--overlay); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
  .gl-drawer-overlay.visible { display: block; animation: fadeIn .16s ease; }
  .gl-drawer { position: absolute; top: 0; right: 0; bottom: 0; width: min(640px, 100%); display: flex; flex-direction: column; background: var(--surface-1, var(--surface-solid)); border-left: 1px solid var(--border); box-shadow: var(--elev-2, var(--shadow-xl)); animation: glDrawerIn .22s cubic-bezier(.22,1,.36,1); }
  @keyframes glDrawerIn { from { transform: translateX(24px); opacity: .6; } to { transform: none; opacity: 1; } }
  .gl-drawer-h { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px 12px; border-bottom: 1px solid var(--border); }
  .gl-drawer-tit { flex: 1; min-width: 0; display: grid; gap: 4px; }
  .gl-drawer-chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .gl-drawer-tit h3 { margin: 2px 0 0; font-size: 17px; font-weight: 700; color: var(--text); }
  .gl-drawer-tit small { font-size: 12.5px; color: var(--text-muted); }
  .gl-drawer-x { flex: none; display: grid; place-items: center; width: 34px; height: 34px; color: var(--text-muted); background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .gl-drawer-x:hover { color: var(--text); background: var(--surface-2, var(--border-soft)); }
  .gl-tabs { display: flex; gap: 4px; padding: 8px 16px 0; border-bottom: 1px solid var(--border); overflow-x: auto; }
  .gl-tab { padding: 9px 12px; font-family: inherit; font-size: 13px; font-weight: 600; white-space: nowrap; color: var(--text-muted); background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; }
  .gl-tab:hover { color: var(--text); }
  .gl-tab.is-on { color: var(--primary-soft-text); border-bottom-color: var(--primary); }
  .gl-tab:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; border-radius: 6px; }
  .gl-drawer-body { flex: 1; overflow-y: auto; padding: 18px 20px; overscroll-behavior: contain; }
  .gl-tabpanel { display: grid; gap: 12px; align-content: start; }
  .gl-tabpanel[hidden] { display: none; }
  .gl-drawer .gl-ed-desc { margin: 0; font-size: 14px; }
  .gl-drawer .gl-ed-obs { margin: 0; }
  .gl-drawer .gl-ed-campos { margin-top: 4px; }
  .gl-drawer .gl-ed-opciones { grid-template-columns: repeat(auto-fill, minmax(165px, 1fr)); }
  .gl-ed-arg { display: grid; gap: 4px; margin: 0; font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .gl-ed-arg textarea { width: 100%; resize: vertical; font-family: inherit; font-size: 13.5px; font-weight: 400; line-height: 1.55; color: var(--text); }
  .gl-ia { justify-self: start; }
  .gl-sug-banner { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; font-size: 13px; color: var(--success-soft-text); background: var(--success-soft); border: 1px solid var(--success-border); border-radius: var(--radius); }
  .gl-drawer .gl-seg { margin: 0; padding: 0; border: 0; }
  .gl-drawer .gl-seg > .r202-sec-h h3 { display: none; }
  .gl-drawer .gl-pasos { grid-template-columns: 1fr; }
  .gl-drawer-f { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 12px 20px; border-top: 1px solid var(--border); background: var(--surface-2, var(--surface)); }
  .gl-drawer-nav { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--text-faint); }
  .gl-drawer-acc { display: flex; gap: 8px; }
  @media (max-width: 640px) { .gl-drawer-h, .gl-drawer-body, .gl-drawer-f { padding-left: 14px; padding-right: 14px; } .gl-drawer .gl-ed-campos { grid-template-columns: 1fr; } }
  @media (prefers-reduced-motion: reduce) { .gl-drawer, .gl-drawer-overlay.visible { animation: none; } }
  body:has(.gl-drawer-overlay.visible) .toast-container { bottom: 80px; }

  /* ═══ Zonas de carga compactas (todos los módulos) ═══
     Horizontales: ícono a la izquierda, título y ayuda a la derecha; ya no se estiran a la altura de la
     columna vecina. Con archivo cargado se reducen aún más. */
  .pkg-drop-zone { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 14px; align-items: center; text-align: left; padding: 14px 18px; margin-bottom: 14px; }
  .pkg-drop-zone .drop-icon { grid-row: 1 / 3; width: 42px; height: 42px; margin: 0; border-radius: 12px; }
  .pkg-drop-zone strong { margin-top: 0; font-size: 14px; align-self: end; }
  .pkg-drop-zone p { margin: 2px 0 0; font-size: 12.5px; align-self: start; }
  .r202-cabecera { align-items: start; }
  .r202-drop, .r202-drop.is-compact { margin: 0; padding: 14px 18px; }
  .pkg-drop-zone.is-compact { padding: 10px 16px; }
  .pkg-drop-zone.is-compact .drop-icon, .r202-drop.is-compact .drop-icon { display: flex; width: 34px; height: 34px; border-radius: 10px; }
  .pkg-drop-zone.is-compact strong { font-size: 13.5px; }
  .ciclos-layout:has(#cResultado:not([hidden])) #cDrop { padding: 12px 16px; }
  .agrup-drop { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 12px; align-items: center; text-align: left; padding: 12px 16px; }
  .agrup-drop .agrup-drop-ico { grid-row: 1 / 3; width: 38px; height: 38px; margin: 0; }
  .agrup-drop strong { margin: 0; align-self: end; }
  .agrup-drop > span:not(.agrup-drop-ico) { align-self: start; }
  #panelRips #rips-drop { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 14px; align-items: center; justify-items: start; text-align: left; padding: 14px 18px; }
  #panelRips #rips-drop .drop-ic { grid-row: 1 / 3; width: 42px; height: 42px; margin: 0; }
  #panelRips #rips-drop strong { align-self: end; margin: 0; }
  #panelRips #rips-drop > span { align-self: start; margin: 2px 0 0; }
  /* ── Glosas: barra de cuenta, plazos plegables, mis glosas guardadas y barra de acciones ── */
  .gl-cuenta { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; margin-bottom: 14px; padding: 12px 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
  .gl-cuenta[hidden] { display: none; }
  .gl-cuenta-ico { flex: none; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; color: var(--primary-soft-text); background: var(--primary-soft); }
  .gl-cuenta.is-on.is-ok .gl-cuenta-ico { color: var(--success-soft-text); background: var(--success-soft); }
  .gl-cuenta.is-on.is-sync .gl-cuenta-ico { color: var(--info-soft-text); background: var(--info-soft); animation: glPulso 1.2s ease-in-out infinite; }
  .gl-cuenta.is-on.is-error .gl-cuenta-ico { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-cuenta.is-off { border-color: var(--dropzone-border, var(--border)); background: linear-gradient(90deg, var(--primary-soft), transparent 70%), var(--surface); }
  .gl-cuenta-txt { flex: 1; min-width: 220px; display: grid; gap: 2px; }
  .gl-cuenta-txt b { font-size: 13.5px; color: var(--text); }
  .gl-cuenta-txt b.gl-nube { display: block; min-width: 0; font-weight: 700; }
  .gl-cuenta-txt small { font-size: 12px; color: var(--text-muted); }
  .gl-cuenta.is-error .gl-cuenta-txt b { color: var(--danger-soft-text); }
  .gl-cuenta-mas { display: flex; gap: 4px; }
  .gl-switch { display: inline-flex; align-items: center; gap: 8px; margin: 0; padding: 6px 12px 6px 8px; font-size: 12.5px; font-weight: 600; color: var(--text); border: 1px solid var(--border); border-radius: 999px; cursor: pointer; user-select: none; }
  .gl-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
  .gl-switch-ui { position: relative; width: 32px; height: 18px; border-radius: 999px; background: var(--border); transition: background .15s; }
  .gl-switch-ui::after { content: ""; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.3); transition: transform .15s; }
  .gl-switch input:checked + .gl-switch-ui { background: var(--success); }
  .gl-switch input:checked + .gl-switch-ui::after { transform: translateX(14px); }
  .gl-switch input:focus-visible + .gl-switch-ui { outline: 2px solid var(--primary); outline-offset: 2px; }
  .gl-cabecera { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: stretch; margin-bottom: 14px; }
  .gl-cabecera .r202-carga { order: 1; min-width: 0; }
  .gl-cabecera .gl-ajustes { order: 2; }
  .gl-ajustes > summary { display: flex; align-items: center; gap: 8px; height: 100%; padding: 10px 14px; list-style: none; font-size: 13px; color: var(--text); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); cursor: pointer; }
  .gl-ajustes > summary::-webkit-details-marker { display: none; }
  .gl-ajustes > summary > span { display: grid; gap: 1px; }
  .gl-ajustes > summary small { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
  .gl-ajustes > summary:hover, .gl-ajustes[open] > summary { border-color: var(--primary); }
  .gl-ajustes-panel { position: absolute; z-index: 60; top: calc(100% + 8px); right: 0; width: min(460px, 100%); display: grid; gap: 12px; padding: 14px; background: var(--surface-raised); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); }
  @media (max-width: 640px) { .gl-cabecera { grid-template-columns: 1fr; } .gl-cabecera .gl-ajustes { order: 0; } }
  .gl-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; padding: 8px 10px 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
  .gl-tb-izq, .gl-tb-der { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
  .gl-tb-t { font-size: 13.5px; font-weight: 700; color: var(--text); padding-left: 2px; }
  .gl-sel { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 12px; font-size: 13px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 999px; }
  .gl-sel button { display: grid; place-items: center; width: 22px; height: 22px; font-size: 11px; color: inherit; background: none; border: 0; border-radius: 50%; cursor: pointer; }
  .gl-sel button:hover { background: rgba(127,127,127,.2); }
  .gl-tar-btn.is-ok { color: var(--success-soft-text); }
  .gl-tar-btn span { margin-right: 4px; }
  .gl-aviso-tar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; padding: 10px 14px; font-size: 13px; color: var(--text-muted); border: 1px dashed var(--border); border-radius: var(--radius-lg); }
  .gl-aviso-tar b { color: var(--text); }
  .gl-bib { padding: 16px; }
  .gl-bib-h { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
  .gl-bib-h h3 { margin: 0; font-size: 16px; }
  .gl-bib-h small { font-size: 12.5px; color: var(--text-muted); }
  .gl-bib-lista { display: grid; gap: 6px; margin-top: 12px; }
  .gl-bib-fila { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto auto; align-items: center; gap: 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-2, transparent); transition: border-color .15s; }
  .gl-bib-fila:hover { border-color: var(--primary); }
  .gl-bib-ico { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; color: var(--primary-soft-text); background: var(--primary-soft); }
  .gl-bib-info { display: grid; gap: 2px; min-width: 0; }
  .gl-bib-info b { font-size: 14px; color: var(--text); }
  .gl-bib-info small { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gl-bib-valor { font-size: 14px; font-variant-numeric: tabular-nums; color: var(--text); }
  .gl-bib-acc { display: flex; gap: 4px; }
  .gl-bib-borrar { padding-left: 8px; padding-right: 8px; }
  @media (max-width: 760px) { .gl-bib-fila { grid-template-columns: auto minmax(0, 1fr) auto; } .gl-bib-valor { grid-column: 2; } .gl-bib-estado { grid-column: 3; grid-row: 2; } .gl-bib-acc { grid-column: 2 / -1; justify-content: flex-end; } }
  .gl-volver { gap: 6px; padding-left: 10px; }
  .gl-miga { display: inline-flex; align-items: center; gap: 6px; margin-left: 4px; font-size: 13px; color: var(--text-faint); }
  .gl-miga-link { padding: 0; font: inherit; font-weight: 600; color: var(--text-muted); background: none; border: 0; cursor: pointer; }
  .gl-miga-link:hover { color: var(--text); text-decoration: underline; }
  @media (max-width: 640px) { .gl-miga { display: none; } }
  /* Encabezado con flecha para volver y acciones a la derecha */
  .tool-title-row { display: flex; align-items: center; gap: 10px; }
  .tool-back { flex: none; display: grid; place-items: center; width: 36px; height: 36px; color: var(--text); background: var(--surface); border: 1px solid var(--border); border-radius: 10px; cursor: pointer; transition: border-color .15s, transform .15s; }
  .tool-back[hidden] { display: none; }
  .tool-back:hover { border-color: var(--primary); transform: translateX(-2px); }
  .tool-back:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
  .tool-head-der { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-left: auto; }
  .tool-acc { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
  .tool-acc:empty { display: none; }
  .gl-cabecera[hidden] { display: none; }
  /* Barra de la cuenta: estado · alertas por correo · ⋯ */
  .gl-cuenta.is-on { flex-wrap: nowrap; padding: 10px 12px 10px 14px; }
  .gl-alerta { display: inline-flex; align-items: center; gap: 10px; margin: 0; padding: 6px 8px 6px 10px; border: 1px solid var(--border); border-radius: 12px; cursor: pointer; user-select: none; transition: border-color .15s, background .15s; }
  .gl-alerta:hover { border-color: var(--primary); }
  .gl-alerta.is-on { border-color: var(--success-border); background: var(--success-soft); }
  .gl-alerta-ico { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; color: var(--text-muted); background: var(--surface-2, var(--border-soft)); }
  .gl-alerta.is-on .gl-alerta-ico { color: var(--success-soft-text); background: transparent; }
  .gl-alerta-txt { display: grid; gap: 1px; }
  .gl-alerta-txt b { font-size: 12.5px; color: var(--text); }
  .gl-alerta-txt small { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
  .gl-alerta.is-on .gl-alerta-txt small { color: var(--success-soft-text); }
  .gl-alerta .gl-switch { padding: 0; border: 0; }
  .gl-mas { width: 36px; height: 36px; padding: 0; display: grid; place-items: center; }
  .gl-cuenta-lista { width: 290px; }
  .r202-menu-ico.is-rojo { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-op-peligro b { color: var(--danger-soft-text); }
  @media (max-width: 640px) { .gl-cuenta.is-on { flex-wrap: wrap; } .gl-alerta { flex: 1; } }
  .gl-bib-h-acc { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
  .gl-por .r202-seg-op { padding: 5px 12px; }
  .gl-aviso-eps { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin: 0 0 12px; padding: 10px 14px; font-size: 13px; color: var(--text-muted); border: 1px solid var(--info-border, var(--border)); background: var(--info-soft); border-radius: var(--radius-lg); }
  .gl-aviso-eps b { color: var(--text); }
  .gl-aviso-eps-acc { display: flex; gap: 6px; }
  /* Entidades: EPS sugeridas desde los archivos */
  .ent-sugeridas { display: grid; gap: 6px; margin: 10px 0; padding: 10px; border: 1px solid var(--info-border, var(--border)); background: var(--info-soft); border-radius: 12px; }
  .ent-sugeridas[hidden] { display: none; }
  .ent-sug-h { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: var(--text); }
  .ent-sug-h span { padding: 1px 8px; font-size: 11.5px; font-weight: 700; color: var(--info-soft-text); background: var(--surface); border-radius: 999px; }
  .ent-sug { display: grid; gap: 6px; padding: 8px 10px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; }
  .ent-sug.is-alerta { border-color: var(--warn-border); }
  .ent-sug-txt { display: grid; gap: 2px; min-width: 0; }
  .ent-sug-txt strong { font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ent-sug-txt small { font-size: 11.5px; color: var(--text-muted); }
  .ent-sug-txt em { font-style: normal; font-size: 11.5px; font-weight: 600; color: var(--warn-soft-text); }
  .ent-sug-txt em.is-nueva { color: var(--info-soft-text); }
  .ent-sug-acc { display: flex; justify-content: flex-end; gap: 4px; }
  .ent-mini.is-primary { color: var(--primary-soft-text); background: var(--primary-soft); }
  .side-badge { margin-left: auto; padding: 1px 7px; font-size: 11px; font-weight: 700; color: #fff; background: var(--primary); border-radius: 999px; }
  /* Estadísticas: 5 módulos, tendencia, mini gráfico y cartera de glosas */
  .stats-mods { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .stats-mod.mod-glosas { --mod-color: #ec4899; }
  .sl-line-glosas { stroke: #ec4899; } .sl-pt-glosas { fill: #ec4899; } .sl-stop-glosas { stop-color: #ec4899; }
  .stats-legend i.glosas, .sl-tip i.glosas { background: #ec4899; }
  .stats-mod { gap: 6px; padding: 14px 14px 12px; }
  .stats-mod.is-vacio > .stats-mod-num strong { color: var(--text-faint); }
  .stats-mod-h { margin-bottom: 2px; }
  .stats-mod-num { display: grid; gap: 1px; }
  .stats-mod-num strong { font-size: 26px; font-weight: 700; letter-spacing: -.02em; line-height: 1.15; font-variant-numeric: tabular-nums; }
  .stats-spark { display: block; width: 100%; height: 26px; fill: var(--mod-color, var(--primary)); opacity: .75; }
  .stats-spark.is-vacio { height: 26px; border-bottom: 1px dashed var(--border); opacity: 1; }
  .stats-mod-pie { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 2px; }
  .stats-tend { display: inline-flex; align-items: center; gap: 2px; padding: 1px 7px; font-size: 11px; font-weight: 700; color: var(--text-muted); background: var(--surface-2, var(--border-soft)); border-radius: 999px; white-space: nowrap; }
  .stats-tend.is-up { color: var(--success-soft-text); background: var(--success-soft); }
  .stats-tend.is-down { color: var(--danger-soft-text); background: var(--danger-soft); }
  .stats-card span .stats-tend { margin-left: 6px; vertical-align: 1px; }
  .stats-cartera { margin-bottom: 12px; }
  .stats-cart-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin: 4px 0 14px; }
  .stats-cart-kpis > div { display: grid; gap: 2px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; }
  .stats-cart-kpis span { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
  .stats-cart-kpis strong { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text); }
  .stats-cart-kpis small { font-size: 11px; color: var(--text-faint); }
  .stats-cart-kpis .is-ok strong { color: var(--success-soft-text); }
  .stats-cart-kpis .is-mal strong { color: var(--danger-soft-text); }
  .stats-cart-barra { display: flex; height: 12px; overflow: hidden; border-radius: 999px; background: var(--surface-2, var(--border-soft)); }
  .stats-cart-barra i { display: block; height: 100%; }
  .stats-cart-barra i + i { box-shadow: -2px 0 0 var(--card-translucent, var(--surface)); }
  .stats-cart-ley { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 16px; margin: 12px 0 0; padding: 0; }
  .stats-cart-ley li { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 2px 8px; font-size: 12.5px; color: var(--text-muted); }
  .stats-cart-ley li.is-cero { opacity: .5; }
  .stats-cart-ley i { width: 10px; height: 10px; border-radius: 3px; }
  .stats-cart-ley b { color: var(--text); font-variant-numeric: tabular-nums; }
  .stats-cart-ley small { grid-column: 2 / -1; font-size: 11px; color: var(--text-faint); }
  .et-pendiente { background: #f59e0b; } .et-preparada { background: #3b82f6; } .et-enviada { background: #8b5cf6; }
  .et-conciliacion { background: #ec4899; } .et-cerrada { background: #10b981; } .et-perdida { background: #ef4444; }
  @media (max-width: 1280px) { .stats-mods { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
  @media (max-width: 1100px) { .stats-cart-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } .stats-cart-ley { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  @media (max-width: 560px) { .stats-cart-kpis, .stats-cart-ley { grid-template-columns: 1fr 1fr; } }
  /* RIPS › Unir RIPS */
  .ru-layout { display: grid; grid-template-columns: minmax(300px, 420px) minmax(0, 1fr); gap: 14px; align-items: start; }
  .ru-col { display: grid; gap: 14px; }
  .ru-card { padding: 16px; display: grid; gap: 10px; }
  .ru-h { display: flex; align-items: center; gap: 10px; }
  .ru-h h3 { margin: 0; font-size: 15px; }
  .ru-n { display: grid; place-items: center; width: 24px; height: 24px; font-size: 12px; font-weight: 700; color: #fff; background: var(--primary); border-radius: 50%; }
  .ru-count { margin-left: auto; padding: 1px 8px; font-size: 11.5px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 999px; }
  .ru-count[hidden] + .ent-mini { margin-left: auto; }
  .ru-lista { list-style: none; display: grid; gap: 6px; margin: 0; padding: 0; }
  .ru-file { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 10px; }
  .ru-file.is-error { border-color: var(--danger-border, var(--border)); background: var(--danger-soft); }
  .ru-orden { display: grid; place-items: center; width: 24px; height: 24px; font-size: 12px; font-weight: 700; color: var(--text-muted); background: var(--surface-2, var(--border-soft)); border-radius: 7px; }
  .ru-info { display: grid; gap: 1px; min-width: 0; }
  .ru-info b { font-size: 13.5px; color: var(--text); }
  .ru-info small { font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ru-base { margin-left: 6px; padding: 1px 7px; font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--success-soft-text); background: var(--success-soft); border-radius: 999px; vertical-align: 1px; }
  .ru-acc { display: flex; gap: 2px; }
  .ru-nota { margin: 0; font-size: 12px; color: var(--text-muted); }
  .ru-campo { display: grid; gap: 4px; margin: 0; font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .ru-check { font-size: 12.5px; }
  .ru-vacio { display: grid; gap: 6px; place-items: center; text-align: center; padding: 48px 16px; color: var(--text-muted); font-size: 13px; }
  .ru-vacio strong { font-size: 15px; color: var(--text); }
  .ru-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
  .ru-kpis > div { display: grid; gap: 2px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; }
  .ru-kpis span { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
  .ru-kpis strong { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text); }
  .ru-kpis strong.ru-fac { font-family: var(--font-mono, monospace); font-size: 16px; }
  .ru-kpis small { font-size: 11px; color: var(--text-faint); }
  .ru-aviso { margin: 10px 0 0; padding: 8px 12px; font-size: 12.5px; color: var(--warn-soft-text); background: var(--warn-soft); border-radius: 10px; }
  .ru-aviso.is-info { color: var(--info-soft-text); background: var(--info-soft); }
  .ru-tabla { width: 100%; margin-top: 12px; border-collapse: collapse; font-size: 13px; }
  .ru-tabla th { padding: 8px 10px; font-size: 11px; font-weight: 700; text-align: left; text-transform: uppercase; letter-spacing: .04em; color: var(--text-faint); border-bottom: 1px solid var(--border); }
  .ru-tabla td { padding: 9px 10px; border-bottom: 1px solid var(--border-soft, var(--border)); color: var(--text); font-variant-numeric: tabular-nums; vertical-align: top; }
  .ru-tabla td small { display: block; font-size: 11px; color: var(--text-faint); }
  @media (max-width: 980px) { .ru-layout { grid-template-columns: 1fr; } .ru-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  /* RIPS: paquetes de reglas */
  .rips-paq-barra { display: flex; margin: 2px 0 12px; }
  .rips-paq-barra .rips-modo { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .rips-paq-barra .rips-modo .r202-seg-op { justify-content: center; }
  #panelRips .step-h .step-acc { margin-left: auto; gap: 6px; padding: 6px 12px; }
  .rips-modo .r202-seg-op { padding: 6px 12px; }
  .rips-nueva { gap: 6px; }
  .rips-paqs { display: grid; gap: 8px; margin-bottom: 12px; }
  .rips-paqs[hidden], .rips-manual[hidden] { display: none; }
  .rips-paq { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); transition: border-color .15s, box-shadow .15s; }
  .rips-paq:hover { border-color: var(--border-strong, var(--primary)); }
  .rips-paq.is-on { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; background: linear-gradient(90deg, var(--primary-soft), transparent 75%), var(--surface); }
  .rips-paq-main { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 10px; align-items: start; padding: 12px; text-align: left; font: inherit; color: var(--text); background: none; border: 0; cursor: pointer; border-radius: 12px; }
  .rips-paq-main:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
  .rips-paq-radio { width: 18px; height: 18px; margin-top: 1px; border: 2px solid var(--border-strong, var(--text-faint)); border-radius: 50%; transition: border-color .15s, box-shadow .15s; }
  .rips-paq.is-on .rips-paq-radio { border-color: var(--primary); box-shadow: inset 0 0 0 4px var(--surface), inset 0 0 0 9px var(--primary); }
  .rips-paq-txt { display: grid; gap: 3px; min-width: 0; }
  .rips-paq-txt b { font-size: 14px; }
  .rips-paq-txt small { font-size: 12px; color: var(--text-muted); }
  .rips-paq-vista { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
  .rips-paq-vista code { padding: 2px 7px; font-size: 11.5px; color: var(--text); background: var(--surface-2, var(--border-soft)); border-radius: 6px; white-space: nowrap; }
  .rips-paq-vista code i { font-style: normal; color: var(--text-faint); }
  .rips-paq-vista em { align-self: center; font-style: normal; font-size: 11.5px; font-weight: 700; color: var(--text-faint); }
  .rips-paq-acc { display: flex; align-items: flex-start; gap: 2px; padding: 8px 8px 0 0; }
  .rips-paq-ic { display: grid; place-items: center; width: 30px; height: 30px; color: var(--text-muted); background: none; border: 0; border-radius: 8px; cursor: pointer; }
  .rips-paq-ic:hover { color: var(--text); background: var(--border-soft); }
  .rips-paq-ic.is-danger:hover { color: var(--danger-soft-text); background: var(--danger-soft); }
  .rips-paq-nota { margin: 0; font-size: 12px; color: var(--text-faint); }
  .rips-paq-vacio { display: grid; gap: 6px; justify-items: center; padding: 18px 16px; text-align: center; font-size: 12.5px; color: var(--text-muted); border: 1px dashed var(--border); border-radius: 12px; }
  .rips-paq-vacio b { color: var(--text); }
  .rips-paq-vacio strong { font-size: 14px; color: var(--text); }
  .rips-link { padding: 0; font: inherit; font-size: 12.5px; color: var(--primary-soft-text); background: none; border: 0; cursor: pointer; text-decoration: underline; }
  /* Ventana «Nueva regla» */
  .rips-regla-card { width: min(760px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; display: grid; gap: 12px; text-align: left; }
  .rips-regla-cab { display: flex; align-items: flex-start; gap: 12px; }
  .rips-regla-cab .ui-dialog-icon { flex: none; margin: 0; }
  .rips-regla-cab h2 { margin: 0 0 4px; font-size: 18px; }
  .rips-regla-cab p { margin: 0; font-size: 13px; color: var(--text-muted); }
  .rips-regla-campo { display: grid; gap: 5px; margin: 0; font-size: 12.5px; font-weight: 600; color: var(--text-muted); }
  .rips-regla-th, .rips-regla-fila { display: grid; grid-template-columns: minmax(0, 1fr) 20px minmax(0, 1fr) minmax(0, .9fr) 34px; gap: 6px; align-items: center; }
  .rips-regla-th { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-faint); }
  .rips-regla-th em { font-style: normal; text-transform: none; letter-spacing: 0; font-weight: 500; }
  .rips-regla-filas { display: grid; gap: 6px; max-height: 42vh; overflow: auto; padding-right: 2px; }
  .rips-regla-fila .arrow { display: grid; place-items: center; color: var(--text-faint); }
  .rips-regla-fila .rm { display: grid; place-items: center; width: 34px; height: 34px; color: var(--text-muted); background: none; border: 0; border-radius: 8px; cursor: pointer; }
  .rips-regla-fila .rm:hover { color: var(--danger-soft-text); background: var(--danger-soft); }
  .rips-regla-mas { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .rips-regla-mas small { font-size: 11.5px; color: var(--text-faint); }
  .rips-regla-error { margin: 0; padding: 8px 12px; font-size: 12.5px; color: var(--danger-soft-text); background: var(--danger-soft); border-radius: 8px; }
  @media (max-width: 640px) { .rips-regla-th { display: none; } .rips-regla-fila { grid-template-columns: minmax(0, 1fr) 34px; } .rips-regla-fila .arrow { display: none; } .rips-regla-fila [data-k="replace"], .rips-regla-fila [data-k="field"] { grid-column: 1; } .rips-regla-fila .rm { grid-row: 1; grid-column: 2; } }
  /* Ancho fluido: el contenido usa toda la pantalla (tope solo en monitores muy anchos) */
  .app-main > * { max-width: 2400px; }
  #panelRips .layout { max-width: none; padding-left: 0; padding-right: 0; }
  /* Usuarios: plan compacto */
  .plan-mini { display: inline-flex; align-items: center; gap: 10px; white-space: nowrap; }
  .plan-n { min-width: 52px; font-size: 12.5px; color: var(--text-muted); }
  .plan-n b { font-size: 14px; color: var(--text); }
  .plan-iconos { display: inline-flex; gap: 4px; }
  .plan-ic { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 8px; color: var(--text-faint); background: var(--surface-2, var(--border-soft)); opacity: .45; }
  .plan-ic svg { width: 14px; height: 14px; }
  .plan-ic.is-on { opacity: 1; }
  .plan-ic.is-on.mod-soportes { color: var(--primary-soft-text); background: var(--primary-soft); }
  .plan-ic.is-on.mod-rips { color: var(--violet-soft-text); background: var(--violet-soft); }
  .plan-ic.is-on.mod-pacientes { color: var(--teal-soft-text); background: var(--teal-soft); }
  .plan-ic.is-on.mod-res202 { color: var(--orange-soft-text); background: var(--orange-soft); }
  .plan-ic.is-on.mod-glosas { color: var(--pink-soft-text); background: var(--pink-soft); }
  @media (min-width: 1101px) { .page-view .admin-row { grid-template-columns: minmax(220px, 1.5fr) minmax(140px, 1fr) minmax(190px, 1fr) 120px minmax(170px, 1.1fr) 74px; } }
  .plan-mini { gap: 8px; overflow: hidden; }
  .plan-n { min-width: 46px; }
  .plan-iconos { gap: 3px; }
  .plan-ic { width: 23px; height: 23px; border-radius: 7px; }
  .plan-ic svg { width: 13px; height: 13px; }
  #panelRips .step-h .mini-x:not([hidden]) { margin-left: auto; }
  #panelRips .step-h .mini-x:not([hidden]) ~ .step-acc { margin-left: 8px; }
  .rips-paq-barra .rips-modo .r202-seg-op { white-space: nowrap; }
  /* Glosas: Mis glosas, espera y resumen */
  .gl-bib-vacio { display: grid; justify-items: center; gap: 8px; padding: 36px 20px; text-align: center; font-size: 13px; color: var(--text-muted); }
  .gl-bib-vacio strong { font-size: 16px; color: var(--text); }
  .gl-bib-vacio > span:not(.gl-bib-vacio-ico) { max-width: 520px; }
  .gl-bib-vacio-ico { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; color: var(--primary-soft-text); background: var(--primary-soft); }
  .gl-bib-vacio-acc { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-top: 4px; }
  .gl-nube-chip { display: inline-flex; align-items: center; margin-left: 8px; padding: 2px 9px; font-size: 11px; font-weight: 600; vertical-align: 2px; color: var(--success-soft-text); background: var(--success-soft); border-radius: 999px; }
  .gl-nube-chip.is-sync { color: var(--info-soft-text); background: var(--info-soft); }
  .gl-nube-chip.is-error { color: var(--danger-soft-text); background: var(--danger-soft); }
  .gl-espera { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 16px 18px; }
  .gl-espera > div:first-child { display: grid; gap: 3px; }
  .gl-espera strong { font-size: 14.5px; color: var(--text); }
  .gl-espera span { font-size: 12.5px; color: var(--text-muted); }
  .gl-espera-acc { display: flex; gap: 8px; }
  .gl-res-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; font-size: 12.5px; color: var(--text-muted); }
  .gl-res-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
  .gl-res-kpis > div { display: grid; gap: 2px; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--card-translucent); }
  .gl-res-kpis span { font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .gl-res-kpis strong { font-size: 22px; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: var(--text); }
  .gl-res-kpis small { font-size: 11.5px; color: var(--text-faint); }
  .gl-res-kpis .is-ok strong { color: var(--success-soft-text); }
  .gl-res-kpis .is-mal strong { color: var(--danger-soft-text); }
  .gl-res-sec { padding: 16px; margin-bottom: 14px; }
  .gl-res-dos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .gl-res-dos .gl-res-sec { margin-bottom: 14px; }
  .gl-res-lista { list-style: none; display: grid; gap: 6px; margin: 0; padding: 0; }
  .gl-res-lista button { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; font: inherit; text-align: left; color: var(--text); background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .gl-res-lista button:hover { border-color: var(--primary); }
  .gl-res-li-t { display: grid; min-width: 0; }
  .gl-res-li-t b { font-size: 13px; }
  .gl-res-li-t small { font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gl-res-lista strong { font-size: 13px; font-variant-numeric: tabular-nums; }
  .gl-res-meses { display: flex; align-items: flex-end; gap: 12px; height: 170px; padding-top: 6px; }
  .gl-res-mes { flex: 1; display: grid; grid-template-rows: 1fr auto; gap: 6px; height: 100%; text-align: center; font-size: 11.5px; color: var(--text-muted); }
  .gl-res-barras { display: flex; align-items: flex-end; justify-content: center; gap: 3px; height: 100%; }
  .gl-res-barras i { display: block; width: 40%; max-width: 22px; border-radius: 5px 5px 0 0; }
  .is-glo { background: #ec4899; } .is-rec { background: #10b981; }
  .gl-res-ley { display: flex; gap: 14px; margin-top: 8px; font-size: 11.5px; color: var(--text-muted); }
  .gl-res-ley i { display: inline-block; width: 10px; height: 10px; margin-right: 5px; border-radius: 3px; vertical-align: -1px; }
  .gl-res-eps { display: grid; gap: 6px; }
  .gl-res-eps-f { display: grid; grid-template-columns: minmax(160px, 1.2fr) minmax(0, 2fr) auto auto; align-items: center; gap: 12px; padding: 9px 10px; font: inherit; text-align: left; color: var(--text); background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .gl-res-eps-f:hover { border-color: var(--primary); }
  .gl-res-eps-t { display: grid; min-width: 0; }
  .gl-res-eps-t b { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gl-res-eps-t small { font-size: 11.5px; color: var(--text-muted); }
  .gl-res-eps-barra { position: relative; height: 10px; border-radius: 999px; background: var(--surface-2, var(--border-soft)); overflow: hidden; }
  .gl-res-eps-barra i { position: absolute; inset: 0 auto 0 0; background: #ec4899; border-radius: 999px; }
  .gl-res-eps-barra i.is-rec { background: #10b981; }
  .gl-res-eps-f strong { font-size: 13px; font-variant-numeric: tabular-nums; }
  .gl-res-eps-pct { font-size: 11.5px; color: var(--success-soft-text); white-space: nowrap; }
  @media (max-width: 1100px) { .gl-res-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } .gl-res-dos { grid-template-columns: 1fr; } }
  @media (max-width: 640px) { .gl-res-kpis { grid-template-columns: 1fr 1fr; } .gl-res-eps-f { grid-template-columns: minmax(0, 1fr) auto; } .gl-res-eps-barra { grid-column: 1 / -1; grid-row: 2; } }
  /* Usuarios: herramientas por módulo */
  .admin-modulo-bloque { display: grid; gap: 6px; }
  .admin-tools { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 4px 52px; }
  .admin-tools[hidden] { display: none; }
  .admin-tool { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; color: var(--text-muted); cursor: pointer; }
  /* Configuración del usuario */
  .cfg-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: 14px; align-items: start; }
  .cfg-card { display: grid; gap: 12px; padding: 18px; }
  .cfg-card.is-off .cfg-campos { opacity: .55; }
  .cfg-h { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: start; }
  .cfg-h h3 { margin: 0 0 3px; font-size: 15px; }
  .cfg-h p { margin: 0; font-size: 12.5px; color: var(--text-muted); }
  .cfg-ico { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; }
  .cfg-ico.is-azul { color: var(--primary-soft-text); background: var(--primary-soft); }
  .cfg-ico.is-verde { color: var(--success-soft-text); background: var(--success-soft); }
  .cfg-ico.is-ambar { color: var(--warn-soft-text); background: var(--warn-soft); }
  .cfg-sw { margin-top: 6px; padding: 0; border: 0; }
  .cfg-p { margin: 0; font-size: 12.5px; color: var(--text-muted); line-height: 1.5; }
  .cfg-nota { font-size: 12px; color: var(--text-faint); }
  .cfg-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .cfg-campos.cfg-tres { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cfg-campos label { display: grid; gap: 5px; margin: 0; font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .cfg-pie { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding-top: 10px; border-top: 1px solid var(--border); }
  .cfg-estado { font-size: 12.5px; color: var(--text-muted); }
  .cfg-aviso { margin: 0 0 12px; padding: 10px 14px; font-size: 12.5px; color: var(--warn-soft-text); background: var(--warn-soft); border-radius: 10px; }
  @media (max-width: 640px) { .cfg-campos, .cfg-campos.cfg-tres { grid-template-columns: 1fr; } }
  /* RIPS › Validar RIPS */
  .rv-limpiar { margin-left: auto; }
  .rv-lista { display: grid; gap: 6px; }
  .rv-file { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 9px 11px; font: inherit; text-align: left; color: var(--text); background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .rv-file:hover { border-color: var(--border-strong, var(--primary)); }
  .rv-file.is-on { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
  .rv-file-t { display: grid; min-width: 0; }
  .rv-file-t b { font-size: 13.5px; }
  .rv-file-t small { font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .rv-chip { display: inline-flex; align-items: center; padding: 2px 9px; font-size: 11.5px; font-weight: 700; border-radius: 999px; white-space: nowrap; }
  .rv-chip.is-err { color: var(--danger-soft-text); background: var(--danger-soft); }
  .rv-chip.is-warn { color: var(--warn-soft-text); background: var(--warn-soft); }
  .rv-chip.is-ok { color: var(--success-soft-text); background: var(--success-soft); }
  .rv-cab { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
  .rv-cab h3 { margin: 0; font-size: 16px; }
  .rv-cab small { font-size: 12px; color: var(--text-muted); }
  .rv-kpis .is-err strong { color: var(--danger-soft-text); }
  .rv-kpis .is-warn strong { color: var(--warn-soft-text); }
  .rv-kpis .is-ok strong { color: var(--success-soft-text); }
  .rv-filtros { margin: 4px 0 0; }
  .rv-grupos { display: grid; gap: 6px; }
  .rv-grupo { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
  .rv-grupo.is-error { border-left: 3px solid var(--danger); }
  .rv-grupo.is-aviso { border-left: 3px solid var(--warn); }
  .rv-grupo summary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; list-style: none; font-size: 13px; }
  .rv-grupo summary::-webkit-details-marker { display: none; }
  .rv-regla code, .rv-grupo li code { padding: 1px 6px; font-size: 11.5px; background: var(--surface-2, var(--border-soft)); border-radius: 5px; }
  .rv-grupo ul { list-style: none; margin: 0; padding: 4px 12px 10px; display: grid; gap: 4px; max-height: 260px; overflow: auto; }
  .rv-grupo li { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; color: var(--text-muted); border-top: 1px solid var(--border-soft, var(--border)); padding-top: 4px; }
  .rv-mas { font-style: italic; }
  .rv-limpio { margin: 4px 0 0; padding: 12px 14px; font-size: 13px; color: var(--success-soft-text); background: var(--success-soft); border-radius: 10px; }
  .rv-sub { margin: 16px 0 0; font-size: 14px; }
  .rv-sub small { font-weight: 500; font-size: 12px; color: var(--text-faint); }
  .rv-total td { border-top: 1px solid var(--border); }
  .rv-kpis { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
  .ru-kpis { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
  .gl-aviso-guardar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; padding: 12px 14px; font-size: 13px; color: var(--text-muted); border: 1px solid var(--dropzone-border, var(--border)); background: linear-gradient(90deg, var(--primary-soft), transparent 75%), var(--surface); border-radius: var(--radius-lg); }
  .gl-aviso-guardar > span { display: flex; align-items: center; gap: 10px; }
  .gl-aviso-guardar > span > svg { flex: none; color: var(--primary-soft-text); }
  .gl-aviso-guardar b { color: var(--text); }
  .cfg-grid { grid-template-columns: minmax(0, 640px); }
  .cfg-nota-box { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; font-size: 12.5px; color: var(--warn-soft-text); background: var(--warn-soft); border-radius: 10px; }
  /* Recuperar contraseña */
  .rec-card { width: min(460px, calc(100vw - 32px)); display: grid; gap: 14px; text-align: left; }
  .rec-paso { display: grid; gap: 12px; }
  .rec-paso[hidden] { display: none; }
  .rec-info { margin: 0; font-size: 13px; color: var(--text-muted); }
  .rec-codigo { font-family: var(--font-mono, monospace); font-size: 22px; letter-spacing: 8px; text-align: center; }
  .rec-links { display: flex; gap: 16px; }
  .admin-row-equipo { display: inline-block; margin-top: 4px; padding: 1px 8px; font-size: 11px; font-weight: 600; color: var(--violet-soft-text); background: var(--violet-soft); border-radius: 999px; }
  .admin-hint { display: block; margin-top: 4px; font-size: 11.5px; color: var(--text-faint); }
  /* Glosas: selección en lote y datos por completar */
  .gl-fila.con-check { grid-template-columns: 20px 96px minmax(0, 1fr) auto auto; }
  .gl-fila.is-marcada { border-color: var(--primary); background: var(--primary-soft); }
  .gl-check { display: grid; place-items: center; margin: 0; cursor: pointer; }
  .gl-check input { width: 16px; height: 16px; margin: 0; accent-color: var(--primary); cursor: pointer; }
  .gl-lote { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 2px 0 8px; padding: 8px 12px; font-size: 12.5px; color: var(--text-muted); border: 1px dashed var(--hairline, var(--border)); border-radius: 10px; }
  .gl-lote.is-on { border-style: solid; border-color: var(--primary); background: var(--primary-soft); color: var(--text); position: sticky; top: 8px; z-index: 3; }
  .gl-lote-n b { font-size: 14px; }
  .gl-lote-acc { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
  .gl-falta { display: inline-block; margin-left: 4px; padding: 0 7px; font-size: 10.5px; font-weight: 600; color: var(--amber-soft-text, #b45309); background: var(--amber-soft, rgba(245,158,11,.14)); border-radius: 999px; vertical-align: 1px; }
  .gl-completar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 4px 0 10px; padding: 10px 14px; font-size: 13px; color: var(--text-muted); border: 1px solid var(--amber-soft, rgba(245,158,11,.3)); background: var(--amber-soft, rgba(245,158,11,.08)); border-radius: 10px; }
  .gl-completar b { color: var(--text); }
  @media (max-width: 640px) { .gl-fila.con-check { grid-template-columns: 20px 1fr auto; } .gl-fila.con-check .gl-info { grid-column: 2 / -1; } .gl-lote-acc { margin-left: 0; } }
  /* Glosas: plantillas de respuesta */
  .gl-plant { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--hairline, var(--border)); border-radius: 10px; background: var(--surface-2, transparent); }
  .gl-plant-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: 13px; }
  .gl-plant-h > span { display: flex; gap: 14px; }
  .gl-plant-lista { display: flex; flex-wrap: wrap; gap: 6px; }
  .gl-plant-op { display: grid; gap: 1px; padding: 7px 11px; text-align: left; font: inherit; color: var(--text); background: var(--surface-1, var(--surface)); border: 1px solid var(--hairline, var(--border)); border-radius: 9px; cursor: pointer; }
  .gl-plant-op:hover { border-color: var(--primary); }
  .gl-plant-op b { font-size: 12.5px; }
  .gl-plant-op small { font-size: 11px; color: var(--text-faint); }
  .gl-plant-vacio { margin: 0; font-size: 12.5px; color: var(--text-muted); }
  .gl-plant-card { width: min(640px, calc(100vw - 32px)); }
  .gl-plant-card textarea { resize: vertical; font-family: inherit; font-size: 13.5px; font-weight: 400; line-height: 1.5; }
  .gl-plant-card small { font-weight: 400; color: var(--text-faint); }
  .gl-plant-dos { display: grid; grid-template-columns: 1fr 1.4fr; gap: 12px; }
  .gl-plant-vars { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
  .gl-plant-var { padding: 2px 8px; font: 600 11.5px var(--font-mono, monospace); color: var(--primary-soft-text); background: var(--primary-soft); border: 0; border-radius: 6px; cursor: pointer; }
  .gl-plant-adm { display: grid; gap: 8px; max-height: 52vh; overflow: auto; }
  .gl-plant-adm-fila { display: flex; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--hairline, var(--border)); border-radius: 10px; }
  .gl-plant-adm-fila b { font-size: 13.5px; }
  .gl-plant-adm-fila small { display: block; font-size: 11.5px; color: var(--text-faint); }
  .gl-plant-adm-fila p { margin: 4px 0 0; font-size: 12.5px; color: var(--text-muted); }
  .gl-plant-adm-fila > span { display: flex; gap: 4px; align-items: flex-start; flex: none; }
  @media (max-width: 560px) { .gl-plant-dos { grid-template-columns: 1fr; } .gl-plant-adm-fila { flex-direction: column; } }
  /* Estadísticas: uso por herramienta y por cliente */
  .stats-herr-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px 22px; padding-top: 4px; }
  .stats-herr-mod { display: grid; gap: 6px; align-content: start; }
  .stats-herr-mod > .mod-chip { justify-self: start; }
  .stats-herr-mod.mod-soportes { --mod-color: #3b82f6; } .stats-herr-mod.mod-rips { --mod-color: #8b5cf6; } .stats-herr-mod.mod-pacientes { --mod-color: #14b8a6; } .stats-herr-mod.mod-res202 { --mod-color: #f97316; } .stats-herr-mod.mod-glosas { --mod-color: #ec4899; }
  .stats-herr-fila { display: grid; grid-template-columns: minmax(96px, 1.1fr) 1fr auto; grid-template-areas: "t b n" "t u u"; align-items: center; column-gap: 10px; font-size: 12.5px; }
  .stats-herr-fila > span { grid-area: t; color: var(--text); }
  .stats-herr-fila > strong { grid-area: n; font-variant-numeric: tabular-nums; }
  .stats-herr-fila > small { grid-area: u; justify-self: end; font-size: 10.5px; color: var(--text-faint); }
  .stats-herr-barra { grid-area: b; display: block; height: 7px; border-radius: 99px; background: var(--hairline, var(--border)); overflow: hidden; }
  .stats-herr-barra b { display: block; height: 100%; border-radius: 99px; background: var(--mod-color, var(--primary)); }
  .stats-herr-fila.is-cero > span, .stats-herr-fila.is-cero > strong { color: var(--text-faint); }
  .stats-uso .stats-panel-head { flex-wrap: wrap; }
  .stats-uso .stats-panel-head .btn { margin-left: auto; }
  .stats-uso-tabla { overflow-x: auto; }
  .stats-uso-tabla table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
  .stats-uso-tabla th { padding: 8px 10px; text-align: left; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--text-faint); border-bottom: 1px solid var(--hairline, var(--border)); white-space: nowrap; }
  .stats-uso-tabla td { padding: 8px 10px; border-bottom: 1px solid var(--hairline, var(--border)); vertical-align: middle; }
  .stats-uso-tabla .num { text-align: right; font-variant-numeric: tabular-nums; }
  .stats-uso-tabla tr.is-cero td { color: var(--text-faint); }
  .stats-uso-nombre { display: grid; gap: 1px; padding: 0; text-align: left; font: inherit; color: var(--text); background: none; border: 0; cursor: pointer; }
  .stats-uso-nombre:hover b { color: var(--primary); text-decoration: underline; }
  .stats-uso-nombre small { font-size: 11px; color: var(--text-faint); }
  .stats-uso-mods { display: flex; flex-wrap: wrap; gap: 4px; }
  .mod-chip.is-sin-uso { color: var(--text-faint); background: transparent; border: 1px dashed var(--hairline, var(--border)); }
  /* Validar RIPS: con muchos archivos la lista tiene su propio desplazamiento */
  .rv-lista { max-height: min(62vh, 620px); overflow-y: auto; padding-right: 4px; overscroll-behavior: contain; }
  .rv-lista-cab { display: grid; gap: 8px; }
  .rv-lista-cab[hidden] { display: none; }
  .rv-lista-seg { flex-wrap: wrap; }
  .rv-lista-seg .r202-seg-op[disabled] { opacity: .45; cursor: default; }
  .rv-lista-acc { display: flex; gap: 8px; align-items: center; }
  .rv-lista-acc .r202-buscar { flex: 1; min-width: 0; }
  .rv-lista-acc .btn { margin-left: auto; }
  .rv-lista-vacia { margin: 6px 2px; font-size: 12.5px; color: var(--text-muted); }
  .rec-ok { color: var(--green-soft-text, #15803d); font-weight: 600; }
  /* ── Usuarios: formulario por secciones, ancho completo ── */
  .admin-form-layout { max-width: none; grid-template-columns: minmax(0, 1fr) 300px; }
  .admin-sec { margin: 0 0 16px; padding: 18px 20px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); }
  .admin-sec.admin-form-plan { margin-top: 0; border-top: 1px solid var(--border); }
  .admin-sec-h { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
  .admin-sec-h h4 { margin: 0; font-size: 15px; }
  .admin-sec-h p { margin: 2px 0 0; font-size: 12.5px; color: var(--text-muted); }
  .admin-sec-n { display: grid; place-items: center; flex: none; width: 26px; height: 26px; font-size: 12.5px; font-weight: 700; color: var(--primary-soft-text); background: var(--primary-soft); border-radius: 50%; }
  .admin-sec-acc { display: flex; gap: 14px; margin-left: auto; }
  .admin-sec .admin-type { margin-bottom: 14px; }
  .page-view #adminUserForm .admin-grid-auto, .admin-grid-auto { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
  .admin-field[hidden] { display: none !important; }
  .admin-field-switch .admin-switch { min-height: 40px; }
  .admin-datos-aviso { margin: -4px 0 12px; color: var(--warn-soft-text); }
  .admin-doc { display: flex; gap: 8px; }
  .admin-doc > input { flex: 1; min-width: 0; }
  .admin-dv { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 600; color: var(--text-faint); }
  .admin-dv[hidden] { display: none; }
  .admin-dv input { width: 46px; text-align: center; }
  .admin-row-doc { display: block; margin-top: 3px; font-size: 11px; color: var(--text-faint); font-variant-numeric: tabular-nums; }
  /* Módulos: tarjeta con interruptor y sus herramientas adentro */
  .admin-mods { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
  .admin-mod { display: grid; align-content: start; border: 1px solid var(--border); border-radius: var(--radius-md, 12px); background: var(--surface-2, var(--input-bg)); transition: border-color .15s, background .15s; }
  .admin-mod.is-on { border-color: var(--primary); background: var(--primary-soft); }
  .admin-mod-h { display: flex; align-items: center; gap: 12px; padding: 12px 14px; margin: 0; cursor: pointer; }
  .admin-mod-t { flex: 1; min-width: 0; display: grid; }
  .admin-mod-t strong { font-size: 14px; color: var(--text); }
  .admin-mod-t small { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .admin-mod.is-on .admin-modulo-ico { color: #fff; background: var(--grad-primary); }
  .admin-mod-tools { display: grid; gap: 2px; padding: 4px 8px 10px; border-top: 1px solid var(--border); }
  .admin-mod-tool { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 7px 8px; border-radius: 8px; cursor: pointer; }
  .admin-mod-tool:hover { background: var(--border-soft); }
  .admin-mod-tool.is-unica { cursor: default; }
  .admin-mod-tool.is-unica:hover { background: none; }
  .admin-mod-tool input { width: 16px; height: 16px; margin: 2px 0 0; flex: none; accent-color: var(--primary); }
  .admin-mod-tool span { display: grid; gap: 1px; min-width: 0; }
  .admin-mod-tool b { font-size: 12.5px; font-weight: 600; color: var(--text); }
  .admin-mod-tool small { font-size: 11px; line-height: 1.35; color: var(--text-faint); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .admin-mod:not(.is-on) .admin-mod-tools { opacity: .5; }
  .admin-mod:not(.is-on) .admin-mod-tool { cursor: default; }
  /* Membrete */
  .admin-membrete { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 18px; align-items: start; }
  .admin-logo { display: grid; gap: 10px; }
  .admin-logo-caja { display: grid; place-items: center; height: 96px; padding: 10px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-md, 12px); }
  .admin-logo-caja.is-vacio { background: var(--input-bg); border-style: dashed; font-size: 12px; color: var(--text-faint); }
  .admin-logo-caja img { max-width: 100%; max-height: 76px; object-fit: contain; }
  .admin-logo-acc { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .admin-preview-logo { max-width: 160px; max-height: 50px; padding: 4px; background: #fff; border-radius: 6px; }
  @media (max-width: 760px) { .admin-membrete { grid-template-columns: 1fr; } .admin-sec { padding: 14px; } }
  .page-view #adminPaneForm form#adminUserForm { padding: 0; background: none; border: 0; }
  .admin-field .admin-doc > input { flex: 1 1 auto; width: auto; min-width: 0; }
  .admin-field .admin-dv input { flex: none; width: 52px; padding-left: 6px; padding-right: 6px; text-align: center; }
  .admin-form-actions { position: sticky; bottom: 0; z-index: 2; padding: 12px 0; background: linear-gradient(to top, var(--bg, #0b0b0f) 70%, transparent); }
  /* Soportes: tipo de atención y documentos obligatorios */
  .gc-agrup { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; }
  .gc-paquete { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
  .gc-atencion { display: grid; gap: 6px; align-content: start; }
  .gc-atencion label { font-size: 12.5px; font-weight: 600; color: var(--text-muted); }
  .gc-atencion-seg { min-height: 44px; }
  .req-resumen { display: flex; align-items: center; gap: 8px 16px; flex-wrap: wrap; margin: 0 0 16px; padding: 10px 14px; font-size: 12.5px; color: var(--text-muted); border: 1px solid var(--border); border-radius: 12px; background: var(--card-translucent); }
  .req-resumen b { color: var(--text); font-weight: 600; }
  .req-resumen-t { font-weight: 700; color: var(--text); }
  .req-resumen .admin-link { margin-left: auto; }
  .cfg-docs { grid-column: 1 / -1; }
  .req-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 12px 0; }
  .req-col { display: grid; gap: 4px; margin: 0; padding: 12px 14px; border: 1px solid var(--border); border-radius: 12px; }
  .req-col legend { padding: 0 6px; font-size: 13px; font-weight: 700; color: var(--text); }
  .req-cols .req-check { display: flex; align-items: center; gap: 10px; padding: 5px 4px; font-size: 13px; color: var(--text); cursor: pointer; }
  .req-cols .req-check input { width: 16px; height: 16px; accent-color: var(--primary); }
  .req-cols .req-check code { margin-left: auto; font-size: 11px; color: var(--text-faint); }
  .cfg-pie { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
  @media (max-width: 900px) { .gc-agrup, .gc-paquete { grid-template-columns: 1fr 1fr; } .gc-atencion { grid-column: 1 / -1; } }
  @media (max-width: 640px) { .req-cols { grid-template-columns: 1fr; } .gc-agrup, .gc-paquete { grid-template-columns: 1fr; } }
  /* Avisos (campana) */
  .avisos-wrap { position: relative; margin-left: auto; }
  .avisos-btn { position: relative; display: grid; place-items: center; width: 34px; height: 34px; color: var(--text-muted); background: transparent; border: 1px solid transparent; border-radius: 10px; cursor: pointer; }
  .avisos-btn:hover, .avisos-btn[aria-expanded="true"] { color: var(--text); background: var(--border-soft); }
  .avisos-n { position: absolute; top: 2px; right: 1px; min-width: 16px; height: 16px; padding: 0 4px; font-size: 10px; font-weight: 700; line-height: 16px; text-align: center; color: #fff; background: #ef4444; border-radius: 999px; }
  .avisos-pop { position: fixed; top: 60px; left: 12px; z-index: 900; width: min(360px, calc(100vw - 24px)); max-height: 70vh; overflow: auto; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow-lg, 0 12px 40px rgba(0,0,0,.35)); }
  .avisos-h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 8px; font-size: 14px; }
  .avisos-h small { font-size: 11.5px; color: var(--text-faint); }
  .avisos-lista { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
  .aviso { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 9px 10px; border: 1px solid var(--border); border-radius: 10px; }
  .aviso.is-nuevo { border-color: var(--primary); }
  .aviso b { display: block; font-size: 12.5px; color: var(--text); }
  .aviso small { display: block; font-size: 11.5px; color: var(--text-muted); }
  .aviso-ico { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; color: var(--primary-soft-text); background: var(--primary-soft); }
  .aviso.is-mal .aviso-ico { color: #ef4444; background: rgba(239,68,68,.14); }
  .aviso.is-warn .aviso-ico { color: var(--warn-soft-text); background: var(--warn-soft); }
  .avisos-vacio { margin: 6px 2px; font-size: 13px; color: var(--text-muted); }
  /* Bienvenida */
  .bv-card { width: min(640px, calc(100vw - 32px)); }
  .bv-h h2 { margin: 0 0 4px; font-size: 20px; }
  .bv-h p { margin: 0; font-size: 13px; color: var(--text-muted); }
  .bv-mods { display: grid; gap: 8px; }
  .bv-mod { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; }
  .bv-mod .admin-modulo-ico { color: #fff; background: var(--grad-primary); }
  .bv-mod b { display: block; font-size: 14px; }
  .bv-mod small { font-size: 12px; color: var(--text-muted); }
  .bv-tips { display: grid; gap: 8px; margin: 0; padding: 12px 14px 12px 30px; font-size: 12.5px; color: var(--text-muted); background: var(--card-translucent); border-radius: 12px; }
  .bv-tips b { color: var(--text); }
  /* Validar RIPS → Editor */
  .rv-corregir { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 4px 12px 8px; padding: 8px 10px; font-size: 12.5px; color: var(--text-muted); background: var(--primary-soft); border-radius: 9px; }
  /* Validar RIPS: corregir ahí mismo */
  .rv-grupo li:has(.rv-in) { display: grid; grid-template-columns: minmax(0, 1fr) auto 150px; align-items: center; gap: 10px; }
  .rv-in { height: 30px; padding: 4px 8px; font-family: var(--font-mono, monospace); font-size: 12px; }
  .rv-todos { width: 160px; height: 32px; padding: 4px 8px; font-family: var(--font-mono, monospace); font-size: 12px; }
  .rv-corregir { justify-content: flex-start; }
  .rv-corregir > span:first-child { font-weight: 600; color: var(--text); }
  .rv-cambios { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 4px 0 10px; padding: 10px 14px; font-size: 13px; color: var(--text); background: var(--success-soft); border: 1px solid var(--success, #22c55e); border-radius: 12px; }
  .rv-cambios-acc { display: flex; gap: 8px; }
  @media (max-width: 640px) { .rv-grupo li:has(.rv-in) { grid-template-columns: 1fr; } }
  /* Configuración: seguridad de la cuenta */
  .cfg-seg { grid-column: 1 / -1; }
  .cfg-filas { display: grid; gap: 2px; margin-top: 10px; }
  .cfg-fila { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 10px 2px; border-top: 1px solid var(--border); }
  .cfg-fila b { display: block; font-size: 13.5px; color: var(--text); }
  .cfg-fila small { font-size: 12px; color: var(--text-muted); }
  .cfg-estado { padding: 2px 9px; font-size: 11.5px; font-weight: 700; border-radius: 999px; }
  .cfg-estado.is-ok { color: var(--success-soft-text); background: var(--success-soft); }
  .cfg-estado.is-off { color: var(--warn-soft-text); background: var(--warn-soft); }
  @media (max-width: 640px) { .cfg-fila { grid-template-columns: 1fr; } }
  .rv-corr { font-style: normal; font-weight: 600; color: var(--success-soft-text); }
  /* Usuarios: historial de la cuenta */
  .admin-hist { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; max-height: 320px; overflow: auto; }
  .admin-hist li { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; padding: 9px 2px; border-top: 1px solid var(--border); font-size: 12.5px; }
  .admin-hist li:first-child { border-top: 0; }
  .admin-hist time { color: var(--text-faint); font-variant-numeric: tabular-nums; }
  .admin-hist b { display: block; color: var(--text); }
  .admin-hist span { display: block; color: var(--text-muted); }
  .admin-hist small { color: var(--text-faint); }
  .admin-hist .admin-hist-vacio { display: block; color: var(--text-muted); }
  @media (max-width: 640px) { .admin-hist li { grid-template-columns: 1fr; gap: 2px; } }
  .rv-cab-acc { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
  /* Validar RIPS: quitar un archivo, fuente de las tablas y «Cambiar todos a» en una línea */
  .rv-file-fila { position: relative; }
  .rv-file-fila .rv-file { width: 100%; padding-right: 34px; }
  .rv-quitar { position: absolute; top: 50%; right: 6px; transform: translateY(-50%); display: grid; place-items: center; width: 24px; height: 24px; color: var(--text-faint); background: transparent; border: 0; border-radius: 6px; cursor: pointer; opacity: 0; transition: opacity .15s; }
  .rv-file-fila:hover .rv-quitar, .rv-quitar:focus-visible { opacity: 1; }
  .rv-quitar:hover { color: #ef4444; background: rgba(239,68,68,.12); }
  @media (hover: none) { .rv-quitar { opacity: 1; } }
  .rv-fuente { margin: 2px 0 10px; font-size: 11.5px; color: var(--text-faint); }
  .rv-corregir { flex-wrap: wrap; }
  .rv-corregir .rv-todos { flex: 0 1 200px; width: 200px; min-width: 120px; }
  .rv-corregir .btn { flex: none; }
  /* Inicio: tu mes */
  .inicio-mes { margin-bottom: 18px; }
  .inicio-mes-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
  .inicio-mes-h h3 { margin: 0; font-size: 15px; }
  .inicio-mes-h span { font-size: 12px; color: var(--text-muted); }
  .inicio-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
  .inicio-kpi { display: grid; gap: 1px; padding: 12px 14px; border: 1px solid var(--border); border-left: 3px solid var(--mod-color, var(--primary)); border-radius: 12px; }
  .inicio-kpi strong { font-size: 22px; font-variant-numeric: tabular-nums; color: var(--text); }
  .inicio-kpi.is-dinero strong { font-size: 18px; }
  .inicio-kpi span { font-size: 12.5px; color: var(--text); }
  .inicio-kpi small { font-size: 11px; color: var(--text-faint); }
  .inicio-kpi.mod-soportes { --mod-color: #3b82f6; } .inicio-kpi.mod-rips { --mod-color: #8b5cf6; } .inicio-kpi.mod-pacientes { --mod-color: #14b8a6; } .inicio-kpi.mod-res202 { --mod-color: #f97316; } .inicio-kpi.mod-glosas { --mod-color: #ec4899; }
  /* Estadísticas: errores de la app */
  .stats-errores .stats-panel-head { flex-wrap: wrap; }
  .stats-errores .stats-panel-head .btn { margin-left: auto; }
  .stats-err-lista { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
  .stats-err-lista li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 10px 2px; border-top: 1px solid var(--border); }
  .stats-err-lista li:first-child { border-top: 0; }
  .stats-err-lista code { display: block; font-size: 12px; color: var(--text); white-space: normal; word-break: break-word; }
  .stats-err-lista small { display: block; font-size: 11px; color: var(--text-faint); }
  .stats-err-n { text-align: right; font-size: 12px; color: var(--text-muted); }
  @media (max-width: 640px) { .stats-err-lista li { grid-template-columns: 1fr; } .stats-err-n { text-align: left; } }
  /* Glosas: plazos propios por EPS */
  .gl-plazos-eps { grid-column: 1 / -1; display: grid; gap: 8px; }
  .gl-peps-tabla { display: grid; grid-template-columns: minmax(140px, 1fr) 88px 98px 104px auto; align-items: center; gap: 6px 10px; font-size: 12.5px; }
  .gl-peps-tabla > span { font-size: 11px; font-weight: 600; color: var(--text-faint); }
  .gl-peps-tabla b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
  .gl-peps-tabla input { width: 100%; }
  .gl-peps-nueva { display: flex; gap: 8px; align-items: center; }
  .gl-peps-nueva input { flex: 1; min-width: 0; max-width: 340px; }
  @media (max-width: 640px) { .gl-peps-tabla { grid-template-columns: 1fr 1fr 1fr; } .gl-peps-tabla > span { display: none; } .gl-peps-tabla b { grid-column: 1 / -1; } }
  /* Módulo Errores */
  .side-badge { margin-left: auto; min-width: 18px; padding: 0 6px; font-size: 10.5px; font-weight: 700; line-height: 18px; text-align: center; color: #fff; background: #ef4444; border-radius: 999px; }
  .admin-err-acc { display: flex; gap: 8px; }
  .admin-err-nota { margin: 0 0 12px; font-size: 12.5px; color: var(--text-muted); }
  .stats-errores.is-completo .stats-panel-head { display: none; }
  .stats-err-lista li.is-nuevo { background: rgba(239,68,68,.05); }
  .stats-err-nuevo { display: inline-block; margin-bottom: 3px; padding: 0 7px; font-size: 10.5px; font-weight: 700; color: #fff; background: #ef4444; border-radius: 999px; }
  .stats-err-det { grid-column: 1 / -1; font-size: 12px; color: var(--text-muted); }
  .stats-err-det summary { cursor: pointer; color: var(--primary-soft-text); }
  .stats-err-det span { display: block; margin-top: 3px; }
  .admin-check { display: flex; align-items: flex-start; gap: 8px; margin-top: 8px; font-size: 12.5px; font-weight: 500; color: var(--text-muted); cursor: pointer; }
  .admin-check input { margin-top: 2px; accent-color: var(--primary); }
  .admin-check[hidden] { display: none; }
  .rv-todosarch { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-muted); cursor: pointer; }
  .rv-todosarch input { accent-color: var(--primary); }

  /* Ayuda por herramienta */
  .tool-ayuda { display: inline-grid; place-items: center; width: 28px; height: 28px; margin-left: 6px; color: var(--text-faint); background: transparent; border: 1px solid transparent; border-radius: 999px; cursor: pointer; vertical-align: middle; }
  .tool-ayuda:hover, .tool-ayuda:focus-visible { color: var(--primary); background: var(--border-soft); }
  .ayuda-pasos { display: grid; gap: 8px; margin: 14px 0; padding: 0; list-style: none; counter-reset: paso; }
  .ayuda-pasos li { position: relative; padding: 8px 10px 8px 40px; font-size: 13.5px; line-height: 1.45; border: 1px solid var(--border); border-radius: 10px; counter-increment: paso; }
  .ayuda-pasos li::before { content: counter(paso); position: absolute; left: 10px; top: 8px; display: grid; place-items: center; width: 20px; height: 20px; font-size: 11.5px; font-weight: 700; color: #fff; background: var(--grad-primary, var(--primary)); border-radius: 999px; }
  /* Respaldo semanal (Administración › Actividad) */
  .admin-resp { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 12px; background: var(--surface); }
  .admin-resp b { display: block; font-size: 13.5px; }
  .admin-resp small { display: block; font-size: 12.5px; color: var(--text-muted); }
  /* IA de prueba en Validar RIPS (solo administrador) */
  .rv-ia { margin-left: 6px; padding: 3px 9px; white-space: nowrap; font: inherit; font-size: 12px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border: 1px solid transparent; border-radius: 999px; cursor: pointer; }
  .rv-ia:hover { border-color: var(--primary); }
  .rv-ia-res { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; flex-basis: 100%; margin-top: 6px; font-size: 12.5px; color: var(--text-muted); }
  .rv-ia-res small { flex-basis: 100%; font-size: 11.5px; color: var(--text-faint); }
  .rv-ia-op { padding: 4px 10px; font: inherit; font-size: 12.5px; color: var(--text); background: var(--surface); border: 1px solid var(--border); border-radius: 8px; cursor: pointer; text-align: left; }
  .rv-ia-op:hover { border-color: var(--primary); }
  .rv-ia-op b { color: var(--primary); }
  .rv-grupo li:has(.rv-in):has(.rv-ia) { grid-template-columns: minmax(0, 1fr) auto 150px auto; }
  .rv-ia-res { grid-column: 1 / -1; margin-top: 2px; }
  @media (max-width: 640px) { .rv-grupo li:has(.rv-in):has(.rv-ia) { grid-template-columns: 1fr; } .rv-ia { justify-self: start; margin-left: 0; } }
  /* Logo: «Cero» en azul (en los cuadros azules el símbolo va en blanco) */
  .marca-cero { color: var(--primary); }
  /* Botón de modo claro / oscuro */
  .tema-btn { display: inline-grid; place-items: center; width: 36px; height: 36px; padding: 0; color: var(--muted, var(--text-muted)); background: transparent; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
  .tema-btn:hover { color: var(--text); border-color: var(--primary); }
  .tema-btn .tema-luna { display: none; }
  :root[data-theme="light"] .tema-btn .tema-sol { display: none; }
  :root[data-theme="light"] .tema-btn .tema-luna { display: inline-grid; }
  .tema-sol, .tema-luna { display: inline-grid; place-items: center; }
  .tema-login { position: absolute; top: 16px; right: 16px; z-index: 2; background: var(--surface); }

  /* ═══ Rediseño 2026-10: colores por módulo, Inicio «Para hoy», Administración plegable, botones sobrios ═══ */
  .mod-soportes { --mod-color: #3b82f6; } .mod-rips { --mod-color: #8b5cf6; } .mod-pacientes { --mod-color: #14b8a6; } .mod-res202 { --mod-color: #f97316; } .mod-glosas { --mod-color: #ec4899; }
  .module-tab[data-arg="soportes"] { --mod-color: #3b82f6; } .module-tab[data-arg="rips"] { --mod-color: #8b5cf6; } .module-tab[data-arg="pacientes"] { --mod-color: #14b8a6; }
  .module-tab[data-arg="res202"] { --mod-color: #f97316; } .module-tab[data-arg="glosas"] { --mod-color: #ec4899; }
  /* Barra lateral: cada módulo con su color */
  .side-modules .module-tab .module-ico { color: var(--mod-color, var(--primary)); background: color-mix(in srgb, var(--mod-color, var(--primary)) 13%, transparent); box-shadow: none; }
  .side-modules .module-tab.side-item.active { background: color-mix(in srgb, var(--mod-color, var(--primary)) 11%, transparent); }
  .side-modules .module-tab.active .module-ico { color: #fff; background: var(--mod-color, var(--primary)); box-shadow: 0 6px 16px -8px var(--mod-color, var(--primary)); }
  /* Administración plegable */
  .side-sec-btn { display: flex; align-items: center; justify-content: space-between; width: 100%; font-family: inherit; text-align: left; background: none; border: 0; cursor: pointer; }
  .side-sec-btn svg { transition: transform .2s; opacity: .7; }
  .side-sec-btn:hover { color: var(--text); }
  .side-admin.is-plegado .side-sec-btn svg { transform: rotate(-90deg); }
  .side-admin.is-plegado > .side-item { display: none !important; }
  .side-admin.is-plegado:has(#sideErroresN:not([hidden])) .side-sec-btn::after { content: ""; width: 7px; height: 7px; margin-left: auto; margin-right: 8px; border-radius: 50%; background: #ef4444; }

  /* Inicio */
  .inicio-top { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 14px; margin-bottom: 18px; align-items: start; }
  .inicio-top.sin-rapidos { grid-template-columns: 1fr; }
  .inicio-hoy { padding: 18px 20px; }
  .hoy-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
  .hoy-h h3 { margin: 0; font-size: 16px; }
  .hoy-lista { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
  .hoy-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
  .hoy-item b { display: block; font-size: 13.5px; color: var(--text); }
  .hoy-item small { display: block; font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .hoy-ico { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; color: var(--primary); background: var(--primary-soft); }
  .hoy-item.is-mal .hoy-ico { color: #ef4444; background: rgba(239,68,68,.13); }
  .hoy-item.is-warn .hoy-ico { color: #f59e0b; background: rgba(245,158,11,.14); }
  .hoy-glosa { grid-template-columns: minmax(0, 1fr) auto; }
  .hoy-plazo { display: inline-block; margin-bottom: 3px; padding: 2px 8px; font-size: 11.5px; font-weight: 700; text-align: center; border-radius: 8px; color: var(--text-muted); background: var(--border-soft); }
  .hoy-plazo.is-vencida { color: #ef4444; background: rgba(239,68,68,.13); }
  .hoy-plazo.is-pronto { color: #d97706; background: rgba(245,158,11,.15); }
  .hoy-vacio { display: flex; align-items: center; gap: 14px; padding: 14px; border: 1px dashed var(--border); border-radius: 12px; }
  .hoy-vacio b { display: block; font-size: 14px; color: var(--text); }
  .hoy-vacio small { display: block; font-size: 12.5px; color: var(--text-muted); }
  .hoy-ok { display: grid; place-items: center; flex: none; width: 42px; height: 42px; border-radius: 12px; color: #16a34a; background: rgba(22,163,74,.12); }
  .inicio-rapidos .inicio-h { margin-top: 0; }
  .rapidos { display: grid; gap: 8px; }
  .rapido { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; font: inherit; text-align: left; color: var(--text-muted); background: var(--surface); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; transition: border-color .2s, transform .15s; }
  .rapido:hover { border-color: var(--mod-color, var(--primary)); transform: translateY(-1px); }
  .rapido .module-ico { width: 34px; height: 34px; border-radius: 10px; color: var(--mod-color); background: color-mix(in srgb, var(--mod-color) 13%, transparent); }
  .rapido .module-ico svg { width: 18px; height: 18px; }
  .rapido b { display: block; font-size: 13.5px; color: var(--text); }
  .rapido small { display: block; font-size: 12px; }
  /* Tarjetas de módulos: parejas y con su color */
  .inicio-mods { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); grid-auto-rows: 1fr; }
  .inicio-mod { position: relative; overflow: hidden; }
  .inicio-mod::before { content: ""; position: absolute; inset: 0 0 auto; height: 3px; background: var(--mod-color, var(--primary)); opacity: .9; }
  .inicio-mod-h .module-ico { color: var(--mod-color, var(--primary)); background: color-mix(in srgb, var(--mod-color, var(--primary)) 13%, transparent); box-shadow: none; }
  .inicio-mod:not(.is-locked):hover { border-color: color-mix(in srgb, var(--mod-color, var(--primary)) 45%, var(--border)); }
  .inicio-mod-f { align-items: flex-end; }
  .inicio-abrir { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; padding: 7px 12px; font: inherit; font-size: 13px; font-weight: 700; color: var(--mod-color, var(--primary)); background: color-mix(in srgb, var(--mod-color, var(--primary)) 11%, transparent); border: 0; border-radius: 9px; cursor: pointer; }
  .inicio-abrir:hover { color: #fff; background: var(--mod-color, var(--primary)); }
  .inicio-mod .inicio-tool:hover { border-color: var(--mod-color, var(--primary)); color: var(--text); }
  @media (max-width: 900px) { .inicio-top { grid-template-columns: 1fr; } }
  @media (max-width: 560px) { .rapidos .rapido:nth-child(n+3) { display: none; } }
  @media (max-width: 560px) { .hoy-item { grid-template-columns: minmax(0, 1fr) auto; } .hoy-item > .hoy-ico, .hoy-item > .hoy-plazo { grid-column: 1 / -1; justify-self: start; } }

  /* Botones y sombras más sobrios (como la portada): sin «escalón» y con sombras suaves */
  :root, html[data-theme="dark"] { --btn-ledge: transparent; --btn-ledge-neutral: transparent; }
  :root { --shadow-primary: 0 6px 16px -8px rgba(37,99,235,.55); }
  html[data-theme="dark"] { --shadow-primary: 0 8px 20px -10px rgba(59,130,246,.6); }
  .btn:active, .login-card button:active { transform: translateY(1px); }
  .btn-primary:hover, .btn-blue:hover, .login-card button:hover { box-shadow: 0 10px 24px -10px rgba(37,99,235,.7); }
  .btn-danger { box-shadow: none; }
  /* Guía de las herramientas vacías (se oculta al haber resultados) */
  .guia-vacia { margin-top: 18px; padding: 20px; border: 1px dashed var(--border); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--surface) 60%, transparent); }
  .guia-t { margin: 0 0 12px; font-size: 12px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
  .guia-pasos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; counter-reset: guia; }
  .guia-pasos li { position: relative; padding: 14px 14px 14px 52px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; counter-increment: guia; }
  .guia-pasos li::before { content: counter(guia); position: absolute; left: 14px; top: 14px; display: grid; place-items: center; width: 26px; height: 26px; font-size: 13px; font-weight: 800; color: var(--primary); background: var(--primary-soft); border-radius: 8px; }
  .guia-pasos b { display: block; font-size: 13.5px; color: var(--text); }
  .guia-pasos span { display: block; margin-top: 2px; font-size: 12.5px; line-height: 1.45; color: var(--text-muted); }
  .guia-res { display: flex; align-items: flex-start; gap: 8px; margin: 14px 0 0; font-size: 13px; color: var(--text-muted); }
  .guia-res svg { flex: none; margin-top: 2px; color: #16a34a; }
  #glResultado:not([hidden]) ~ .guia-vacia, #r202Resultado:not([hidden]) ~ .guia-vacia, #panelCiclos:has(#cResultado:not([hidden])) .guia-vacia { display: none; }
  .ciclos-layout > .guia-vacia { margin-top: 0; align-self: start; }
  .ciclos-layout > .guia-vacia .guia-pasos { grid-template-columns: 1fr; }
  @media (max-width: 760px) { .guia-pasos { grid-template-columns: 1fr; } }
  /* Tema junto a la campana */
  .side-brand .tema-side { margin-left: auto; }
  .side-brand .tema-side + .avisos-wrap { margin-left: 2px; }
  .tema-side svg { width: 17px; height: 17px; }
  /* Configuración: accesos a secciones, Apariencia y dos columnas en pantallas anchas */
  .cfg-nav { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
  .cfg-nav-op { padding: 7px 14px; font: inherit; font-size: 13px; font-weight: 600; color: var(--text-muted); background: var(--surface); border: 1px solid var(--border); border-radius: 999px; cursor: pointer; }
  .cfg-nav-op:hover { color: var(--text); border-color: var(--primary); }
  .cfg-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); max-width: 1200px; }
  .cfg-docs { grid-column: 1 / -1; }
  .cfg-card { scroll-margin-top: 20px; transition: box-shadow .3s, border-color .3s; }
  .cfg-card.is-destacada { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring, rgba(59,130,246,.25)); }
  .cfg-ico.is-violeta { color: #8b5cf6; background: rgba(139,92,246,.14); }
  .cfg-temas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .cfg-tema { display: grid; gap: 4px; padding: 10px; font: inherit; text-align: left; color: var(--text-muted); background: var(--surface); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; }
  .cfg-tema:hover { border-color: var(--border-strong); }
  .cfg-tema.is-on { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary) inset; }
  .cfg-tema b { font-size: 13px; color: var(--text); }
  .cfg-tema small { font-size: 11.5px; line-height: 1.35; }
  .cfg-tema-muestra { display: grid; grid-template-columns: 30% 1fr; grid-template-rows: 1fr 1fr; gap: 4px; height: 56px; margin-bottom: 4px; padding: 6px; border-radius: 8px; border: 1px solid var(--border); }
  .cfg-tema-muestra i { border-radius: 4px; }
  .cfg-tema-muestra i:first-child { grid-row: 1 / -1; }
  .cfg-tema-muestra.is-claro { background: #f4f5fa; } .cfg-tema-muestra.is-claro i { background: #ffffff; border: 1px solid #e4e4e7; } .cfg-tema-muestra.is-claro i:nth-child(2) { background: #3b82f6; border: 0; }
  .cfg-tema-muestra.is-oscuro { background: #09090b; } .cfg-tema-muestra.is-oscuro i { background: #1f1f23; } .cfg-tema-muestra.is-oscuro i:nth-child(2) { background: #3b82f6; }
  .cfg-tema-muestra.is-sistema { background: linear-gradient(135deg, #f4f5fa 50%, #09090b 50%); } .cfg-tema-muestra.is-sistema i { background: rgba(127,127,127,.35); } .cfg-tema-muestra.is-sistema i:nth-child(2) { background: #3b82f6; }
  @media (max-width: 560px) { .cfg-temas { grid-template-columns: 1fr; } .cfg-tema { grid-template-columns: 64px 1fr; align-items: center; column-gap: 12px; } .cfg-tema-muestra { grid-row: span 2; margin: 0; height: 44px; } }
  /* Usuarios: cifras en una fila e iniciales con color */
  @media (min-width: 900px) { .admin-resumen { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
  .admin-row-avatar.av-0 { color: #1d4ed8; background: rgba(59,130,246,.15); } .admin-row-avatar.av-1 { color: #6d28d9; background: rgba(139,92,246,.16); }
  .admin-row-avatar.av-2 { color: #0f766e; background: rgba(20,184,166,.16); } .admin-row-avatar.av-3 { color: #c2410c; background: rgba(249,115,22,.16); }
  .admin-row-avatar.av-4 { color: #be185d; background: rgba(236,72,153,.15); } .admin-row-avatar.av-5 { color: #15803d; background: rgba(34,197,94,.15); }
  html[data-theme="dark"] .admin-row-avatar.av-0 { color: #93c5fd; } html[data-theme="dark"] .admin-row-avatar.av-1 { color: #c4b5fd; } html[data-theme="dark"] .admin-row-avatar.av-2 { color: #5eead4; }
  html[data-theme="dark"] .admin-row-avatar.av-3 { color: #fdba74; } html[data-theme="dark"] .admin-row-avatar.av-4 { color: #f9a8d4; } html[data-theme="dark"] .admin-row-avatar.av-5 { color: #86efac; }
  .side-brand .avisos-btn { width: 30px; height: 30px; border-radius: 9px; }
  .side-brand .tema-side + .avisos-wrap { margin-left: 0; }
  .side-brand { gap: 8px; }
  /* Subtítulo bajo el logo: hasta dos líneas en vez de cortarse */
  .side-brand .app-topbar-sub { white-space: normal; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.25; }
  .side-brand .app-topbar-sub > span { display: inline; }
  /* Configuración por pestañas */
  .cfg-nav-op.is-on { color: #fff; background: var(--primary); border-color: var(--primary); }
  .cfg-grid.cfg-una { grid-template-columns: minmax(0, 1fr); max-width: 980px; }
  .cfg-tema { align-content: start; }
  .rv-ia-sub { flex-basis: 100%; font-size: 12px; font-weight: 600; color: var(--text-muted); }
  .rv-ia-sub ~ .rv-ia-sub { margin-top: 4px; }
  .rv-exp-btn { display: inline-block; margin: 2px 0 8px; padding: 4px 10px; font: inherit; font-size: 12px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border: 0; border-radius: 999px; cursor: pointer; }
  .rv-exp { margin: 2px 0 10px; padding: 10px 12px; font-size: 12.5px; line-height: 1.5; color: var(--text-muted); background: color-mix(in srgb, var(--primary-soft) 60%, transparent); border-radius: 10px; }
  .rv-exp p { margin: 0; color: var(--text); }
  .rv-exp ol { margin: 6px 0 4px 18px; padding: 0; }
  .rv-exp small { font-size: 11px; color: var(--text-faint); }
  .gl-ia-acc { display: flex; gap: 8px; flex-wrap: wrap; justify-self: start; }
  .gl-ia-banner i { font-style: normal; color: var(--text-muted); }
  /* El submenú hereda el color de su módulo (línea de la herramienta activa) */
  .module-tab[data-arg="soportes"] + .side-sub { --mod-color: #3b82f6; } .module-tab[data-arg="rips"] + .side-sub { --mod-color: #8b5cf6; } .module-tab[data-arg="glosas"] + .side-sub { --mod-color: #ec4899; }
  .side-modules .side-sub .mode-tab.active { color: var(--text); background: color-mix(in srgb, var(--mod-color, var(--primary)) 10%, transparent); box-shadow: inset 2px 0 0 var(--mod-color, var(--primary)); }
  .side-modules .side-sub .mode-tab.active svg { color: var(--mod-color, var(--primary)); }
  /* Acceso a la IA por cuenta */
  .admin-ia { display: flex; align-items: flex-start; gap: 10px; margin-top: 12px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 12px; background: color-mix(in srgb, var(--primary-soft) 55%, transparent); cursor: pointer; }
  .admin-ia[hidden] { display: none; }
  .admin-ia input { margin-top: 3px; width: 16px; height: 16px; accent-color: var(--primary); }
  .admin-ia b { display: block; font-size: 13.5px; color: var(--text); }
  .admin-ia small { display: block; margin-top: 2px; font-size: 12px; line-height: 1.45; color: var(--text-muted); }
  .admin-ia-tag { margin-left: 4px; padding: 1px 7px; font-size: 10.5px; font-weight: 700; color: var(--primary); background: var(--primary-soft); border-radius: 999px; vertical-align: middle; }

/* Nombre anterior de la herramienta junto al título (Agrupado, Paquete, Editor de RIPS) */
.tool-alias { display: inline-block; margin-left: 4px; padding: 2px 8px; vertical-align: middle; font-size: 12px; font-weight: 600; letter-spacing: 0; color: var(--text-faint); background: var(--border-soft); border-radius: 999px; }

/* «Probar con un ejemplo» bajo cada zona para soltar archivos, y «Al terminar obtienes» en la ayuda */
.gc-ejemplo { display: inline-flex; align-items: center; gap: 7px; margin: 10px auto 0; padding: 6px 10px; font: inherit; font-size: 13px; color: var(--text-muted); background: none; border: 1px dashed transparent; border-radius: 9px; cursor: pointer; transition: color .15s, border-color .15s, background-color .15s; }
.gc-ejemplo b { color: var(--primary); font-weight: 650; }
.gc-ejemplo:hover { color: var(--text); border-color: var(--border); background: var(--surface-raised); }
.gc-ejemplo:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.ayuda-obtienes { margin: 14px 0 4px; padding: 12px 14px; border-radius: 12px; background: var(--primary-soft); color: var(--primary-soft-text); }
.ayuda-obtienes b { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; margin-bottom: 4px; }
.ayuda-obtienes p { margin: 0; color: var(--text); font-size: 14px; line-height: 1.5; }
.gl-aviso-ejemplo { border-style: dashed; }

/* «Siguiente paso»: qué hacer ahora con el resultado (texto + botón; el color solo acompaña) */
.gc-sig { margin: 14px 0; padding: 14px 16px; background: var(--surface-raised); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow-sm); }
.gc-sig-t { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-faint); }
.gc-sig ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.gc-sig li { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 10px; font-size: 14px; line-height: 1.45; color: var(--text-muted); }
.gc-sig li b { color: var(--text); }
.gc-sig li > i { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; font-style: normal; font-size: 13px; font-weight: 800; background: var(--primary-soft); color: var(--primary-soft-text); }
.gc-sig li.is-err > i { background: var(--danger-soft); color: var(--danger-soft-text); }
.gc-sig li.is-warn > i { background: var(--warn-soft); color: var(--warn-soft-text); }
.gc-sig li.is-ok > i { background: var(--success-soft, var(--primary-soft)); color: var(--success-soft-text, var(--primary-soft-text)); }
.gc-sig li .btn { white-space: nowrap; }
@media (max-width: 560px) { .gc-sig li { grid-template-columns: 24px minmax(0, 1fr); } .gc-sig li .btn { grid-column: 2; justify-self: start; } }

/* Columnas recordadas por formato (Glosas) */
.gl-col-dlg { width: min(640px, calc(100vw - 32px)); max-height: calc(100vh - 48px); padding: 22px; color: var(--text); background: var(--surface-raised); border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow-lg, 0 20px 50px rgba(0,0,0,.25)); }
.gl-col-dlg::backdrop { background: rgba(15, 23, 42, .5); }
.gl-col-form h3 { margin: 0 0 6px; font-size: 17px; }
.gl-col-form > p { margin: 0 0 14px; font-size: 13.5px; color: var(--text-muted); }
.gl-col-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 10px 14px; }
.gl-col-grid label { display: grid; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--text-muted); }
.gl-col-grid select { min-width: 0; padding: 8px 10px; font: inherit; font-size: 13.5px; color: var(--text); background: var(--input-bg); border: 1px solid var(--border); border-radius: 10px; }
.gl-col-releer { display: flex; align-items: center; gap: 8px; margin-top: 14px; font-size: 13.5px; }
.gl-col-nota { margin: 14px 0 0; font-size: 13px; color: var(--text-faint); }

/* Pasos visibles de cada herramienta (debajo del título) */
.tool-pasos { display: flex; flex-wrap: wrap; gap: 6px 4px; margin: -4px 0 16px; padding: 0; list-style: none; font-size: 13px; }
.tool-pasos li { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 6px; color: var(--text-faint); background: var(--surface-raised); border: 1px solid var(--border); border-radius: 999px; }
.tool-pasos li + li::before { content: ""; width: 10px; height: 1px; margin-left: -14px; margin-right: 2px; background: var(--border); }
.tool-pasos li span { display: grid; place-items: center; width: 20px; height: 20px; font-size: 11.5px; font-weight: 800; border-radius: 50%; background: var(--border-soft); color: var(--text-muted); }
.tool-pasos li.is-actual { color: var(--text); font-weight: 650; border-color: var(--mod-color, var(--primary)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--mod-color, var(--primary)) 14%, transparent); }
.tool-pasos li.is-actual span { color: #fff; background: var(--mod-color, var(--primary)); }
.tool-pasos li.is-hecho { color: var(--text-muted); }
.tool-pasos li.is-hecho span { color: var(--success-soft-text); background: var(--success-soft); }
@media (max-width: 560px) { .tool-pasos li { padding-right: 10px; font-size: 12.5px; } .tool-pasos li + li::before { display: none; } }
