/* ═══════════════════════════════════════════════════
   QUÁLITAS CLM — DESIGN SYSTEM v2
   Persistent Sidebar · Wow Moments · Full System
   ═══════════════════════════════════════════════════ */

/* ── 1. TOKENS ──────────────────────────────────────── */
:root {
  /* Marca */
  --q-morado:         #90288C;
  --q-morado-hover:   #6E1F6B;
  --q-morado-soft:    rgba(144,40,140,.08);
  --q-acento:         #96017F;
  --q-acento-hover:   #7F016B;
  --q-focus:          #C4A8D8;
  /* Teal — #0096AE solo en gráficos grandes; texto/íconos con --q-teal-text */
  --q-teal:           #0096AE;
  --q-teal-text:      #00758A;
  --q-teal-hover:     #00758A;
  --q-teal-soft:      #E0F4F8;
  /* Fondos y bordes */
  --q-bg-body:        #F4F5F8;
  --q-bg-card:        #FFFFFF;
  --q-bg-surface:     #FAFAFC;
  --q-bg-hover:       #F7F4FB;
  --q-border:         #E8E6EF;
  --q-divider:        #F0EEF5;
  /* Texto */
  --q-text-primary:   #1C1C2E;
  --q-text-secondary: #3F3F51;
  --q-text-tertiary:  #6B7280;
  --q-text-muted:     #6B7280;
  --q-text-disabled:  #6B7280;
  --q-placeholder:    #9CA3AF;
  /* Semánticos */
  --q-estado-verde:   #1E6F3C;
  --q-estado-verde-bg:#D4EDDA;
  --q-estado-ambar:   #B45309;
  --q-estado-ambar-bg:#FEF3CD;
  --q-estado-rojo:    #C0392B;
  --q-estado-rojo-bg: #FADBD8;
  --q-estado-rojo-text:#A93226; /* texto sobre fondo rojo suave — 4.9:1 */
  --q-estado-gris:    #5B5B6B;
  /* Elevación y forma */
  --q-shadow-card:    0 2px 12px rgba(144,40,140,.06);
  --q-shadow-hover:   0 8px 24px rgba(144,40,140,.14);
  --q-shadow-modal:   0 24px 64px rgba(28,28,46,.28);
  --q-radius-card:    14px;
  --q-radius-btn:     8px;
  --q-radius-chip:    999px; /* pills de estatus y avatares */
  --q-radius-pill:    999px;
  --header-h:         62px;
  --sidebar-w:        clamp(232px, 17vw, 256px);
  --sidebar-w-mini:   68px;
}

/* ── 2. RESET + BASE ────────────────────────────────── */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { font-size:14px; scroll-behavior:smooth; }
body {
  font-family:'Montserrat',sans-serif;
  font-size:14px;
  color:var(--q-text-primary);
  background:var(--q-bg-body);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
a { color:var(--q-morado); text-decoration:none; }
a:hover { text-decoration:underline; }
button { font-family:'Montserrat',sans-serif; cursor:pointer; border:none; background:none; }
input,select,textarea { font-family:'Montserrat',sans-serif; }
ul { list-style:none; }
.hidden { display:none !important; }

/* ── 3. LAYOUT ──────────────────────────────────────── */
.app-shell { display:flex; flex-direction:column; min-height:100vh; }

.app-body {
  display:flex;
  margin-top:var(--header-h);
  min-height:calc(100vh - var(--header-h));
}

.app-main {
  flex:1; min-width:0;
  margin-left:var(--sidebar-w);
  padding:28px 40px 48px;
  background:var(--q-bg-body);
  min-height:calc(100vh - var(--header-h));
  transition:margin-left .28s cubic-bezier(.4,0,.2,1);
  animation:pageIn .3s ease;
}
@keyframes pageIn {
  from { opacity:0; transform:translateY(6px); }
  to   { opacity:1; transform:translateY(0); }
}
body.sidebar-collapsed .app-main { margin-left:var(--sidebar-w-mini); }
@media(max-width:768px) { .app-main { margin-left:0 !important; padding:16px; } }

/* ── 4. HEADER ──────────────────────────────────────── */
.app-header {
  position:fixed; top:0; left:0; right:0; z-index:100;
  height:62px;
  background:#FFFFFF;
  border-bottom:1px solid #E8E6EF;
  display:flex; align-items:center;
  padding:0 22px;
  box-shadow:0 1px 3px rgba(144,40,140,.05);
}
.header-logo { display:flex; align-items:center; }
.header-logo-img { height:30px; width:auto; display:block; }
.header-sep { width:1px; height:22px; background:#E8E6EF; margin:0 14px; flex-shrink:0; }
.header-portal {
  font-size:13px; font-weight:500; color:#6B7280;
  letter-spacing:-.2px; white-space:nowrap;
}
.header-right { display:flex; align-items:center; gap:8px; margin-left:auto; }
/* Hamburger sidebar toggle in header */
.sb-hamburger {
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:12px;
  color:var(--q-text-secondary);
  transition:background .15s, color .15s;
  margin-right:10px; flex-shrink:0;
}
.sb-hamburger:hover { background:var(--q-morado-soft); color:var(--q-morado); }
.notif-btn {
  position:relative; width:38px; height:38px;
  display:flex; align-items:center; justify-content:center;
  border-radius:12px; color:var(--q-text-secondary);
  transition:background .15s, color .15s;
}
.notif-btn:hover { background:#F4F5F8; color:var(--q-morado); }
.notif-badge {
  position:absolute; top:4px; right:4px;
  background:var(--q-morado); color:white;
  font-size:11px; font-weight:600;
  min-width:16px; height:16px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  padding:0 3px; pointer-events:none;
}
.header-user { display:flex; align-items:center; gap:8px; cursor:pointer; padding:6px 10px; border-radius:8px; transition:background .15s; }
.header-user:hover { background:var(--q-bg-body); }
.header-user-info { text-align:right; }
.header-username { display:block; font-size:13px; font-weight:600; color:var(--q-text-primary); }
.header-userrole { display:block; font-size:11px; font-weight:500; color:var(--q-text-secondary); margin-top:1px; }
.user-avatar {
  width:34px; height:34px; border-radius:50%;
  background:linear-gradient(135deg, var(--q-morado), var(--q-morado));
  color:white; font-size:12px; font-weight:600;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 2px 8px rgba(144,40,140,.3);
}

/* ── 5. PERSISTENT SIDEBAR ──────────────────────────── */
.app-sidebar {
  position:fixed;
  top:var(--header-h); left:0; bottom:0;
  width:var(--sidebar-w);
  background:#FFFFFF;
  border-right:1px solid #F0EEF5;
  display:flex; flex-direction:column;
  padding:18px 12px;
  gap:4px;
  z-index:80;
  overflow:hidden;
  transition:width .22s cubic-bezier(.4,0,.2,1);
  box-shadow:2px 0 16px rgba(144,40,140,.04);
}
body.sidebar-collapsed .app-sidebar { width:var(--sidebar-w-mini); }

/* Toggle button */
.sb-toggle {
  position:absolute; top:16px; right:-13px; z-index:10;
  width:26px; height:26px; border-radius:50%;
  background:white; border:1.5px solid var(--q-border);
  display:flex; align-items:center; justify-content:center;
  color:var(--q-text-secondary);
  box-shadow:0 2px 6px rgba(0,0,0,.1);
  transition:all .2s; cursor:pointer;
}
.sb-toggle:hover { border-color:var(--q-morado); color:var(--q-morado); background:var(--q-morado-soft); }
body.sidebar-collapsed .sb-toggle #sb-toggle-icon { transform:rotate(180deg); }
#sb-toggle-icon { transition:transform .28s cubic-bezier(.4,0,.2,1); }

/* User section */
.sb-user {
  display:flex; align-items:center; gap:8px;
  padding:0 8px 12px;
  min-width:0; overflow:hidden;
}
.sb-avatar {
  width:38px; height:38px; border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg, var(--q-morado), var(--q-morado));
  color:white; font-size:13px; font-weight:600;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 2px 8px rgba(144,40,140,.25);
}
.sb-user-text { min-width:0; overflow:hidden; transition:opacity .2s, width .28s; }
.sb-name { font-size:13px; font-weight:600; color:var(--q-text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sb-role { font-size:11px; color:var(--q-text-secondary); margin-top:2px; white-space:nowrap; }
body.sidebar-collapsed .sb-user-text { opacity:0; width:0; }

.sb-divider { height:1px; background:#F0EEF5; margin:0 0 8px; }

/* Navigation items */
.sb-menu { flex:1; overflow-y:auto; overflow-x:hidden; padding:0; display:flex; flex-direction:column; gap:4px; scrollbar-width:none; }
.sb-menu::-webkit-scrollbar { display:none; }
.sb-menu li a {
  display:flex; align-items:center; gap:12px;
  height:40px; padding:0 20px; border-radius:999px;
  font-size:13px; font-weight:600; color:var(--q-text-secondary);
  text-decoration:none; white-space:nowrap; overflow:hidden;
  transition:background .15s, color .15s;
  position:relative;
}
.sb-menu li a:hover { background:var(--q-bg-body); color:var(--q-text-primary); }
.sb-menu li a.active {
  background:#F1EAF7;
  color:var(--q-morado); font-weight:600;
}
.sb-badge {
  margin-left:auto; flex-shrink:0;
  height:22px; min-width:22px; padding:0 8px;
  border-radius:999px; background:var(--q-morado); color:#FFFFFF;
  font-size:11px; font-weight:600;
  display:inline-flex; align-items:center; justify-content:center;
}
body.sidebar-collapsed .sb-badge { display:none; }
.sb-item-icon { flex-shrink:0; color:inherit; }
.sb-item-label { overflow:hidden; text-overflow:ellipsis; transition:opacity .2s, width .28s; }
body.sidebar-collapsed .sb-menu li a .sb-item-label { opacity:0; width:0; }
body.sidebar-collapsed .sb-menu li a { justify-content:center; padding:0; gap:0; }
body.sidebar-collapsed .sb-menu li a::before { display:none; }

/* Tooltip on collapsed sidebar */
body.sidebar-collapsed .sb-menu li { position:relative; }
body.sidebar-collapsed .sb-menu li a::after {
  content:attr(data-label);
  position:absolute; left:calc(var(--sidebar-w-mini) + 8px); top:50%;
  transform:translateY(-50%);
  background:var(--q-text-primary); color:white;
  font-size:12px; font-weight:600; white-space:nowrap;
  padding:5px 10px; border-radius:8px;
  pointer-events:none; opacity:0;
  transition:opacity .15s;
  z-index:200;
}
body.sidebar-collapsed .sb-menu li a:hover::after { opacity:1; }

.sb-spacer { flex:1; min-height:12px; }
.sb-logout {
  display:flex; align-items:center; gap:12px;
  height:40px; padding:0 20px; margin:0;
  border-radius:999px;
  font-size:13px; font-weight:600; color:var(--q-estado-rojo);
  width:100%; text-align:left;
  transition:background .15s; white-space:nowrap; overflow:hidden;
  cursor:pointer;
}
.sb-logout:hover { background:rgba(192,57,43,.06); }
body.sidebar-collapsed .sb-logout { justify-content:center; padding:0; gap:0; }
body.sidebar-collapsed .sb-logout .sb-item-label { opacity:0; width:0; }

@media(max-width:768px) {
  .app-sidebar { transform:translateX(-100%); transition:transform .28s cubic-bezier(.4,0,.2,1); box-shadow:none; }
  body.sidebar-mobile-open .app-sidebar { transform:translateX(0); box-shadow:4px 0 24px rgba(0,0,0,.15); }
  .sb-toggle { display:none; }
}

/* ── 6. NOTIFICATIONS PANEL ──────────────────────────── */
.notif-backdrop {
  position:fixed; inset:0; z-index:150;
  background:rgba(28,28,46,.2);
}
.notif-panel {
  position:fixed; top:var(--header-h); right:0; bottom:0; z-index:151;
  width:360px; background:white;
  box-shadow:-4px 0 32px rgba(144,40,140,.12);
  display:flex; flex-direction:column;
  animation:slideInRight .25s cubic-bezier(.4,0,.2,1);
}
.notif-panel.hidden { display:none; }
@keyframes slideInRight {
  from { transform:translateX(100%); }
  to   { transform:translateX(0); }
}
.notif-header {
  display:flex; justify-content:space-between; align-items:center;
  padding:18px 20px; border-bottom:1px solid var(--q-border);
  font-size:16px; font-weight:700; color:var(--q-text-primary);
}
.notif-item {
  display:flex; gap:12px; align-items:flex-start;
  padding:14px 20px; border-bottom:1px solid var(--q-border);
  cursor:pointer; transition:background .15s;
}
.notif-item:hover { background:var(--q-bg-body); }
.notif-item.unread { background:rgba(144,40,140,.025); }
.notif-dot { width:8px; height:8px; border-radius:50%; background:var(--q-morado); flex-shrink:0; margin-top:6px; }
.notif-icon { width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.notif-msg { font-size:12px; color:var(--q-text-primary); line-height:1.5; }
.notif-folio { color:var(--q-morado); font-weight:600; }
.notif-time { font-size:11px; color:var(--q-text-secondary); margin-top:3px; }

/* ── 7. CARD ──────────────────────────────────────────── */
.q-card {
  background:#FFFFFF;
  border:1px solid #E8E6EF;
  border-radius:14px;
  box-shadow:0 2px 12px rgba(144,40,140,.06);
  padding:22px 24px;
  transition:box-shadow .2s;
}
.q-card + .q-card { margin-top:14px; }
.q-card:hover { box-shadow:var(--q-shadow-hover); }

/* ── 8. BREADCRUMB ───────────────────────────────────── */
.breadcrumb {
  display:flex; align-items:center; gap:8px;
  font-size:12px; color:var(--q-text-secondary);
  margin-bottom:20px;
}
.breadcrumb a { color:var(--q-morado); text-decoration:none; font-weight:500; }
.breadcrumb a:hover { text-decoration:underline; }
.breadcrumb-sep { color:var(--q-border); }

/* ── 9. PAGE TITLE ────────────────────────────────────── */
.page-title { font-size:24px; font-weight:700; color:#1C1C2E; margin-bottom:4px; letter-spacing:-.4px; }
.page-subtitle { font-size:14px; font-weight:500; color:#6B7280; margin-bottom:24px; }

/* ── 10. BUTTONS ──────────────────────────────────────── */
/* Dos tamaños: default 40px · compact 32px. Un primario y un outline. */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  height:40px; padding:0 20px; border-radius:999px;
  font-size:13px; font-weight:600; cursor:pointer;
  border:none; transition:background .15s,border-color .15s,color .15s; white-space:nowrap;
  text-decoration:none; box-sizing:border-box;
}
.btn svg { flex-shrink:0; }
.btn:focus-visible { outline:2px solid var(--q-morado); outline-offset:2px; }

/* Primario */
.btn-morado, .btn-teal { background:#90288C; color:#FFFFFF; box-shadow:0 4px 14px rgba(144,40,140,.22); }
.btn-morado:hover, .btn-teal:hover { background:var(--q-morado-hover); }
.btn-morado:disabled, .btn-teal:disabled { background:var(--q-border); color:var(--q-text-tertiary); cursor:not-allowed; box-shadow:none; }

/* Secundario outline */
.btn-outline-morado, .btn-outline-teal, .btn-outline-rojo {
  background:#FFFFFF; color:#90288C; border:1.5px solid #90288C;
}
.btn-outline-morado:hover, .btn-outline-teal:hover, .btn-outline-rojo:hover {
  background:var(--q-bg-hover); border-color:var(--q-morado-hover); color:var(--q-morado-hover);
}

/* Terciario */
.btn-ghost { background:transparent; color:var(--q-text-secondary); padding:0 16px; }
.btn-ghost:hover { background:var(--q-bg-hover); color:var(--q-text-primary); }

/* Tamaño compact */
.btn-sm, .btn-compact { height:32px; padding:0 16px; font-size:12px; font-weight:600; border-radius:999px; }

/* Chip de filtro */
.filter-chip {
  display:inline-flex; align-items:center; gap:8px;
  height:36px; padding:0 18px; border-radius:999px;
  border:1px solid #E8E6EF; background:#FFFFFF;
  font-size:12px; font-weight:600; color:#3F3F51;
  white-space:nowrap; cursor:pointer; transition:border-color .15s, color .15s;
}
.filter-chip:hover { border-color:var(--q-morado); color:var(--q-morado); }
.filter-chip.active { border-color:var(--q-morado); background:#F1EAF7; color:var(--q-morado); }
.btn-lg { height:40px; padding:0 20px; font-size:13px; }
.btn-full { width:100%; }
.btn-icon-only { width:40px; padding:0; border-radius:999px; }
.btn-sm.btn-icon-only, .btn-compact.btn-icon-only { width:32px; }

/* ── 11. INPUTS ───────────────────────────────────────── */
.form-group { margin-bottom:18px; }
.form-label { display:block; font-size:12px; font-weight:600; color:var(--q-text-secondary); margin-bottom:6px; }
.form-label .req { color:var(--q-estado-rojo); margin-left:2px; }
.form-control {
  width:100%; height:42px; padding:0 14px;
  border:1px solid #E8E6EF; border-radius:8px;
  font-size:13px; color:var(--q-text-primary);
  background:#FAFAFC; outline:none;
  transition:border-color .15s, box-shadow .15s;
}
.form-control.has-icon-left { padding-left:38px; }
.search-icon-left {
  position:absolute; left:13px; top:50%; transform:translateY(-50%);
  color:var(--q-text-tertiary); pointer-events:none;
}
.form-control:focus { border-color:var(--q-focus); box-shadow:0 0 0 3px rgba(144,40,140,.1); }
.form-control::placeholder { color:var(--q-placeholder); }
.form-control.has-icon-right { padding-right:42px; }
.form-control.error { border-color:var(--q-estado-rojo); box-shadow:0 0 0 3px rgba(192,57,43,.1); }
.form-error { font-size:11px; color:var(--q-estado-rojo-text); margin-top:5px; display:flex; align-items:center; gap:4px; }
.input-wrapper { position:relative; }
.input-icon-right { position:absolute; right:12px; top:50%; transform:translateY(-50%); color:var(--q-text-secondary); pointer-events:none; }
.input-icon-right.clickable { pointer-events:auto; cursor:pointer; }
textarea.form-control { resize:vertical; height:auto; min-height:90px; padding:11px 13px; }
select.form-control { cursor:pointer; }

/* Estado deshabilitado homologado */
.form-control:disabled,
.form-control[disabled],
.form-control[readonly] {
  background:#F4F3F7 !important; color:var(--q-text-secondary) !important;
  border-color:#E8E6EF; cursor:default;
}

/* Los campos no se reescalan por contexto: una sola altura y tipografía */
input.form-control, select.form-control, .dr-input {
  height:42px !important; font-size:13px !important; padding-top:0 !important; padding-bottom:0 !important;
}
textarea.form-control { font-size:13px !important; }
.form-label { font-size:12px !important; }
.hint-text { font-size:11px; color:var(--q-text-secondary); margin-top:5px; }

.search-bar-wrapper { position:relative; display:inline-flex; width:100%; max-width:320px; }
.search-bar-wrapper .form-control, .search-bar { padding-right:42px; text-overflow:ellipsis; }
select.form-control {
  padding-right:38px; text-overflow:ellipsis;
  appearance:none; -webkit-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1.5 2 6 6.3 10.5 2' stroke='%236B7280' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 14px center;
}
.input-icon-right, .search-icon-right { right:14px; }
.input-icon-left { left:14px; }
.daterange-wrapper .form-control { padding-right:38px; }
input[type="date"].form-control { padding-right:12px; }
.btn-clear-filters { flex-shrink:0; }
.form-control::placeholder { text-overflow:ellipsis; }
.daterange-wrapper { position:relative; display:inline-flex; min-width:220px; }

/* Filtros de tabla: el select se ajusta al texto seleccionado, nunca lo corta */
.table-toolbar select.form-control {
  padding-right:38px;
  width:auto !important;
  flex:0 0 auto !important;
  field-sizing:content;
  min-width:150px; max-width:300px;
  padding-right:34px;
}
.table-toolbar .search-bar-wrapper { flex:1 1 300px; min-width:260px; max-width:380px; }
.table-toolbar .daterange-wrapper { flex:0 0 auto; }

/* Limpiar filtros: sólo aparece cuando hay filtros activos */
.btn-clear-filters {
  flex:0 0 auto; height:40px; padding:0 20px; border-radius:999px;
  background:white; border:1px solid var(--q-border);
  font-size:13px; font-weight:600; color:var(--q-text-primary);
  white-space:nowrap; transition:all .12s;
}
.btn-clear-filters:hover { border-color:var(--q-morado); color:var(--q-morado); }

/* Paginado en la parte superior de la tabla */
.table-toolbar .pagination,
.table-toolbar-right .pagination { margin-top:0; flex:0 0 auto; }
.daterange-wrapper .form-control { padding-right:38px; color:var(--q-text-secondary); }
.daterange-icon { position:absolute; right:12px; top:50%; transform:translateY(-50%); color:var(--q-morado); pointer-events:none; }

/* OTP */
.otp-group { display:flex; gap:8px; }
.otp-input {
  width:48px; height:52px; text-align:center;
  font-size:24px; font-weight:700; color:var(--q-morado);
  border:1.5px solid var(--q-border); border-radius:8px; outline:none;
  transition:border-color .15s;
}
.otp-input:focus { border-color:var(--q-focus); box-shadow:0 0 0 3px rgba(144,40,140,.1); }

/* Password strength */
.strength-bar-track { height:5px; background:var(--q-border); border-radius:8px; margin:8px 0 4px; overflow:hidden; }
.strength-bar-fill { height:100%; border-radius:8px; transition:width .3s, background .3s; }
.strength-rules { list-style:none; }
.strength-rule { font-size:11px; color:var(--q-text-secondary); display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.strength-rule.met { color:var(--q-estado-verde); }
.strength-rule::before { content:'○'; font-size:11px; }
.strength-rule.met::before { content:'✓'; }

/* ── 12. TABS ─────────────────────────────────────────── */
.tabs-bar { display:flex; gap:20px; border-bottom:1px solid var(--q-border); margin-bottom:20px; }
.tab-btn {
  display:inline-flex; align-items:center; gap:8px;
  min-height:32px; padding:8px 2px; font-size:12px; font-weight:600;
  color:var(--q-text-secondary); background:none; border:none;
  border-bottom:2px solid transparent; margin-bottom:-1px;
  cursor:pointer; transition:color .15s, border-color .15s;
}
.tab-btn:hover { color:var(--q-text-primary); }
.tab-btn.active { color:var(--q-morado); font-weight:600; border-bottom-color:var(--q-morado); }

/* Filtros fuera de la tarjeta + encabezado de resultados */
.table-filters { margin:0 0 14px; }
.card-results-head {
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  margin:-22px -24px 14px; padding:14px 24px;
  border-bottom:1px solid #F0EEF5;
}
.card-results-title { font-size:14px; font-weight:700; color:#1C1C2E; letter-spacing:-.2px; }
.card-results-head .pagination { margin-top:0; }

/* ── 13. TABLE ────────────────────────────────────────── */
.table-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.table-toolbar-right { margin-left:auto; display:flex; align-items:center; gap:8px; }
.show-select {
  display:inline-flex; align-items:center; gap:8px;
  font-size:13px; color:var(--q-text-secondary);
  border:1.5px solid var(--q-border); border-radius:8px;
  padding:7px 12px; background:white; cursor:pointer;
}
.show-select select { border:none; outline:none; font-size:13px; font-weight:600; color:var(--q-text-primary); background:transparent; cursor:pointer; }
/* La tabla llega al borde de la tarjeta: sólo wrappers directos, en tarjetas
   con el padding estándar (28px 32px) y sin estilos inline propios. */
.q-card:not([style*="padding"]) > .table-wrapper:not([style]) { margin-left:-24px; margin-right:-24px; }
.q-card:not([style*="padding"]) > .table-wrapper:not([style]) > .q-table > thead > tr > th:first-child,
.q-card:not([style*="padding"]) > .table-wrapper:not([style]) > .q-table > tbody > tr > td:first-child { padding-left:24px; }
.q-card:not([style*="padding"]) > .table-wrapper:not([style]) > .q-table > thead > tr > th:last-child,
.q-card:not([style*="padding"]) > .table-wrapper:not([style]) > .q-table > tbody > tr > td:last-child { padding-right:24px; }
.table-wrapper { overflow-x:visible; }

/* Pantallas donde la tabla no cabe: cada fila se apila como ficha, sin scroll horizontal */
@media (max-width:820px) {
  .table-wrapper { overflow-x:visible; }
  .q-table, .q-table tbody, .q-table tbody tr, .q-table tbody td { display:block; width:auto; }
  .q-table thead { display:none; }
  .q-table tbody tr {
    border:1px solid var(--q-border); border-radius:12px;
    margin:0 0 12px; padding:6px 2px; background:var(--q-bg-card);
  }
  .q-table tbody tr:hover { background:var(--q-bg-card); }
  .q-table tbody td {
    display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
    padding:8px 16px; border:0; text-align:right;
  }
  .q-table tbody td::before {
    content:attr(data-label); flex:0 0 auto; text-align:left;
    font-size:10.5px; font-weight:700; letter-spacing:.5px; text-transform:uppercase;
    color:var(--q-text-secondary); padding-top:2px;
  }
  .q-table tbody td:not([data-label]) { justify-content:flex-end; }
  .q-table tbody td > * { text-align:left; }
  .q-table tbody td:has(> .row-actions) { justify-content:space-between; }
  .q-table tbody td[colspan] { display:block; text-align:center; }
  .q-table tbody td[colspan]::before { content:none; }
}
.q-table { width:100%; border-collapse:collapse; table-layout:auto; }
.q-table th, .q-table td { overflow-wrap:break-word; }
.q-table td .nw, .q-table td.nw { white-space:nowrap; }

/* ── Encabezado de página con acciones ── */
.page-head {
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:16px; flex-wrap:wrap; margin-bottom:18px;
}
.page-head-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

/* ── Fila de filtros sobre el fondo de la página ── */
.filter-row {
  display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:16px;
}
.filter-row .search-bar-wrapper { flex:0 1 300px; }

/* ── Encabezado interno de tarjeta de tabla ── */
.card-head {
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap; padding:16px 24px;
  border-bottom:1px solid var(--q-border);
}
.card-head-title { font-size:14px; font-weight:700; color:var(--q-text-primary); }

/* ── Fichas por tipo dentro de un panel del dashboard ── */
.tipo-tiles {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px;
}
.tipo-tile {
  text-align:left; background:var(--q-bg-card); cursor:pointer;
  border:1px solid var(--q-border); border-radius:12px; padding:14px 16px;
  font-family:'Montserrat',sans-serif; transition:border-color .14s, box-shadow .14s;
}
.tipo-tile:hover { border-color:var(--q-morado); box-shadow:0 4px 14px rgba(144,40,140,.08); }
.tipo-tile.sel { border-color:var(--q-morado); box-shadow:inset 0 0 0 1px var(--q-morado); }
.tipo-tile-name { font-size:12.5px; font-weight:600; color:var(--q-text-primary); }
.tipo-tile-row { display:flex; align-items:baseline; gap:8px; margin-top:6px; }
.tipo-tile-num { font-size:26px; font-weight:800; color:var(--q-text-primary); letter-spacing:-1px; }
.tipo-tile-pct { font-size:11.5px; color:var(--q-text-secondary); }
.tipo-tile-sub { font-size:11px; color:var(--q-text-secondary); margin-top:4px; }
.q-table thead th {
  font-size:11px; font-weight:600; text-transform:uppercase;
  color:#6B7280; letter-spacing:.7px;
  padding:11px 20px; text-align:left;
  border-bottom:2px solid var(--q-border); white-space:nowrap;
  background:var(--q-bg-surface);
}
.q-table tbody tr { border-bottom:1px solid var(--q-border); transition:background .12s; }
.q-table tbody tr:hover { background:var(--q-bg-hover); }
.q-table tbody td { padding:13px 16px; font-size:13px; color:var(--q-text-primary); vertical-align:middle; }
.q-table thead th { padding-left:16px; padding-right:16px; }
/* Tablas anchas: densidad reducida para que quepan sin scroll horizontal */
@media (max-width:1500px) {
  .q-table tbody td { padding:11px 12px; font-size:12.5px; }
  .q-table thead th { padding-left:12px; padding-right:12px; font-size:10.5px; letter-spacing:.5px; }
}
.q-table tbody tr.row-disabled { opacity:.4; cursor:not-allowed; }
.q-table tbody tr.row-error td { background:rgba(192,57,43,.025); }
.row-sla-verde { border-left:3px solid var(--q-estado-verde); }
.row-sla-ambar { border-left:3px solid var(--q-estado-ambar); }
.row-sla-rojo  { border-left:3px solid var(--q-estado-rojo); }
.tbl-link { display:inline-flex; align-items:center; min-height:32px; color:var(--q-morado); font-weight:500; cursor:pointer; }
.tbl-link:hover { text-decoration:underline; }
.tbl-action { display:inline-flex; align-items:center; min-height:32px; font-size:12px; font-weight:600; text-transform:uppercase; cursor:pointer; white-space:nowrap; letter-spacing:.3px; }
.tbl-action-morado { color:var(--q-morado); }
.tbl-action-morado:hover { text-decoration:underline; }
.tbl-action-teal   { color:var(--q-teal-text); }
.tbl-action-rojo   { color:var(--q-estado-rojo); }
.tbl-action-disabled { color:var(--q-text-disabled); font-weight:400; cursor:default; font-size:12px; }

/* SLA */
.sla-cell { display:flex; flex-direction:column; align-items:flex-start; gap:4px; }
.sla-bar { width:100%; min-width:56px; height:5px; border-radius:8px; background:var(--q-border); overflow:hidden; flex-shrink:0; }
.sla-fill { height:100%; border-radius:8px; }
.sla-verde .sla-fill { background:var(--q-estado-verde); }
.sla-ambar .sla-fill { background:var(--q-estado-ambar); }
.sla-rojo  .sla-fill { background:var(--q-estado-rojo); }
.sla-text { font-size:12px; font-weight:600; white-space:normal; }
.sla-verde .sla-text { color:var(--q-estado-verde); }
.sla-ambar .sla-text { color:var(--q-estado-ambar); }
.sla-rojo  .sla-text { color:var(--q-estado-rojo); }

/* ── 14. PAGINATION ───────────────────────────────────── */
.pagination { display:flex; align-items:center; justify-content:flex-end; margin-top:20px; flex-wrap:wrap; gap:14px; }
.pagination-total { font-size:13px; color:var(--q-text-secondary); white-space:nowrap; }
.pagination-total strong { color:var(--q-text-primary); font-weight:600; }
.pagination-pages { display:flex; align-items:center; gap:8px; }
.page-btn {
  width:32px; height:32px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:600; border:1px solid var(--q-border);
  color:var(--q-text-secondary); background:white; transition:all .12s;
}
.page-btn:hover:not(:disabled) { border-color:var(--q-morado); color:var(--q-morado); }
.page-btn:disabled { opacity:.45; cursor:default; }
.page-btn.active { background:var(--q-morado); border-color:var(--q-morado); color:white; }
.page-btn.arrow { border-radius:8px; width:32px; height:32px; }

/* ── 15. CHIPS ────────────────────────────────────────── */
.chip {
  display:inline-flex; align-items:center; gap:6px;
  min-height:26px; padding:0 14px; border-radius:999px;
  font-size:12px; font-weight:600; white-space:nowrap; line-height:1.3;
}
.chip-verde  { background:#E3F5E9; color:#1E6F3C; }
.chip-rojo   { background:#FDE9E7; color:#C0392B; }
.chip-ambar  { background:#FFF6E5; color:#B45309; }
.chip-gris   { background:#F1EFF6; color:#4B4A5E; }
.chip-morado { background:#F6EAF6; color:#90288C; }
.chip-teal   { background:#E4F6FA; color:#16697F; }
.chip-azul   { background:#E4F6FA; color:#16697F; }
.chip-lila   { background:#EFEBFA; color:#5B45A8; }
.chip-naranja{ background:#FDEEE3; color:#A64B12; }
.chip-rosa   { background:#FCE9F1; color:#A62463; }

/* Tipo (Póliza / Agente) — atributo, no estado: texto plano con ícono */
.cell-tipo {
  display:inline-flex; align-items:center; gap:6px;
  font-size:13px; font-weight:500; color:#3F3F51; white-space:nowrap;
}
.cell-tipo svg { flex-shrink:0; color:#9CA3AF; }

/* ── 16. KPI CARDS ────────────────────────────────────── */
.kpi-row { display:grid; grid-template-columns:repeat(auto-fill, minmax(216px, 1fr)); gap:16px; margin-bottom:24px; }
.kpi-row-2, .kpi-row-3, .kpi-row-4 { grid-template-columns:repeat(auto-fill, minmax(216px, 1fr)); }
.kpi-card {
  background:#FFFFFF; border:1px solid #E8E6EF;
  border-radius:14px; padding:14px 18px 12px;
  position:relative; overflow:hidden;
  display:grid; grid-template-columns:auto 1fr; align-items:center;
  column-gap:12px; row-gap:2px;
  transition:box-shadow .2s, transform .2s;
}
.kpi-card > .kpi-trend, .kpi-card > .kpi-link { grid-column:1 / -1; }
.kpi-card:hover { box-shadow:var(--q-shadow-hover); transform:translateY(-2px); }
.kpi-card::before {
  content:''; position:absolute; top:0; left:0; right:0; height:4px;
  border-radius:14px 14px 0 0;
}
.kpi-card-morado::before { background:linear-gradient(90deg,var(--q-morado),var(--q-morado)); }
.kpi-card-ambar::before  { background:linear-gradient(90deg,var(--q-estado-ambar),var(--q-estado-ambar)); }
.kpi-card-rojo::before   { background:linear-gradient(90deg,var(--q-estado-rojo),var(--q-estado-rojo)); }
.kpi-card-verde::before  { background:linear-gradient(90deg,var(--q-estado-verde),var(--q-estado-verde)); }
.kpi-card-teal::before   { background:linear-gradient(90deg,var(--q-teal),var(--q-teal)); }
.kpi-num {
  font-size:40px; font-weight:800; line-height:1.1; margin-bottom:0;
  letter-spacing:-1.6px; font-variant-numeric:tabular-nums;
}
.kpi-num-morado { color:var(--q-morado); }
.kpi-num-ambar  { color:var(--q-estado-ambar); }
.kpi-num-rojo   { color:var(--q-estado-rojo); }
.kpi-num-verde  { color:var(--q-estado-verde); }
.kpi-num-teal   { color:var(--q-teal-text); }
.kpi-label { font-size:13px; font-weight:500; color:#3F3F51; line-height:1.35; }
.kpi-link {
  display:inline-flex; align-items:center; gap:4px; margin-top:8px;
  font-size:12px; font-weight:600; color:var(--q-teal-text);
  text-decoration:none; cursor:pointer;
}
.kpi-link:hover { text-decoration:underline; }
.kpi-link svg { width:14px; height:14px; flex-shrink:0; }
.kpi-trend { font-size:11px; font-weight:600; margin-top:6px; display:flex; align-items:center; gap:4px; }
.kpi-trend-up   { color:var(--q-estado-verde); }
.kpi-trend-down { color:var(--q-estado-rojo); }

/* ── 17. DATA PANELS ──────────────────────────────────── */
.data-panel { background:var(--q-bg-hover); border-radius:8px; padding:20px; margin-bottom:20px; border:1px solid rgba(144,40,140,.06); }
.data-panel-title { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.7px; color:var(--q-morado); margin-bottom:14px; }
.data-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px 20px; }
.data-grid-2 { grid-template-columns:repeat(2,1fr); }
@media(max-width:768px) { .data-grid { grid-template-columns:repeat(2,1fr); } }
.data-field-label { font-size:11px; font-weight:600; color:var(--q-text-secondary); margin-bottom:4px; }
.data-field-value { font-size:13px; color:var(--q-text-primary); font-weight:500; }

.status-card { border-radius:8px; padding:18px 20px; margin-bottom:20px; border-left:3px solid; }
.status-card-verde { background:rgba(30,111,60,.04); border-color:var(--q-estado-verde); }
.status-card-rojo  { background:rgba(192,57,43,.04); border-color:var(--q-estado-rojo); }
.status-card-ambar { background:rgba(180,83,9,.04); border-color:var(--q-estado-ambar); }
.status-card-title { font-size:14px; font-weight:700; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.status-card-verde .status-card-title { color:var(--q-estado-verde); }
.status-card-rojo  .status-card-title { color:var(--q-estado-rojo); }
.status-card-ambar .status-card-title { color:var(--q-estado-ambar); }
.status-card-row { display:flex; gap:4px; font-size:13px; margin-bottom:6px; }
.status-card-row span:first-child { font-weight:600; color:var(--q-text-secondary); min-width:130px; }

/* ── 18. WIZARD (nueva solicitud) ─────────────────────── */
.wizard-container { max-width:760px; margin:0 auto; }
.wizard-stepper {
  display:flex; align-items:center; justify-content:center;
  margin-bottom:32px; gap:0;
}
.wz-step { display:flex; align-items:center; gap:0; }
.wz-circle {
  width:32px; height:32px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:600;
  border:2px solid var(--q-border);
  background:white; color:var(--q-text-disabled);
  transition:all .3s;
}
.wz-step.active .wz-circle { border-color:var(--q-morado); background:var(--q-morado); color:white; box-shadow:0 0 0 4px rgba(144,40,140,.15); }
.wz-step.done   .wz-circle { border-color:var(--q-teal-text); background:var(--q-teal); color:white; }
.wz-label { font-size:11px; font-weight:600; color:var(--q-text-disabled); margin-left:8px; white-space:nowrap; transition:color .3s; }
.wz-step.active .wz-label { color:var(--q-morado); }
.wz-step.done   .wz-label { color:var(--q-teal-text); }
.wz-line { width:40px; height:2px; background:var(--q-border); transition:background .3s; }
.wz-line.done { background:var(--q-teal); }
.wz-content { animation:fadeInUp .25s ease; }
@keyframes fadeInUp {
  from { opacity:0; transform:translateY(8px); }
  to   { opacity:1; transform:translateY(0); }
}
.wz-nav { display:flex; justify-content:space-between; align-items:center; margin-top:28px; padding-top:20px; border-top:1px solid var(--q-border); }

/* Type cards for wizard */
.type-cards { display:flex; gap:20px; justify-content:center; margin:8px 0 24px; }
.type-card {
  width:220px; padding:28px 24px; text-align:center;
  border:2px solid var(--q-border); border-radius:var(--q-radius-card);
  cursor:pointer; transition:all .2s; background:white; position:relative; overflow:hidden;
}
.type-card::after { content:''; position:absolute; inset:0; background:transparent; transition:background .2s; }
.type-card:hover { border-color:var(--q-morado); transform:translateY(-3px); box-shadow:0 8px 24px rgba(144,40,140,.15); }
.type-card.selected { border-color:var(--q-morado); background:var(--q-morado-soft); box-shadow:0 0 0 4px rgba(144,40,140,.1); }
.type-card-check { position:absolute; top:10px; right:10px; width:22px; height:22px; border-radius:50%; background:var(--q-morado); display:flex; align-items:center; justify-content:center; opacity:0; transform:scale(0); transition:all .2s; }
.type-card.selected .type-card-check { opacity:1; transform:scale(1); }
.type-card-icon { color:var(--q-morado); margin-bottom:14px; opacity:.85; }
.type-card-title { font-size:16px; font-weight:700; color:var(--q-text-primary); margin-bottom:8px; }
.type-card-desc { font-size:12px; color:var(--q-text-secondary); line-height:1.5; }

/* ── 19. FILE UPLOAD ──────────────────────────────────── */
.file-checklist { margin-bottom:14px; background:var(--q-bg-body); border-radius:8px; padding:12px 14px; }
.file-check-item { display:flex; align-items:center; gap:8px; font-size:12px; padding:4px 0; color:var(--q-text-secondary); }
.file-check-item .icon-ok  { color:var(--q-estado-verde); font-size:14px; }
.file-check-item .icon-err { color:var(--q-estado-rojo); font-size:14px; }
.dropzone {
  border:2px dashed rgba(144,40,140,.3); border-radius:12px;
  padding:28px; text-align:center;
  background:rgba(144,40,140,.015);
  transition:all .2s; cursor:pointer;
}
.dropzone:hover, .dropzone.dragover { background:rgba(144,40,140,.06); border-color:var(--q-morado); }
.dropzone-icon { color:var(--q-morado); opacity:.5; margin-bottom:12px; }
.dropzone-title { font-size:14px; font-weight:600; color:var(--q-text-primary); margin-bottom:6px; }
.dropzone-sub { font-size:12px; color:var(--q-text-secondary); margin-bottom:16px; }
.file-list { margin-top:12px; }
.file-item {
  display:flex; align-items:center; gap:8px;
  padding:10px 12px; background:var(--q-bg-body);
  border-radius:8px; margin-bottom:6px; font-size:12px;
  border:1px solid var(--q-border); transition:box-shadow .15s;
}
.file-item:hover { box-shadow:0 2px 8px rgba(0,0,0,.06); }
.file-name { flex:1; font-weight:500; color:var(--q-text-primary); }
.file-size { color:var(--q-text-secondary); }
.file-remove { color:var(--q-estado-rojo); cursor:pointer; width:20px; height:20px; display:flex; align-items:center; justify-content:center; border-radius:8px; }
.file-remove:hover { background:rgba(192,57,43,.1); }

/* ── 20. STEPPER (firma) ──────────────────────────────── */
.stepper { display:flex; align-items:center; justify-content:center; gap:0; margin-bottom:28px; }
.step { display:flex; align-items:center; }
.step-circle {
  width:32px; height:32px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:600; flex-shrink:0;
  border:2px solid var(--q-border); background:white; color:var(--q-text-secondary);
}
.step.active .step-circle { border-color:var(--q-morado); background:var(--q-morado); color:white; box-shadow:0 0 0 4px rgba(144,40,140,.15); }
.step.done  .step-circle  { border-color:var(--q-teal-text); background:var(--q-teal); color:white; }
.step-label { font-size:11px; font-weight:600; color:var(--q-text-secondary); margin-left:6px; white-space:nowrap; }
.step.active .step-label { color:var(--q-morado); }
.step.done   .step-label { color:var(--q-teal-text); }
.step-line { width:48px; height:2px; background:var(--q-border); flex-shrink:0; }
.step-line.done { background:var(--q-teal); }

/* ── 21. MODALS ───────────────────────────────────────── */
.modal-overlay {
  position:fixed; inset:0; z-index:300;
  background:rgba(28,28,46,.42); backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center; padding:20px;
  overflow-y:auto; overscroll-behavior:contain;
}
.modal {
  background:white; border-radius:14px;
  box-shadow:var(--q-shadow-modal); width:100%; max-width:480px;
  padding:28px 32px; animation:modalIn .22s ease;
  max-height:calc(100vh - 40px); overflow-y:auto;
}
@keyframes modalIn {
  from { opacity:0; transform:scale(.95) translateY(8px); }
  to   { opacity:1; transform:scale(1); }
}
.modal-title { font-size:18px; font-weight:700; color:var(--q-text-primary); margin-bottom:16px; }
.modal-summary { background:var(--q-bg-body); border-radius:8px; padding:14px 16px; margin-bottom:18px; }
.modal-summary-row { display:flex; gap:8px; font-size:12px; margin-bottom:6px; }
.modal-summary-row:last-child { margin-bottom:0; }
.modal-summary-row .key { font-weight:600; color:var(--q-text-secondary); min-width:100px; }
.modal-footer { display:flex; gap:8px; justify-content:flex-end; margin-top:20px; }
.checkbox-row { display:flex; align-items:flex-start; gap:8px; padding:14px; background:var(--q-morado-soft); border-radius:8px; cursor:pointer; }
.checkbox-row input { margin-top:2px; accent-color:var(--q-morado); width:15px; height:15px; cursor:pointer; }
.checkbox-row label { font-size:12px; color:var(--q-text-primary); line-height:1.5; cursor:pointer; }

/* ── 22. MODALES CENTRADOS (antes paneles laterales) ─── */
.rdrawer-overlay { position:fixed; inset:0; z-index:250; background:rgba(28,28,46,.42); }
.rdrawer {
  position:fixed; top:50%; left:50%; right:auto; bottom:auto; z-index:251;
  transform:translate(-50%,-50%);
  width:560px; max-width:calc(100vw - 48px);
  max-height:calc(100vh - 72px);
  background:white; border-radius:14px; overflow:hidden;
  box-shadow:0 24px 60px rgba(28,28,46,.28);
  display:flex; flex-direction:column;
  animation:modalIn .18s cubic-bezier(.4,0,.2,1);
}
@keyframes modalIn {
  from { opacity:0; transform:translate(-50%,-50%) scale(.97); }
  to   { opacity:1; transform:translate(-50%,-50%) scale(1); }
}
.rdrawer-header { display:flex; align-items:center; justify-content:space-between; padding:20px 24px; border-bottom:1px solid var(--q-border); }
.rdrawer-title { font-size:16px; font-weight:700; color:var(--q-text-primary); }
.rdrawer-close { width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--q-text-secondary); transition:background .12s; }
.rdrawer-close:hover { background:var(--q-bg-body); }
.rdrawer-body { flex:1; overflow-y:auto; padding:24px; }
.rdrawer-footer {
  padding:16px 24px; border-top:1px solid var(--q-border);
  display:flex; justify-content:flex-end; align-items:center; gap:10px; flex-wrap:wrap;
}
.rdrawer-footer .btn { width:auto; flex:0 0 auto; white-space:nowrap; }
.rdrawer-footer .form-hint { order:-1; flex:1 1 auto; text-align:left; margin:0; }

/* ── 23. TOAST · avisos internos ───────────────────────── */
.toast-container { position:fixed; top:70px; right:20px; z-index:400; display:flex; flex-direction:column; gap:10px; pointer-events:none; }
.toast {
  position:relative; overflow:hidden; pointer-events:auto;
  display:grid; grid-template-columns:auto 1fr auto; align-items:flex-start; gap:11px;
  padding:13px 13px 14px 14px; border-radius:12px; width:352px; box-sizing:border-box;
  background:#FFFFFF; border:1px solid var(--q-border); border-left:3px solid var(--q-text-muted);
  box-shadow:0 10px 30px rgba(28,28,46,.13), 0 1px 2px rgba(28,28,46,.06);
  animation:toastIn .24s cubic-bezier(.16,1,.3,1);
}
.toast.out { animation:toastOut .2s ease forwards; }
@keyframes toastIn  { from { opacity:0; transform:translate3d(14px,-6px,0) scale(.97); } to { opacity:1; transform:none; } }
@keyframes toastOut { to { opacity:0; transform:translate3d(14px,0,0) scale(.98); } }
.toast-ic {
  width:26px; height:26px; flex-shrink:0; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
}
.toast-body { min-width:0; }
.toast-title { font-size:12px; font-weight:700; letter-spacing:.01em; margin-bottom:2px; }
.toast-msg { font-size:12.5px; font-weight:500; color:var(--q-text-secondary); line-height:1.45; overflow-wrap:anywhere; }
.toast-msg strong { color:var(--q-text-primary); font-weight:600; }
.toast-x {
  width:24px; height:24px; flex-shrink:0; border:0; border-radius:7px; cursor:pointer;
  background:none; color:var(--q-text-muted); display:inline-flex; align-items:center; justify-content:center;
  transition:background .14s, color .14s;
}
.toast-x:hover { background:var(--q-bg-body); color:var(--q-text-primary); }
.toast-bar {
  position:absolute; left:0; bottom:0; height:2px; width:100%; transform-origin:left center;
  background:currentColor; opacity:.45; animation:toastBar linear forwards;
}
.toast.hold .toast-bar { animation-play-state:paused; }
@keyframes toastBar { from { transform:scaleX(1); } to { transform:scaleX(0); } }

.toast-verde  { border-left-color:var(--q-estado-verde); }
.toast-verde  .toast-ic { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.toast-verde  .toast-title, .toast-verde .toast-bar { color:var(--q-estado-verde); }
.toast-rojo   { border-left-color:var(--q-estado-rojo); }
.toast-rojo   .toast-ic { background:rgba(192,57,43,.1); color:var(--q-estado-rojo); }
.toast-rojo   .toast-title, .toast-rojo .toast-bar { color:var(--q-estado-rojo); }
.toast-ambar  { border-left-color:var(--q-estado-ambar); }
.toast-ambar  .toast-ic { background:rgba(214,158,46,.16); color:#8A6100; }
.toast-ambar  .toast-title, .toast-ambar .toast-bar { color:#8A6100; }
.toast-teal   { border-left-color:var(--q-teal-text); }
.toast-teal   .toast-ic { background:rgba(0,150,174,.12); color:var(--q-teal-text); }
.toast-teal   .toast-title, .toast-teal .toast-bar { color:var(--q-teal-text); }
.toast-morado { border-left-color:var(--q-morado); }
.toast-morado .toast-ic { background:var(--q-morado-soft); color:var(--q-morado); }
.toast-morado .toast-title, .toast-morado .toast-bar { color:var(--q-morado); }

@media (max-width:640px) {
  .toast-container { left:14px; right:14px; top:64px; }
  .toast { width:100%; }
}

/* ── 24. BANNERS ──────────────────────────────────────── */
.banner-inline {
  display:flex; align-items:flex-start; gap:8px;
  padding:12px 16px; border-radius:8px; margin-bottom:14px;
  font-size:13px; line-height:1.5;
}
.banner-rojo  { background:var(--q-estado-rojo-bg); color:var(--q-estado-rojo-text); border:1px solid var(--q-estado-rojo-bg); }
.banner-ambar { background:var(--q-estado-ambar-bg); color:var(--q-estado-ambar); border:1px solid var(--q-estado-ambar-bg); }
.banner-verde { background:var(--q-estado-verde-bg); color:var(--q-estado-verde); border:1px solid var(--q-estado-verde-bg); }
.banner-info  { background:var(--q-bg-hover); color:var(--q-morado-hover); border:1px solid var(--q-border); }

/* ── BLOQUE 4 · Flujo de aprobación del Administrador ── */
.flow-steps { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.flow-step {
  display:flex; align-items:center; gap:8px; padding:8px 14px; border-radius:999px;
  background:var(--q-bg-surface); border:1px solid var(--q-border); color:var(--q-estado-gris);
  font-size:12px; font-weight:600;
}
.flow-step-num {
  width:18px; height:18px; border-radius:50%; display:grid; place-items:center;
  background:var(--q-border); color:var(--q-estado-gris); font-size:11px; font-weight:600;
}
.flow-step.done   { background:var(--q-estado-verde-bg); border-color:var(--q-estado-verde-bg); color:var(--q-estado-verde); }
.flow-step.done .flow-step-num   { background:var(--q-estado-verde-bg); color:var(--q-estado-verde); }
.flow-step.active { background:var(--q-morado-soft); border-color:rgba(144,40,140,.35); color:var(--q-morado); }
.flow-step.active .flow-step-num { background:var(--q-morado); color:var(--q-bg-card); }

.carousel-counter { font-size:12px; font-weight:600; color:var(--q-text-secondary); }
.carousel-dots { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.carousel-dot {
  width:32px; height:32px; border-radius:8px; border:1px solid var(--q-border);
  background:white; color:var(--q-text-secondary); font-size:11px; font-weight:600; cursor:pointer;
}
.carousel-dot:hover { border-color:var(--q-morado); color:var(--q-morado); }
.carousel-dot.cur { background:var(--q-morado); border-color:var(--q-morado); color:var(--q-bg-card); }
.carousel-dot.ok  { background:var(--q-estado-verde-bg); border-color:var(--q-estado-verde-bg); color:var(--q-estado-verde); }
.carousel-dot.no  { background:var(--q-estado-rojo-bg); border-color:var(--q-estado-rojo-bg); color:var(--q-estado-rojo-text); }

.carousel-card {
  display:grid; grid-template-columns:1.15fr .85fr; gap:20px;
  border:1px solid var(--q-border); border-radius:14px; padding:20px; background:var(--q-bg-body);
}
@media (max-width:900px){ .carousel-card { grid-template-columns:1fr; } }
.carousel-doc {
  background:white; border:1px solid var(--q-border); border-radius:12px;
  padding:28px 20px; text-align:center; display:flex; flex-direction:column; align-items:center;
}
.carousel-doc-icon { color:var(--q-morado); transform:scale(1.8); margin-bottom:16px; }
.carousel-doc-name { font-size:14px; font-weight:700; word-break:break-all; }
.carousel-doc-meta { font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.carousel-badge {
  margin-top:14px; padding:5px 12px; border-radius:999px; font-size:12px; font-weight:600;
}
.carousel-badge.ok { background:var(--q-estado-verde-bg); color:var(--q-estado-verde); border:1px solid var(--q-estado-verde-bg); }
.carousel-badge.no { background:var(--q-estado-rojo-bg); color:var(--q-estado-rojo-text); border:1px solid var(--q-estado-rojo-bg); }
.carousel-actions { display:flex; flex-direction:column; justify-content:center; }
.carousel-hint { font-size:12px; color:var(--q-text-secondary); margin-bottom:12px; line-height:1.6; }

.firma-orden-row {
  display:flex; align-items:center; gap:8px; padding:10px 12px;
  border:1px solid var(--q-border); border-radius:8px; background:var(--q-bg-body);
}
.firma-orden-num {
  width:22px; height:22px; border-radius:50%; display:grid; place-items:center;
  background:var(--q-morado); color:var(--q-bg-card); font-size:11px; font-weight:600;
}

/* ── 25. EMPTY STATE ──────────────────────────────────── */
.empty-state { text-align:center; padding:48px 20px; display:flex; flex-direction:column; align-items:center; gap:12px; }
.empty-icon { color:var(--q-border); margin-bottom:8px; }
.empty-title { font-size:16px; font-weight:700; color:var(--q-text-primary); }
.empty-sub { font-size:13px; color:var(--q-text-secondary); max-width:300px; line-height:1.6; }

/* ── 26. SKELETON ─────────────────────────────────────── */
.skeleton { background:linear-gradient(90deg,var(--q-divider) 25%,var(--q-border) 50%,var(--q-divider) 75%); background-size:200% 100%; animation:shimmer 1.4s infinite; border-radius:8px; }
@keyframes shimmer { 0% { background-position:200% 0; } 100% { background-position:-200% 0; } }
.sk-line { height:14px; width:100%; margin-bottom:10px; }

/* ── 27. TOGGLE ───────────────────────────────────────── */
.toggle-wrap { display:flex; align-items:center; gap:8px; }
.toggle {
  width:40px; height:22px; border-radius:8px;
  background:var(--q-border); position:relative;
  cursor:pointer; transition:background .2s; border:none; flex-shrink:0;
}
.toggle.on { background:var(--q-teal); }
.toggle::after {
  content:''; position:absolute; top:3px; left:3px;
  width:16px; height:16px; border-radius:50%;
  background:white; box-shadow:0 1px 4px rgba(0,0,0,.2);
  transition:left .2s;
}
.toggle.on::after { left:21px; }
.toggle-label { font-size:13px; color:var(--q-text-secondary); }

/* ── 28. ICON BUTTONS ─────────────────────────────────── */
.icon-btn { width:32px; height:32px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; transition:background .12s; }
.icon-btn-morado { color:var(--q-morado); }
.icon-btn-morado:hover { background:var(--q-morado-soft); }
.icon-btn-teal { color:var(--q-teal-text); }
.icon-btn-teal:hover { background:rgba(0,150,174,.1); }
.icon-btn-rojo { color:var(--q-estado-rojo); }
.icon-btn-rojo:hover { background:rgba(192,57,43,.08); }

/* ── 29. STICKY FOOTER ────────────────────────────────── */
.sticky-footer {
  position:sticky; bottom:0;
  background:white; border-top:1px solid var(--q-border);
  padding:16px 32px; margin:20px -32px -28px;
  display:flex; gap:8px; align-items:center;
  border-radius:0 0 var(--q-radius-card) var(--q-radius-card);
  box-shadow:0 -2px 12px rgba(144,40,140,.06);
}

/* ── 30. PROGRESS BAR ─────────────────────────────────── */
.progress-bar { height:6px; background:var(--q-border); border-radius:8px; overflow:hidden; margin:8px 0; }
.progress-fill { height:100%; background:linear-gradient(90deg,var(--q-morado),var(--q-teal)); border-radius:8px; transition:width .4s; animation:pulse 1.5s infinite alternate; }
@keyframes pulse { from { opacity:.7; } to { opacity:1; } }

/* ── 31. AUTH SCREENS ─────────────────────────────────── */
.auth-shell { min-height:100vh; background:linear-gradient(135deg,var(--q-bg-surface) 0%,var(--q-bg-surface) 40%,var(--q-teal-soft) 100%); display:flex; align-items:flex-start; justify-content:center; padding:32px 20px; overflow-y:auto; }
.auth-card { background:white; border-radius:14px; box-shadow:0 8px 40px rgba(144,40,140,.12),0 0 0 1px rgba(144,40,140,.05); width:100%; max-width:440px; padding:40px 36px; }
.auth-logo { text-align:center; margin-bottom:24px; }
.auth-logo-sub { font-size:13px; color:var(--q-text-secondary); margin-top:8px; line-height:1.5; font-weight:500; }
/* Login split layout */
.auth-shell:has(.auth-split),
.auth-shell:has([data-auth-full]) { padding:0; display:block; background:white; }
.auth-split { min-height:100vh; display:grid; grid-template-columns:1.05fr 1fr; background:white; }
.auth-brand { position:relative; overflow:hidden; background:linear-gradient(135deg,var(--q-bg-hover) 0%,var(--q-bg-surface) 45%,var(--q-teal-soft) 100%); padding:40px 56px 32px; display:flex; flex-direction:column; }
.auth-brand-blob { position:absolute; border-radius:50%; pointer-events:none; }
.auth-brand-inner { position:relative; z-index:1; margin:auto 0; max-width:520px; }
.auth-brand-logo { position:relative; z-index:1; }
.auth-brand h1 { font-size:24px; line-height:1.1; font-weight:700; letter-spacing:-.02em; color:var(--q-text-primary); margin:0 0 24px; text-wrap:balance; }
.auth-brand-sub { border-left:3px solid var(--q-morado); padding-left:16px; font-size:16px; line-height:1.55; color:var(--q-text-secondary); max-width:420px; }
.auth-brand-foot { position:relative; z-index:1; font-size:12px; color:var(--q-text-disabled); }
.auth-form-side { display:flex; align-items:center; justify-content:center; padding:40px 24px; overflow-y:auto; }
.auth-form-side .auth-card { box-shadow:none; border-radius:0; max-width:400px; padding:0; }
@media (max-width:900px){
  .auth-split { grid-template-columns:1fr; }
  .auth-brand { padding:32px 28px; }
  .auth-brand h1 { font-size:24px; }
}
.auth-title { font-size:18px; font-weight:700; color:var(--q-text-primary); margin-bottom:20px; text-align:center; }

/* ── 32. CONFIRM SCREEN ───────────────────────────────── */
.confirm-screen { text-align:center; padding:40px 20px; }
.confirm-icon { margin:0 auto 20px; }
.confirm-folio { font-size:24px; font-weight:700; color:var(--q-morado); margin-bottom:10px; letter-spacing:-.5px; }
.confirm-msg { font-size:14px; color:var(--q-text-secondary); margin-bottom:28px; line-height:1.6; }
.confirm-btns { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }

/* ── 33. MISC UTILS ───────────────────────────────────── */
.flex-between { display:flex; align-items:center; justify-content:space-between; }
.flex-center   { display:flex; align-items:center; }
.flex-gap-8  { gap:8px; }
.flex-gap-12 { gap:12px; }
.mt-4  { margin-top:4px; }
.mt-8  { margin-top:8px; }
.mt-16 { margin-top:16px; }
.mt-24 { margin-top:24px; }
.mb-4  { margin-bottom:4px; }
.mb-8  { margin-bottom:8px; }
.mb-16 { margin-bottom:16px; }
.mb-24 { margin-bottom:24px; }
.text-secondary { color:var(--q-text-secondary); }
.text-morado    { color:var(--q-morado); }
.text-teal      { color:var(--q-teal-text); }
.fw-600 { font-weight:600; }
.fw-700 { font-weight:700; }
.fs-12  { font-size:12px; }
.fs-13  { font-size:13px; }
.link-teal    { color:var(--q-teal-text); font-weight:600; cursor:pointer; background:none; border:none; padding:0; font-family:inherit; font-size:inherit; }
.link-teal:hover { text-decoration:underline; }
.link-morado  { color:var(--q-morado); font-weight:600; cursor:pointer; }
.divider      { height:1px; background:var(--q-border); margin:20px 0; }
.section-title { font-size:12px; font-weight:600; color:var(--q-morado); text-transform:uppercase; letter-spacing:.6px; margin-bottom:14px; }
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
@media(max-width:600px) { .grid-2,.grid-3 { grid-template-columns:1fr; } .type-cards { flex-direction:column; align-items:center; } .rdrawer { width:calc(100vw - 24px); max-width:calc(100vw - 24px); } }

/* ── 34. DEMO USER CARD HOVER ─────────────────────────── */
.demo-user-card { transition:all .2s cubic-bezier(.4,0,.2,1) !important; }
.demo-user-card:hover { transform:translateY(-2px) !important; }

/* ── 35. DASHBOARD HERO BANNER ────────────────────────── */
.dashboard-hero {
  background:linear-gradient(135deg,var(--q-morado) 0%,var(--q-morado) 50%,var(--q-morado) 100%);
  border-radius:var(--q-radius-card); padding:28px 32px; margin-bottom:24px;
  color:white; position:relative; overflow:hidden;
}
.dashboard-hero::before {
  content:''; position:absolute; right:-60px; top:-60px;
  width:220px; height:220px; border-radius:50%;
  background:rgba(255,255,255,.06);
}
.dashboard-hero::after {
  content:''; position:absolute; right:40px; bottom:-40px;
  width:140px; height:140px; border-radius:50%;
  background:rgba(255,255,255,.04);
}
.hero-greeting { font-size:18px; font-weight:700; margin-bottom:4px; }
.hero-sub { font-size:13px; opacity:.8; }
.hero-badge {
  display:inline-flex; align-items:center; gap:8px;
  background:rgba(255,255,255,.15); padding:5px 12px; border-radius:999px;
  font-size:11px; font-weight:600; margin-top:14px;
  backdrop-filter:blur(4px);
}

/* Animated counter */
.kpi-num { animation:countIn .5s ease; }

@keyframes countIn { from { opacity:0; transform:scale(.8); } to { opacity:1; transform:scale(1); } }

/* ── 36. DASHBOARD HERO VARIANTS ────────────────────── */
.dashboard-hero-content { position:relative; z-index:1; }
.dashboard-hero-circle  { position:absolute; border-radius:50%; background:rgba(255,255,255,.07); }
.dashboard-hero-circle.c1 { width:220px; height:220px; top:-70px; right:-50px; }
.dashboard-hero-circle.c2 { width:140px; height:140px; bottom:-50px; right:80px; }
.dashboard-hero-greeting  { font-size:24px; font-weight:700; margin-bottom:4px; }
.dashboard-hero-sub       { font-size:13px; opacity:.85; margin-bottom:20px; }
.dashboard-hero-teal   { background:linear-gradient(135deg,var(--q-teal-text) 0%,var(--q-teal) 60%,var(--q-teal) 100%); }
.dashboard-hero-verde  { background:linear-gradient(135deg,var(--q-estado-verde) 0%,var(--q-estado-verde) 60%,var(--q-estado-verde) 100%); }
.btn-hero {
  display:inline-flex; align-items:center; gap:8px;
  background:rgba(255,255,255,.18); color:white;
  border:1.5px solid rgba(255,255,255,.35); border-radius:var(--q-radius-btn);
  height:40px; padding:0 20px; font-size:13px; font-weight:600;
  backdrop-filter:blur(4px); transition:all .15s;
}
.btn-hero:hover { background:rgba(255,255,255,.28); transform:translateY(-1px); }

/* ── 37. KPI CARD COLOUR VARIANTS ──────────────────── */
.kpi-card-morado::before { background:linear-gradient(90deg,var(--q-morado),var(--q-morado)); }
.kpi-card-verde::before  { background:linear-gradient(90deg,var(--q-estado-verde),var(--q-estado-verde)); }
.kpi-card-ambar::before  { background:linear-gradient(90deg,var(--q-estado-ambar),var(--q-estado-ambar)); }
.kpi-card-rojo::before   { background:linear-gradient(90deg,var(--q-estado-rojo),var(--q-estado-rojo)); }
.kpi-card-teal::before   { background:linear-gradient(90deg,var(--q-teal),var(--q-teal)); }
.kpi-num-verde  { color:var(--q-estado-verde); }
.kpi-num-ambar  { color:var(--q-estado-ambar); }
.kpi-num-rojo   { color:var(--q-estado-rojo); }
.kpi-num-teal   { color:var(--q-teal-text); }
.kpi-trend      { font-size:11px; font-weight:600; margin-top:4px; }
.kpi-trend-up   { color:var(--q-estado-verde); }
.kpi-trend-down { color:var(--q-estado-rojo); }
.kpi-trend-neutral { color:var(--q-text-secondary); }

/* ── 38. DASHBOARD GRID ─────────────────────────────── */
.dashboard-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
}
@media(max-width:900px) { .dashboard-grid { grid-template-columns:1fr; } }

/* ── 39. QUICK ACTIONS ──────────────────────────────── */
.quick-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:16px; }
.quick-btn {
  display:flex; align-items:center; gap:8px;
  background:var(--q-bg-body); border:1.5px solid var(--q-border);
  border-radius:8px; padding:12px 14px; font-size:13px; font-weight:600;
  color:var(--q-text-primary); text-align:left; cursor:pointer;
  transition:all .15s;
}
.quick-btn:hover { border-color:var(--q-morado); background:var(--q-morado-soft); color:var(--q-morado); transform:translateY(-1px); box-shadow:0 4px 12px rgba(144,40,140,.10); }
.quick-btn-icon { width:34px; height:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }

/* ── 40. DASHBOARD TIP ──────────────────────────────── */
.dashboard-tip {
  display:flex; align-items:flex-start; gap:8px;
  background:linear-gradient(135deg,var(--q-estado-ambar-bg),var(--q-estado-ambar-bg));
  border:1px solid var(--q-estado-ambar-bg); border-radius:8px;
  padding:10px 12px; font-size:12px; color:var(--q-text-secondary);
  margin-top:8px;
}

/* ── 41. WIZARD ─────────────────────────────────────── */
.wizard-footer {
  display:flex; justify-content:space-between; align-items:center;
  margin-top:28px; padding-top:20px; border-top:1px solid var(--q-border);
}
.stepper-4 { gap:4px; }
.stepper-4 .step-label { font-size:11px; }
.type-card.selected {
  border-color:var(--q-morado);
  background:var(--q-morado-soft);
  box-shadow:0 0 0 3px rgba(144,40,140,.12);
}

/* ── 42. SIDEBAR MENU ITEMS ─────────────────────────── */
.sb-menu .sb-item {
  display:flex; align-items:center; gap:12px;
  height:40px; padding:0 20px; border-radius:999px; margin:0;
  font-size:13px; font-weight:600; color:var(--q-text-secondary);
  text-decoration:none; transition:all .15s; white-space:nowrap;
}
.sb-menu .sb-item:hover { background:var(--q-morado-soft); color:var(--q-morado); text-decoration:none; }
.sb-menu .sb-item.active { background:#F1EAF7; color:var(--q-morado); }
.sb-menu .sb-item svg { flex-shrink:0; }
body.sidebar-collapsed .sb-menu .sb-item .sb-item-label { display:none; }
body.sidebar-collapsed .sb-menu .sb-item { justify-content:center; margin:0; padding:0; }

/* ── 43. NOTIFICATION PANEL ─────────────────────────── */
.notif-backdrop {
  position:fixed; inset:0; z-index:299; background:transparent;
}
.notif-panel {
  position:fixed; top:var(--header-h); right:0; width:340px;
  height:calc(100vh - var(--header-h)); background:white;
  box-shadow:-4px 0 24px rgba(144,40,140,.12); z-index:300;
  display:flex; flex-direction:column; overflow:hidden;
}
.notif-panel.hidden { display:none; }

/* ── 44. BANNER TEAL ─────────────────────────────────── */
.banner-teal {
  background:var(--q-teal-soft); border:1px solid rgba(0,150,174,.2);
  color:var(--q-teal-text);
}
.banner-inline.banner-teal { border-radius:8px; padding:10px 14px; display:flex; align-items:center; gap:8px; font-size:13px; }

/* ── 45. PROGRESSIVE FORM LAYOUT ─────────────────────── */
.form-hint {
  font-size:11px; color:var(--q-text-muted); margin-top:4px;
  display:block; line-height:1.55;
}
.form-hint > svg { vertical-align:-2px; margin-right:4px; }

.form-progressive-layout {
  display:flex; gap:0; height:calc(100vh - var(--header-h) - 48px);
  min-height:0;
}

/* Left nav */
.form-leftnav {
  width:200px; flex-shrink:0;
  background:white; border-right:1px solid var(--q-border);
  border-radius:12px 0 0 12px;
  display:flex; flex-direction:column;
  overflow-y:auto; overflow-x:hidden;
  padding:20px 0 20px;
}
.form-leftnav-title {
  font-size:11px; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--q-text-muted);
  padding:0 16px 8px;
}
.form-leftnav-item {
  display:flex; align-items:center; gap:8px;
  padding:9px 16px; font-size:13px; font-weight:600;
  color:var(--q-text-secondary); text-decoration:none;
  border-left:3px solid transparent;
  cursor:pointer; transition:all .14s; white-space:nowrap;
  background:none; border-top:none; border-right:none; border-bottom:none;
  width:100%; text-align:left;
}
.form-leftnav-item:hover { background:var(--q-morado-soft); color:var(--q-morado); }
.form-leftnav-item.active {
  background:var(--q-morado-soft); color:var(--q-morado);
  border-left-color:var(--q-morado);
}
.form-leftnav-divider {
  border:none; border-top:1px solid var(--q-border);
  margin:12px 16px;
}
.form-leftnav-section {
  display:flex; align-items:center; gap:8px;
  padding:7px 16px; font-size:12px; font-weight:600;
  color:var(--q-text-muted); text-decoration:none;
  border-left:3px solid transparent;
  cursor:pointer; transition:all .14s;
  background:none; border-top:none; border-right:none; border-bottom:none;
  width:100%; text-align:left;
}
.form-leftnav-section:hover { color:var(--q-morado); background:var(--q-morado-soft); }
.form-leftnav-section.active { color:var(--q-morado); border-left-color:var(--q-morado); }

/* Form body */
.form-progressive-body {
  flex:1; min-width:0;
  background:white; border-radius:0 12px 12px 0;
  overflow-y:auto;
  display:flex; flex-direction:column;
}
.form-progressive-header {
  padding:24px 28px 20px;
  border-bottom:1px solid var(--q-border);
  flex-shrink:0;
}
.form-progressive-header h2 {
  font-size:18px; font-weight:700; color:var(--q-text-primary); margin:0 0 4px;
}
.form-progressive-header p {
  font-size:13px; color:var(--q-text-muted); margin:0;
}

/* Search row */
.form-search-row {
  display:flex; gap:8px; align-items:flex-end;
  padding:20px 28px 0;
}
.form-search-row .form-group { flex:1; margin:0; }
.form-search-row .btn { flex-shrink:0; }

/* Form sections */
.form-section {
  padding:24px 28px;
  border-bottom:1px solid var(--q-border);
}
.form-section:last-child { border-bottom:none; }
.form-section-title {
  display:flex; align-items:center; gap:8px;
  font-size:16px; font-weight:700; color:var(--q-text-primary);
  margin:0 0 18px;
}
.form-section-num {
  width:24px; height:24px; border-radius:50%;
  background:var(--q-morado); color:white;
  font-size:11px; font-weight:600;
  display:inline-flex; align-items:center; justify-content:center;
  flex-shrink:0;
}

/* Póliza info grid */
.poliza-info-grid {
  display:grid; grid-template-columns:repeat(3, 1fr);
  gap:12px 16px; margin-bottom:20px;
}
.poliza-info-item { display:flex; flex-direction:column; gap:4px; }
.poliza-info-item-wide { grid-column:span 2; }
.poliza-info-label {
  font-size:11px; font-weight:600; letter-spacing:.07em;
  text-transform:uppercase; color:var(--q-text-muted);
}
.poliza-info-value {
  font-size:13px; font-weight:600; color:var(--q-text-primary);
}
.poliza-info-big {
  font-size:16px; font-weight:700; color:var(--q-morado);
}

/* Estatus badge */
.poliza-estatus-badge {
  display:inline-flex; align-items:center; gap:8px;
  padding:4px 10px; border-radius:999px;
  font-size:12px; font-weight:600; border:2px solid;
}
.poliza-estatus-vigente {
  background:var(--q-teal-soft); color:var(--q-teal-text);
  border-color:var(--q-teal-text);
}
.poliza-estatus-vencida {
  background:var(--q-estado-rojo-bg); color:var(--q-estado-rojo-text);
  border-color:var(--q-estado-rojo);
}
.poliza-estatus-cancelada {
  background:var(--q-bg-surface); color:var(--q-text-secondary);
  border-color:var(--q-text-tertiary);
}

/* Vigencia tag */
.poliza-vigencia-tag {
  display:inline-flex; align-items:center; gap:4px;
  background:var(--q-morado-soft); color:var(--q-morado);
  border-radius:8px; padding:3px 8px;
  font-size:12px; font-weight:600;
}

/* Radio stack (beneficios) */
.radio-stack {
  display:flex; flex-direction:column; gap:8px;
}
.radio-item {
  display:flex; align-items:center; gap:8px;
  padding:10px 14px; border-radius:8px; border:1.5px solid var(--q-border);
  cursor:pointer; transition:all .14s; font-size:13px; font-weight:500;
  color:var(--q-text-secondary);
}
.radio-item:hover { border-color:var(--q-morado); background:var(--q-morado-soft); }
.radio-item input[type=radio] { accent-color:var(--q-morado); width:16px; height:16px; }
.radio-item.checked {
  border-color:var(--q-morado); background:var(--q-morado-soft);
  color:var(--q-morado);
}

/* Select list (tipo de negocio) */
.select-list {
  display:flex; flex-direction:column; gap:4px;
}
.select-list-item {
  display:flex; align-items:center; gap:8px;
  padding:10px 14px; border-radius:8px; border:1.5px solid var(--q-border);
  cursor:pointer; transition:all .14s; font-size:13px; font-weight:500;
  color:var(--q-text-secondary); user-select:none;
}
.select-list-item:hover { border-color:var(--q-morado); background:var(--q-morado-soft); }
.select-list-item.selected {
  border-color:var(--q-morado); background:var(--q-morado-soft);
  color:var(--q-morado); font-weight:600;
}
.select-list-item .check-icon {
  width:18px; height:18px; border-radius:50%;
  border:2px solid var(--q-border); flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  transition:all .14s;
}
.select-list-item.selected .check-icon {
  background:var(--q-morado); border-color:var(--q-morado);
  color:white; font-size:11px;
}

/* Misc */
.link-morado {
  color:var(--q-morado); font-weight:600; text-decoration:none;
  cursor:pointer;
}
.link-morado:hover { text-decoration:underline; }

/* ── Wizard vertical stepper ── */
.wiz-stepper { padding-top:24px; }
.wiz-step-row {
  display:flex; align-items:flex-start; gap:12px;
  padding:10px 16px; cursor:default;
  transition:background .14s; border-radius:8px;
}
.wiz-step-row.done { cursor:pointer; }
.wiz-step-row.done:hover { background:var(--q-morado-soft); }
.wiz-step-circle {
  width:28px; height:28px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:600; flex-shrink:0;
  border:2px solid var(--q-border);
  background:white; color:var(--q-text-muted);
  transition:all .2s;
}
.wiz-step-row.active .wiz-step-circle {
  background:var(--q-morado); border-color:var(--q-morado);
  color:white; box-shadow:0 0 0 4px rgba(144,40,140,.15);
}
.wiz-step-row.done .wiz-step-circle {
  background:var(--q-teal); border-color:var(--q-teal-text); color:white;
}
.wiz-step-row.pending .wiz-step-circle {
  background:var(--q-bg-body); border-color:var(--q-border);
  color:var(--q-text-disabled);
}
.wiz-step-info { display:flex; flex-direction:column; gap:4px; }
.wiz-step-label {
  font-size:13px; font-weight:600;
  color:var(--q-text-secondary);
}
.wiz-step-row.active .wiz-step-label { color:var(--q-morado); }
.wiz-step-row.done   .wiz-step-label { color:var(--q-text-primary); }
.wiz-step-row.pending .wiz-step-label { color:var(--q-text-disabled); }
.wiz-step-sub {
  font-size:11px; color:var(--q-text-muted); font-weight:500;
}
.wiz-step-connector {
  width:2px; height:20px; background:var(--q-border);
  margin:0 0 0 28px; border-radius:8px;
}
.wiz-sub-items {
  display:flex; flex-direction:column; gap:4px;
  padding:4px 0 4px 56px;
}
.wiz-sub-item {
  font-size:12px; font-weight:600; color:var(--q-text-muted);
  background:none; border:none; cursor:pointer;
  text-align:left; padding:5px 8px; border-radius:8px;
  transition:all .14s;
}
.wiz-sub-item:hover { color:var(--q-morado); background:var(--q-morado-soft); }

/* Type card large variant */
.tipo-card-lg { padding:24px 20px; text-align:center; }
.tipo-card-lg .type-card-icon {
  width:72px; height:72px; border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 14px;
}
.tipo-card-lg .type-card-title { font-size:16px; font-weight:700; margin-bottom:6px; }
.tipo-card-lg .type-card-desc  { font-size:13px; color:var(--q-text-secondary); margin-bottom:14px; line-height:1.5; }
.tipo-card-lg .type-card-cta   {
  font-size:13px; font-weight:600; color:var(--q-morado);
  opacity:0; transition:opacity .2s;
}
.tipo-card-lg:hover .type-card-cta { opacity:1; }
.tipo-card-lg:hover {
  border-color:var(--q-morado);
  background:var(--q-morado-soft);
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(144,40,140,.12);
}

/* Agent picker table */
.agent-poliza-table { width:100%; border-collapse:collapse; font-size:13px; }
.agent-poliza-table th {
  background:var(--q-bg-body); font-size:11px; font-weight:600;
  text-transform:uppercase; letter-spacing:.06em; color:var(--q-text-muted);
  padding:8px 12px; text-align:left; border-bottom:1px solid var(--q-border);
}
.agent-poliza-table td {
  padding:10px 12px; border-bottom:1px solid var(--q-border);
  color:var(--q-text-primary); vertical-align:middle;
}
.agent-poliza-table tr:last-child td { border-bottom:none; }
.agent-poliza-table tr:hover td { background:var(--q-bg-body); }

/* Form footer */
.form-footer-bar {
  padding:16px 28px;
  border-top:1px solid var(--q-border);
  background:white;
  display:flex; justify-content:flex-end; gap:8px;
  border-radius:0 0 12px 0;
  flex-shrink:0;
}

/* Dropzone */
.dropzone {
  border:2px dashed var(--q-border); border-radius:8px;
  padding:28px 20px; text-align:center;
  color:var(--q-text-muted); font-size:13px; cursor:pointer;
  transition:all .2s;
}
.dropzone:hover, .dropzone.drag-over {
  border-color:var(--q-morado); background:var(--q-morado-soft);
  color:var(--q-morado);
}
.dropzone-icon { font-size:28px; margin-bottom:8px; }
.file-list { display:flex; flex-direction:column; gap:8px; margin-top:12px; }
.file-item {
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; border-radius:8px; background:var(--q-bg-body);
  border:1px solid var(--q-border); font-size:12px;
}
.file-item-name { flex:1; font-weight:500; color:var(--q-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file-item-size { color:var(--q-text-muted); flex-shrink:0; }
.file-item-remove { cursor:pointer; color:var(--q-text-muted); flex-shrink:0; transition:color .14s; }
.file-item-remove:hover { color:var(--q-estado-rojo); }

/* ════════════════════════════════════════════════
   46. WIZARD UNIFICADO — nueva solicitud
   ════════════════════════════════════════════════ */

/* Header fijo del wizard */
.wiz-header {
  display:flex; justify-content:space-between; align-items:center;
  padding:24px 32px 20px;
  border-bottom:1px solid var(--q-border);
  flex-shrink:0;
}

/* Progress bar horizontal */
.wiz-progress-bar {
  display:flex; align-items:center; flex-wrap:wrap; row-gap:12px;
  padding:18px 32px;
  background:var(--q-bg-body);
  border-bottom:1px solid var(--q-border);
  flex-shrink:0; gap:0;
}
.wiz-progress-step {
  display:flex; align-items:center; gap:10px;
  white-space:nowrap; background:none; border:0; padding:0;
  font-family:'Montserrat',sans-serif;
}
button.wiz-progress-step { cursor:pointer; }
.wiz-progress-step span:last-child {
  font-size:13px; font-weight:500; color:#6B7280; transition:color .15s;
}
button.wiz-progress-step:hover span:last-child { color:var(--q-morado); }
.wiz-progress-step.active span:last-child { color:#90288C; font-weight:700; }
.wiz-progress-step.done   span:last-child { color:#3F3F51; font-weight:600; }
.wiz-progress-dot {
  width:28px; height:28px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:600;
  background:white; border:2px solid var(--q-border);
  color:var(--q-text-disabled); flex-shrink:0;
  transition:all .2s;
}
.wiz-progress-step.active .wiz-progress-dot {
  background:#90288C; border-color:#90288C; color:#FFFFFF;
}
.wiz-progress-step.done .wiz-progress-dot {
  background:#F1EAF7; border-color:#90288C; color:#90288C;
}
.wiz-progress-line {
  flex:1; height:1px; background:#E8E6EF;
  margin:0 14px; min-width:24px;
  transition:background .3s;
}
.wiz-progress-line.done { background:#D9BFDE; }

/* Cuerpo scrollable del wizard */
.wiz-body {
  flex:1; overflow-y:auto; overflow-x:hidden;
  padding:28px 32px 40px;
  display:flex; flex-direction:column; gap:0;
}

/* Bloque de búsqueda */
.wiz-search-block {
  background:var(--q-bg-body);
  border:1.5px solid var(--q-border);
  border-radius:14px;
  padding:24px 28px;
  margin-bottom:28px;
  transition:border-color .2s, background .2s;
}
.wiz-search-block.wiz-search-found {
  background:var(--q-teal-soft);
  border-color:var(--q-teal-text);
}

/* Toggle tipo de búsqueda */
.wiz-tipo-toggle {
  display:flex; gap:8px; margin-bottom:20px;
}
.wiz-tipo-btn {
  display:flex; align-items:center; gap:8px;
  padding:9px 18px; border-radius:999px;
  font-size:13px; font-weight:600;
  border:1.5px solid var(--q-border);
  background:white; color:var(--q-text-secondary);
  cursor:pointer; transition:all .15s;
}
.wiz-tipo-btn:hover {
  border-color:var(--q-morado); color:var(--q-morado);
  background:var(--q-morado-soft);
}
.wiz-tipo-btn.active {
  border-color:var(--q-morado); background:var(--q-morado);
  color:white; box-shadow:0 2px 8px rgba(144,40,140,.25);
}

/* Campo de búsqueda */
.wiz-search-field {
  display:flex; gap:8px; align-items:center; max-width:560px;
}
.wiz-search-field .input-wrapper { flex:1; }
.wiz-search-hint {
  font-size:11px; color:var(--q-text-muted); margin-top:8px;
}

/* Tag de resultado encontrado */
.wiz-found-tag {
  display:inline-flex; align-items:center; gap:8px;
  margin-top:12px; padding:6px 12px; border-radius:999px;
  background:var(--q-teal-soft); color:var(--q-teal-text);
  font-size:12px; font-weight:600;
}

/* Sección del formulario (reutilizada) */
.wiz-body .form-section {
  border:1.5px solid var(--q-border);
  border-radius:14px;
  margin-bottom:16px;
  padding:24px 28px;
}
.wiz-body .form-section:last-child { margin-bottom:0; }

/* ── Rail de secciones del wizard ── */
.wiz-rail {
  position:sticky; top:62px; z-index:20;
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  padding:10px 60px; margin:0 -32px 4px;
  background:rgba(255,255,255,.92); backdrop-filter:blur(6px);
  border-bottom:1px solid #F0EEF5;
}
.wiz-rail-chip {
  display:inline-flex; align-items:center; gap:8px;
  height:32px; padding:0 14px; border-radius:999px;
  border:1px solid #E8E6EF; background:#FFFFFF;
  font-size:12px; font-weight:600; color:#3F3F51;
  cursor:pointer; white-space:nowrap; transition:border-color .15s, color .15s, background .15s;
}
.wiz-rail-chip:hover { border-color:var(--q-morado); color:var(--q-morado); }
.wiz-rail-chip .rail-dot {
  width:8px; height:8px; border-radius:50%; flex-shrink:0;
  background:var(--q-border);
}
.wiz-rail-chip.done { border-color:rgba(30,111,60,.35); color:#1E6F3C; background:#F3FAF5; }
.wiz-rail-chip.done .rail-dot { background:#1E6F3C; }
.wiz-rail-chip.pending .rail-dot { background:var(--q-estado-ambar); }

/* Marca de estado en el título de sección */
.sec-flag {
  margin-left:auto; display:inline-flex; align-items:center; gap:6px;
  height:24px; padding:0 12px; border-radius:999px;
  font-size:11px; font-weight:600; letter-spacing:.2px;
}
.sec-flag.ok   { background:#D4EDDA; color:#1E6F3C; }
.sec-flag.pend { background:#FEF3CD; color:#B45309; }

/* ── Barra de acción fija del wizard ── */
.wiz-actionbar {
  position:sticky; bottom:0; z-index:30;
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; flex-wrap:wrap;
  margin:24px -32px -40px; padding:16px 44px 20px;
  background:#FFFFFF; border-top:1px solid #E8E6EF;
  box-shadow:0 -4px 18px rgba(144,40,140,.06);
}
.wiz-ready { display:flex; align-items:center; gap:12px; min-width:0; }
.wiz-ready-dot {
  width:34px; height:34px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background:#FEF3CD; color:#B45309;
}
.wiz-ready-dot.ok { background:#D4EDDA; color:#1E6F3C; }
.wiz-ready-title { font-size:13px; font-weight:700; color:#1C1C2E; letter-spacing:-.2px; }
.wiz-ready-sub { font-size:12px; font-weight:500; color:#6B7280; margin-top:1px; }
.wiz-actionbar-btns { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-left:auto; }

/* Footer envío */
.wiz-body .wiz-submit-row {
  display:flex; align-items:center; gap:12px;
  padding-top:8px; margin-top:8px;
}

/* ── 47b. PDF VIEWER CHROME ──────────────────────────── */
.pdfv-shell { display:flex; flex-direction:column; background:#525659; border-radius:8px; overflow:hidden; width:100%; min-height:0; align-self:stretch; }
.pdfv-toolbar { display:flex; align-items:center; gap:12px; padding:8px 14px; background:#323639; color:var(--q-border); flex-shrink:0; }
.pdfv-toolbar-name { font-size:13px; color:var(--q-border); opacity:.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:260px; }
.pdfv-toolbar-sep { width:1px; height:20px; background:rgba(255,255,255,.18); }
.pdfv-toolbar-group { display:flex; align-items:center; gap:8px; }
.pdfv-toolbar-spacer { flex:1; }
.pdfv-btn { display:flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:8px; background:none; border:none; color:var(--q-border); cursor:pointer; transition:background .12s; }
.pdfv-btn:hover { background:rgba(255,255,255,.12); color:white; }
.pdfv-btn:disabled { opacity:.35; cursor:default; }
.pdfv-btn:disabled:hover { background:none; }
.pdfv-zoom { font-size:12px; color:var(--q-border); min-width:38px; text-align:center; }
.pdfv-pagenum { width:32px; text-align:center; background:#414449; border:1px solid rgba(255,255,255,.15); border-radius:8px; color:var(--q-border); font-size:12px; padding:3px 2px; }
.pdfv-body { display:flex; flex:1; min-height:0; }
.pdfv-sidebar { width:130px; flex-shrink:0; background:#2b2d30; padding:14px 0; overflow-y:auto; display:flex; flex-direction:column; align-items:center; gap:8px; }
.pdfv-thumb { width:78px; height:100px; background:white; border-radius:8px; border:2px solid transparent; cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.4); overflow:hidden; position:relative; }
.pdfv-thumb.active { border-color:#8ab4f8; }
.pdfv-thumb-num { font-size:11px; color:#9aa0a6; margin-top:2px; text-align:center; }
.pdfv-canvas { flex:1; overflow:auto; padding:0; display:flex; background:#525659; }
.pdfv-page { background:white; width:100%; min-height:100%; box-shadow:none; padding:36px 34px; flex-shrink:0; }
.pdfv-page-generic { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; color:var(--q-text-tertiary); height:100%; text-align:center; }

/* ── 47. DOCUMENT PREVIEW MODAL ──────────────────────── */
.doc-preview-overlay {
  position:fixed; inset:0; z-index:500;
  background:rgba(28,28,46,.72); backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  animation:fadeIn .18s ease;
}
.doc-preview-panel {
  display:flex; flex-direction:column;
  width:min(860px,100vw); background:white;
  box-shadow:0 24px 64px rgba(0,0,0,.28);
  animation:slideUp .22s cubic-bezier(.4,0,.2,1);
  margin:auto;
  border-radius:14px;
  overflow:hidden;
  height:96vh;
  max-height:96vh;
}
@keyframes slideUp {
  from { opacity:0; transform:translateY(28px); }
  to   { opacity:1; transform:translateY(0); }
}
.doc-preview-header {
  display:flex; align-items:center; gap:12px;
  padding:16px 20px;
  border-bottom:1px solid var(--q-border);
  background:white; flex-shrink:0;
}
.doc-preview-filename {
  flex:1; font-size:14px; font-weight:700; color:var(--q-text-primary);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.doc-preview-meta { font-size:11px; color:var(--q-text-secondary); margin-top:2px; }
.doc-preview-body {
  flex:1; overflow:auto; background:var(--q-bg-surface);
  display:flex; align-items:center; justify-content:center;
  min-height:0;
}
.doc-preview-placeholder {
  display:flex; flex-direction:column; align-items:center; gap:16px;
  color:var(--q-text-secondary); padding:48px;
}
.doc-preview-placeholder svg { opacity:.35; }
.doc-preview-placeholder-title { font-size:16px; font-weight:600; color:var(--q-text-primary); }
.doc-preview-placeholder-sub { font-size:12px; color:var(--q-text-secondary); text-align:center; }
.doc-preview-footer {
  display:flex; align-items:center; justify-content:flex-end; gap:8px;
  padding:12px 20px; border-top:1px solid var(--q-border);
  background:white; flex-shrink:0;
}
/* File item action button */
.file-item-preview-btn {
  margin-left:auto; padding:4px 12px;
  border-radius:8px; font-size:11px; font-weight:600;
  color:var(--q-morado); border:1.5px solid var(--q-morado);
  transition:background .15s, color .15s; cursor:pointer; white-space:nowrap;
}
.file-item-preview-btn:hover { background:var(--q-morado); color:white; }


/* ── 48. FIRMA ELECTRÓNICA ───────────────────────── */
.firma-tabs {
  display:flex; gap:4px; margin-bottom:16px;
  background:var(--q-bg-body); border-radius:8px; padding:4px;
  width:fit-content;
}
.firma-tab {
  display:flex; align-items:center; gap:8px;
  padding:7px 16px; border-radius:8px;
  font-size:12px; font-weight:600; color:var(--q-text-secondary);
  transition:all .18s; cursor:pointer;
}
.firma-tab.active { background:white; color:var(--q-morado); box-shadow:0 1px 4px rgba(0,0,0,.1); }
.firma-tab:not(.active):hover { color:var(--q-morado); background:rgba(255,255,255,.6); }

.firma-canvas-wrapper {
  position:relative;
  border:2px solid var(--q-morado);
  border-radius:12px;
  overflow:hidden;
  background:white;
  cursor:crosshair;
}
.firma-canvas { display:block; width:100%; height:160px; touch-action:none; }
.firma-canvas-hint {
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  color:var(--q-text-disabled); font-size:13px; pointer-events:none;
}

.firma-upload-zone {
  border:2px dashed var(--q-border);
  border-radius:12px; padding:32px 24px;
  text-align:center; cursor:pointer; color:var(--q-text-secondary);
  transition:border-color .2s, background .2s;
}
.firma-upload-zone:hover { border-color:var(--q-morado); background:var(--q-morado-soft); color:var(--q-morado); }

/* ── 49. CONVENIO PREVIEW ───────────────────────── */
.convenio-preview {
  background:white;
  border:1.5px solid var(--q-border);
  border-radius:12px;
  padding:32px 36px;
  font-size:13px;
  line-height:1.8;
  color:var(--q-text-primary);
  max-width:640px;
}
.convenio-preview-title {
  font-size:14px; font-weight:700;
  text-align:center; letter-spacing:.5px;
  text-transform:uppercase;
  margin-bottom:20px; color:var(--q-text-primary);
}
.convenio-preview p { margin:0 0 14px; text-align:justify; }
.convenio-preview-footer {
  margin-top:20px; text-align:center;
  font-size:11px; color:var(--q-text-secondary);
  font-style:italic;
}
.convenio-preview-sigs {
  display:flex; gap:24px; margin-top:32px; flex-wrap:wrap;
}
.convenio-sig-box {
  flex:1; min-width:180px; text-align:center;
}
.convenio-sig-line {
  height:56px; border-bottom:1.5px solid var(--q-text-primary);
  display:flex; align-items:flex-end; justify-content:center;
  padding-bottom:6px; margin-bottom:6px;
  font-size:11px; color:var(--q-text-secondary);
}
.convenio-sig-name { font-weight:600; font-size:12px; }
.convenio-sig-role { font-size:11px; color:var(--q-text-secondary); }


/* ── 50. DOCUSIGN FIRMA LAYOUT ───────────────────────── */
.firma-topbar {
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px;
  padding:12px 24px;
  background:white;
  border-bottom:1px solid var(--q-border);
  position:sticky; top:0; z-index:10;
}
.firma-topbar-info { display:flex; flex-direction:column; gap:4px; }
.firma-topbar-folio { font-size:16px; font-weight:700; color:var(--q-text-primary); }
.firma-topbar-meta { font-size:12px; color:var(--q-text-secondary); }
.firma-topbar-sub { font-size:12px; color:var(--q-text-secondary); }

.firma-layout {
  display:flex; align-items:stretch; gap:0;
  height:calc(100vh - var(--header-h) - 61px);
  overflow:hidden;
}

/* LEFT: scrollable document column */
.firma-doc-col {
  flex:1 1 0; min-width:0;
  padding:32px 40px;
  overflow-y:auto;
  background:var(--q-bg-body);
  height:100%;
}

/* The paper page */
.firma-doc-page {
  background:white;
  border:1px solid var(--q-border);
  border-radius:12px;
  padding:48px 52px;
  max-width:720px;
  margin:0 auto;
  box-shadow:0 4px 24px rgba(144,40,140,.07);
  font-size:13px;
  line-height:1.85;
  color:var(--q-text-primary);
}

.firma-doc-header {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:20px; padding-bottom:16px;
  border-bottom:2px solid var(--q-morado);
  flex-wrap:wrap; gap:12px;
}
.firma-doc-header-logo { font-size:24px; font-weight:700; color:var(--q-morado); letter-spacing:.5px; }
.firma-doc-header-date { font-size:11px; color:var(--q-text-secondary); text-align:right; }

.firma-doc-title {
  text-align:center;
  font-size:13px; font-weight:700;
  text-transform:uppercase;
  letter-spacing:.4px;
  color:var(--q-text-primary);
  margin:0 0 28px;
  line-height:1.5;
}

.firma-doc-heading {
  font-size:12px; font-weight:600;
  text-transform:uppercase;
  letter-spacing:.4px;
  margin:24px 0 10px;
  color:var(--q-morado);
}

.firma-doc-p {
  margin:0 0 14px;
  text-align:justify;
  font-size:13px;
  color:var(--q-text-primary);
}

.firma-doc-sigs {
  display:flex; gap:24px; margin-top:48px; flex-wrap:wrap;
}
.firma-doc-sig-col {
  flex:1; min-width:180px; display:flex; flex-direction:column; align-items:center; gap:8px;
}
.firma-doc-sig-area {
  width:100%; min-height:72px;
  border-bottom:1.5px solid var(--q-text-primary);
  display:flex; align-items:flex-end; justify-content:center;
  padding-bottom:6px;
}
.firma-doc-sig-area img { max-height:64px; max-width:100%; object-fit:contain; }
.firma-doc-sig-name {
  font-weight:600; font-size:12px; text-align:center;
  text-transform:uppercase; color:var(--q-text-primary);
}
.firma-doc-sig-role {
  font-size:11px; color:var(--q-text-secondary); text-align:center;
}

.firma-doc-articulo {
  margin-top:32px;
  padding:16px;
  background:var(--q-bg-body);
  border-radius:8px;
  border-left:3px solid var(--q-morado);
  font-size:12px;
  color:var(--q-text-secondary);
  line-height:1.7;
}

/* RIGHT: sticky signature panel */
.firma-panel-col {
  width:300px; flex-shrink:0;
  height:100%;
  overflow-y:auto;
  background:white;
  border-left:1px solid var(--q-border);
  padding:24px 20px;
  display:flex; flex-direction:column; gap:16px;
}

.firma-panel-label {
  font-size:14px; font-weight:700; color:var(--q-text-primary);
}
.firma-panel-hint {
  font-size:12px; color:var(--q-text-secondary); margin-top:2px;
}
.firma-panel-divider {
  border:none; border-top:1px solid var(--q-border); margin:4px 0;
}
.firma-panel-signer {
  display:flex; align-items:center; gap:8px;
  padding:12px 14px;
  background:var(--q-bg-body);
  border-radius:8px;
  border:1px solid var(--q-border);
}
.firma-panel-signer .ps-avatar {
  width:36px; height:36px; border-radius:50%;
  background:var(--q-morado); color:white;
  display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:600; flex-shrink:0;
}
.firma-panel-signer .ps-info { display:flex; flex-direction:column; gap:4px; }
.firma-panel-signer .ps-name { font-size:13px; font-weight:600; color:var(--q-text-primary); }
.firma-panel-signer .ps-role { font-size:11px; color:var(--q-text-secondary); }
.firma-panel-signer .ps-date { font-size:11px; color:var(--q-text-disabled); margin-top:2px; }

.firma-aplicada-banner {
  display:flex; align-items:center; gap:8px;
  background:var(--q-estado-verde-bg); border:1px solid var(--q-estado-verde-bg);
  border-radius:8px; padding:10px 14px;
  font-size:12px; font-weight:600; color:var(--q-estado-verde);
}
.firma-aplicada-banner svg { flex-shrink:0; }


/* ── 51. PERMISOS MATRIX ─────────────────────────── */
.permisos-matrix-wrap {
  overflow-x: visible;
  border: 1px solid var(--q-border);
  border-radius:12px;
}
.permisos-table {
  width: 100%;
  border-collapse: collapse;
  font-size:13px;
}
.permisos-table thead tr {
  background: var(--q-bg-body);
}
.permisos-th-label {
  text-align: left;
  padding: 14px 16px;
  font-weight:600;
  color: var(--q-text-secondary);
  font-size:11px;
  text-transform: uppercase;
  letter-spacing: .4px;
  min-width: 200px;
  border-bottom: 1px solid var(--q-border);
}
.permisos-th-rol {
  text-align: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--q-border);
  border-left: 1px solid var(--q-border);
  min-width: 130px;
}
.permisos-rol-header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap:8px;
  flex-wrap: wrap;
}
.permisos-rol-desc {
  font-size:11px;
  color: var(--q-text-secondary);
  margin-top: 4px;
  line-height: 1.3;
}
.permisos-section-row td {
  background: var(--q-morado-soft);
  color: var(--q-morado);
  font-size:11px;
  font-weight:600;
  text-transform: uppercase;
  letter-spacing: .5px;
  padding: 7px 16px;
  border-top: 1px solid var(--q-border);
}
.permisos-td-label {
  padding: 10px 16px;
  color: var(--q-text-primary);
  font-size:13px;
  border-bottom: 1px solid var(--q-border);
}
.permisos-table tbody tr:last-child .permisos-td-label,
.permisos-table tbody tr:last-child .permisos-td-check { border-bottom: none; }
.permisos-td-check {
  text-align: center;
  border-bottom: 1px solid var(--q-border);
  border-left: 1px solid var(--q-border);
  padding: 6px;
}
.permisos-table tbody tr:hover .permisos-td-label,
.permisos-table tbody tr:hover .permisos-td-check {
  background: var(--q-bg-body);
}
.perm-check {
  width: 26px; height: 26px;
  border-radius:8px;
  border: 1.5px solid var(--q-border);
  background: white;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: background .15s, border-color .15s;
  color: white;
}
.perm-check.active {
  background: var(--q-teal);
  border-color: var(--q-teal-text);
}
.perm-check.readonly {
  cursor: default;
  opacity: .85;
}
.perm-check:not(.readonly):not(.active):hover {
  border-color: var(--q-teal-text);
  background: var(--q-teal-soft);
}

/* ── 52. CAMPOS PERSONALIZADOS ───────────────────── */
.campos-section-header {
  font-size:11px;
  font-weight:600;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: var(--q-morado);
  padding: 14px 0 6px;
  border-bottom: 1px solid var(--q-border);
  margin-bottom: 8px;
}
.campo-card {
  display: flex;
  align-items: center;
  gap:12px;
  padding: 12px 4px;
  border-bottom: 1px solid var(--q-border);
  transition: background .15s;
  border-radius:8px;
}
.campo-card:last-child { border-bottom: none; }
.campo-card:hover { background: var(--q-bg-body); padding: 12px 8px; }
.campo-card-tipo {
  width: 36px; height: 36px;
  border-radius:8px;
  background: var(--q-morado-soft);
  color: var(--q-morado);
  display: flex; align-items: center; justify-content: center;
  font-size:14px; font-weight:700;
  flex-shrink: 0;
}
.campo-card-info { flex: 1; min-width: 0; }
.campo-card-nombre {
  font-size:13px;
  font-weight: 600;
  color: var(--q-text-primary);
  display: flex; align-items: center; gap:8px;
  flex-wrap: wrap;
}
.campo-card-meta {
  font-size:12px;
  color: var(--q-text-secondary);
  margin-top: 2px;
}
.opcion-item {
  display: flex;
  align-items: center;
  gap:8px;
  margin-bottom: 6px;
}
.opcion-item .opcion-input { flex: 1; }


/* ── 53. REPORTES Y ANALÍTICOS ───────────────────── */
.reporte-kpis {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap:12px;
  margin-bottom: 20px;
}
@media (max-width: 1100px) { .reporte-kpis { grid-template-columns: repeat(3,1fr); } }
@media (max-width: 700px)  { .reporte-kpis { grid-template-columns: repeat(2,1fr); } }

.reporte-kpi {
  background: white;
  border: 1px solid var(--q-border);
  border-radius:12px;
  padding: 18px 16px;
  border-top: 3px solid var(--q-border);
  transition: box-shadow .2s;
}
.reporte-kpi:hover { box-shadow: var(--q-shadow-hover); }
.reporte-kpi-verde { border-top-color: var(--q-estado-verde); }
.reporte-kpi-rojo  { border-top-color: var(--q-estado-rojo); }
.reporte-kpi-ambar { border-top-color: var(--q-estado-ambar); }
.reporte-kpi-morado{ border-top-color: var(--q-morado); }
.reporte-kpi-teal  { border-top-color: var(--q-teal-text); }

.reporte-kpi-val {
  font-size:40px;
  font-weight:800;
  color: var(--q-text-primary);
  line-height: 1;
  margin-bottom: 6px;
}
.reporte-kpi-label {
  font-size:13px;
  font-weight: 600;
  color: var(--q-text-primary);
}
.reporte-kpi-sub {
  font-size:11px;
  color: var(--q-text-secondary);
  margin-top: 3px;
}

.reporte-charts-row {
  display: flex;
  gap:16px;
  flex-wrap: wrap;
}
.reporte-chart-card {
  background: white;
  border: 1px solid var(--q-border);
  border-radius:12px;
  padding: 20px 20px 16px;
  flex: 1;
  min-width: 260px;
}
.reporte-chart-title {
  font-size:13px;
  font-weight:600;
  color: var(--q-text-primary);
  margin-bottom: 4px;
}

/* Donut chart */
.reporte-donut-wrap {
  display: flex;
  align-items: center;
  gap:20px;
  margin-top: 12px;
  flex-wrap: wrap;
}
.reporte-donut-legend { display: flex; flex-direction: column; gap:8px; }
.reporte-legend-item {
  display: flex; align-items: center; gap:8px;
  font-size:12px; color: var(--q-text-secondary);
}
.reporte-legend-item span {
  display: inline-block;
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}
.reporte-legend-item strong { color: var(--q-text-primary); margin-left: 4px; }

/* Bar chart */
.reporte-bar-chart {
  display: flex;
  align-items: flex-end;
  gap:8px;
  margin-top: 12px;
  height: 90px;
}
.reporte-bar-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap:4px;
}
.reporte-bar-stack {
  display: flex;
  flex-direction: column-reverse;
  width: 100%;
  max-width: 32px;
  border-radius:8px;
  overflow: hidden;
}
.reporte-bar-label {
  font-size:11px;
  color: var(--q-text-secondary);
  font-weight: 600;
}
.reporte-bar-legend {
  display: flex;
  gap:16px;
  margin-top: 10px;
  flex-wrap: wrap;
}
.reporte-bar-legend span {
  display: flex;
  align-items: center;
  gap:4px;
  font-size:11px;
  color: var(--q-text-secondary);
}
.reporte-bar-legend i {
  display: inline-block;
  width: 10px; height: 10px;
  border-radius:8px;
  font-style: normal;
}


/* ── 54. DASHBOARD LIMPIO ────────────────────────── */
.db-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap:12px;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--q-border);
}
.db-title {
  font-size:18px;
  font-weight:700;
  color: var(--q-text-primary);
  letter-spacing: -.2px;
}
.db-subtitle {
  font-size:13px;
  color: var(--q-text-secondary);
  margin-top: 3px;
}

/* Action buttons (vertical list style) */
.db-action-btn {
  display: flex;
  align-items: center;
  gap:8px;
  width: 100%;
  padding: 9px 10px;
  border-radius:8px;
  font-size:13px;
  font-weight: 500;
  color: var(--q-text-primary);
  text-align: left;
  transition: background .15s;
  cursor: pointer;
}
.db-action-btn:hover { background: var(--q-bg-body); }
.db-action-icon {
  width: 30px; height: 30px;
  border-radius:8px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.db-action-badge {
  margin-left: auto;
  background: var(--q-morado);
  color: white;
  font-size:11px;
  font-weight:600;
  padding: 1px 7px;
  border-radius:8px;
  min-width: 20px;
  text-align: center;
}


/* ── 55. RECOVERY CHANNEL SELECTOR ──────────────── */
.recov-channel-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap:8px;
  padding: 16px 12px;
  border-radius:12px;
  border: 2px solid var(--q-border);
  background: white;
  cursor: pointer;
  transition: border-color .18s, background .18s, box-shadow .18s;
  font-family: 'Montserrat', sans-serif;
  color: var(--q-text-secondary);
}
.recov-channel-btn:hover {
  border-color: var(--q-morado);
  background: var(--q-morado-soft);
  color: var(--q-morado);
}
.recov-channel-btn.selected {
  border-color: var(--q-morado);
  background: var(--q-morado-soft);
  color: var(--q-morado);
  box-shadow: 0 0 0 3px rgba(144,40,140,.12);
}
.recov-channel-btn span:nth-child(2) {
  font-size:13px;
  font-weight:600;
  color: inherit;
}
.recov-channel-hint {
  font-size:11px;
  color: var(--q-text-disabled);
  font-weight: 400 !important;
}
.recov-channel-btn.selected .recov-channel-hint {
  color: var(--q-morado);
  opacity: .7;
}

/* ═══════════════════════════════════════════════════
   NUEVA SOLICITUD — rediseño (campos y checklist)
   ═══════════════════════════════════════════════════ */
.conv-cols { display:flex; gap:24px; flex-wrap:wrap; align-items:flex-start; }
.conv-col-left  { flex:0 0 240px; }
.conv-col-right { flex:1; min-width:280px; }

.input-clear {
  position:absolute; right:38px; top:50%; transform:translateY(-50%);
  width:20px; height:20px; border-radius:50%; border:0; cursor:pointer;
  background:var(--q-border); color:var(--q-text-secondary);
  display:flex; align-items:center; justify-content:center; padding:0;
}
.input-clear:hover { background:var(--q-border); color:var(--q-text-primary); }

.wiz-found-row { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:12px; }
.nueva-busqueda {
  display:inline-flex; align-items:center; gap:8px; cursor:pointer;
  font-size:12px; font-weight:600; color:var(--q-morado); background:none; border:0; padding:0;
  font-family:'Montserrat',sans-serif;
}
.nueva-busqueda:hover { text-decoration:underline; }

.chip-tiny { font-size:11px; font-weight:600; padding:2px 8px; border-radius:var(--q-radius-chip); letter-spacing:.3px; }
.chip-pm   { background:rgba(144,40,140,.1);  color:var(--q-morado); }
.chip-pf   { background:rgba(0,150,174,.12);   color:var(--q-teal-text); }
.chip-gob  { background:rgba(180,83,9,.12);   color:var(--q-estado-ambar); }

.doc-list { display:grid; grid-template-columns:1fr; grid-auto-rows:1fr; gap:8px; max-width:640px; }
.doc-item {
  display:flex; align-items:flex-start; gap:12px;
  padding:14px 16px; border:1.5px solid var(--q-border); border-radius:8px;
  background:var(--q-bg-card); transition:border-color .15s;
}
.doc-item.done { border-color:rgba(30,111,60,.4); background:rgba(30,111,60,.03); }
.doc-item-icon {
  width:34px; height:34px; border-radius:8px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background:var(--q-morado-soft); color:var(--q-morado);
}
.doc-item.done .doc-item-icon { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.doc-item-body { flex:1; min-width:0; }
.doc-item-name { font-size:13px; font-weight:600; color:var(--q-text-primary); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.doc-item-help { font-size:11px; color:var(--q-text-secondary); margin-top:3px; line-height:1.5; }
.doc-item-file { font-size:11px; color:var(--q-estado-verde); font-weight:600; margin-top:5px; display:flex; align-items:center; gap:4px; }
.doc-item-action { flex-shrink:0; align-self:center; }

.mini-dropzone {
  display:flex; align-items:center; gap:12px; max-width:640px; margin-top:12px;
  padding:12px 16px; border:1.5px dashed var(--q-border); border-radius:8px;
  color:var(--q-text-secondary); font-size:12px;
}
.mini-dropzone svg { color:var(--q-text-disabled); }

.ext-panel {
  border-left:4px solid var(--q-morado); background:var(--q-bg-hover);
  border-radius:0 8px 8px 0; padding:16px 20px; margin-bottom:20px; max-width:720px;
}
.ext-panel-title { font-size:13px; font-weight:600; color:var(--q-morado); display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.ext-scenarios { display:flex; flex-direction:column; gap:8px; }
.ext-scenario { font-size:12px; color:var(--q-text-primary); line-height:1.5; display:flex; gap:8px; }
.ext-scenario .dot { color:var(--q-morado); font-weight:700; flex-shrink:0; }

.field-disabled { opacity:.55; }
.field-disabled .form-control { pointer-events:none; }

.chk-row { display:flex; align-items:center; gap:8px; margin-top:10px; font-size:12px; color:var(--q-text-secondary); cursor:pointer; }
.chk-row input { accent-color:var(--q-morado); width:16px; height:16px; }

.agente-tbl-head { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:12px; flex-wrap:wrap; gap:12px; }

/* ═══════════════════════════════════════════════════
   MODIFICAR SOLICITUDES — tabs, progreso, docs observados
   ═══════════════════════════════════════════════════ */
.mod-tabs { display:flex; gap:24px; border-bottom:1px solid var(--q-border); margin-bottom:20px; }
.mod-tab {
  display:flex; align-items:center; gap:8px; cursor:pointer; background:none; border:0;
  font-family:'Montserrat',sans-serif; font-size:14px; font-weight:600; color:var(--q-text-secondary);
  padding:0 2px 12px; margin-bottom:-1px; border-bottom:2px solid transparent; transition:color .15s;
}
.mod-tab:hover { color:var(--q-text-primary); }
.mod-tab.active { color:var(--q-morado); border-bottom-color:var(--q-morado); }
.mod-tab-badge {
  min-width:20px; height:20px; padding:0 6px; border-radius:999px;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:600; color:var(--q-bg-card);
}
.mod-tab-badge.morado { background:var(--q-morado); }
.mod-tab-badge.rojo   { background:var(--q-estado-rojo); }
.mod-tab-badge.gris   { background:var(--q-text-disabled); }
.mod-tab-badge.teal   { background:var(--q-teal); }

.mini-progress-cell { display:flex; align-items:center; gap:8px; min-width:88px; }
.mini-progress { flex:1; height:6px; border-radius:8px; background:var(--q-border); overflow:hidden; }
.mini-progress-fill { height:100%; border-radius:8px; background:var(--q-morado); }
.mini-progress-pct { font-size:11px; font-weight:600; color:var(--q-text-secondary); white-space:nowrap; }

.motivo-cell { display:inline-flex; align-items:center; gap:8px; max-width:220px; }
.motivo-cell .motivo-text { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.motivo-cell .motivo-info { color:var(--q-teal-text); flex-shrink:0; cursor:help; }

.rechazo-panel {
  border-left:4px solid var(--q-estado-rojo); background:var(--q-estado-rojo-bg);
  border-radius:0 8px 8px 0; padding:18px 22px; margin-bottom:22px;
}
.rechazo-panel-title { font-size:14px; font-weight:700; color:var(--q-estado-rojo-text); display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.rechazo-panel-meta { font-size:12px; color:var(--q-text-secondary); margin-bottom:12px; }
.rechazo-panel-obs { font-size:13px; color:var(--q-text-primary); line-height:1.6; background:var(--q-bg-card); border:1px solid rgba(192,57,43,.18); border-radius:8px; padding:12px 14px; }

.doc-item.observed { border-color:rgba(192,57,43,.45); background:rgba(192,57,43,.03); }
.doc-item.observed .doc-item-icon { background:rgba(192,57,43,.1); color:var(--q-estado-rojo); }
.doc-observado-badge { font-size:11px; font-weight:600; padding:2px 7px; border-radius:8px; background:rgba(192,57,43,.12); color:var(--q-estado-rojo-text); letter-spacing:.3px; }
.doc-observado-comment { font-size:11px; color:var(--q-estado-rojo-text); margin-top:6px; line-height:1.5; display:flex; gap:8px; }


/* ── Bloque 3: buscador global, resaltado de fila y sub-tabla de carga masiva ── */
.mod-search { position: relative; margin-bottom: 14px; }
.mod-search-panel {
  position: absolute; z-index: 40; top: calc(100% + 4px); left: 0; width: 520px; max-width: 100%;
  background: var(--q-bg-card); border: 1px solid var(--q-border); border-radius:8px;
  box-shadow: 0 12px 28px rgba(28,28,46,.14); overflow: hidden;
}
.mod-search-hit {
  display: grid; grid-template-columns: 190px 1fr auto; gap:8px; align-items: center;
  width: 100%; padding: 10px 14px; background: none; border: none; border-bottom: 1px solid var(--q-border);
  text-align: left; cursor: pointer; font-size:13px;
}
.mod-search-hit:last-child { border-bottom: none; }
.mod-search-hit:hover { background: rgba(144,40,140,.06); }
.mod-search-folio { font-weight: 700; color: var(--q-text-primary); }
.mod-search-meta  { color: var(--q-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mod-search-dest  {
  font-size:11px; font-weight:600; text-transform: uppercase; letter-spacing: .4px;
  color: var(--q-morado); background: rgba(144,40,140,.09); padding: 3px 8px; border-radius:999px; white-space: nowrap;
}
.mod-search-empty { padding: 14px; font-size:13px; color: var(--q-text-secondary); }
.q-table tr.row-highlight > td { background: rgba(180,83,9,.14); }
.cm-toggle {
  width: 22px; height: 22px; border-radius:8px; border: 1px solid var(--q-border);
  background: var(--q-bg-card); color: var(--q-morado); font-size:14px; line-height: 1; cursor: pointer;
}
.cm-toggle.open { background: var(--q-morado); color: var(--q-bg-card); border-color: var(--q-morado); }
.cm-subrow > td { background: var(--q-bg-hover); }
.cm-sub-title { font-size:11px; font-weight:600; text-transform: uppercase; letter-spacing: .5px; color: var(--q-text-secondary); margin: 4px 0 8px; }
.cm-sub-table { width: 100%; border-collapse: collapse; font-size:13px; margin-bottom: 6px; }
.cm-sub-table th { text-align: left; font-size:11px; text-transform: uppercase; letter-spacing: .4px; color: var(--q-text-secondary); padding: 4px 10px; }
.cm-sub-table td { padding: 6px 10px; border-top: 1px solid var(--q-border); }


/* ── 50. ACCIONES DE FILA · icono principal + menú de 3 puntos ── */
.row-actions { display:flex; align-items:center; gap:6px; justify-content:flex-end; position:relative; }
.row-action-spacer { width:32px; height:32px; flex:0 0 32px; display:inline-block; }
.q-table td:has(> .row-actions) { white-space:nowrap; text-align:right; width:1%; vertical-align:middle; }

/* Tooltip de las acciones de fila */
.row-action-icon, .row-action-more, .icon-btn { position:relative; }
.row-action-icon[aria-label]::after,
.row-action-more[aria-label]::after,
.icon-btn[aria-label]::after {
  content:attr(aria-label);
  position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%);
  background:#1C1C2E; color:#fff; font-size:11.5px; font-weight:600; line-height:1.3;
  padding:5px 9px; border-radius:6px; white-space:nowrap; pointer-events:none;
  opacity:0; transition:opacity .12s .1s; z-index:200;
}
.row-action-icon:hover::after,
.row-action-more:hover::after,
.icon-btn:hover::after,
.row-action-icon:focus-visible::after,
.row-action-more:focus-visible::after,
.icon-btn:focus-visible::after { opacity:1; }
.q-table tbody tr:first-child .row-action-icon[aria-label]::after,
.q-table tbody tr:first-child .row-action-more[aria-label]::after {
  bottom:auto; top:calc(100% + 6px);
}
.row-action-menu { left:auto; right:0; }
.row-action-icon, .row-action-more {
  width:32px; height:32px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center;
  color:var(--q-morado); background:none; border:0; cursor:pointer; transition:background .14s, color .14s;
}
.row-action-more { color:var(--q-text-muted); background:none; }
.row-action-icon { background:var(--q-morado-soft); }
.row-action-icon:hover { background:var(--q-morado-soft); filter:brightness(.96); }
.row-action-more:hover { background:var(--q-bg-body); color:var(--q-morado); }
.row-action-menu {
  position:fixed; z-index:400; min-width:190px;
  background:var(--q-bg-card); border:1px solid var(--q-border); border-radius:8px;
  box-shadow:0 12px 32px rgba(28,28,46,.14); padding:5px; display:flex; flex-direction:column; gap:4px;
}
.row-action-item {
  display:flex; align-items:center; gap:8px; width:100%; text-align:left;
  padding:8px 10px; min-height:32px; border-radius:8px; font-size:13px; font-weight:600;
  color:var(--q-text-primary); background:none; border:0; cursor:pointer; white-space:nowrap;
}
.row-action-item:hover { background:var(--q-bg-hover); }
.row-action-item.danger { color:var(--q-estado-rojo-text); }
.row-action-item.danger:hover { background:var(--q-estado-rojo-bg); }
.row-action-item svg { flex-shrink:0; opacity:.75; }

/* ── 51. FILTRO DE RANGO DE FECHAS ── */
.dr-wrap { position:relative; flex:0 1 190px; }
.dr-btn {
  display:flex; align-items:center; gap:8px; width:100%; height:36px;
  padding:0 12px; border:1px solid var(--q-border); border-radius:8px; background:var(--q-bg-card);
  font-size:13px; font-weight:600; color:var(--q-text-secondary); cursor:pointer;
  transition:border-color .15s, color .15s;
}
.dr-btn:hover { border-color:var(--q-focus); }
.dr-btn.on { border-color:var(--q-morado); color:var(--q-morado); box-shadow:0 0 0 3px rgba(144,40,140,.08); }
.dr-btn .dr-chev { margin-left:auto; transition:transform .18s; }
.dr-btn.on .dr-chev { transform:rotate(180deg); }
.dr-pop {
  position:absolute; top:42px; left:0; z-index:150; width:304px;
  background:var(--q-bg-card); border:1px solid var(--q-border); border-radius:14px;
  box-shadow:0 24px 64px rgba(28,28,46,.20); padding:16px;
}
.dr-fields { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:14px; }
.dr-label { display:block; font-size:12px; font-weight:600; color:var(--q-text-secondary); margin-bottom:6px; }
.dr-input { width:100%; height:42px; border:1px solid #E8E6EF; border-radius:8px; background:#FAFAFC; padding:0 14px; font-size:13px; color:var(--q-text-primary); outline:none; transition:border-color .15s, box-shadow .15s; }
.dr-input:focus { border-color:var(--q-focus); box-shadow:0 0 0 3px rgba(144,40,140,.1); }
.dr-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.dr-nav-btn { width:32px; height:32px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; color:var(--q-text-secondary); }
.dr-nav-btn:hover { background:var(--q-bg-body); color:var(--q-morado); }
.dr-month { font-size:13px; font-weight:600; color:var(--q-text-primary); }
.dr-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.dr-dow { font-size:11px; font-weight:600; color:var(--q-text-muted); text-align:center; padding:4px 0; }
.dr-day { height:32px; border-radius:8px; font-size:12px; font-weight:600; color:var(--q-text-primary); background:none; border:0; cursor:pointer; }
.dr-day:hover { background:var(--q-bg-hover); color:var(--q-morado); }
.dr-day.sel { background:var(--q-morado); color:var(--q-bg-card); }
.dr-day.rng { background:var(--q-bg-hover); color:var(--q-morado); }
.dr-day.empty { visibility:hidden; }
.dr-foot { display:flex; align-items:center; gap:8px; margin-top:14px; padding-top:12px; border-top:1px solid var(--q-border); }
.dr-hint { flex:1; font-size:11px; color:var(--q-text-muted); }
.dr-clear { height:32px; padding:0 8px; font-size:12px; font-weight:600; color:var(--q-text-secondary); background:none; border:0; cursor:pointer; }
.dr-clear:hover { color:var(--q-morado); }
.dr-apply { height:32px; padding:0 16px; border-radius:8px; background:var(--q-morado); color:var(--q-bg-card); font-size:12px; font-weight:600; border:0; cursor:pointer; }
.dr-apply:hover { background:var(--q-morado-hover); }


/* ── 52. FOCUS VISIBLE GLOBAL ── */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
[onclick]:focus-visible,
.clickable:focus-visible,
.icon-btn:focus-visible,
.chip:focus-visible,
.tab-btn:focus-visible,
.tbl-action:focus-visible,
.tbl-link:focus-visible,
.row-action-item:focus-visible,
.page-btn:focus-visible,
.carousel-dot:focus-visible,
.dr-btn:focus-visible,
.dr-day:focus-visible,
.dr-apply:focus-visible,
.dr-clear:focus-visible,
.sb-item:focus-visible,
.sb-logout:focus-visible,
.notif-btn:focus-visible,
.sb-hamburger:focus-visible,
.rdrawer-close:focus-visible {
  outline:2px solid var(--q-morado);
  outline-offset:2px;
}
.form-control:focus-visible,
.dr-input:focus-visible,
.otp-input:focus-visible { outline:2px solid var(--q-morado); outline-offset:2px; }

/* ── 53. TRUNCADO CON TOOLTIP ── */
.cell-trunc,
.truncate {
  display:block; max-width:220px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.q-table td.cell-trunc { min-width:0; }
.q-table th.col-critica, .q-table td.col-critica { min-width:0; }
.q-table td.col-folio, .q-table th.col-folio { min-width:0; white-space:normal; }

/* ── 54. PLACEHOLDERS ── */
input::placeholder,
textarea::placeholder,
.form-control::placeholder,
.dr-input::placeholder {
  color:var(--q-placeholder);
  font-weight:400;
  opacity:1;
}


/* ── Franja compacta de confirmación de póliza (buscador colapsado) ── */
.wiz-poliza-strip {
  display:flex; align-items:center; gap:26px; flex-wrap:wrap;
  padding:0 0 16px; margin:0 0 18px;
  border-bottom:1px solid var(--q-border);
}
.wps-check {
  width:24px; height:24px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background:#D4EDDA; color:#1E6F3C;
}
.wps-item { display:flex; flex-direction:column; gap:3px; min-width:0; flex-shrink:0; }
.wps-item.wps-grow { flex:1 1 180px; min-width:150px; }
.wps-label {
  font-size:10.5px; font-weight:700; letter-spacing:.6px;
  text-transform:uppercase; color:var(--q-text-secondary);
}
.wps-value { font-size:13.5px; font-weight:700; color:var(--q-text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.wps-change {
  margin-left:auto; background:none; border:0; padding:0;
  font-family:'Montserrat',sans-serif; font-size:13px; font-weight:600; cursor:pointer;
}

/* Pasos futuros deshabilitados en el stepper */
.wiz-progress-step.disabled { opacity:.5; cursor:not-allowed; }
.wiz-progress-step.disabled span:last-child { color:#6B7280; }

/* Chips y tablas: permitir salto de línea para evitar desbordes */
.q-table .chip { white-space: nowrap; }

/* ── 60. TABS TIPO CARPETA (usadas en Reportes) ───────── */
.tabs-folder {
  display:flex; align-items:flex-end; gap:2px;
  background:#FFFFFF; border:1px solid var(--q-border);
  border-radius:14px 14px 0 0; border-bottom:none;
  padding:8px 8px 0; margin-bottom:0; flex-wrap:wrap;
}
.tabs-folder-btn {
  display:inline-flex; align-items:center; gap:8px; white-space:nowrap;
  background:transparent; border:1px solid transparent; border-bottom:none;
  border-radius:10px 10px 0 0; padding:11px 16px 12px;
  font-family:inherit; font-size:13px; font-weight:500; color:var(--q-text-secondary);
  cursor:pointer; transition:background .15s, color .15s;
}
.tabs-folder-btn:hover { color:var(--q-text-primary); background:var(--q-bg-body); }
.tabs-folder-btn.active {
  color:var(--q-morado); font-weight:700;
  background:#FFFFFF; border-color:var(--q-border);
  box-shadow:0 -2px 0 0 var(--q-morado) inset;
}
.tabs-folder-btn svg { flex-shrink:0; }
.tabs-folder-count {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:22px; height:20px; padding:0 6px; border-radius:10px;
  background:var(--q-bg-body); color:var(--q-text-secondary);
  font-size:11px; font-weight:700; font-variant-numeric:tabular-nums;
}
.tabs-folder-btn.active .tabs-folder-count { background:#F3E8F6; color:var(--q-morado); }
.tabs-folder-panel {
  background:#FFFFFF; border:1px solid var(--q-border); border-top:none;
  border-radius:0 0 14px 14px; padding:20px;
}

/* Reportes: misma línea visual que el resto del sistema */
.reporte-kpis { grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:14px; }
.reporte-kpi {
  position:relative; overflow:hidden;
  border-radius:14px; border-top-width:1px; padding:16px 18px 14px;
}
.reporte-kpi::before {
  content:''; position:absolute; top:0; left:0; right:0; height:4px;
  background:var(--q-morado); border-radius:14px 14px 0 0;
}
.reporte-kpi-verde::before { background:var(--q-estado-verde); }
.reporte-kpi-rojo::before  { background:var(--q-estado-rojo); }
.reporte-kpi-ambar::before { background:var(--q-estado-ambar); }
.reporte-kpi-morado::before{ background:var(--q-morado); }
.reporte-kpi-teal::before  { background:var(--q-teal); }
.reporte-kpi-val { font-size:36px; letter-spacing:-1.4px; font-variant-numeric:tabular-nums; margin-bottom:2px; color:var(--q-morado); }
.reporte-kpi-verde .reporte-kpi-val { color:var(--q-estado-verde); }
.reporte-kpi-rojo .reporte-kpi-val  { color:var(--q-estado-rojo); }
.reporte-kpi-ambar .reporte-kpi-val { color:var(--q-estado-ambar); }
.reporte-kpi-label { font-size:13px; font-weight:500; color:#3F3F51; }
.reporte-kpi-sub { font-size:11px; font-weight:600; color:var(--q-text-secondary); margin-top:5px; }
.reporte-chart-card { border-radius:14px; padding:20px 22px; }
.reporte-chart-card:hover { box-shadow:var(--q-shadow-hover); }
.reporte-chart-title {
  font-size:14px; font-weight:700; color:var(--q-text-primary);
  padding-bottom:12px; margin-bottom:16px; border-bottom:1px solid var(--q-border);
}
.reporte-content .q-card { box-shadow:none; }

/* Reportes: ninguna tabla se sale de su tarjeta */
.reporte-chart-card { overflow-x:auto; }
.reporte-chart-card > .q-table { min-width:0; }

/* Reportes: tablas compactas para que quepan sin scroll en anchos medios */
.reporte-content .q-table th, .reporte-content .q-table td { padding-left:10px; padding-right:10px; }
.reporte-content .q-table th { white-space:normal; line-height:1.25; }
.reporte-content .q-table td { font-size:12px; }

/* ── 61. Ajustes de densidad: menú lateral sin scroll ── */
.app-sidebar { padding:14px 10px; }
.sb-menu { overflow:visible; gap:2px; }
.sb-user { padding:0 6px 10px; }
.sb-avatar { width:34px; height:34px; font-size:12px; }
.sb-menu li a, .sb-menu .sb-item {
  height:clamp(30px, 4.2vh, 40px); padding:0 14px; font-size:12.5px; gap:10px;
}
.sb-logout { height:clamp(30px, 4.2vh, 40px); }
:root { --sidebar-w: clamp(236px, 18vw, 262px); }

/* KPIs del tablero: filas completas de 4 */
.kpi-row-4 { grid-template-columns:repeat(4, minmax(0,1fr)); }
@media (max-width:1240px) { .kpi-row-4 { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:620px)  { .kpi-row-4 { grid-template-columns:1fr; } }

/* Tablas que deben caber siempre en el ancho disponible */
.table-wrapper.table-fit { overflow-x:visible; }
.table-fit .q-table th, .table-fit .q-table td { white-space:normal; overflow-wrap:anywhere; word-break:normal; }
.table-fit .q-table .chip,
.table-fit .q-table td:nth-child(3),
.table-fit .q-table td:nth-child(4),
.table-fit .q-table th:nth-child(3),
.table-fit .q-table th:nth-child(4) { white-space:nowrap; overflow-wrap:normal; }
.table-fit .q-table td .cell-trunc { max-width:100%; }

.table-fit .q-table .chip { font-size:11.5px; padding:4px 9px; }
.table-fit .q-table td:nth-child(3), .table-fit .q-table td:nth-child(4) { padding-left:8px; padding-right:8px; }

/* ── 62. Tablas: caben sin scroll + iconos de acción alineados ── */
.app-main { padding:24px 24px 44px; }
.table-wrapper, .table-wrapper.table-fit { overflow-x:visible; }
.q-table { width:100%; }
.q-table th, .q-table td { padding-left:12px; padding-right:12px; }
.q-table th { white-space:normal; overflow-wrap:anywhere; }
.q-table td { overflow-wrap:anywhere; }
.q-table td.nw, .q-table th.nw, .q-table .chip, .q-table .fecha { white-space:nowrap; overflow-wrap:normal; }
.q-card:not([style*="padding"]) > .table-wrapper > .q-table > thead > tr > th:first-child,
.q-card:not([style*="padding"]) > .table-wrapper > .q-table > tbody > tr > td:first-child { padding-left:20px; }
.q-card:not([style*="padding"]) > .table-wrapper > .q-table > thead > tr > th:last-child,
.q-card:not([style*="padding"]) > .table-wrapper > .q-table > tbody > tr > td:last-child { padding-right:20px; }

/* Columna de acciones: mismo ancho, misma alineación en todas las tablas */
.q-table th:last-child { text-align:right; }
.q-table td:has(> .row-actions),
.q-table td:has(> .icon-btn) { text-align:right; vertical-align:middle; white-space:nowrap; width:1%; }
.row-actions { display:flex; align-items:center; justify-content:flex-end; gap:6px; }
.q-table .icon-btn, .q-table .row-action-icon, .q-table .row-action-more { width:30px; height:30px; flex:0 0 30px; }
.q-table .row-action-spacer { width:30px; height:30px; flex:0 0 30px; }
.q-table td > .icon-btn { display:inline-flex; }

/* Compresión adaptativa por contenedor: la tabla se ajusta al ancho disponible sin scroll */
.table-wrapper { container-type:inline-size; }
@container (max-width: 880px) {
  .q-table { font-size:12.5px; }
  .q-table th { font-size:10.5px; letter-spacing:.3px; }
  .q-table th, .q-table td { padding-left:9px; padding-right:9px; }
  .q-card:not([style*="padding"]) > .table-wrapper > .q-table > thead > tr > th:first-child,
  .q-card:not([style*="padding"]) > .table-wrapper > .q-table > tbody > tr > td:first-child { padding-left:14px; }
  .q-card:not([style*="padding"]) > .table-wrapper > .q-table > thead > tr > th:last-child,
  .q-card:not([style*="padding"]) > .table-wrapper > .q-table > tbody > tr > td:last-child { padding-right:14px; }
}
@container (max-width: 700px) {
  .q-table { font-size:11.5px; }
  .q-table th { font-size:10px; }
  .q-table th, .q-table td { padding-left:7px; padding-right:7px; padding-top:9px; padding-bottom:9px; }
  .q-table td.nw, .q-table th.nw { white-space:normal; overflow-wrap:anywhere; }
  .q-table .chip { font-size:10.5px; padding:3px 7px; }
  .q-table .icon-btn, .q-table .row-action-icon, .q-table .row-action-more,
  .q-table .row-action-spacer { width:26px; height:26px; flex:0 0 26px; }
}

/* Contenedor muy angosto: cada fila se vuelve ficha (nunca scroll horizontal) */
@container (max-width: 460px) {
  .q-table, .q-table tbody, .q-table tbody tr, .q-table tbody td { display:block; width:auto; }
  .q-table thead { display:none; }
  .q-table tbody tr {
    border:1px solid var(--q-border); border-radius:12px;
    margin:0 0 10px; padding:6px 2px; background:var(--q-bg-card);
  }
  .q-table tbody tr:hover { background:var(--q-bg-card); }
  .q-table tbody td {
    display:flex; align-items:flex-start; justify-content:space-between; gap:14px;
    padding:7px 14px; border:0; text-align:right; width:auto !important;
  }
  .q-table tbody td::before {
    content:attr(data-label); flex:0 0 auto; text-align:left;
    font-size:10px; font-weight:700; letter-spacing:.5px; text-transform:uppercase;
    color:var(--q-text-secondary); padding-top:2px;
  }
  .q-table tbody td:not([data-label]) { justify-content:flex-end; }
  .q-table tbody td > * { text-align:left; }
  .q-table tbody td:has(> .row-actions) { justify-content:flex-end; }
  .q-table tbody td[colspan] { display:block; text-align:center; }
  .q-table tbody td[colspan]::before { content:none; }
}

/* Columna de acciones en tablas de ancho fijo: espacio real para los iconos */
.table-fit .q-table td:last-child, .table-fit .q-table th:last-child { width:90px; }
.table-fit .q-table td:has(> .row-actions) { width:90px; }

/* Tarjetas de gráfica: mismo lenguaje visual que las tarjetas de KPI */
.reporte-chart-card { position:relative; overflow:hidden; }
.reporte-chart-card::before {
  content:''; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--q-morado); border-radius:12px 12px 0 0;
}
.reporte-chart-card .chip { font-size:11px; padding:3px 9px; }

/* Switch de bandeja en Solicitudes pendientes */
.bandeja-switch { display:flex; gap:8px; margin:0 0 16px; flex-wrap:wrap; }
.bandeja-btn {
  display:flex; align-items:center; gap:8px;
  height:36px; padding:0 16px; border-radius:999px;
  border:1px solid var(--q-border); background:var(--q-bg-card);
  font-size:12.5px; font-weight:600; color:var(--q-text-secondary); cursor:pointer;
  transition:background .15s, color .15s, border-color .15s;
}
.bandeja-btn:hover { border-color:var(--q-morado); color:var(--q-morado); }
.bandeja-btn.on { background:var(--q-morado); border-color:var(--q-morado); color:#fff; }
.bandeja-count {
  min-width:20px; height:20px; padding:0 6px; border-radius:999px;
  background:#F1EFF6; color:var(--q-text-secondary);
  font-size:11px; font-weight:700; display:inline-flex; align-items:center; justify-content:center;
}
.bandeja-btn.on .bandeja-count { background:rgba(255,255,255,.22); color:#fff; }

/* Campos de contraseña sin intervención del gestor del navegador */
input[data-pass] { -webkit-text-security:disc; text-security:disc; }
input[data-pass="shown"] { -webkit-text-security:none; text-security:none; }

.kpi-row-3 { grid-template-columns:repeat(3, minmax(0,1fr)); }
@media (max-width:900px) { .kpi-row-3 { grid-template-columns:1fr; } }

/* Filtros fuera del panel de pestañas (mismo patrón que Solicitudes) */
.tabs-folder + .table-toolbar.table-filters { margin-top:14px; }
.tabs-folder-panel > .card-results-head:first-child {
  margin:0; padding:15px 20px; border-radius:14px 14px 0 0;
}
.tabs-folder-panel { padding:0; }
.tabs-folder-panel > .table-wrapper > .q-table > thead > tr > th:first-child,
.tabs-folder-panel > .table-wrapper > .q-table > tbody > tr > td:first-child { padding-left:20px; }
.tabs-folder-panel > .table-wrapper > .q-table > thead > tr > th:last-child,
.tabs-folder-panel > .table-wrapper > .q-table > tbody > tr > td:last-child { padding-right:20px; }
.tabs-folder-panel > .reporte-content, .tabs-folder-panel.reporte-content { padding:20px; }

/* Cuando los filtros van entre las pestañas y el panel, el panel es una tarjeta completa */
.tabs-folder + .table-toolbar.table-filters + .tabs-folder-panel {
  border-radius:14px; border-top:1px solid var(--q-border);
}

/* Pestañas sobre el fondo de página cuando los filtros van debajo */
.tabs-folder-legacy-a {}
.tabs-folder-legacy-b {
}

/* ── 63. Grupo de descarga de reportes (legado) ── */
.export-group {
  display:inline-flex; align-items:center; gap:0;
  background:#FFFFFF; border:1px solid var(--q-border);
  border-radius:999px; padding:3px 3px 3px 12px; height:38px;
  box-shadow:0 1px 2px rgba(28,28,46,.04);
}
.export-group-label {
  display:inline-flex; align-items:center; gap:7px;
  font-size:12px; font-weight:600; color:var(--q-text-secondary);
  padding-right:10px; margin-right:4px; border-right:1px solid var(--q-border); height:20px;
}
.export-group-label svg { width:15px; height:15px; }
.export-group-btn {
  border:0; background:transparent; cursor:pointer;
  font:inherit; font-size:12.5px; font-weight:600; color:var(--q-text-primary);
  height:30px; padding:0 13px; border-radius:999px; transition:background .15s, color .15s;
}
.export-group-btn:hover { background:var(--q-morado-soft); color:var(--q-morado); }
.export-group-btn:focus-visible { outline:2px solid var(--q-morado); outline-offset:2px; }

/* Barra de periodo dentro del panel de pestañas */
.panel-subbar {
  display:flex; align-items:center; gap:10px;
  padding:14px 20px; border-bottom:1px solid var(--q-border);
  margin:0 -20px 18px;
}
.panel-subbar-label {
  font-size:10.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase;
  color:var(--q-text-secondary);
}

.reporte-kpis { grid-template-columns:repeat(5, minmax(0,1fr)); }
@media (max-width:1000px) { .reporte-kpis { grid-template-columns:repeat(2, minmax(0,1fr)); } }

/* ── 64. Menú de descarga ── */
.export-menu { position:relative; display:inline-block; }
.export-trigger {
  display:inline-flex; align-items:center; gap:8px;
  height:38px; padding:0 16px; border-radius:999px; cursor:pointer;
  border:0; background:var(--q-morado); color:#FFFFFF;
  font:inherit; font-size:12.5px; font-weight:600;
  box-shadow:0 3px 10px rgba(144,40,140,.22);
  transition:background .15s, box-shadow .15s;
}
.export-trigger:hover { background:#7A2276; }
.export-trigger.on { background:#6E1F6B; }
.export-trigger svg { width:15px; height:15px; }
.export-trigger .export-chev { transition:transform .2s; opacity:.85; }
.export-trigger.on .export-chev { transform:rotate(180deg); }
.export-pop {
  position:absolute; top:calc(100% + 8px); right:0; z-index:120;
  width:308px; padding:6px; background:#FFFFFF;
  border:1px solid var(--q-border); border-radius:14px;
  box-shadow:0 16px 40px rgba(28,28,46,.14);
}
.export-opt {
  display:flex; align-items:flex-start; gap:11px; width:100%;
  padding:11px 12px; border:0; border-radius:10px; background:transparent;
  cursor:pointer; text-align:left; font:inherit; transition:background .13s;
}
.export-opt:hover { background:var(--q-bg-body); }
.export-opt-tag {
  flex:0 0 auto; min-width:42px; text-align:center;
  font-size:10px; font-weight:800; letter-spacing:.5px;
  color:var(--q-morado); background:var(--q-morado-soft);
  border-radius:6px; padding:5px 6px; margin-top:1px;
}
.export-opt-txt { display:flex; flex-direction:column; gap:2px; min-width:0; }
.export-opt-txt strong { font-size:12.5px; font-weight:600; color:var(--q-text-primary); }
.export-opt-txt small { font-size:11.5px; color:var(--q-text-secondary); line-height:1.35; }

.page-head-actions { margin-left:auto; }
@media (max-width:1000px) { .export-pop { left:auto; right:0; width:min(308px, calc(100vw - 290px)); } }

/* ── 63. Barra de pestañas en tarjeta propia (Reportes) ── */
.tabs-strip {
  display:flex; flex-wrap:nowrap; gap:2px; overflow-x:auto; scrollbar-width:none;
  background:var(--q-bg-card); border:1px solid var(--q-border);
  border-radius:14px; padding:6px; margin-bottom:14px;
  box-shadow:0 1px 2px rgba(28,28,46,.03);
}
.tabs-strip-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:9px 12px; border-radius:10px; border:0; background:transparent;
  font-size:12.5px; font-weight:500; color:var(--q-text-secondary);
  white-space:nowrap; flex:0 0 auto;
  cursor:pointer; transition:background .14s, color .14s;
}
.tabs-strip::-webkit-scrollbar { display:none; }
@container (max-width: 720px) { .tabs-strip-btn { padding:8px 10px; } .tabs-strip-btn svg { display:none; } }
.tabs-strip-btn svg { width:15px; height:15px; flex-shrink:0; }
.tabs-strip-btn:hover { background:var(--q-bg-body); color:var(--q-text-primary); }
.tabs-strip-btn.active { background:#F5EEFA; color:var(--q-morado); font-weight:700; }
.tabs-strip-count {
  min-width:20px; height:19px; padding:0 6px; border-radius:999px;
  background:var(--q-bg-body); color:var(--q-text-secondary);
  font-size:11px; font-weight:700; display:inline-flex; align-items:center; justify-content:center;
}
.tabs-strip-btn.active .tabs-strip-count { background:rgba(144,40,140,.12); color:var(--q-morado); }
.reporte-content > .panel-subbar {
  border-bottom:1px solid var(--q-border); border-radius:14px 14px 0 0;
  padding:14px 20px; margin:0; background:transparent;
}

.tabs-strip { container-type:inline-size; }

/* ── 64. Módulo de usuarios ── */
.usr-initials {
  width:36px; height:36px; border-radius:10px; flex-shrink:0;
  background:#F3EAF8; color:var(--q-morado);
  font-size:11.5px; font-weight:700; letter-spacing:.3px;
  display:flex; align-items:center; justify-content:center;
}
.usr-nota { font-size:11.5px; color:var(--q-text-secondary); margin-top:4px; white-space:nowrap; }
.table-usuarios .q-table td { padding-top:14px; padding-bottom:14px; }

/* Usuarios: la tabla se mantiene tabular; se comprime el contenido en vez de colapsar */
.table-usuarios .q-table td:first-child .truncate { max-width:170px; }
.table-usuarios .q-table td:nth-child(3) {
  max-width:150px; font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.table-usuarios .q-table td:nth-child(3)::after { content:none; }
@container (max-width: 940px) {
  .table-usuarios .q-table th, .table-usuarios .q-table td { padding-left:9px; padding-right:9px; }
  .table-usuarios .q-table td:first-child .truncate { max-width:150px; }
  .table-usuarios .q-table td:first-child .fw-600 { max-width:150px; overflow:hidden; text-overflow:ellipsis; }
  .table-usuarios .q-table td:nth-child(3) { max-width:115px; }
}
@container (max-width: 700px) {
  .table-usuarios .q-table td:first-child .truncate,
  .table-usuarios .q-table td:first-child .fw-600 { max-width:120px; }
  .table-usuarios .q-table td:nth-child(3) { max-width:95px; }
  .table-usuarios .q-table th, .table-usuarios .q-table td { padding-left:7px; padding-right:7px; }
}

#tablaConvenios th { white-space:nowrap; overflow-wrap:normal; }

/* Modo ficha: etiqueta a la izquierda y valores apilados a la derecha */
@container (max-width: 460px) {
  .q-table tbody td {
    display:grid !important; grid-template-columns:auto minmax(0,1fr);
    align-items:start; column-gap:14px; row-gap:2px; justify-content:normal;
  }
  .q-table tbody td::before { grid-column:1; grid-row:1; }
  .q-table tbody td > * { grid-column:2; justify-self:end; text-align:right; }
  .q-table tbody td:not([data-label]) > * { grid-column:1 / -1; justify-self:end; }
  .q-table tbody td > .row-actions { justify-content:flex-end; }
  .q-table tbody td[colspan] { display:block !important; }
}

/* Encabezado de tarjeta más compacto */
.card-head { padding:14px 20px; }
.card-head-title { font-size:14px; }

/* Encabezados de tabla en un solo renglón */
.q-table th { white-space:nowrap; overflow-wrap:normal; }


.reporte-content .q-table th, .table-fit .q-table th { white-space:nowrap; overflow-wrap:normal; }

/* Tablas dentro de tarjetas de gráfica: los encabezados pueden envolver y la tarjeta no recorta */
.reporte-chart-card { overflow-x:visible; }
.reporte-chart-card .q-table th { white-space:normal; overflow-wrap:anywhere; line-height:1.25; }
.reporte-chart-card .q-table { font-size:12px; }
.reporte-chart-card .q-table th, .reporte-chart-card .q-table td { padding-left:8px; padding-right:8px; }

/* Barra de filtros: un solo renglón, el buscador cede espacio */
.filter-row { flex-wrap:nowrap; align-items:center; }
.filter-row .search-bar-wrapper { flex:1 1 160px; min-width:130px; }
.filter-row .form-control { min-width:0; }
.filter-row .form-control { min-width:96px; }
@media (max-width:1000px) { .filter-row { flex-wrap:wrap; } }

/* ── 67. Filtros homologados: el rango de fechas se ve igual que un select ── */
.dr-btn {
  height:42px; padding:0 14px; gap:8px;
  border:1px solid #E8E6EF; border-radius:8px; background:#FAFAFC;
  font-size:13px; font-weight:400; color:var(--q-text-primary);
}
.dr-btn svg:first-child { color:var(--q-text-secondary); }
.dr-btn.on { font-weight:400; }
.dr-wrap { flex:0 1 172px; }
.filter-row .dr-wrap { min-width:150px; }
.dr-pop { top:48px; }

/* ── 68. PESTAÑAS HOMOLOGADAS (un solo patrón en todo el prototipo) ── */
.tabs-strip, .tabs-folder, .tabs-bar {
  display:flex; align-items:stretch; gap:20px; flex-wrap:nowrap;
  overflow-x:auto; scrollbar-width:none;
  background:transparent; border:0; border-bottom:1px solid var(--q-border);
  border-radius:0; box-shadow:none; padding:0 2px; margin:0 0 16px;
}
.tabs-strip::-webkit-scrollbar, .tabs-folder::-webkit-scrollbar, .tabs-bar::-webkit-scrollbar { display:none; }
.tabs-strip-btn, .tabs-folder-btn, .tab-btn {
  display:inline-flex; align-items:center; gap:7px; white-space:nowrap;
  background:transparent; border:0; border-bottom:2.5px solid transparent;
  border-radius:0; margin:0 0 -1px; padding:11px 2px;
  font-size:13px; font-weight:600; color:var(--q-text-secondary);
  cursor:pointer; transition:color .15s, border-color .15s;
  min-height:0; box-shadow:none;
}
.tabs-strip-btn:hover, .tabs-folder-btn:hover, .tab-btn:hover {
  background:transparent; color:var(--q-text-primary);
}
.tabs-strip-btn.active, .tabs-folder-btn.active, .tab-btn.active {
  background:transparent; color:var(--q-morado); font-weight:700;
  border:0; border-bottom:2.5px solid var(--q-morado); box-shadow:none;
}
.tabs-strip-btn svg, .tabs-folder-btn svg, .tab-btn svg { width:15px; height:15px; flex-shrink:0; }
.tabs-strip-count, .tabs-folder-count {
  min-width:20px; height:19px; padding:0 6px; border-radius:999px;
  background:var(--q-bg-body); color:var(--q-text-secondary);
  font-size:11px; font-weight:700; font-variant-numeric:tabular-nums;
  display:inline-flex; align-items:center; justify-content:center;
}
.tabs-strip-btn.active .tabs-strip-count,
.tabs-folder-btn.active .tabs-folder-count { background:#F3E8F6; color:var(--q-morado); }

/* El panel de contenido es una tarjeta completa debajo de las pestañas */
.tabs-folder-panel, .tabs-folder + .table-toolbar.table-filters + .tabs-folder-panel {
  background:var(--q-bg-card); border:1px solid var(--q-border); border-radius:14px;
}
.tabs-folder-panel > .card-results-head:first-child { border-radius:14px 14px 0 0; }
.tabs-folder + .table-toolbar.table-filters { margin-top:0; }
@container (max-width: 640px) { .tabs-strip-btn svg, .tabs-folder-btn svg { display:none; } }



/* Alineación de la barra de filtros: todos los controles a la misma altura y línea base */
.filter-row { align-items:stretch; gap:10px; }
.filter-row > * { align-self:center; }
.filter-row .mod-search { margin-bottom:0; flex:1 1 280px; min-width:170px; display:flex; }
.filter-row .mod-search .search-bar-wrapper { flex:1 1 auto; max-width:none !important; width:100%; }
.filter-row .form-control,
.filter-row .search-bar,
.filter-row .dr-btn,
.filter-row .btn-clear-filters { height:42px; box-sizing:border-box; }
.filter-row .dr-wrap { flex:0 0 190px; min-width:190px; }
.filter-row select.form-control { flex:0 0 auto; }
@media (max-width:1000px) { .filter-row .mod-search { flex:1 1 100%; } }
.dr-btn { white-space:nowrap; overflow:hidden; }
.dr-btn > span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dr-wrap { flex:0 0 190px; }
.filter-row .dr-wrap, .table-filters .dr-wrap { min-width:190px; }
.form-control, select.form-control, option { white-space:nowrap; }
textarea.form-control { white-space:pre-wrap; overflow-x:hidden; }
.btn, .btn-clear-filters { white-space:nowrap; }

/* ── 70. PESTAÑAS TIPO CARPETA · patrón único en todo el prototipo ── */
.tabs-strip, .tabs-folder, .tabs-bar {
  display:flex; align-items:flex-end; gap:2px; flex-wrap:nowrap;
  overflow-x:auto; scrollbar-width:none;
  background:var(--q-bg-card); border:1px solid var(--q-border); border-bottom:0;
  border-radius:14px 14px 0 0; padding:8px 10px 0; margin:0;
  box-shadow:none;
}
.tabs-strip-btn, .tabs-folder-btn, .tab-btn {
  display:inline-flex; align-items:center; gap:8px; white-space:nowrap;
  background:transparent; border:1px solid transparent; border-bottom:0;
  border-radius:12px 12px 0 0; padding:10px 16px; margin:0 0 -1px;
  font-size:13px; font-weight:600; color:var(--q-text-secondary);
  cursor:pointer; transition:color .15s, background .15s;
  min-height:0; box-shadow:none;
}
.tabs-strip-btn:hover, .tabs-folder-btn:hover, .tab-btn:hover {
  color:var(--q-text-primary); background:var(--q-bg-body);
}
.tabs-strip-btn.active, .tabs-folder-btn.active, .tab-btn.active {
  color:var(--q-morado); font-weight:700;
  background:var(--q-bg-card); border:1px solid var(--q-border); border-bottom:0;
  box-shadow:none;
}
.tabs-strip-btn svg, .tabs-folder-btn svg, .tab-btn svg { width:15px; height:15px; flex-shrink:0; }
.tabs-strip-count, .tabs-folder-count {
  min-width:22px; height:20px; padding:0 6px; border-radius:999px;
  background:var(--q-bg-body); color:var(--q-text-secondary);
  font-size:11px; font-weight:700; font-variant-numeric:tabular-nums;
  display:inline-flex; align-items:center; justify-content:center;
}
.tabs-strip-btn.active .tabs-strip-count,
.tabs-folder-btn.active .tabs-folder-count { background:#F3E8F6; color:var(--q-morado); }

/* El panel cuelga de las pestañas: mismo blanco, sin borde superior */
.tabs-folder-panel, .tabs-folder + .table-toolbar.table-filters + .tabs-folder-panel {
  background:var(--q-bg-card); border:1px solid var(--q-border); border-top:0;
  border-radius:0 0 14px 14px;
}
.tabs-folder-panel > .card-results-head:first-child { border-radius:0; }
/* Filtros bajo las pestañas: van dentro del bloque blanco */
.tabs-folder + .table-toolbar.table-filters,
.tabs-strip + .table-toolbar.table-filters {
  margin:0; background:var(--q-bg-card);
  border-left:1px solid var(--q-border); border-right:1px solid var(--q-border);
  padding:14px 16px 4px;
}
.tabs-bar + * { margin-top:0; }

.tabs-bar.mb-20 { margin-bottom:16px; }
.tabs-folder-panel .q-card-flush { border:0; box-shadow:none; border-radius:0; }
.tabs-folder-panel > .filter-row:first-child { margin-top:0; }

/* Panel para pantallas cuyo contenido es una tarjeta suelta */
.tabs-bar + .q-card, .tabs-strip + .q-card, .tabs-folder + .q-card {
  border-top:0; border-radius:0 0 14px 14px; margin-top:0;
}
/* Barra de pestañas: permite dos renglones antes de cortar una etiqueta */
.tabs-strip, .tabs-folder, .tabs-bar { flex-wrap:wrap; overflow-x:visible; row-gap:0; }

/* ── 71. Pestañas como bloque independiente (separado del contenido) ── */
.tabs-strip, .tabs-folder, .tabs-bar {
  flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none;
  background:#FBFAFD; border:1px solid var(--q-border);
  border-radius:14px; padding:8px 10px 0; margin:0 0 16px;
  box-shadow:0 1px 2px rgba(28,28,46,.03);
}
.tabs-strip::-webkit-scrollbar, .tabs-folder::-webkit-scrollbar, .tabs-bar::-webkit-scrollbar { display:none; }
.tabs-strip-btn, .tabs-folder-btn, .tab-btn { padding:10px 14px; margin:0; border-bottom:1px solid transparent; }
.tabs-strip-btn.active, .tabs-folder-btn.active, .tab-btn.active {
  background:var(--q-bg-card); border:1px solid var(--q-border); border-bottom-color:var(--q-bg-card);
  border-radius:12px 12px 0 0; margin-bottom:-1px;
}
/* el contenido vuelve a ser una tarjeta completa e independiente */
.tabs-bar + .q-card, .tabs-strip + .q-card, .tabs-folder + .q-card,
.tabs-folder-panel, .tabs-folder + .table-toolbar.table-filters + .tabs-folder-panel {
  border:1px solid var(--q-border); border-radius:14px; margin-top:0;
}
.tabs-folder-panel > .card-results-head:first-child { border-radius:14px 14px 0 0; }
.tabs-folder + .table-toolbar.table-filters,
.tabs-strip + .table-toolbar.table-filters {
  background:transparent; border:0; padding:0; margin:0 0 14px;
}

/* Barras con muchas pestañas: compactas y con scroll visible si hace falta */
.tabs-strip, .tabs-folder, .tabs-bar { scrollbar-width:thin; padding-bottom:0; }
.tabs-strip::-webkit-scrollbar, .tabs-folder::-webkit-scrollbar, .tabs-bar::-webkit-scrollbar { display:block; height:5px; }
.tabs-strip::-webkit-scrollbar-thumb, .tabs-folder::-webkit-scrollbar-thumb, .tabs-bar::-webkit-scrollbar-thumb { background:var(--q-border); border-radius:4px; }
.tabs-strip-btn, .tabs-folder-btn, .tab-btn { font-size:12.5px; padding:10px 13px; }

/* Sin scrollbars dentro del bloque de pestañas + afordancia de scroll */
.tabs-strip, .tabs-folder, .tabs-bar {
  overflow-y:hidden; overflow-x:auto; scrollbar-width:none;
  -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 18px), transparent);
          mask-image:linear-gradient(to right, #000 calc(100% - 18px), transparent);
}
.tabs-strip::-webkit-scrollbar, .tabs-folder::-webkit-scrollbar, .tabs-bar::-webkit-scrollbar { display:none; }
.tabs-strip-btn, .tabs-folder-btn, .tab-btn { font-size:12.5px; padding:10px 12px; }

.kpi-row > .q-card, .kpi-row-3 > .q-card, .kpi-row-4 > .q-card { margin-top:0; }

/* Filtros siempre fuera de la tarjeta de resultados */
.reporte-filtros { margin:0 0 14px; }
.reporte-filtros .table-toolbar, .reporte-filtros .filter-row {
  background:transparent; border:0; box-shadow:none; padding:0; margin:0;
}
.tabs-folder-panel + .filter-row, .filter-row + .tabs-folder-panel { margin-top:0; }

/* Controles de marca en morado (no teal) */
.toggle.on { background:var(--q-morado); }
.perm-check.active { background:var(--q-morado); border-color:var(--q-morado); }
.perm-check:not(.readonly):not(.active):hover { border-color:var(--q-morado); background:var(--q-morado-soft); }

/* Tarjetas de canal alineadas y con la misma altura */
.kpi-row-3 > .q-card { margin-top:0; display:flex; flex-direction:column; }
.kpi-row-3 > .q-card .form-group { margin-top:auto; }

/* Tabla de reglas: el texto nunca toca el borde */
#notif-rules-tbody td:first-child, #notif-rules-tbody td:nth-child(2) { padding-right:16px; }
#notif-rules-tbody td:last-child { padding-right:20px; }


/* ── 68. Paso 2 · carga de documentos más intuitiva ── */
.docs-progress {
  max-width:760px; margin:0 0 16px; padding:14px 16px;
  border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC;
}
.docs-progress-top { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:9px; }
.docs-progress-count { font-size:13px; color:var(--q-text-secondary); }
.docs-progress-count strong { color:var(--q-text-primary); font-weight:700; }
.docs-progress-left { font-size:11px; font-weight:600; color:var(--q-estado-ambar); }
.docs-progress-track { height:5px; border-radius:999px; background:#EAE7F0; overflow:hidden; }
.docs-progress-fill { height:100%; border-radius:999px; background:var(--q-morado); transition:width .25s ease; }
.docs-progress-rule { font-size:11px; color:var(--q-text-secondary); line-height:1.55; margin-top:9px; }

.doc-list { max-width:760px; }
.doc-item.pending {
  border-style:dashed; cursor:pointer;
  transition:border-color .15s, background .15s, box-shadow .15s;
}
.doc-item.pending:hover { border-color:var(--q-morado); background:var(--q-morado-soft); }
.doc-item.pending:hover .doc-item-icon { background:var(--q-morado); color:#FFFFFF; }
.doc-item.dragover {
  border-style:solid; border-color:var(--q-morado);
  background:var(--q-morado-soft); box-shadow:0 0 0 3px rgba(144,40,140,.12);
}
.doc-item.falta { border-color:var(--q-estado-rojo); background:rgba(192,57,43,.04); }
.doc-drop-hint { font-size:11px; font-weight:600; color:var(--q-morado); margin-top:6px; line-height:1.5; }

/* Numéricos abiertos: sin flechas de incremento */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
input[type=number] { -moz-appearance:textfield; appearance:textfield; }

/* Pasos 1 y 2 navegables: se ven accionables, no deshabilitados */
.wiz-progress-step.ready { cursor:pointer; opacity:1; }
.wiz-progress-step.ready .wiz-progress-dot { border-color:var(--q-morado); color:var(--q-morado); background:#FFFFFF; }
.wiz-progress-step.ready:hover { color:var(--q-morado); }
.wiz-progress-step.ready:hover .wiz-progress-dot { background:var(--q-morado-soft); }


/* ── 69. Buscador del alta · una sola jerarquía de acción ── */
/* El tipo de búsqueda es un segmentado neutro: no compite con el CTA */
.wiz-tipo-toggle {
  display:inline-flex; gap:3px; margin-bottom:18px;
  padding:3px; border-radius:999px;
  background:#EFEDF4; border:1px solid #E4E1EC;
}
.wiz-tipo-btn {
  padding:0 16px; height:34px; border-radius:999px;
  border:0; background:transparent; box-shadow:none;
  font-size:12.5px; font-weight:600; color:var(--q-text-secondary);
}
.wiz-tipo-btn:hover { background:transparent; color:var(--q-morado); border:0; }
.wiz-tipo-btn.active {
  background:#FFFFFF; color:var(--q-morado); border:0;
  box-shadow:0 1px 3px rgba(28,28,46,.10);
}
.wiz-search-block { background:#FFFFFF; border-style:solid; }
.wiz-search-hint { margin-top:9px; }

/* ── 70. Paso 2 · niveles de documentación y campos homologados ── */
.docs-tier-label {
  font-size:12px; font-weight:700; letter-spacing:0; text-transform:none;
  color:var(--q-text-secondary); margin:0 0 9px;
}
.adic-box {
  max-width:760px; margin-top:16px; padding:18px;
  border:1px solid var(--q-border); border-radius:12px; background:#FFFFFF;
  box-shadow:0 1px 3px rgba(28,28,46,.04);
}
.adic-box-head { display:flex; align-items:flex-start; gap:11px; margin-bottom:16px; }
.adic-box-num {
  flex-shrink:0; width:24px; height:24px; border-radius:50%;
  background:var(--q-morado-soft); color:var(--q-morado);
  display:flex; align-items:center; justify-content:center;
  font-size:11.5px; font-weight:700;
}
.adic-box-title { font-size:14px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.adic-box-sub { font-size:12px; color:var(--q-text-secondary); margin-top:2px; line-height:1.5; }
.adic-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:16px; align-items:start; }
.adic-grid .form-hint { min-height:2.4em; }

/* Campo de archivo: se ve y mide igual que un input */
.file-field {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  width:100%; height:42px; padding:0 13px;
  border:1px dashed #D5CEE0; border-radius:8px; background:#FAFAFC;
  font-family:'Montserrat',sans-serif; font-size:13px; font-weight:600;
  color:var(--q-morado); cursor:pointer; text-align:left;
  transition:border-color .15s, background .15s;
}
button.file-field { justify-content:flex-start; }
.file-field:hover { border-color:var(--q-morado); background:var(--q-morado-soft); }
.file-field.has {
  border-style:solid; border-color:rgba(30,111,60,.4);
  background:rgba(30,111,60,.04); color:var(--q-estado-verde); cursor:default;
}
.file-field.has:hover { border-color:rgba(30,111,60,.4); background:rgba(30,111,60,.04); }
.file-field .truncate { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file-field-x {
  flex-shrink:0; width:20px; height:20px; border-radius:50%; border:0; cursor:pointer;
  background:rgba(30,111,60,.12); color:var(--q-estado-verde);
  display:flex; align-items:center; justify-content:center; padding:0;
}
.file-field-x:hover { background:var(--q-estado-rojo); color:#FFFFFF; }


/* ── 71. Salida de la captura y nota del footer ── */
.wiz-exit {
  flex-shrink:0; align-self:center;
  display:inline-flex; align-items:center; gap:7px;
  height:36px; padding:0 16px 0 13px; border-radius:999px;
  border:1px solid var(--q-border); background:#FFFFFF;
  font-family:'Montserrat',sans-serif; font-size:12.5px; font-weight:600;
  color:var(--q-text-secondary); cursor:pointer;
  transition:border-color .15s, background .15s, color .15s;
}
.wiz-exit:hover { border-color:var(--q-morado); background:var(--q-morado-soft); color:var(--q-morado); }

/* Pie de modal: un solo renglón, CTA a la derecha y ancho por contenido */
.modal-actions-stack {
  display:flex; justify-content:flex-end; align-items:center;
  gap:10px; flex-wrap:wrap; margin-top:20px;
}
.modal-actions-stack .btn { width:auto; flex:0 0 auto; white-space:nowrap; }
.wiz-actionbar-note { font-size:12px; color:var(--q-text-muted); }


/* ── 72. Hoja de documento dentro del visor: tipografía de documento, no de UI ── */
.pdfv-page { max-width:820px; margin:0 auto; }
.pdfv-page .firma-doc-header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:18px; }
.pdfv-page .firma-doc-title { text-align:center; font-size:13px; font-weight:700; letter-spacing:.04em; color:#1C1C2E; margin:0 0 20px; }
.pdfv-page .firma-doc-p { margin:0 0 14px; text-align:justify; font-size:11.5px; line-height:1.85; color:#3F3F51; }
.pdfv-page .firma-doc-sigs { display:flex; gap:40px; margin-top:34px; }
.pdfv-page .firma-doc-sig-col { flex:1; text-align:center; }
.pdfv-page .firma-doc-sig-area { height:56px; border-bottom:1px solid #1C1C2E; display:flex; align-items:flex-end; justify-content:center; padding-bottom:6px; }
.pdfv-page .firma-doc-sig-name { font-size:11px; font-weight:700; color:#1C1C2E; margin-top:7px; }


/* ── 73. Aviso interno superior (sustituye la pantalla de confirmación) ── */
.aviso-interno {
  display:flex; align-items:flex-start; gap:12px;
  padding:14px 16px; margin:0 0 18px;
  border:1px solid rgba(30,111,60,.28); border-radius:12px;
  background:rgba(30,111,60,.05);
  animation:avisoIn .25s ease;
}
@keyframes avisoIn { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:none; } }
.aviso-interno.ambar { border-color:rgba(180,83,9,.3); background:rgba(180,83,9,.06); }
.aviso-interno-icon {
  flex-shrink:0; width:26px; height:26px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(30,111,60,.14); color:var(--q-estado-verde);
}
.aviso-interno.ambar .aviso-interno-icon { background:rgba(180,83,9,.14); color:var(--q-estado-ambar); }
.aviso-interno-body { flex:1; min-width:0; }
.aviso-interno-title { font-size:13.5px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.aviso-interno-folio {
  display:inline-block; margin-left:6px; padding:1px 8px; border-radius:999px;
  background:#FFFFFF; border:1px solid var(--q-border);
  font-size:11px; font-weight:700; color:var(--q-morado); letter-spacing:.2px;
}
.aviso-interno-msg { font-size:12.5px; color:var(--q-text-secondary); line-height:1.6; margin-top:3px; }
.aviso-interno .btn { flex-shrink:0; align-self:center; }
.aviso-interno-x {
  flex-shrink:0; width:24px; height:24px; border-radius:50%; border:0; cursor:pointer;
  background:transparent; color:var(--q-text-secondary);
  display:flex; align-items:center; justify-content:center;
}
.aviso-interno-x:hover { background:rgba(28,28,46,.07); color:var(--q-text-primary); }


/* Cierre del modal: tache discreto arriba a la derecha */
.modal { position:relative; }
.modal-x {
  position:absolute; top:14px; right:14px;
  width:28px; height:28px; border-radius:50%; border:0; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  background:transparent; color:var(--q-text-secondary);
  transition:background .14s, color .14s;
}
.modal-x:hover { background:rgba(28,28,46,.07); color:var(--q-text-primary); }


/* ── 74. Modal de firma compacto ── */
.firma-opts { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.firma-opt {
  display:flex; align-items:flex-start; gap:9px;
  padding:12px 13px; border:1.5px solid var(--q-border); border-radius:10px;
  background:#FFFFFF; cursor:pointer; transition:border-color .15s, background .15s;
}
.firma-opt:hover { border-color:var(--q-morado); }
.firma-opt.sel { border-color:var(--q-morado); background:var(--q-morado-soft); }
.firma-opt input { margin-top:2px; flex-shrink:0; }
.firma-opt-t { display:block; font-size:13px; font-weight:700; color:var(--q-text-primary); }
.firma-opt-d { display:block; font-size:11.5px; color:var(--q-text-secondary); line-height:1.45; margin-top:2px; }
.modal-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
@media (max-width:560px) {
  .firma-opts, .modal-grid-2 { grid-template-columns:1fr; }
}


/* Bloque de firma autógrafa dentro de modales */
.firma-auto-box {
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  margin-top:14px; padding:14px 16px;
  border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC;
}
.firma-auto-box .btn { flex-shrink:0; }


/* Pasos del seguimiento de firma */
.firma-step {
  display:flex; align-items:center; gap:12px;
  padding:13px 15px; margin-bottom:10px;
  border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC;
}
.firma-step.ok { border-color:rgba(30,111,60,.35); background:rgba(30,111,60,.04); }
.firma-step-n {
  flex-shrink:0; width:24px; height:24px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:var(--q-morado-soft); color:var(--q-morado);
  font-size:11.5px; font-weight:700;
}
.firma-step.ok .firma-step-n { background:rgba(30,111,60,.14); color:var(--q-estado-verde); }
.firma-step-t { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.firma-step-s { font-size:11.5px; color:var(--q-text-secondary); line-height:1.5; margin-top:2px; word-break:break-word; }
.firma-step .btn { flex-shrink:0; }


/* ── 75. Resultados de búsqueda por agente ── */
.ag-head {
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
  padding:16px 18px; border:1px solid var(--q-border); border-radius:12px; background:#FFFFFF;
}
.ag-head-id { display:flex; align-items:center; gap:12px; min-width:0; }
.ag-avatar {
  width:40px; height:40px; border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background:var(--q-morado-soft); color:var(--q-morado);
  font-size:13px; font-weight:700; letter-spacing:.3px;
}
.ag-name { font-size:15px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.ag-clave { font-size:12px; color:var(--q-text-secondary); margin-top:1px; }
.ag-stats { display:flex; gap:28px; flex-wrap:wrap; }
.ag-stat-v { font-size:19px; font-weight:700; color:var(--q-text-primary); line-height:1.1; }
.ag-stat-l { font-size:11px; color:var(--q-text-secondary); margin-top:3px; }

.ag-card { border:1px solid var(--q-border); border-radius:12px; overflow:hidden; background:#FFFFFF; }
.ag-card.off { background:#FBFAFC; }
.ag-card-top { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:15px 16px 12px; }
.ag-card-name { font-size:14.5px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.ag-card-rfc { font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.ag-card-actions { display:flex; align-items:center; gap:6px; flex-shrink:0; }
.ag-card-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:14px 20px;
  padding:12px 16px 15px; border-top:1px solid var(--q-border); background:#FAFAFC;
}
.ag-k { font-size:11px; color:var(--q-text-secondary); }
.ag-v { font-size:13px; font-weight:600; color:var(--q-text-primary); margin-top:2px; }


/* ── 76. Tarjeta de razón social: encabezado desplegable + CTA en su columna ── */
.ag-card-top {
  display:flex; align-items:center; gap:12px; width:100%;
  padding:15px 16px; background:transparent; border:0; cursor:pointer; text-align:left;
  font-family:'Montserrat',sans-serif; transition:background .14s;
}
.ag-card-top:hover { background:var(--q-morado-soft); }
.ag-chev {
  flex-shrink:0; width:24px; height:24px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:#F1EFF6; color:var(--q-morado); transition:transform .18s, background .14s;
}
.ag-chev.up { transform:rotate(180deg); }
.ag-card-id { flex:1; min-width:0; display:block; }
.ag-card-name { display:block; font-size:14.5px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.ag-card-rfc { display:block; font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.ag-card-toggle { flex-shrink:0; font-size:12px; font-weight:600; color:var(--q-morado); }
.ag-card.open { border-color:var(--q-morado); box-shadow:0 2px 10px rgba(144,40,140,.07); }
.ag-card-grid { align-items:center; }
.ag-card-cta { display:flex; justify-content:flex-end; }
.ag-card-cta .btn { white-space:nowrap; }
@media (max-width:720px) {
  .ag-card-cta { justify-content:flex-start; }
}


/* ── 77. Detalle de solicitud en firma ── */
.fd-head {
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  padding:22px 26px 18px;
}
.fd-title { font-size:20px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.4px; }
.fd-sub { font-size:13px; color:var(--q-text-secondary); margin-top:3px; }
.fd-datos {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:16px 24px;
  padding:16px 26px; background:#FAFAFC;
  border-top:1px solid var(--q-border); border-bottom:1px solid var(--q-border);
}
.fd-dato { min-width:0; }
.fd-k { font-size:11px; color:var(--q-text-secondary); }
.fd-v { font-size:13.5px; font-weight:600; color:var(--q-text-primary); margin-top:3px; word-break:break-word; }
.fd-body { padding:22px 26px 4px; }

.fd-banner {
  display:flex; align-items:flex-start; gap:12px;
  padding:14px 16px; border-radius:12px;
  border:1px solid rgba(180,83,9,.28); background:rgba(180,83,9,.05);
}
.fd-banner.ok { border-color:rgba(30,111,60,.28); background:rgba(30,111,60,.05); }
.fd-banner-ic {
  flex-shrink:0; width:26px; height:26px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(180,83,9,.14); color:var(--q-estado-ambar);
}
.fd-banner.ok .fd-banner-ic { background:rgba(30,111,60,.14); color:var(--q-estado-verde); }
.fd-banner-t { font-size:13.5px; font-weight:700; color:var(--q-text-primary); }
.fd-banner-s { font-size:12.5px; color:var(--q-text-secondary); line-height:1.6; margin-top:2px; }

.fd-step {
  display:flex; align-items:center; gap:14px;
  padding:15px 16px; margin-bottom:10px;
  border:1px solid var(--q-border); border-radius:12px; background:#FFFFFF;
}
.fd-step.todo { border-style:dashed; }
.fd-step.ok { border-color:rgba(30,111,60,.3); background:rgba(30,111,60,.03); }
.fd-step-n {
  flex-shrink:0; width:26px; height:26px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:var(--q-morado-soft); color:var(--q-morado);
  font-size:12px; font-weight:700;
}
.fd-step.ok .fd-step-n { background:rgba(30,111,60,.14); color:var(--q-estado-verde); }
.fd-step-body { flex:1; min-width:0; }
.fd-step-t { font-size:13.5px; font-weight:700; color:var(--q-text-primary); }
.fd-step-s { font-size:12px; color:var(--q-text-secondary); line-height:1.55; margin-top:3px; }
.fd-step-a { flex-shrink:0; }
.fd-file {
  display:inline-flex; align-items:center; gap:6px; max-width:100%;
  margin-top:4px; padding:3px 10px; border-radius:999px;
  background:rgba(30,111,60,.1); color:var(--q-estado-verde);
  font-size:11.5px; font-weight:600;
}
.fd-file .truncate { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:640px) {
  .fd-step { align-items:flex-start; flex-wrap:wrap; }
  .fd-step-a { width:100%; padding-left:40px; }
}


/* Historial del convenio */
.fd-hist { border:1px solid var(--q-border); border-radius:12px; overflow:hidden; }
.fd-hist-row { display:flex; align-items:center; gap:12px; padding:11px 16px; border-bottom:1px solid var(--q-border); background:#FFFFFF; }
.fd-hist-row:last-child { border-bottom:0; }
.fd-hist-row.pend { background:#FAFAFC; }
.fd-hist-dot { width:8px; height:8px; border-radius:50%; background:var(--q-estado-verde); flex-shrink:0; }
.fd-hist-row.pend .fd-hist-dot { background:var(--q-border); }
.fd-hist-t { flex:1; min-width:0; font-size:12.5px; color:var(--q-text-primary); }
.fd-hist-row.pend .fd-hist-t { color:var(--q-text-secondary); }
.fd-hist-d { flex-shrink:0; font-size:11.5px; color:var(--q-text-secondary); }


/* ── 78. Detalle de solicitud: pestañas + historial lateral ── */
.dv-head { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:16px; }
.dv-title { font-size:22px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.5px; }
.dv-meta { font-size:13px; color:var(--q-text-secondary); margin-top:3px; }
.dv-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:18px; align-items:start; }
@media (max-width:1000px) { .dv-layout { grid-template-columns:1fr; } }

.dv-tabs {
  display:flex; gap:4px; flex-wrap:wrap;
  padding:6px; background:#EFEDF4; border:1px solid #E4E1EC; border-radius:12px 12px 0 0;
  border-bottom:0;
}
.dv-tab {
  display:inline-flex; align-items:center; gap:7px;
  height:36px; padding:0 15px; border:0; border-radius:9px; background:transparent;
  font-family:'Montserrat',sans-serif; font-size:12.5px; font-weight:600;
  color:var(--q-text-secondary); cursor:pointer; transition:background .14s, color .14s;
}
.dv-tab:hover { color:var(--q-morado); }
.dv-tab.on { background:#FFFFFF; color:var(--q-morado); box-shadow:0 1px 3px rgba(28,28,46,.1); }
.dv-panel {
  background:#FFFFFF; border:1px solid var(--q-border); border-radius:0 0 12px 12px;
  padding:24px 26px;
}
.dv-panel-title { font-size:16px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; margin-bottom:16px; }
.dv-sub {
  font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--q-text-muted); margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid var(--q-border);
}
.dv-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:16px 24px; }
.dv-dato { min-width:0; }
.dv-k { font-size:11px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--q-text-muted); }
.dv-v { font-size:13.5px; font-weight:600; color:var(--q-text-primary); margin-top:4px; word-break:break-word; }

.dv-doc { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC; }
.dv-doc-ic { color:var(--q-morado); flex-shrink:0; display:flex; }
.dv-doc-n { font-size:13px; font-weight:600; color:var(--q-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dv-doc-m { font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }

.dv-side { background:#FFFFFF; border:1px solid var(--q-border); border-radius:12px; padding:20px 22px; }
.dv-side-title { font-size:15px; font-weight:700; color:var(--q-text-primary); margin-bottom:16px; letter-spacing:-.2px; }
.dv-time { position:relative; }
.dv-time-row { position:relative; display:flex; gap:14px; padding-bottom:20px; }
.dv-time-row::before {
  content:''; position:absolute; left:5px; top:16px; bottom:0; width:2px; background:var(--q-border);
}
.dv-time-row.last { padding-bottom:0; }
.dv-time-row.last::before { display:none; }
.dv-dot { flex-shrink:0; width:12px; height:12px; border-radius:50%; margin-top:3px; position:relative; z-index:1; }
.dv-dot.gris   { background:#9CA3AF; }
.dv-dot.morado { background:var(--q-morado); }
.dv-dot.teal   { background:var(--q-teal-text, #00829B); }
.dv-dot.verde  { background:var(--q-estado-verde); }
.dv-dot.ambar  { background:#C2410C; }
.dv-dot.rojo   { background:var(--q-estado-rojo); }
.dv-time-t { font-size:13.5px; font-weight:700; color:var(--q-text-primary); line-height:1.35; }
.dv-time-q { font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.dv-time-d { font-size:12px; color:var(--q-text-muted); margin-top:1px; }

/* Aviso sutil (no invasivo) */
.aviso-sutil {
  display:flex; align-items:flex-start; gap:9px;
  padding:10px 13px; border-radius:10px;
  background:#FAFAFC; border:1px solid var(--q-border); border-left:3px solid var(--q-estado-ambar);
  font-size:12.5px; color:var(--q-text-secondary); line-height:1.55;
}
.aviso-sutil-ic { flex-shrink:0; display:flex; color:var(--q-estado-ambar); margin-top:1px; }
.aviso-sutil strong { color:var(--q-text-primary); }


/* ── 79. Seguimiento de firma FIEL ── */
.sig-track { position:relative; }
.sig-row {
  position:relative; display:flex; align-items:flex-start; gap:14px;
  padding:0 0 18px 0;
}
.sig-line { position:absolute; left:17px; top:38px; bottom:0; width:2px; background:var(--q-border); }
.sig-row.last .sig-line { display:none; }
.sig-row.ok .sig-line { background:rgba(30,111,60,.35); }
.sig-av {
  flex-shrink:0; width:36px; height:36px; border-radius:50%; position:relative; z-index:1;
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:700; letter-spacing:.3px;
  background:#F1EFF6; color:var(--q-text-secondary); border:2px solid #FFFFFF;
  box-shadow:0 0 0 1px var(--q-border);
}
.sig-row.ok .sig-av { background:rgba(30,111,60,.14); color:var(--q-estado-verde); box-shadow:0 0 0 1px rgba(30,111,60,.35); }
.sig-row.turno .sig-av { background:var(--q-morado); color:#FFFFFF; box-shadow:0 0 0 3px rgba(144,40,140,.15); }
.sig-body {
  flex:1; min-width:0; padding:11px 14px;
  border:1px solid var(--q-border); border-radius:10px; background:#FFFFFF;
}
.sig-row.ok .sig-body { border-color:rgba(30,111,60,.28); background:rgba(30,111,60,.03); }
.sig-row.turno .sig-body { border-color:var(--q-morado); box-shadow:0 2px 10px rgba(144,40,140,.08); }
.sig-row.espera .sig-body { background:#FAFAFC; }
.sig-top { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sig-name { font-size:13.5px; font-weight:700; color:var(--q-text-primary); }
.sig-chip {
  font-size:10.5px; font-weight:700; letter-spacing:.03em; padding:2px 9px; border-radius:999px;
  background:#F1EFF6; color:var(--q-text-secondary);
}
.sig-chip.ok { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.sig-chip.turno { background:var(--q-morado-soft); color:var(--q-morado); }
.sig-rol { font-size:12px; color:var(--q-text-secondary); margin-top:3px; }
.sig-meta { font-size:11.5px; color:var(--q-text-muted); margin-top:2px; word-break:break-word; }
.sig-act { flex-shrink:0; padding-top:8px; }
@media (max-width:640px) {
  .sig-act { display:none; }
}


/* Fixes de layout: la columna del detalle no se desborda con el visor PDF */
.dv-layout > * { min-width:0; }
.dv-tabs, .dv-panel { max-width:100%; }
.dv-panel { overflow:hidden; }
.dv-panel .pdfv-shell { max-width:100%; }
.dv-panel .pdfv-sidebar { display:none; }

/* Firmantes: borde derecho parejo aunque no todos tengan acción */
.sig-act { flex:0 0 104px; display:flex; justify-content:flex-end; }
@media (max-width:640px) { .sig-act { display:none; } }


/* ── 80. Barra de acciones del detalle (tarjeta, no barra fija) ── */
.dv-actionbar {
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  margin-top:14px; padding:14px 18px;
  background:#FFFFFF; border:1px solid var(--q-border); border-radius:12px;
}
.dv-actionbar-right { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-left:auto; }
.dv-actionbar-note { font-size:12px; color:var(--q-text-muted); }

/* ── 81. Alertas ámbar con el mismo lenguaje sutil ── */
.banner-inline.banner-ambar {
  background:#FAFAFC !important;
  border:1px solid var(--q-border) !important;
  border-left:3px solid var(--q-estado-ambar) !important;
  border-radius:10px;
  color:var(--q-text-secondary) !important;
  font-size:12.5px; line-height:1.55;
  align-items:flex-start; gap:9px; padding:11px 14px;
}
.banner-inline.banner-ambar > svg { color:var(--q-estado-ambar); flex-shrink:0; margin-top:1px; }
.banner-inline.banner-ambar strong { color:var(--q-text-primary); }
.banner-inline.banner-ambar .btn { flex-shrink:0; }

/* El aviso de corrección respira antes del stepper */
.aviso-sutil + .wiz-progress-bar { margin-top:0; }


/* La barra del detalle se mantiene en un renglón */
.dv-actionbar { flex-wrap:nowrap; }
.dv-actionbar > .btn { flex:0 0 auto; }
.dv-actionbar-right { flex:1 1 auto; min-width:0; justify-content:flex-end; flex-wrap:nowrap; }
.dv-actionbar-note { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dv-actionbar-right .btn { flex:0 0 auto; }
@media (max-width:560px) {
  .dv-actionbar { flex-wrap:wrap; }
  .dv-actionbar-note { display:none; }
}
/* Los botones del firmante viven dentro de su propia tarjeta */
.sig-body { display:flex; flex-direction:column; }
.sig-act {
  flex:0 0 auto; display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; align-items:center;
  margin:11px -14px -11px; padding:9px 14px;
  border-top:1px solid var(--q-border); background:rgba(28,28,46,.015);
  border-radius:0 0 10px 10px;
}
.sig-row.ok .sig-act { border-top-color:rgba(30,111,60,.2); }
.sig-row.turno .sig-act { border-top-color:rgba(144,40,140,.22); background:rgba(144,40,140,.03); }
.sig-act .btn { white-space:nowrap; }
.sig-act .btn svg { vertical-align:-2px; }
.sig-resend {
  align-self:flex-start;
  display:inline-flex; align-items:center; gap:5px; margin-top:8px;
  font-size:11px; font-weight:600; color:var(--q-teal-text);
  background:rgba(0,150,174,.1); border-radius:999px; padding:3px 9px;
}
@media (max-width:640px) { .sig-act { display:flex; } }


/* Campos fijos en una corrección */
.campo-fijo {
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  min-height:42px; padding:0 14px; max-width:520px;
  border:1px solid var(--q-border); border-radius:8px; background:#F4F3F7;
}
.campo-fijo-v { font-size:13px; font-weight:600; color:var(--q-text-primary); }
.campo-fijo-tag {
  flex-shrink:0; font-size:11px; font-weight:600; color:var(--q-text-secondary);
  background:#FFFFFF; border:1px solid var(--q-border); border-radius:999px; padding:2px 10px;
}


/* ── 82. Fila de documento cargado ── */
.doc-row {
  display:flex; align-items:center; gap:13px;
  padding:11px 13px; background:#FFFFFF;
  border:1px solid var(--q-border); border-radius:10px;
  transition:border-color .14s, box-shadow .14s;
}
.doc-row:hover { border-color:var(--q-morado); box-shadow:0 2px 8px rgba(144,40,140,.06); }
.doc-row-badge {
  flex-shrink:0; width:34px; height:34px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  font-size:9.5px; font-weight:700; letter-spacing:.04em;
  background:#F1EFF6; color:var(--q-morado);
}
.doc-row-badge.pdf { background:rgba(192,57,43,.1); color:#B03A2E; }
.doc-row-badge.xls { background:rgba(30,111,60,.1); color:var(--q-estado-verde); }
.doc-row-badge.img { background:rgba(0,150,174,.12); color:var(--q-teal-text); }
.doc-row-body { flex:1; min-width:0; }
.doc-row-name {
  font-size:13px; font-weight:600; color:var(--q-text-primary);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.doc-row-meta { font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }
.doc-row-acts { display:flex; gap:4px; flex-shrink:0; }
.doc-row-btn {
  width:32px; height:32px; border-radius:8px; border:0; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  background:transparent; color:var(--q-text-secondary);
  transition:background .14s, color .14s;
}
.doc-row-btn:hover { background:var(--q-morado-soft); color:var(--q-morado); }
.doc-prev-nopdf {
  display:flex; align-items:center; gap:14px;
  padding:16px; border:1px dashed var(--q-border); border-radius:10px; background:#FAFAFC;
}


/* Listas de documentos alineadas al mismo ancho */
.doc-lista { display:flex; flex-direction:column; gap:8px; max-width:100%; margin-bottom:20px; }
.doc-lista .doc-row { width:100%; }
.doc-row-acts.row-actions { gap:2px; }
.doc-row .row-action-icon { width:32px; height:32px; flex:0 0 32px; }

/* Visor del documento cargado: la hoja tal cual, sin barra de PDF ni miniaturas */
.docv {
  width:min(92vw, 900px); max-height:88vh; display:flex; flex-direction:column;
  background:#FFFFFF; border-radius:14px; overflow:hidden; box-shadow:0 24px 60px rgba(12,12,24,.35);
}
.docv-bar {
  display:flex; align-items:center; gap:16px;
  padding:14px 18px; border-bottom:1px solid var(--q-border); background:#FFFFFF;
}
.docv-name { font-size:14px; font-weight:700; color:var(--q-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.docv-meta { font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.docv-acts { display:flex; gap:4px; margin-left:auto; flex-shrink:0; }
.docv-body { flex:1; min-height:0; overflow:auto; background:#F3F2F7; padding:22px; }
.docv-page { background:#FFFFFF; border:1px solid var(--q-border); border-radius:6px; padding:40px 44px; max-width:760px; margin:0 auto; }

/* Densidad de iconos igual a la de las tablas */
.doc-row .row-action-icon { width:30px; height:30px; flex:0 0 30px; }


/* ── 83. Configuración con pestañas (mismo patrón que el resto del prototipo) ── */
.cfg-head { margin-bottom:16px; }
.cfg-panel { margin-top:0; padding:18px; }
.cfg-panel .page-head { margin-bottom:16px; }
.cfg-panel > .q-card:first-child, .cfg-panel > div > .q-card:first-child { margin-top:0; }


/* ── 84. Revisión de documentos en línea ── */
.rev-progress { padding:12px 14px; border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC; }
.rev-progress-top { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:9px; font-size:12.5px; color:var(--q-text-secondary); }
.rev-progress-top strong { color:var(--q-text-primary); font-weight:700; }
.rev-tally { display:flex; gap:6px; flex-wrap:wrap; }
.rev-pill { font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; background:#EFEDF4; color:var(--q-text-secondary); }
.rev-pill.ok { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.rev-pill.no { background:rgba(192,57,43,.1); color:var(--q-estado-rojo); }

.doc-row.rev.ok { border-color:rgba(30,111,60,.32); background:rgba(30,111,60,.03); }
.doc-row.rev.no { border-color:rgba(192,57,43,.32); background:rgba(192,57,43,.03); }
.rev-motivo { font-size:11.5px; color:var(--q-estado-rojo); margin-top:4px; line-height:1.5; }
.rev-chip { flex-shrink:0; font-size:11px; font-weight:700; padding:3px 10px; border-radius:999px; background:#EFEDF4; color:var(--q-text-secondary); }
.rev-chip.ok { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.rev-chip.no { background:rgba(192,57,43,.1); color:var(--q-estado-rojo); }
.rev-btn {
  width:30px; height:30px; flex:0 0 30px; border-radius:8px; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  border:1.5px solid var(--q-border); background:#FFFFFF; color:var(--q-text-secondary);
  transition:background .14s, color .14s, border-color .14s;
}
.rev-btn.ok:hover { border-color:var(--q-estado-verde); background:rgba(30,111,60,.1); color:var(--q-estado-verde); }
.rev-btn.no:hover { border-color:var(--q-estado-rojo); background:rgba(192,57,43,.08); color:var(--q-estado-rojo); }

/* Pie del visor con la decisión del documento */
.docv-foot {
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:14px 18px; border-top:1px solid var(--q-border); background:#FFFFFF;
}
.docv-foot-hint { font-size:12px; color:var(--q-text-secondary); }
.docv-foot-acts { display:flex; gap:8px; margin-left:auto; flex-shrink:0; }


/* El pie de la revisión no genera scroll horizontal */
.sticky-footer { flex-wrap:wrap; row-gap:10px; }
.sticky-footer .btn { flex:0 0 auto; }


/* ── Paso 2 · tarjetas de documento homologadas con la revisión del Administrador ── */
.doc-list .doc-item { min-height:92px; align-items:center; padding:10px 14px; box-sizing:border-box; }
.doc-list .doc-item-body { align-self:center; }
.doc-item-action { align-self:center; }
.doc-item .doc-row-acts { gap:2px; }
.doc-item .row-action-icon, .doc-item .rev-btn { width:30px; height:30px; flex:0 0 30px; }
.doc-item .doc-item-help { max-width:58ch; }
.doc-list .doc-item .chip-tiny { background:#EFEDF4; color:var(--q-text-secondary); }
/* Sin mayúsculas forzadas en los subtítulos del paso de documentos */
#sec-docs .section-title,
#sec-docs .data-panel-title,
#sec-docs .dv-sub,
#sec-docs .panel-subbar-label,
#sec-docs .adic-box-title { text-transform:none; letter-spacing:0; }

/* Las filas de documento nunca generan scroll: la acción baja de renglón si no cabe */
.doc-row { flex-wrap:wrap; min-width:0; }
.doc-row-body { flex:1 1 200px; min-width:0; }
.doc-row-acts { flex:0 0 auto; margin-left:auto; }
.doc-lista { overflow:hidden; }
.data-panel { overflow:hidden; }


/* ── 85. Excepción de póliza vencida ── */
.exc-panel { border:1px solid var(--q-border); border-left:3px solid var(--q-estado-ambar); border-radius:12px; background:#FFFFFF; padding:16px 18px; }
.exc-panel.rojo { border-left-color:var(--q-estado-rojo); }
.exc-head { display:flex; align-items:flex-start; gap:12px; }
.exc-ic { flex-shrink:0; width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:rgba(180,83,9,.12); color:var(--q-estado-ambar); }
.exc-ic.rojo { background:rgba(192,57,43,.1); color:var(--q-estado-rojo); }
.exc-ic.verde { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.exc-title { font-size:14px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.2px; }
.exc-sub { font-size:12.5px; color:var(--q-text-secondary); line-height:1.6; margin-top:3px; }
.exc-acts { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:14px; }
.exc-hint { font-size:12px; color:var(--q-text-secondary); flex:1; min-width:180px; }
.exc-hint strong { color:var(--q-text-primary); }


/* El pie fijo coincide exactamente con el padding real de la tarjeta */
.sticky-footer { padding:16px 24px; margin:20px -24px -22px; }


/* Datos consultados en SISE para la excepción */
.exc-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px 24px; margin-top:14px; padding:13px 15px; border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC; }
.exc-k { font-size:11px; font-weight:600; letter-spacing:.03em; text-transform:uppercase; color:var(--q-text-muted); }
.exc-v { font-size:13.5px; font-weight:600; color:var(--q-text-primary); margin-top:5px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.exc-src { font-size:10.5px; font-weight:500; text-transform:none; letter-spacing:0; color:var(--q-text-muted); }

/* ── Matriz de permisos: el morado marca sin saturar la tabla ── */
.perm-check { width:24px; height:24px; border-radius:7px; border:1.5px solid #DCD8E6; background:#FFFFFF; }
.perm-check.active { background:var(--q-morado-soft); border-color:rgba(144,40,140,.45); color:var(--q-morado); }
.perm-check.active svg { color:var(--q-morado); }
.perm-check.readonly { opacity:1; }
.perm-check.readonly.active { background:#F4F1F8; border-color:#DCD8E6; color:var(--q-text-secondary); }
.perm-check:not(.readonly):not(.active):hover { border-color:var(--q-morado); background:#FBF7FD; }
.perm-check:not(.readonly).active:hover { border-color:var(--q-morado); background:#F3E7F5; }

/* ── Modal · reasignar usuarios antes de eliminar un rol ── */
.reasig-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:12px; }
.reasig-head-t { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.reasig-head-s { font-size:12px; color:var(--q-text-secondary); margin-top:2px; }
.reasig-bulk { display:flex; align-items:center; gap:8px; }
.reasig-bulk .form-control { width:auto; min-width:190px; height:36px; font-size:12.5px; }
.reasig-list { display:flex; flex-direction:column; gap:8px; }
.reasig-row {
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:12px 14px; border:1px solid var(--q-border); border-radius:10px; background:#FFFFFF;
}
.reasig-row.ok { border-color:rgba(30,111,60,.3); background:rgba(30,111,60,.03); }
.reasig-av {
  flex:0 0 34px; width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:700; background:#F1EFF6; color:var(--q-text-secondary);
}
.reasig-row.ok .reasig-av { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.reasig-info { flex:1 1 180px; min-width:0; }
.reasig-name { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.reasig-meta { font-size:11.5px; color:var(--q-text-secondary); margin-top:1px; overflow-wrap:anywhere; }
.reasig-pick { flex:0 0 216px; }
.reasig-lab { display:block; font-size:10.5px; font-weight:700; letter-spacing:.04em; color:var(--q-text-muted); margin-bottom:4px; }
.reasig-pick .form-control { height:38px; font-size:12.5px; }

/* Botón destructivo homologado */
.btn-danger { background:var(--q-estado-rojo); border:1px solid var(--q-estado-rojo); color:#FFFFFF; }
.btn-danger:hover:not(:disabled) { filter:brightness(.93); }
.btn:disabled, .btn-danger:disabled { opacity:.45; cursor:not-allowed; filter:none; }


/* ── Matriz de permisos · encabezado con renglones alineados entre columnas ── */
.permisos-th-rol { vertical-align:top; padding:14px 14px 16px; }
.permisos-th-inner {
  display:grid; grid-template-rows:26px 14px auto auto; row-gap:6px;
  align-items:center; justify-items:center; height:100%;
}
.permisos-rol-header { flex-wrap:nowrap; gap:4px; justify-content:center; align-self:center; }
.permisos-rol-header .chip { white-space:nowrap; }
.permisos-rol-grupo {
  font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  color:var(--q-text-disabled); line-height:14px; text-align:center;
}
.permisos-th-inner .permisos-rol-desc { margin:0; align-self:start; text-align:center; line-height:1.45; }
.permisos-rol-pend { font-size:11px; font-weight:600; color:var(--q-estado-ambar); text-align:center; align-self:start; min-height:0; }

/* ── Pie de modal: los botones siempre a la derecha ── */
/* Un solo patrón: grupo de botones alineado a la derecha, secundario a la izquierda del CTA */
.modal-footer, .rdrawer-footer, .modal-actions-stack { flex-direction:row; justify-content:flex-end; }
.confirm-btns { justify-content:center; }
.modal-footer { flex-wrap:wrap; }


/* Notas del catálogo de roles: plegadas por defecto */
.notas-rol { margin-top:8px; }
.notas-rol > summary {
  display:inline-flex; align-items:center; gap:6px; cursor:pointer; list-style:none;
  font-size:12px; font-weight:600; color:var(--q-morado);
}
.notas-rol > summary::-webkit-details-marker { display:none; }
.notas-rol > summary::after {
  content:''; width:6px; height:6px; border-right:1.6px solid currentColor; border-bottom:1.6px solid currentColor;
  transform:rotate(45deg) translateY(-2px); transition:transform .16s;
}
.notas-rol[open] > summary::after { transform:rotate(-135deg) translateY(-1px); }
.notas-rol ul {
  margin:8px 0 0; padding:10px 14px 10px 28px; list-style:disc;
  border:1px solid var(--q-border); border-radius:10px; background:#FAFAFC;
}
.notas-rol li { font-size:12px; color:var(--q-text-secondary); line-height:1.55; margin-bottom:3px; }
.notas-rol li:last-child { margin-bottom:0; }


/* El lápiz no compite con el nombre del rol: vive en la esquina de la celda y aparece al pasar el cursor */
.permisos-th-rol { position:relative; }
.permisos-th-edit {
  position:absolute; top:6px; right:6px; width:24px; height:24px; border:0; border-radius:7px;
  display:inline-flex; align-items:center; justify-content:center;
  background:none; color:var(--q-morado); cursor:pointer;
  opacity:0; pointer-events:none; transition:opacity .14s, background .14s;
}
.permisos-th-rol:hover .permisos-th-edit,
.permisos-th-edit:focus-visible { opacity:1; pointer-events:auto; }
.permisos-th-edit:hover { background:var(--q-morado-soft); }
.permisos-th-edit.off { color:var(--q-text-muted); cursor:not-allowed; }
.permisos-th-inner { padding-top:22px; }
@media (hover:none) { .permisos-th-edit { opacity:1; pointer-events:auto; } }


/* ── Canales de envío de notificaciones ── */
.canal-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); grid-auto-rows:1fr; align-items:stretch; gap:14px; margin-bottom:18px; }
.canal-card {
  display:flex; flex-direction:column; gap:14px;
  padding:16px 18px; background:var(--q-bg-card);
  border:1px solid var(--q-border); border-radius:12px;
  box-shadow:0 1px 3px rgba(28,28,46,.04);
}
.canal-top { display:flex; align-items:flex-start; gap:11px; }
.canal-ic {
  flex:0 0 34px; width:34px; height:34px; border-radius:9px;
  display:flex; align-items:center; justify-content:center; overflow:visible;
  background:#F1EFF6; color:var(--q-text-secondary);
}
.canal-ic.morado { background:var(--q-morado-soft); color:var(--q-morado); }
.canal-ic.verde  { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.canal-ic.teal   { background:rgba(0,150,174,.12); color:var(--q-teal-text); }
.canal-txt { flex:1 1 auto; min-width:0; }
.canal-title { font-size:13.5px; font-weight:700; color:var(--q-text-primary); }
.canal-desc { font-size:12px; color:var(--q-text-secondary); line-height:1.5; margin-top:3px; }
.canal-top .toggle { flex:0 0 auto; margin-top:3px; }
.canal-field { margin-top:auto; }
.canal-field .form-label { display:block; margin-bottom:6px; }

/* ── Subtítulos de sección: capitalización normal, el morado se reserva a lo interactivo ── */
.section-title { text-transform:none; letter-spacing:0; font-size:13px; font-weight:700; color:var(--q-text-primary); }
.data-panel-title { text-transform:none; letter-spacing:0; font-size:12.5px; font-weight:700; color:var(--q-text-secondary); }


/* ── Tabla de reglas de notificación ── */
.notif-td-evento { font-size:13px; font-weight:600; color:var(--q-text-primary); }
.notif-td-dest { font-size:12px; color:var(--q-text-secondary); }
.notif-td-chk { text-align:center; }
.notif-td-chk .perm-check { vertical-align:middle; }
/* El check inactivo se distingue del activo también en esta tabla */
.notif-td-chk .perm-check:not(.active) { background:#FFFFFF; border-color:#DCD8E6; }
.notif-td-chk .perm-check.active { background:var(--q-morado-soft); border-color:rgba(144,40,140,.45); color:var(--q-morado); }

/* El encabezado de la tarjeta no se encima con el borde */
.card-results-head { padding:14px 20px; gap:16px; }
.card-head-title { font-size:13px; font-weight:700; color:var(--q-text-primary); }
/* En tarjetas sin padding el encabezado no debe salirse con margen negativo */
.q-card > .card-results-head:first-child,
.cfg-panel .q-card > .card-results-head:first-child {
  margin:0; border-radius:12px 12px 0 0;
}


/* Indicador de guardado automático (sustituye el botón Guardar cambios) */
.autosave {
  display:inline-flex; align-items:center; gap:6px;
  font-size:12px; font-weight:600; color:var(--q-text-muted);
  padding:6px 12px; border:1px solid var(--q-border); border-radius:999px; background:#FAFAFC;
  transition:color .18s, background .18s, border-color .18s;
}
.autosave.ok { color:var(--q-estado-verde); background:rgba(30,111,60,.08); border-color:rgba(30,111,60,.28); }


/* ── Modal de plantillas de notificación: cada canal es un bloque reconocible ── */
.tpl-block {
  border:1px solid var(--q-border); border-radius:12px; overflow:hidden; margin-bottom:14px;
  background:var(--q-bg-card);
}
.tpl-head {
  display:flex; align-items:center; gap:10px;
  padding:11px 14px; background:#FAFAFC; border-bottom:1px solid var(--q-border);
}
.tpl-ic {
  flex:0 0 30px; width:30px; height:30px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  background:#F1EFF6; color:var(--q-text-secondary);
}
.tpl-ic.morado { background:var(--q-morado-soft); color:var(--q-morado); }
.tpl-ic.verde  { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.tpl-ic.teal   { background:rgba(0,150,174,.12); color:var(--q-teal-text); }
.tpl-title { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.tpl-sub { font-size:11.5px; color:var(--q-text-secondary); margin-top:1px; }
.tpl-body { padding:14px; }
.tpl-varlabel { font-size:12px; font-weight:600; color:var(--q-text-secondary); margin-bottom:6px; }


/* A prueba de interpolaciones: el CTA primario siempre al extremo derecho del pie */
.rdrawer-footer > .btn, .modal-footer > .btn, .modal-actions-stack > .btn { order:0; }
.rdrawer-footer > .btn-ghost, .modal-footer > .btn-ghost, .modal-actions-stack > .btn-ghost { order:-1; }
.rdrawer-footer > .btn-morado, .rdrawer-footer > .btn-danger,
.modal-footer > .btn-morado, .modal-footer > .btn-danger,
.modal-actions-stack > .btn-morado, .modal-actions-stack > .btn-danger { order:1; }


/* ── Editor de reglas de notificación como pantalla ── */
.nrule-head { display:flex; flex-direction:column; align-items:flex-start; gap:8px; margin-bottom:18px; }
.nrule-head .btn { margin-left:-10px; }
.nrule-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:20px; align-items:start; }
.nrule-main { min-width:0; }
.nrule-side { display:flex; flex-direction:column; gap:12px; position:sticky; top:84px; }
.nrule-side-card {
  padding:14px; background:var(--q-bg-card);
  border:1px solid var(--q-border); border-radius:12px;
}
@media (max-width:1000px) {
  .nrule-layout { grid-template-columns:1fr; }
  .nrule-side { position:static; }
}

/* Los encabezados de cada canal resaltan más y las plantillas no llevan scroll propio */
.tpl-head { padding:13px 16px; background:var(--q-morado-soft); border-bottom:1px solid rgba(144,40,140,.18); }
.tpl-block { border-color:#E4E1EC; box-shadow:0 1px 3px rgba(28,28,46,.04); margin-bottom:16px; }
.tpl-title { font-size:14px; letter-spacing:-.2px; }
.tpl-ic { width:32px; height:32px; flex:0 0 32px; background:#FFFFFF; }
.tpl-body textarea.form-control { resize:vertical; min-height:120px; overflow-y:auto; }


/* Tarjetas laterales del editor con el mismo ancho y ritmo que las plantillas */
.nrule-side-card { box-shadow:0 1px 3px rgba(28,28,46,.04); }
.nrule-side-card label { display:flex; align-items:center; gap:8px; font-size:13px; margin-bottom:6px; cursor:pointer; }
.nrule-side-card label:last-of-type { margin-bottom:0; }

.nrule-layout + .dv-actionbar { margin-top:20px; }

/* Las tres tarjetas de canal miden lo mismo con cualquier combinación de textos */
.canal-card { height:100%; }
.canal-desc { min-height:36px; }
.canal-field .form-control { height:42px; box-sizing:border-box; }


/* ── Filtro de calendario: los campos Inicio / Fin nunca se salen del panel ── */
.dr-pop { width:344px; max-width:calc(100vw - 32px); box-sizing:border-box; overflow:hidden; }
.dr-fields { grid-template-columns:1fr 1fr; gap:10px; }
.dr-fields > div { min-width:0; }
.dr-input {
  box-sizing:border-box; min-width:0; max-width:100%;
  padding:0 10px; font-size:12.5px; height:40px;
}
input[type="date"].dr-input { padding-right:6px; }
input[type="date"].dr-input::-webkit-calendar-picker-indicator { margin-left:0; padding:0; opacity:.6; }
input[type="date"].dr-input::-webkit-datetime-edit { min-width:0; }
/* El JS voltea el panel cuando no cabe a la derecha */
.dr-pop.flip { left:auto; right:0; }
@media (max-width:420px) {
  .dr-pop { width:calc(100vw - 32px); }
  .dr-fields { grid-template-columns:1fr; }
}

/* Tarjetas de documento más compactas: menos aire arriba y abajo */
.doc-list { gap:6px; }
.doc-item-help { margin-top:2px; }
.doc-drop-hint { margin-top:3px; }
.doc-item-file { margin-top:3px; }

/* Piso común para las dos listas de documentos (obligatorios y adicional) */
.doc-list .doc-item { min-height:96px; }


/* ── Razones sociales del agente: una sola tabla con filas desplegables ── */
.ag-table tbody td { vertical-align:middle; }
.ag-row.off td { background:#FCFBFD; }
.ag-row.open td { background:var(--q-morado-soft); }
.ag-row-name {
  display:flex; align-items:center; gap:10px; width:100%;
  background:none; border:0; padding:0; cursor:pointer; text-align:left;
}
.ag-row-title { display:block; font-size:13.5px; font-weight:700; color:var(--q-text-primary); }
.ag-row-sub { display:block; font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }
.ag-row-alert { color:var(--q-estado-ambar); font-weight:600; }
.ag-row-name .ag-chev {
  flex:0 0 24px; width:24px; height:24px; border-radius:7px;
  display:inline-flex; align-items:center; justify-content:center;
  background:#F1EFF6; color:var(--q-text-secondary); transition:transform .18s, background .14s, color .14s;
}
.ag-row-name:hover .ag-chev { background:var(--q-morado-soft); color:var(--q-morado); }
.ag-row-name .ag-chev.up { transform:rotate(180deg); background:var(--q-morado); color:#FFFFFF; }
.ag-count { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.ag-count.cero { color:var(--q-estado-rojo); }
.ag-subrow > td { background:#FAFAFC !important; padding:14px 20px 16px; border-top:0; }
.ag-subtable { border:1px solid var(--q-border); border-radius:10px; overflow:hidden; background:#FFFFFF; }
.ag-subtable .q-table thead th { background:#F4F2F8; font-size:10.5px; padding:9px 14px; }
.ag-subtable .q-table tbody td { padding:9px 14px; }
.ag-table .btn:disabled { opacity:.4; cursor:not-allowed; }


/* ── Razones sociales del agente: filas propias, sirven a cualquier ancho ── */
.ag-list { container-type:inline-size; display:flex; flex-direction:column; gap:8px; }
.ag-list-head {
  display:grid; grid-template-columns:minmax(0,1fr) 84px 150px 104px auto;
  gap:12px; align-items:center; padding:0 16px 2px;
  font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--q-text-muted);
}
.ag-item {
  border:1px solid var(--q-border); border-radius:12px; background:var(--q-bg-card); overflow:hidden;
  box-shadow:0 1px 3px rgba(28,28,46,.04);
}
.ag-item.off { background:#FCFBFD; }
.ag-item.open { border-color:var(--q-morado); box-shadow:0 2px 12px rgba(144,40,140,.08); }
.ag-item-row {
  display:grid; grid-template-columns:minmax(0,1fr) 84px 150px 104px auto;
  gap:12px; align-items:center; padding:12px 16px;
}
.ag-item.open .ag-item-row { background:var(--q-morado-soft); }
.ag-cell { min-width:0; display:flex; flex-direction:column; gap:3px; }
.ag-cell-k { display:none; font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--q-text-muted); }
.ag-cell-v { font-size:12.5px; color:var(--q-text-primary); }
.ag-cell-cta { align-items:flex-end; }
.ag-item-sub { padding:14px 16px 16px; background:#FAFAFC; border-top:1px solid var(--q-border); }

/* Pólizas de la razón social */
.ag-pol-list { display:flex; flex-direction:column; gap:6px; }
.ag-pol {
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  padding:9px 12px; background:#FFFFFF; border:1px solid var(--q-border); border-radius:10px;
}
.ag-pol.off { opacity:.6; }
.ag-pol-num { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.ag-pol-meta { display:block; font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }
.ag-pol-chips { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }

/* En la columna angosta del wizard cada dato lleva su propio rótulo, en dos columnas */
@container (max-width: 640px) {
  .ag-list-head { display:none; }
  .ag-item-row { grid-template-columns:1fr 1fr; row-gap:10px; }
  .ag-item-row .ag-row-name { grid-column:1 / -1; }
  .ag-cell-k { display:block; }
  .ag-cell-cta { grid-column:1 / -1; align-items:stretch; }
  .ag-cell-cta .btn { width:100%; }
}


/* ── Razones sociales: una sola disposición a cualquier ancho, sin rótulos repetidos ── */
.ag-list-head { display:none; }
.ag-list { container-type:normal; }
.ag-item-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:12px 14px; }
.ag-item-row .ag-row-name { flex:1 1 260px; align-items:flex-start; }
.ag-item-row .ag-chev { margin-top:2px; }
.ag-item-cta { flex:0 0 auto; margin-left:auto; }
.ag-item-cta .btn { width:auto; }
.ag-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:7px; }
.ag-tag {
  font-size:11px; font-weight:600; padding:2px 8px; border-radius:999px;
  background:#F1EFF6; color:var(--q-text-secondary); white-space:nowrap;
}
.ag-tag.ok   { background:rgba(30,111,60,.1);  color:var(--q-estado-verde); }
.ag-tag.no   { background:rgba(192,57,43,.1);  color:var(--q-estado-rojo); }
.ag-tag.warn { background:rgba(214,158,46,.16); color:#8A6100; }


/* ── Mis solicitudes (Administrador): la fila respira y nada se sale ── */
.seg-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.seg-pend { font-size:12px; color:var(--q-text-secondary); margin-top:4px; line-height:1.45; overflow-wrap:anywhere; }

/* ── Carga masiva de usuarios: más corta y estructurada ── */
.cm-lead { font-size:13px; color:var(--q-text-secondary); line-height:1.55; margin-bottom:14px; }
.cm-drop, .cm-file, .cm-tplrow {
  display:flex; align-items:center; gap:12px;
  border:1px solid var(--q-border); border-radius:12px; padding:14px; background:var(--q-bg-card);
}
.cm-drop { border-style:dashed; cursor:pointer; background:#FAFAFC; transition:border-color .14s, background .14s; }
.cm-drop:hover { border-color:var(--q-morado); background:var(--q-morado-soft); }
.cm-drop-ic {
  flex:0 0 34px; width:34px; height:34px; border-radius:9px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(0,150,174,.12); color:var(--q-teal-text);
}
.cm-drop-t { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.cm-drop-s { font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }
.cm-tplrow { margin-top:10px; }
.cm-tpl-t { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.cm-tpl-s { font-size:11.5px; color:var(--q-text-secondary); margin-top:2px; }
.cm-det { margin-top:12px; border:1px solid var(--q-border); border-radius:12px; overflow:hidden; }
.cm-det > summary {
  display:flex; align-items:center; gap:8px; cursor:pointer; list-style:none;
  padding:11px 14px; font-size:12.5px; font-weight:600; color:var(--q-morado); background:#FAFAFC;
}
.cm-det > summary::-webkit-details-marker { display:none; }
.cm-det > summary::after {
  content:''; width:6px; height:6px; margin-left:auto;
  border-right:1.6px solid currentColor; border-bottom:1.6px solid currentColor;
  transform:rotate(45deg) translateY(-2px); transition:transform .16s;
}
.cm-det[open] > summary::after { transform:rotate(-135deg); }
.cm-det-body { padding:12px 14px; border-top:1px solid var(--q-border); }
.cm-cols { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; }
.cm-col {
  display:flex; flex-direction:column; gap:3px; min-width:0;
  padding:9px 11px; border:1px solid var(--q-border); border-radius:9px; background:#FAFAFC;
}
.cm-col-k { font-size:11.5px; font-weight:700; color:var(--q-text-primary); }
.cm-col-v {
  font-size:12px; color:var(--q-text-secondary); overflow-wrap:anywhere; line-height:1.45;
}
.cm-col-v::before { content:'Ej. '; color:var(--q-text-muted); }
.cm-file { margin-bottom:14px; }
.cm-stats { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px; }
.cm-stat { padding:10px 12px; border:1px solid var(--q-border); border-radius:10px; }
.cm-stat.ok { border-left:3px solid var(--q-estado-verde); }
.cm-stat.no { border-left:3px solid var(--q-estado-rojo); }
.cm-stat-n { display:block; font-size:18px; font-weight:700; color:var(--q-text-primary); }
.cm-stat-k { display:block; font-size:11px; color:var(--q-text-secondary); margin-top:1px; }
.cm-row-err > td { background:rgba(192,57,43,.045); }


/* ── Mis solicitudes (Administrador): filas propias, legibles a cualquier ancho ── */
.seg-list { display:flex; flex-direction:column; gap:8px; }
.seg-item {
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  padding:12px 14px; background:var(--q-bg-card);
  border:1px solid var(--q-border); border-radius:12px; box-shadow:0 1px 3px rgba(28,28,46,.04);
}
.seg-main { flex:1 1 260px; min-width:0; }
.seg-avance { flex:0 0 150px; display:flex; flex-direction:column; gap:5px; }
.seg-avance .mini-progress { width:100%; }
.seg-avance-k { font-size:11.5px; color:var(--q-text-secondary); }
.seg-cta { flex:0 0 auto; margin-left:auto; }

/* ── Carga masiva: renglones como filas ── */
.cm-list { display:flex; flex-direction:column; gap:6px; }
.cm-item {
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:10px 12px; background:#FFFFFF; border:1px solid var(--q-border); border-radius:10px;
}
.cm-item.err { border-color:rgba(192,57,43,.32); background:rgba(192,57,43,.03); }
.cm-item-n {
  flex:0 0 26px; width:26px; height:26px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:700; background:#F1EFF6; color:var(--q-text-secondary);
}
.cm-item-id { flex:1 1 200px; min-width:0; }
.cm-item-name { font-size:13px; font-weight:700; color:var(--q-text-primary); }
.cm-item-meta { font-size:11.5px; color:var(--q-text-secondary); margin-top:1px; overflow-wrap:anywhere; }
.cm-item-err { font-size:11.5px; color:var(--q-estado-rojo); font-weight:600; margin-top:3px; }
.cm-item .chip { margin-left:auto; }
.cm-group-t { font-size:12.5px; font-weight:700; color:var(--q-text-primary); margin:0 0 8px; }


/* Mis solicitudes: el chip de origen no invade la columna de progreso */
.table-fit td .chip { display:inline-block; max-width:100%; box-sizing:border-box; white-space:normal; line-height:1.3; }
.table-fit .mini-progress-cell { flex-wrap:nowrap; }
/* El encabezado de resultados dentro del panel de pestañas */
.tabs-folder-panel > .card-results-head:first-child { margin:0 0 14px; padding:16px 20px; border-radius:14px 14px 0 0; }


/* Métricas que filtran la tabla */
.kpi-filtro {
  text-align:left; cursor:pointer; font:inherit; width:100%;
  transition:box-shadow .14s, border-color .14s, transform .12s;
}
.kpi-filtro:hover { box-shadow:0 4px 16px rgba(28,28,46,.1); }
.kpi-filtro:active { transform:translateY(1px); }
.kpi-filtro.on { box-shadow:0 0 0 2px var(--q-morado) inset, 0 4px 16px rgba(144,40,140,.12); }
.kpi-filtro-hint { font-size:11px; font-weight:600; color:var(--q-text-muted); margin-top:6px; }
.kpi-filtro.on .kpi-filtro-hint { color:var(--q-morado); }

/* El buscador va primero en la barra de filtros del dashboard */
.filter-row .mod-search { order:-1; }


/* ── Panel de notificaciones: un indicador por notificación ── */
.notif-item { display:flex; gap:12px; align-items:flex-start; padding:14px 18px; position:relative; }
.notif-item.unread { background:rgba(144,40,140,.035); }
.notif-ic {
  flex:0 0 32px; width:32px; height:32px; border-radius:9px;
  display:flex; align-items:center; justify-content:center;
  background:#F1EFF6; color:var(--q-text-secondary);
}
.notif-ic.morado { background:var(--q-morado-soft);        color:var(--q-morado); }
.notif-ic.ambar  { background:rgba(214,158,46,.16);        color:#8A6100; }
.notif-ic.rojo   { background:rgba(192,57,43,.1);          color:var(--q-estado-rojo); }
.notif-ic.verde  { background:rgba(30,111,60,.12);         color:var(--q-estado-verde); }
.notif-body { flex:1 1 auto; min-width:0; }
.notif-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:3px; }
.notif-kind { font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.notif-kind.morado { color:var(--q-morado); }
.notif-kind.ambar  { color:#8A6100; }
.notif-kind.rojo   { color:var(--q-estado-rojo); }
.notif-kind.verde  { color:var(--q-estado-verde); }
.notif-folio { font-size:11px; font-weight:600; color:var(--q-text-secondary); background:var(--q-bg-body); border-radius:999px; padding:1px 8px; }
.notif-msg { font-size:12.5px; color:var(--q-text-primary); line-height:1.5; overflow-wrap:anywhere; }
.notif-time { font-size:11px; color:var(--q-text-muted); margin-top:4px; }
.notif-dot {
  position:absolute; top:16px; right:14px;
  width:7px; height:7px; border-radius:50%; background:var(--q-morado); flex:0 0 7px;
  margin:0;
}
.notif-item.unread .notif-msg { font-weight:500; }


/* ── Subpestañas dentro de una pestaña (Catálogos) ── */
.subtabs { display:flex; flex-wrap:wrap; gap:6px; }
.subtab {
  border:1px solid var(--q-border); border-radius:999px; background:var(--q-bg-card);
  padding:7px 14px; font-size:12.5px; font-weight:600; color:var(--q-text-secondary);
  cursor:pointer; transition:border-color .14s, background .14s, color .14s; white-space:nowrap;
}
.subtab:hover { border-color:var(--q-morado); color:var(--q-morado); }
.subtab.on { background:var(--q-morado-soft); border-color:rgba(144,40,140,.45); color:var(--q-morado); }

/* Encabezados de sección en Campos personalizados: capitalización normal */
.campos-section-header {
  text-transform:none !important; letter-spacing:0 !important;
  font-size:12.5px; font-weight:700; color:var(--q-text-secondary);
}
/* El panel de Configuración respira igual en las tres pestañas */
.cfg-panel .page-head { margin-bottom:14px; }
.cfg-panel .autosave { align-self:center; }

/* El botón del encabezado no cae a otro renglón dentro de Configuración */
.cfg-panel .page-head { flex-wrap:nowrap; align-items:flex-start; gap:14px; }
.cfg-panel .page-head > div:first-child { min-width:0; }
.cfg-panel .page-head-actions { flex:0 0 auto; }
@media (max-width:720px) { .cfg-panel .page-head { flex-wrap:wrap; } }

/* La identidad del usuario vive sólo en la barra superior */
.sb-top-space { height:14px; }


/* Tablas de Configuración: caben en el panel sin apilarse ni desbordar */
.cfg-panel .table-wrapper { overflow-x:auto; }
.cfg-panel .q-table { table-layout:fixed; width:100%; }
.cfg-panel .q-table th, .cfg-panel .q-table td { overflow-wrap:anywhere; }
.cfg-panel .q-table td:last-child, .cfg-panel .q-table th:last-child { width:84px; }

/* Reparto de ancho: la columna de texto manda y las demás se ajustan */
.cfg-panel .q-table thead th:nth-child(1) { width:auto; }
/* Formatos de documento: seis columnas en panel angosto */
.cfg-panel .cat-table-formatos th:nth-child(1), .cfg-panel .cat-table-formatos td:nth-child(1) { width:104px; }
.cfg-panel .cat-table-formatos th:nth-child(2), .cfg-panel .cat-table-formatos td:nth-child(2) { width:96px; }
/* Catálogos: Nombre · Descripción · Estatus · Fecha · Acciones */
.cfg-panel .cat-table th:nth-child(1), .cfg-panel .cat-table td:nth-child(1) { width:120px; }
.cfg-panel .cat-table th:nth-child(3), .cfg-panel .cat-table td:nth-child(3) { width:86px; }
.cfg-panel .cat-table th:nth-child(4), .cfg-panel .cat-table td:nth-child(4) { width:82px; }
/* Reglas de notificación: Evento · Destinatario · 3 canales · acción */
.cfg-panel .notif-table th:nth-child(2), .cfg-panel .notif-table td:nth-child(2) { width:104px; }
.cfg-panel .notif-table th:nth-child(3), .cfg-panel .notif-table td:nth-child(3),
.cfg-panel .notif-table th:nth-child(4), .cfg-panel .notif-table td:nth-child(4),
.cfg-panel .notif-table th:nth-child(5), .cfg-panel .notif-table td:nth-child(5) { width:58px; padding-left:4px; padding-right:4px; }
.cfg-panel .notif-table thead th:nth-child(3),
.cfg-panel .notif-table thead th:nth-child(4),
.cfg-panel .notif-table thead th:nth-child(5) { text-align:center; font-size:10px; letter-spacing:.02em; }
.cfg-panel .notif-table th:last-child, .cfg-panel .notif-table td:last-child { width:96px; }
.cfg-panel .notif-table .btn { font-size:11px; padding:4px 8px; }


/* Panel angosto: se ocultan las columnas de apoyo (siguen visibles al editar) */
@container (max-width: 700px) {
  .cat-table th:nth-child(4), .cat-table td:nth-child(4) { display:none; }
  .cat-table-formatos th:nth-child(3), .cat-table-formatos td:nth-child(3) { display:none; }
  .notif-table th:nth-child(2), .notif-table td:nth-child(2) { display:none; }
  .notif-table th:nth-child(3), .notif-table td:nth-child(3),
  .notif-table th:nth-child(4), .notif-table td:nth-child(4),
  .notif-table th:nth-child(5), .notif-table td:nth-child(5) { width:52px; }
}
/* Más aire para el texto: el panel de Configuración aprovecha todo el ancho */
.cfg-panel { padding:14px; }
.cfg-panel .q-card { margin-left:0; margin-right:0; }

/* Nada se recorta: la tabla cabe con celdas más compactas */
.cfg-panel .q-table th, .cfg-panel .q-table td { padding-left:8px; padding-right:8px; }
.cfg-panel .cat-table th:nth-child(1), .cfg-panel .cat-table td:nth-child(1) { width:106px; }
.cfg-panel .cat-table th:nth-child(3), .cfg-panel .cat-table td:nth-child(3) { width:76px; }
.cfg-panel .cat-table th:last-child, .cfg-panel .cat-table td:last-child { width:76px; }
.cfg-panel .notif-table th:last-child, .cfg-panel .notif-table td:last-child { width:88px; }


/* ── Recuperación de contraseña (solo por correo) ── */
.rec-card { max-width:420px; text-align:center; }
.rec-steps { display:flex; align-items:center; justify-content:center; gap:6px; margin:0 0 22px; }
.rec-step { display:flex; align-items:center; gap:7px; }
.rec-step-n {
  width:24px; height:24px; border-radius:50%; flex:0 0 24px;
  display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:700;
  background:#F1EFF6; color:var(--q-text-muted); border:1px solid var(--q-border);
}
.rec-step-l { font-size:11.5px; font-weight:600; color:var(--q-text-muted); }
.rec-step.active .rec-step-n { background:var(--q-morado); border-color:var(--q-morado); color:#FFFFFF; box-shadow:0 0 0 3px rgba(144,40,140,.14); }
.rec-step.active .rec-step-l { color:var(--q-text-primary); }
.rec-step.done .rec-step-n { background:rgba(30,111,60,.12); border-color:rgba(30,111,60,.35); color:var(--q-estado-verde); }
.rec-step.done .rec-step-l { color:var(--q-text-secondary); }
.rec-step-line { flex:1 1 18px; min-width:14px; height:2px; border-radius:2px; background:var(--q-border); }
.rec-step-line.done { background:rgba(30,111,60,.35); }

.rec-ic {
  width:48px; height:48px; border-radius:14px; margin:0 auto 14px;
  display:flex; align-items:center; justify-content:center;
  background:#F1EFF6; color:var(--q-text-secondary);
}
.rec-ic.morado { background:var(--q-morado-soft); color:var(--q-morado); }
.rec-ic.teal   { background:rgba(0,150,174,.12); color:var(--q-teal-text); }
.rec-ic.verde  { background:rgba(30,111,60,.12); color:var(--q-estado-verde); }
.rec-title { font-size:19px; font-weight:700; color:var(--q-text-primary); letter-spacing:-.3px; margin:0 0 6px; }
.rec-sub { font-size:12.5px; color:var(--q-text-secondary); line-height:1.6; margin:0 0 20px; }
.rec-card .otp-group { display:flex; justify-content:center; gap:8px; margin:0; }
.rec-card .otp-input {
  width:44px; height:52px; text-align:center; font-size:19px; font-weight:700;
  border:1px solid #E8E6EF; border-radius:10px; background:#FAFAFC; color:var(--q-text-primary); outline:none;
  transition:border-color .14s, box-shadow .14s, background .14s;
}
.rec-card .otp-input:focus { border-color:var(--q-morado); background:#FFFFFF; box-shadow:0 0 0 3px rgba(144,40,140,.12); }
.rec-resend { font-size:12px; color:var(--q-text-secondary); margin-top:14px; }
.rec-link-inline { background:none; border:0; padding:0; font:inherit; font-weight:700; color:var(--q-morado); cursor:pointer; }
.rec-link-inline:hover { text-decoration:underline; }
.rec-foot { margin-top:18px; padding-top:14px; border-top:1px solid var(--q-border); }
.rec-link {
  display:inline-flex; align-items:center; gap:6px; background:none; border:0; cursor:pointer;
  font-size:12.5px; font-weight:600; color:var(--q-morado); text-decoration:none;
}
.rec-link:hover { text-decoration:underline; }
.rec-card .strength-bar-track { margin-top:10px; }
.rec-card .strength-rules { display:grid; grid-template-columns:1fr 1fr; gap:4px 12px; text-align:left; margin:10px 0 0; padding:0; list-style:none; }
.rec-card .strength-rule { font-size:11.5px; }

/* La tarjeta de recuperación mide lo mismo en los tres pasos */
.rec-card { width:420px; max-width:100%; box-sizing:border-box; }
.auth-shell:has(.rec-card) { width:100%; justify-content:center; }
