/* PORTAL v5.2 - CSS consolidado completo */
:root {
  --primary: #007bff; --primary-dark: #0056b3; --secondary: #6c757d;
  --success: #28a745; --danger: #dc3545; --warning: #ffc107;
  --info: #17a2b8; --light: #f8f9fa; --dark: #343a40; --white: #ffffff;
  --gray-100: #f8f9fa; --gray-200: #e9ecef; --gray-300: #dee2e6;
  --gray-400: #ced4da; --gray-500: #adb5bd; --gray-600: #6c757d;
  --gray-700: #495057; --gray-800: #343a40; --gray-900: #212529;
  --border-radius: 0.25rem; --border-radius-lg: 0.5rem;
  --border-color: var(--gray-300);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.05); --shadow: 0 2px 4px rgba(0,0,0,.1);
  --shadow-md: 0 4px 6px rgba(0,0,0,.1); --shadow-lg: 0 10px 15px rgba(0,0,0,.1);
  --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem;
  --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-xxl: 3rem;
  --font-size-xs: 0.75rem; --font-size-sm: 0.875rem; --font-size-base: 1rem;
  --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --font-size-xxl: 1.5rem;
  --sidebar-width: 250px; --topbar-height: 60px;
  --transition: all 0.3s ease;
}

/* === portal\tokens.css === */
:root {
  --portal-blue: #2563eb;
  --portal-blue-700: #1d4ed8;
  --portal-teal: #0f9f8a;
  --portal-green: #16a34a;
  --portal-amber: #f59e0b;
  --portal-orange: #f97316;
  --portal-red: #dc2626;
  --portal-indigo: #4f46e5;
  --portal-ink: #111827;
  --portal-ink-2: #243044;
  --portal-muted: #64748b;
  --portal-soft: #f4f7fb;
  --portal-soft-2: #eaf0f7;
  --portal-surface: #ffffff;
  --portal-line: #d9e2ec;
  --portal-line-soft: #e8eef5;
  --portal-sidebar: #121922;
  --portal-radius: 8px;
  --portal-shadow-sm: 0 1px 2px rgba(15, 23, 42, .08);
  --portal-shadow: 0 12px 28px rgba(15, 23, 42, .08);
  --portal-shadow-lg: 0 24px 54px rgba(15, 23, 42, .15);
  --portal-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --portal-transition: color .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

/* === portal\base.css === */
html,
body,
body.app {
  min-height: 100%;
  background:
    linear-gradient(140deg, rgba(37, 99, 235, .07), transparent 24rem),
    linear-gradient(180deg, #f8fafc 0%, #eef3f8 100%);
  color: var(--portal-ink);
  font-family: var(--portal-font);
}

body {
  letter-spacing: 0;
}

a {
  color: var(--portal-blue);
}

a:hover {
  color: var(--portal-blue-700);
}

button,
input,
select,
textarea {
  font: inherit;
}

canvas {
  display: block;
}

.main-content {
  background: transparent;
}

.content {
  padding: 24px;
}

@media (max-width: 768px) {
  .content {
    padding: 14px;
  }
}

/* === portal\layout.css === */
.sidebar {
  background: var(--portal-sidebar);
  border-right: 1px solid rgba(255, 255, 255, .08);
}

.sidebar-header {
  min-height: 76px;
  padding: 18px 20px;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.sidebar-header i,
.sidebar-user-avatar {
  color: #fff;
  background: var(--portal-blue);
}

.sidebar-brand-logo {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  object-fit: contain;
  border-radius: 14px;
  background: rgba(37, 99, 235, .18);
  border: 1px solid rgba(255, 255, 255, .12);
  box-shadow: 0 10px 24px rgba(0, 0, 0, .24);
}

.sidebar-header h2 {
  font-size: 18px;
  letter-spacing: 0;
}

.sidebar-user {
  padding: 16px 18px;
}

.sidebar-user-avatar {
  width: 42px;
  height: 42px;
  border-radius: var(--portal-radius);
}

.sidebar-menu {
  padding: 10px 10px 16px;
}

.sidebar-menu-item {
  min-height: 44px;
  margin: 4px 0;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: var(--portal-radius);
  color: #d4deec;
}

.sidebar-menu-item:hover {
  color: #fff;
  background: rgba(255, 255, 255, .07);
  border-color: rgba(255, 255, 255, .08);
}

.sidebar-menu-item.active {
  color: #fff;
  background: var(--portal-blue);
  border-left: 0;
  box-shadow: 0 14px 30px rgba(0, 0, 0, .22);
}

.sidebar-footer {
  padding: 14px 16px 18px;
}

.sidebar-logout {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  border: 1px solid var(--danger, #dc3545);
  border-radius: var(--portal-radius);
  color: #fff;
  background: var(--danger, #dc3545);
  text-decoration: none;
  box-shadow: 0 10px 22px rgba(220, 53, 69, .20);
}

.topbar {
  min-height: 64px;
  background: rgba(255, 255, 255, .94);
  border-bottom: 1px solid rgba(217, 226, 236, .9);
  box-shadow: 0 8px 24px rgba(15, 23, 42, .05);
  backdrop-filter: blur(14px);
}

.topbar-left h1 {
  margin: 0;
  color: var(--portal-ink);
  font-size: 20px;
  font-weight: 800;
  letter-spacing: 0;
}

.topbar-user {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #f8fafc;
  color: var(--portal-ink);
}

@media (max-width: 768px) {
  #app-sidebar {
    z-index: 1205;
  }

  .topbar {
    position: sticky;
    top: 0;
    z-index: 900;
    min-height: 60px;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .topbar-left {
    min-width: 0;
    width: 100%;
  }

  .topbar-left h1 {
    max-width: 100%;
    font-size: 18px;
  }

  .topbar-right {
    display: none;
  }

  .menu-toggle {
    position: fixed !important;
    top: auto !important;
    right: 18px !important;
    bottom: 18px !important;
    right: calc(18px + env(safe-area-inset-right, 0px)) !important;
    bottom: calc(18px + env(safe-area-inset-bottom, 0px)) !important;
    left: auto !important;
    z-index: 1210 !important;
    width: 58px;
    height: 58px;
    min-height: 58px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #14324a;
    color: #fff;
    box-shadow: 0 18px 34px rgba(15, 23, 42, .34);
  }

  .menu-toggle[aria-expanded="true"] {
    background: #0f172a;
    color: #fff;
  }

  body.portal-mobile-menu-open .menu-toggle {
    top: 16px !important;
    right: auto !important;
    bottom: auto !important;
    left: min(calc(82vw - 62px), calc(100vw - 116px), 242px) !important;
    width: 44px;
    height: 44px;
    min-height: 44px;
    border-radius: 12px;
    background: rgba(15, 23, 42, .96);
    box-shadow: none;
  }

  .sidebar {
    width: min(82vw, 304px);
    max-width: calc(100vw - 72px);
    height: 100dvh;
    z-index: 1200;
    box-shadow: 1px 0 0 rgba(148, 163, 184, .24);
  }

  .sidebar-overlay {
    z-index: 1190;
    background: rgba(15, 23, 42, .42);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  body.portal-mobile-menu-open {
    overflow: hidden;
  }
}

/* === portal\components.css === */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 38px;
  border-radius: var(--portal-radius);
  font-weight: 750;
  letter-spacing: 0;
  transition: var(--portal-transition);
}

.btn i {
  margin-right: 0;
}

.btn-primary {
  color: #fff;
  background: var(--portal-blue);
  border-color: var(--portal-blue);
}

.btn-primary:hover {
  color: #fff;
  background: var(--portal-blue-700);
  border-color: var(--portal-blue-700);
}

.btn-secondary {
  color: var(--portal-ink);
  background: #f8fafc;
  border-color: var(--portal-line);
}

.btn-secondary:hover {
  color: var(--portal-ink);
  background: #eef4fb;
}

.btn-success {
  color: #fff;
  background: var(--portal-green);
  border-color: var(--portal-green);
}

.btn-success:hover {
  color: #fff;
}

.btn-warning {
  color: #92400e;
  background: #fef3c7;
  border-color: #fde68a;
}

.btn-danger {
  color: #fff;
  background: var(--portal-red);
  border-color: var(--portal-red);
}

.btn-danger:hover {
  color: #fff;
}

.card,
.dash-card,
.portal-card,
.panel-card {
  background: rgba(255, 255, 255, .96);
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  box-shadow: var(--portal-shadow);
}

.panel-card {
  padding: 18px;
}

.card-header {
  background: transparent;
  border-bottom: 1px solid var(--portal-line-soft);
}

.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.panel-head h3 {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0;
  color: var(--portal-ink);
  font-size: 16px;
  font-weight: 850;
}

.badge {
  border-radius: 999px;
  letter-spacing: 0;
}

.portal-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.portal-empty {
  padding: 22px;
  border: 1px dashed #cbd5e1;
  border-radius: var(--portal-radius);
  background: #f8fafc;
  color: var(--portal-muted);
  text-align: center;
}

.portal-muted {
  color: var(--portal-muted);
}

.portal-loading {
  opacity: .68;
  pointer-events: none;
}

.status-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
}

.status-falta,
.audit-falta {
  color: #9a3412;
  background: #fff7ed;
  border: 1px solid #fed7aa;
}

.status-pendiente,
.audit-pendiente {
  color: #1d4ed8;
  background: #eef4ff;
  border: 1px solid #bfdbfe;
}

.status-rechazado,
.audit-rechazado {
  color: #991b1b;
  background: #fef2f2;
  border: 1px solid #fecaca;
}

.status-aprobado,
.audit-aprobado {
  color: #166534;
  background: #ecfdf3;
  border: 1px solid #bbf7d0;
}

.status-vencido,
.audit-vencido {
  color: #9f1239;
  background: #ffe4e6;
  border: 1px solid #fecdd3;
}

.status-por-vencer,
.audit-porvencer {
  color: #92400e;
  background: #fef3c7;
  border: 1px solid #fde68a;
}

.list-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.data-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fbfdff;
  color: inherit;
  text-decoration: none;
}

.data-row:hover,
.data-row:focus-visible {
  color: inherit;
  text-decoration: none;
  border-color: rgba(37, 99, 235, .34);
  box-shadow: var(--portal-shadow-sm);
}

.data-row strong {
  color: var(--portal-ink);
}

.data-row small {
  display: block;
  margin-top: 3px;
  color: var(--portal-muted);
}

.progress-line {
  width: 100%;
  height: 9px;
  overflow: hidden;
  border: 0;
  border-radius: 999px;
  background: #e8eef5;
  appearance: none;
}

.progress-line::-webkit-progress-bar {
  border-radius: 999px;
  background: #e8eef5;
}

.progress-line::-webkit-progress-value {
  border-radius: 999px;
  background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal));
}

.progress-line::-moz-progress-bar {
  border-radius: 999px;
  background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal));
}

@media (max-width: 768px) {
  .panel-card {
    padding: 14px;
  }

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

/* === portal\forms.css === */
.form-control {
  min-height: 40px;
  border-color: #cbd5e1;
  border-radius: var(--portal-radius);
  color: var(--portal-ink);
}

.form-control:focus {
  border-color: var(--portal-blue);
  box-shadow: 0 0 0 4px rgba(37, 99, 235, .14);
}

.search-command {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid #cbd5e1;
  border-radius: var(--portal-radius);
  background: var(--portal-surface);
  box-shadow: var(--portal-shadow-sm);
}

.search-command i {
  color: var(--portal-muted);
}

.search-command input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--portal-ink);
  font: inherit;
}

.search-command:focus-within {
  border-color: var(--portal-blue);
  box-shadow: 0 0 0 4px rgba(37, 99, 235, .14);
}

/* === portal\dashboard.css === */
.dashboard-page {
  gap: 18px;
}

.dashboard-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  overflow: hidden;
  padding: 24px;
  border: 1px solid #dbe7f0;
  border-radius: var(--portal-radius);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(236, 253, 245, .96) 48%, rgba(224, 242, 254, .92)),
    #f8fafc;
  color: #0f172a;
  box-shadow: var(--portal-shadow-lg);
}

.dashboard-hero::after {
  content: "";
  position: absolute;
  inset: 0 0 0 auto;
  width: 36%;
  background:
    linear-gradient(135deg, rgba(14, 165, 233, .12), rgba(16, 185, 129, .16)),
    repeating-linear-gradient(0deg, rgba(15, 23, 42, .05) 0 1px, transparent 1px 20px);
  pointer-events: none;
}

.dashboard-hero-main,
.dashboard-hero-side {
  position: relative;
  z-index: 1;
}

.dashboard-hero-eyebrow {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 10px;
  color: #0f766e;
  font-size: 12px;
  font-weight: 850;
  text-transform: uppercase;
}

.dashboard-hero h2 {
  margin: 0;
  color: #0f172a;
  font-size: clamp(30px, 4vw, 48px);
  line-height: 1;
  letter-spacing: 0;
}

.dashboard-hero p {
  max-width: 760px;
  margin: 10px 0 0;
  color: #334155;
}

.dashboard-hero-meta {
  color: #0f766e;
  font-size: 17px;
  font-weight: 800;
}

.dashboard-hero-phrase {
  max-width: 700px;
  margin-top: 8px;
  color: #475569;
  font-size: 14px;
}

.dashboard-hero .search-command {
  max-width: 760px;
  margin-top: 18px;
  border-color: rgba(255, 255, 255, .35);
  background: rgba(255, 255, 255, .98);
}

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

.portal-mini-stat {
  min-height: 84px;
  padding: 14px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: rgba(255, 255, 255, .9);
}

.dashboard-hero .portal-mini-stat {
  border-color: #dbe7f0;
  background: rgba(255, 255, 255, .82);
  box-shadow: 0 10px 24px rgba(15, 23, 42, .08);
}

.portal-mini-stat span {
  display: block;
  color: var(--portal-muted);
  font-size: 12px;
  font-weight: 850;
}

.dashboard-hero .portal-mini-stat span {
  color: #64748b;
}

.portal-mini-stat strong {
  display: block;
  margin-top: 4px;
  color: var(--portal-ink);
  font-size: 28px;
  line-height: 1;
}

.dashboard-hero .portal-mini-stat strong {
  color: #0f172a;
}

.metric-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(188px, 1fr));
  gap: 12px;
}

.metric-card {
  position: relative;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 12px;
  min-height: 112px;
  padding: 16px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background:
    linear-gradient(180deg, #fff, #fbfdff);
  color: inherit;
  text-decoration: none;
  box-shadow: var(--portal-shadow-sm);
  transition: var(--portal-transition);
}

.metric-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  border-radius: var(--portal-radius) 0 0 var(--portal-radius);
  background: var(--portal-blue);
}

.metric-card:hover,
.metric-card:focus-visible {
  color: inherit;
  text-decoration: none;
  border-color: rgba(37, 99, 235, .34);
  box-shadow: var(--portal-shadow);
  transform: translateY(-1px);
}

.metric-icon {
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--portal-radius);
  background: #eef4ff;
  color: var(--portal-blue);
}

.metric-card.is-accent::before { background: var(--portal-teal); }
.metric-card.is-accent .metric-icon { background: #e7f8f5; color: var(--portal-teal); }
.metric-card.is-warning::before { background: var(--portal-orange); }
.metric-card.is-warning .metric-icon { background: #fff7ed; color: #c2410c; }
.metric-card.is-danger::before { background: var(--portal-red); }
.metric-card.is-danger .metric-icon { background: #fef2f2; color: var(--portal-red); }
.metric-card.is-success::before { background: var(--portal-green); }
.metric-card.is-success .metric-icon { background: #ecfdf3; color: var(--portal-green); }

.metric-card.is-loading {
  overflow: hidden;
  pointer-events: none;
}

.metric-card.is-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .72), transparent);
  transform: translateX(-100%);
  animation: metric-shimmer 1.35s ease-in-out infinite;
}

.metric-card.is-loading .metric-icon i {
  animation: metric-spin 1s linear infinite;
}

.metric-card.is-loading .metric-value,
.metric-card.is-loading .metric-note {
  display: block;
  overflow: hidden;
  border-radius: 999px;
  color: transparent;
  background: #e8eef6;
}

.metric-card.is-loading .metric-value {
  width: 82px;
  height: 30px;
}

.metric-card.is-loading .metric-note {
  width: 132px;
  height: 12px;
}

@keyframes metric-shimmer {
  100% { transform: translateX(100%); }
}

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

.metric-label {
  display: block;
  color: var(--portal-muted);
  font-size: 12px;
  font-weight: 850;
  text-transform: uppercase;
}

.metric-value {
  display: block;
  margin-top: 4px;
  color: var(--portal-ink);
  font-size: 31px;
  line-height: 1;
  font-weight: 900;
}

.metric-note {
  display: block;
  margin-top: 6px;
  color: var(--portal-muted);
  font-size: 12px;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
}

.dashboard-grid.is-balanced {
  align-items: stretch;
}

.dashboard-grid.dashboard-grid-wide {
  grid-template-columns: minmax(0, 1fr);
}

.chart-box {
  position: relative;
  min-height: 300px;
}

.chart-box canvas {
  width: 100% !important;
  height: 300px !important;
}

.chart-box.chart-box-wide {
  min-height: 380px;
}

.chart-box.chart-box-wide canvas {
  height: 380px !important;
}

.chart-fallback-list {
  display: grid;
  gap: 10px;
}

.chart-fallback-row {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(160px, 3fr) auto;
  gap: 10px;
  align-items: center;
}

.chart-fallback-track {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8eef5;
}

.chart-fallback-track span {
  display: block;
  width: calc(var(--bar-value, 0) * 1%);
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--portal-blue), var(--portal-teal));
}

.command-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fbfdff;
  color: inherit;
  text-decoration: none;
}

.command-card:hover,
.command-card:focus-visible {
  color: inherit;
  text-decoration: none;
  border-color: rgba(37, 99, 235, .32);
  background: #f5f9ff;
}

.command-card i {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 38px;
  border-radius: var(--portal-radius);
  background: #eef4ff;
  color: var(--portal-blue);
}

.command-card strong,
.command-card span span {
  display: block;
}

.command-card strong {
  color: var(--portal-ink);
}

.command-card span span {
  margin-top: 2px;
  color: var(--portal-muted);
  font-size: 12px;
}

@media (min-width: 980px) {
  .dashboard-hero {
    grid-template-columns: minmax(0, 1.35fr) minmax(340px, .65fr);
  }
}

@media (min-width: 1120px) {
  .dashboard-grid {
    grid-template-columns: minmax(0, 1.2fr) minmax(360px, .8fr);
  }

  .dashboard-grid.is-balanced {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .dashboard-grid.dashboard-grid-wide {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 768px) {
  .dashboard-hero {
    padding: 18px;
  }

  .dashboard-hero-side,
  .metric-grid {
    grid-template-columns: 1fr;
  }

  .chart-fallback-row {
    grid-template-columns: 1fr;
  }
}

/* === portal\audit.css === */
.audit-pos {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.audit-intake {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  padding: 18px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fff;
  color: var(--portal-ink);
  box-shadow: var(--portal-shadow);
}

.audit-choice-panel {
  display: grid;
  gap: 12px;
}

.audit-intake .dashboard-hero-eyebrow {
  color: var(--portal-blue);
}

.audit-intake h2 {
  margin: 0;
  color: var(--portal-ink);
  font-size: 24px;
  line-height: 1.12;
}

.audit-mode-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.audit-mode-card {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 68px;
  padding: 12px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #f8fbff;
  color: var(--portal-ink);
  cursor: pointer;
  text-align: left;
}

.audit-mode-card:hover,
.audit-mode-card:focus-visible {
  border-color: rgba(37, 99, 235, .38);
  background: #eef4ff;
}

.audit-mode-card i {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--portal-radius);
  background: #eef4ff;
  color: var(--portal-blue);
}

.audit-mode-card strong,
.audit-mode-card span {
  display: block;
}

.audit-mode-card span {
  color: var(--portal-muted);
  font-size: 12px;
}

.audit-mode-card.is-active {
  border-color: rgba(37, 99, 235, .55);
  background: #eef4ff;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .16);
}

.audit-step-panel {
  padding: 16px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #f8fbff;
}

.audit-step-label {
  display: block;
  margin-bottom: 10px;
  color: var(--portal-muted);
  font-size: 12px;
  font-weight: 850;
  text-transform: uppercase;
}

.audit-step-panel[hidden],
.panel-card[hidden],
.audit-dossier[hidden] {
  display: none !important;
}

.audit-search-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.audit-search-row .search-command {
  background: #fff;
}

.audit-search-row input:disabled {
  color: #64748b;
  background: #f1f5f9;
  cursor: not-allowed;
}

.audit-results-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: 10px;
}

.audit-result-card {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  width: 100%;
  padding: 14px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fff;
  color: inherit;
  cursor: pointer;
  text-align: left;
  box-shadow: var(--portal-shadow-sm);
}

.audit-result-card:hover,
.audit-result-card:focus-visible,
.audit-result-card.is-active {
  border-color: rgba(37, 99, 235, .38);
  box-shadow: var(--portal-shadow);
}

.audit-result-icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--portal-radius);
  background: #eef4ff;
  color: var(--portal-blue);
}

.audit-result-title {
  display: block;
  overflow: hidden;
  color: var(--portal-ink);
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.audit-result-meta {
  display: block;
  overflow: hidden;
  margin-top: 2px;
  color: var(--portal-muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.audit-dossier {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
}

.audit-dossier-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: start;
}

.audit-dossier-head h3 {
  margin: 6px 0 0;
  color: var(--portal-ink);
  font-size: 26px;
  line-height: 1.08;
}

.audit-score-ring {
  width: 112px;
  height: 112px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background:
    conic-gradient(var(--portal-teal) calc(var(--score, 0) * 1%), #e8eef5 0);
}

.audit-score-ring span {
  width: 82px;
  height: 82px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #fff;
  color: var(--portal-ink);
  font-size: 24px;
  font-weight: 900;
}

.audit-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
}

.audit-quick-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 14px;
  border: 1px solid #dbe4ee;
  border-left: 4px solid var(--portal-blue);
  border-radius: var(--portal-radius);
  background: #fff;
}

.audit-quick-panel > div {
  min-width: 0;
}

.audit-quick-panel strong,
.audit-quick-panel small {
  display: block;
}

.audit-quick-panel strong {
  margin-top: 5px;
  color: var(--portal-ink);
  font-size: 16px;
}

.audit-quick-panel small {
  margin-top: 2px;
  color: var(--portal-muted);
  font-size: 12px;
  line-height: 1.35;
}

.audit-period-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #eef4ff;
  color: var(--portal-blue);
  font-size: 11px;
  font-weight: 850;
}

.audit-focus-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
}

.audit-focus-item {
  padding: 12px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fbfdff;
}

.audit-focus-item span {
  display: block;
  color: var(--portal-muted);
  font-size: 12px;
  font-weight: 850;
}

.audit-focus-item strong {
  display: block;
  margin-top: 4px;
  color: var(--portal-ink);
}

.audit-overview-block {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #f8fbff;
}

.audit-overview-title {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--portal-ink);
  font-size: 13px;
  font-weight: 850;
}

.audit-doc-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}

.audit-doc-groups {
  display: grid;
  gap: 12px;
}

.audit-doc-group {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fff;
}

.audit-doc-group-head {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
}

.audit-doc-group-head strong,
.audit-doc-group-head small {
  display: block;
  min-width: 0;
}

.audit-doc-group-head strong {
  color: var(--portal-ink);
}

.audit-doc-group-head small {
  margin-top: 2px;
  color: var(--portal-muted);
  font-size: 12px;
}

.audit-doc-group-icon {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--portal-radius);
  background: #eef4ff;
  color: var(--portal-blue);
}

.audit-doc-group-count {
  min-width: 32px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #eef2f7;
  color: var(--portal-ink);
  font-size: 12px;
  font-weight: 900;
  text-align: center;
}

.audit-doc-group.is-warning .audit-doc-group-icon { background: #fff7ed; color: #c2410c; }
.audit-doc-group.is-info .audit-doc-group-icon { background: #eef4ff; color: var(--portal-blue); }
.audit-doc-group.is-danger .audit-doc-group-icon { background: #fef2f2; color: var(--portal-red); }
.audit-doc-group.is-success .audit-doc-group-icon { background: #ecfdf3; color: var(--portal-green); }

.audit-doc-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--portal-line-soft);
  border-radius: var(--portal-radius);
  background: #fff;
}

.audit-doc-main strong {
  display: block;
  overflow-wrap: anywhere;
  color: var(--portal-ink);
}

.audit-doc-main small {
  display: block;
  margin-top: 4px;
  color: var(--portal-muted);
}

.audit-doc-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin-top: 8px;
  color: var(--portal-muted);
  font-size: 12px;
}

.audit-doc-meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.audit-doc-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 8px;
}

.audit-doc-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
}

.audit-dossier {
  gap: 10px;
}

.audit-dossier-head h3 {
  font-size: 22px;
}

.audit-summary {
  grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
  gap: 8px;
}

.audit-summary .portal-mini-stat {
  min-height: 0;
  padding: 10px 11px;
}

.audit-summary .portal-mini-stat strong {
  font-size: 20px;
}

.audit-doc-group {
  gap: 8px;
  padding: 10px;
}

.audit-doc-group-head {
  grid-template-columns: 32px minmax(0, 1fr) auto;
}

.audit-doc-group-icon {
  width: 32px;
  height: 32px;
}

.audit-doc-card {
  gap: 8px;
  padding: 10px 12px;
  border-radius: 10px;
  background: #fbfdff;
}

.audit-doc-main strong {
  font-size: 13px;
  line-height: 1.25;
}

.audit-doc-tags {
  gap: 6px;
  margin-bottom: 6px;
}

.audit-doc-meta {
  gap: 4px 10px;
  margin-top: 6px;
  font-size: 11px;
}

.audit-doc-actions {
  gap: 6px;
}

.audit-doc-actions .btn {
  padding: 6px 9px;
  font-size: 11px;
}

.audit-worker-activities {
  display: grid;
  gap: 8px;
  padding: 11px;
  border: 1px solid var(--portal-line-soft);
  border-left: 4px solid var(--portal-teal);
  border-radius: var(--portal-radius);
  background: #fff;
}

.audit-worker-activities-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: var(--portal-ink);
  font-size: 13px;
  font-weight: 850;
}

.audit-worker-activities-head span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

.audit-worker-activities-head strong {
  min-width: 28px;
  padding: 3px 8px;
  border-radius: 999px;
  background: #e8fbf7;
  color: #0f766e;
  text-align: center;
}

.audit-worker-activity-list {
  display: grid;
  gap: 7px;
}

.audit-worker-activity {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) auto;
  gap: 9px;
  align-items: center;
  padding: 8px 9px;
  border: 1px solid #e6edf5;
  border-radius: 10px;
  background: #fbfdff;
  color: inherit;
  text-decoration: none;
}

.audit-worker-activity:hover,
.audit-worker-activity:focus-visible {
  border-color: rgba(20, 184, 166, .45);
  background: #f0fdfa;
}

.audit-worker-activity-icon {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  background: #e8fbf7;
  color: #0f766e;
}

.audit-worker-activity-main {
  min-width: 0;
}

.audit-worker-activity-main strong,
.audit-worker-activity-main small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.audit-worker-activity-main strong {
  color: var(--portal-ink);
  font-size: 13px;
}

.audit-worker-activity-main small {
  margin-top: 2px;
  color: var(--portal-muted);
  font-size: 11px;
}

@media (min-width: 980px) {
  .audit-intake {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (min-width: 860px) {
  .audit-doc-card {
    grid-template-columns: minmax(0, 1fr) auto;
  }
}

@media (max-width: 768px) {
  .audit-intake,
  .audit-step-panel {
    padding: 16px;
  }

  .audit-intake {
    gap: 12px;
  }

  .audit-intake h2 {
    font-size: 28px;
  }

  .audit-mode-grid,
  .audit-search-row,
  .audit-dossier-head {
    grid-template-columns: 1fr;
  }

  .audit-mode-card {
    min-height: 58px;
  }

  .audit-result-card {
    grid-template-columns: 40px minmax(0, 1fr);
  }

  .audit-result-card .badge {
    grid-column: 2;
    justify-self: start;
  }

  .audit-score-ring {
    width: 96px;
    height: 96px;
  }

  .audit-score-ring span {
    width: 70px;
    height: 70px;
    font-size: 20px;
  }

  .audit-doc-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    justify-content: stretch;
    width: 100%;
  }

  .audit-doc-actions .btn {
    width: 100%;
  }

  .audit-quick-panel {
    align-items: stretch;
    flex-direction: column;
  }

  .audit-quick-panel .btn {
    width: 100%;
  }

  .audit-doc-group {
    padding: 10px;
  }

  .audit-intake,
  .audit-step-panel {
    padding: 12px;
  }

  .audit-intake h2 {
    font-size: 22px;
  }

  .audit-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .audit-doc-meta span:nth-child(n+3) {
    display: none;
  }

  .audit-worker-activity {
    grid-template-columns: 30px minmax(0, 1fr);
  }

  .audit-worker-activity .badge {
    grid-column: 2;
    justify-self: start;
  }
}

/* === portal\utilities.css === */
.mobile-only {
  display: none;
}

.portal-no-margin {
  margin: 0 !important;
}

.portal-mt-1 {
  margin-top: 8px !important;
}

.portal-mt-2 {
  margin-top: 12px !important;
}

.portal-mt-3 {
  margin-top: 16px !important;
}

.portal-text-right {
  text-align: right !important;
}

.portal-full {
  width: 100% !important;
}

@media (max-width: 768px) {
  .mobile-only {
    display: initial;
  }
}

/* === portal\pages\admin-vigilancia.css === */
/* Extracted from admin\vigilancia.html for portal v3.1 */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
    @media (max-width: 900px) { .grid-2 { grid-template-columns: 1fr; } }

/* === portal\pages\admin-telegram.css === */
/* Extracted from admin\telegram.html for portal v3.1 */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
    @media (max-width: 900px) { .grid-2 { grid-template-columns: 1fr; } }
    .mono { font-family: Consolas, Monaco, 'Courier New', monospace; font-size: 12px; white-space: pre-wrap; }
    .chat-row-btn { cursor: pointer; color: #0f6cf0; text-decoration: underline; background: none; border: none; padding: 0; }

/* === portal\pages\admin-seguimiento-empresas.css === */
/* Extracted from admin\seguimiento_empresas.html for portal v3.1 */
.mini-hint { font-size: 12px; color: #6b7280; }
    .kpi-badge a { text-decoration: none; }
    .seguimiento-toolbar {
      margin-bottom: 0;
      flex: 1 1 360px;
      min-width: min(100%, 320px);
      justify-content: flex-end;
    }
    .seguimiento-toolbar .filter-field.fixed {
      flex: 1 1 280px;
      min-width: min(100%, 280px);
      max-width: 360px;
    }
    .seguimiento-toolbar .filter-actions {
      width: auto;
      flex: 0 0 auto;
    }
    @media (max-width: 768px) {
      .seguimiento-toolbar .filter-field.fixed,
      .seguimiento-toolbar .filter-actions {
        max-width: none;
      }
    }

/* === portal\pages\admin-empresa-panel.css === */
/* Extracted from admin\empresa_panel.html for portal v3.1 */
.section-title { display:flex; justify-content:space-between; align-items:end; gap:12px; flex-wrap:wrap; }
    .section-title h3 { margin:0; }
    .kpi-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
    /* Usar los KPI cards globales (components.css). Solo ajustamos el pill para contraste. */
    .pill { display:inline-block; padding:2px 8px; border-radius:999px; font-size:12px; background:rgba(255,255,255,.18); color:#fff; margin-left:6px; }
    .kpi-card.warning .pill { background:rgba(0,0,0,.12); color:#212529; }
    .kpi-card .kpi-value { font-size:1.8rem; }
    .kpi-card .kpi-label { font-size:0.78rem; }
    .mini-muted { font-size:12px; color:#6b7280; }
    .table-sortable th[data-sort-type] { cursor:pointer; user-select:none; position:relative; padding-right:18px; }
    .table-sortable th[data-sort-type]::after { content:''; display:none; }

    /* Modal: lista de documentos (mejor UX que tabla ancha) */
    .doc-cards { display:flex; flex-direction:column; gap:10px; margin-top:12px; }
    .doc-card { border:1px solid var(--gray-200); border-radius: var(--border-radius); padding:12px; background: var(--white); }
    .doc-card-header { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; flex-wrap:wrap; }
    .doc-card-title { font-weight:700; }
    .doc-file { max-width:520px; word-break:break-word; }
    .doc-meta { display:grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap:8px 14px; margin-top:10px; }
    .doc-meta .k { font-size:11px; color: var(--gray-600); text-transform:uppercase; letter-spacing:.3px; }
    .doc-meta .v { font-size:13px; }
    .doc-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; margin-top:10px; }
    .period-explain { border:1px solid #dbeafe; background:#eff6ff; color:#1e3a8a; border-radius:8px; padding:10px 12px; font-size:13px; line-height:1.4; }
    .doc-state-strip { display:grid; grid-template-columns:repeat(auto-fit, minmax(130px, 1fr)); gap:8px; margin:12px 0; }
    .doc-state-card { border:1px solid #dfe8f2; background:#fff; border-radius:8px; padding:10px 12px; }
    .doc-state-card span { display:block; color:#64748b; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
    .doc-state-card strong { display:block; margin-top:3px; font-size:20px; color:#132338; }
    .company-period-admin { display:flex; gap:14px; flex-wrap:wrap; align-items:center; justify-content:space-between; margin-bottom:12px; padding:14px 16px; border:1px solid #dbe4ee; border-left:4px solid #2563eb; border-radius:8px; background:#fff; box-shadow:0 12px 28px -30px rgba(15, 23, 42, .48); }
    .company-period-main { min-width:0; flex:1 1 260px; }
    .company-period-kicker { margin-bottom:5px; color:#64748b; font-size:10px; font-weight:850; letter-spacing:.08em; line-height:1.2; text-transform:uppercase; }
    .company-period-current { display:inline-flex; align-items:center; gap:10px; min-height:0; max-width:100%; padding:0; border:0; border-radius:0; background:transparent; color:#10213b; font-size:18px; font-weight:900; line-height:1.25; }
    .company-period-current i { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; width:34px; height:34px; border-radius:8px; background:#eaf2ff; color:#2563eb; }
    .company-period-current span { min-width:0; overflow:hidden; text-overflow:ellipsis; }
    .company-period-note { margin-top:6px; color:#64748b; font-size:12px; line-height:1.4; }
    .company-period-admin-manual { margin-top:8px; color:#475569; font-size:13px; }
    .company-period-admin-manual summary { cursor:pointer; font-weight:800; }
    .company-period-admin-manual input { margin-top:8px; max-width:210px; }
    .company-period-admin-score { text-align:right; color:#162033; font-size:16px; font-weight:800; }
    @media (max-width: 768px) {
      .doc-file { max-width:100%; }
      .doc-actions { justify-content:flex-start; }
      .company-period-admin,
      .company-period-current,
      .company-period-admin-manual input,
      .company-period-admin-score { width:100%; max-width:100%; text-align:left; }
      .company-period-admin { padding:13px 14px; }
    }
    /* Progreso (Trabajadores) - compacto tipo "barrita" */
    .pc-progress-wrap { display:flex; flex-direction:column; gap:4px; min-width:140px; }
    .pc-progress { position:relative; width:100%; height:14px; background: var(--gray-200); border-radius:999px; overflow:hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.08); }
    .pc-progress-bar { height:100%; width:0; border-radius:999px; transition: width .3s ease; }
    .pc-progress-bar.success { background: linear-gradient(90deg, #1f9d55 0%, #29b765 100%); }
    .pc-progress-bar.warning { background: var(--warning); }
    .pc-progress-bar.danger { background: linear-gradient(90deg, #d92d20 0%, #ef4444 100%); }
    .pc-progress-bar.secondary { background: var(--secondary); }
    /* Etiqueta centrada: usar un "pill" para que APTO/NO APTO sea legible incluso cuando el progreso es 0% */
    .pc-progress-label { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; }
    .pc-progress-pill { display:inline-flex; align-items:center; justify-content:center; padding:2px 10px; border-radius:999px; font-size:10px; font-weight:900; letter-spacing:.3px; text-transform:uppercase; color:#fff; background: var(--gray-700, #374151); box-shadow:0 1px 2px rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.22); }
    .pc-progress-pill.success { background: var(--success); }
    .pc-progress-pill.warning { background: var(--warning); color:#212529; border-color: rgba(0,0,0,.12); }
    .pc-progress-pill.danger { background: var(--danger); }
    .pc-progress-pill.secondary { background: var(--gray-700, #374151); }
    .pc-progress-scale { display:flex; justify-content:space-between; font-size:10px; color: var(--gray-600); line-height:1; }
    .pc-progress-scale .mid { font-weight:800; color: var(--gray-700); }
    .pc-progress-scale .mid.success { color: var(--success); }
    .pc-progress-scale .mid.danger { color: var(--danger); }

    .workers-matrix-summary { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:10px; font-size:12px; color:#6b7280; }
    .workers-matrix-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
    .workers-matrix-tabs { display:flex; gap:6px; flex-wrap:wrap; }
    .workers-matrix-tab { border:1px solid #d7deea; background:#f3f6fb; color:#475569; border-radius:999px; padding:6px 10px; font-size:12px; font-weight:800; line-height:1; cursor:pointer; transition:all .18s ease; }
    .workers-matrix-tab:hover { border-color:#9fb6d9; background:#e8eff9; }
    .workers-matrix-tab.active { background:#0d6efd; border-color:#0d6efd; color:#fff; box-shadow:0 8px 18px -14px rgba(13, 110, 253, .85); }
    .workers-matrix-tab-count { opacity:.8; font-size:11px; margin-left:4px; }
    .workers-matrix-stack { display:flex; flex-direction:column; gap:10px; }
    .workers-matrix-section { border:1px solid #e4eaf2; border-radius:0; background:#fff; padding:12px 12px 10px; box-shadow:0 10px 22px -24px rgba(15, 23, 42, .45); }
    .workers-matrix-section.general { border-color:#d7e2f4; background:#fcfdff; }
    .workers-matrix-section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:0; }
    .workers-matrix-section-head-main { display:flex; align-items:flex-start; gap:10px; }
    .workers-matrix-section-toggle { width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #d8e2ee; background:#f8fbff; color:#64748b; border-radius:0; box-shadow:none; }
    .workers-matrix-section-toggle:hover { background:#eef4fb; color:#1f3045; border-color:#c6d4e4; }
    .workers-matrix-section-toggle i { transition:transform .18s ease; }
    .workers-matrix-section.is-collapsed .workers-matrix-section-toggle i { transform:rotate(-90deg); }
    .workers-matrix-section-title { display:flex; align-items:center; gap:6px; margin:0; font-size:15px; font-weight:700; color:#1f3045; }
    .workers-matrix-section-copy { font-size:12px; color:#708196; margin-top:3px; }
    .workers-matrix-section-meta { display:flex; gap:8px; flex-wrap:wrap; }
    .workers-matrix-section-pill { display:inline-flex; align-items:center; gap:5px; padding:4px 9px; border-radius:999px; background:#f1f5f9; color:#475569; font-size:10px; font-weight:800; }
    .workers-matrix-section-pill strong { font-size:11px; }
    .workers-matrix-section-body { margin-top:10px; }
    .workers-matrix-section.is-collapsed .workers-matrix-section-body { display:none; }
    .workers-matrix-shell { position:relative; overflow:auto; max-width:100%; max-height:min(74vh, 860px); border:1px solid var(--gray-200); border-radius:0; background:#fff; cursor:grab; user-select:none; }
    .workers-matrix-shell.is-dragging { cursor:grabbing; }
    .workers-matrix-table { width:max-content; min-width:100%; border-collapse:separate; border-spacing:0; table-layout:fixed; --wm-name-width:236px; --wm-dni-width:104px; --wm-progress-width:136px; }
    .workers-matrix-table th,
    .workers-matrix-table td { padding:0; border-right:1px solid var(--gray-200); border-bottom:1px solid var(--gray-200); }
    .workers-matrix-table thead th { position:sticky; top:0; z-index:6; background:#2563eb; color:#fff; font-size:12px; font-weight:500; letter-spacing:0; text-transform:none; white-space:normal; word-break:break-word; padding:8px 10px; line-height:1.35; vertical-align:middle; border-right-color:rgba(255,255,255,.08); }
    .workers-matrix-table thead th[data-sort-type] { position:sticky; }
    .workers-matrix-table thead th:last-child,
    .workers-matrix-table tbody td:last-child { border-right:none; }
    .workers-matrix-table tbody tr { --wm-row-bg:#fff; }
    .workers-matrix-table tbody tr:nth-child(even) { --wm-row-bg:#fbfdff; }
    .workers-matrix-table tbody tr:hover { --wm-row-bg:#eef6ff; }
    .workers-matrix-table tbody tr.is-focused-worker { --wm-row-bg:#e0f2fe; }
    .workers-matrix-table tbody td { background:var(--wm-row-bg); }
    .workers-matrix-table tbody tr.is-focused-worker td { box-shadow: inset 0 1px 0 rgba(14, 116, 144, .24), inset 0 -1px 0 rgba(14, 116, 144, .24); }
    .workers-matrix-table tbody tr.is-focused-worker .wm-col-name { box-shadow: inset 3px 0 0 #0284c7; }
    .workers-matrix-table .wm-col-name,
    .workers-matrix-table .wm-col-dni,
    .workers-matrix-table .wm-col-progress { position:sticky; z-index:4; background:var(--wm-row-bg, #fff); }
    .workers-matrix-table thead .wm-col-name,
    .workers-matrix-table thead .wm-col-dni,
    .workers-matrix-table thead .wm-col-progress { z-index:9; background:#2563eb; }
    .workers-matrix-table .wm-col-name { left:0; width:var(--wm-name-width); min-width:var(--wm-name-width); max-width:var(--wm-name-width); }
    .workers-matrix-table .wm-col-dni { left:var(--wm-name-width); width:var(--wm-dni-width); min-width:var(--wm-dni-width); max-width:var(--wm-dni-width); }
    .workers-matrix-table-admin .wm-col-progress { left:calc(var(--wm-name-width) + var(--wm-dni-width)); width:var(--wm-progress-width); min-width:var(--wm-progress-width); max-width:var(--wm-progress-width); }
    .workers-matrix-table .wm-sticky-edge::after { content:''; position:absolute; top:0; right:-10px; bottom:-1px; width:10px; pointer-events:none; box-shadow:8px 0 10px -10px rgba(15, 23, 42, .55); }
    .workers-matrix-table .wm-worker-cell,
    .workers-matrix-table .wm-meta-cell,
    .workers-matrix-table .wm-progress-cell { min-height:42px; display:flex; align-items:center; }
    .workers-matrix-table .wm-worker-cell { padding:0 10px; }
    .workers-matrix-table .wm-meta-cell { padding:0 8px; justify-content:center; font-size:12px; }
    .workers-matrix-table .wm-progress-cell { padding:6px 8px; justify-content:center; }
    .workers-matrix-table .wm-worker-link { display:block; width:100%; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:inherit; text-decoration:none; font-weight:700; }
    .workers-matrix-table .wm-worker-link:hover { text-decoration:underline; }
    .workers-matrix-table .pc-progress-wrap { min-width:auto; width:100%; max-width:112px; gap:3px; }
    .workers-matrix-table .pc-progress { height:11px; }
    .workers-matrix-table .pc-progress-pill { padding:1px 7px; font-size:9px; }
    .workers-matrix-table .pc-progress-scale { font-size:9px; }
    .workers-matrix-table .wm-req-head,
    .workers-matrix-table .wm-req-cell { width:50px; min-width:50px; max-width:50px; text-align:center; }
    .workers-matrix-table .wm-divider-col { border-left:2px solid #bcc9db; }
    .workers-matrix-table thead .wm-divider-col { box-shadow:inset 8px 0 8px -8px rgba(15, 23, 42, .35); }
    .workers-matrix-table tbody .wm-divider-col { background-image:linear-gradient(to right, rgba(148, 163, 184, .34), rgba(148, 163, 184, .34)); background-repeat:no-repeat; background-size:2px 100%; background-position:left top; }
    .workers-matrix-table .wm-req-head { cursor:default; }
    .workers-matrix-table .wm-req-head > span { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; width:50px; min-height:44px; margin:0 auto; overflow:hidden; }
    .workers-matrix-table .wm-req-cell { padding:4px 0; }
    .workers-matrix-table .wm-req-head { padding:2px 0; }
    .workers-matrix-table .wm-req-cell > div { margin:0 auto; }
    .workers-matrix-table .wm-req-main { display:block; max-width:100%; font-size:11px; line-height:1; font-weight:800; letter-spacing:0; }
    .workers-matrix-table .wm-req-main.only { font-size:12px; }
    .workers-matrix-table .wm-req-suffix { display:inline-flex; align-items:center; justify-content:center; max-width:100%; padding:1px 4px; border-radius:3px; background:rgba(255,255,255,.16); color:#fff; font-size:9px; line-height:1; font-weight:800; letter-spacing:.18px; }
    .workers-matrix-table .wm-req-main,
    .workers-matrix-table .wm-req-suffix { pointer-events:none; }
    .workers-matrix-table .req-pill { width:26px; height:26px; border-radius:3px; font-size:11px; }
    .workers-matrix-mobile { display:none; }
    .workers-matrix-mobile-list { display:none; gap:12px; }
    .worker-mobile-card { border:1px solid #dbe4ee; border-radius:0; background:#fff; padding:14px; box-shadow:none; }
    .worker-mobile-card.is-focused-worker { border-color:#0284c7; background:#f0f9ff; box-shadow:0 0 0 1px rgba(2, 132, 199, .18); }
    .worker-mobile-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; }
    .worker-mobile-main { min-width:0; flex:1 1 220px; }
    .worker-mobile-name { display:block; font-size:15px; font-weight:800; line-height:1.3; color:#162033; text-decoration:none; word-break:break-word; }
    .worker-mobile-name:hover { text-decoration:underline; }
    .worker-mobile-meta { display:flex; gap:8px; flex-wrap:wrap; margin-top:8px; }
    .worker-mobile-chip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border-radius:0; background:#f8fafc; border:1px solid #d9e3ef; color:#475569; font-size:11px; font-weight:700; }
    .worker-mobile-chip.is-ok { background:#eaf8ef; border-color:#c9ebd6; color:#16703c; }
    .worker-mobile-chip.is-pending { background:#fdecec; border-color:#f3c7c7; color:#b42318; }
    .worker-mobile-progress { flex:1 1 170px; min-width:min(100%, 170px); }
    .worker-mobile-packages { display:grid; gap:10px; margin-top:12px; }
    .worker-mobile-package { border:1px solid #e5edf6; border-radius:0; background:#fbfdff; overflow:hidden; }
    .worker-mobile-package > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; cursor:pointer; }
    .worker-mobile-package > summary::-webkit-details-marker { display:none; }
    .worker-mobile-package > summary::after { content:'+'; flex:0 0 auto; font-size:16px; line-height:1; color:#64748b; }
    .worker-mobile-package[open] > summary::after { content:'−'; }
    .worker-mobile-package-main { min-width:0; display:flex; flex-direction:column; gap:4px; }
    .worker-mobile-package-name { font-size:13px; font-weight:800; color:#162033; }
    .worker-mobile-package-copy { font-size:11px; color:#64748b; }
    .worker-mobile-package-status { display:inline-flex; align-items:center; justify-content:center; min-width:68px; padding:5px 10px; border-radius:0; font-size:11px; font-weight:800; }
    .worker-mobile-package-status.is-ok { background:#eaf8ef; border:1px solid #c9ebd6; color:#16703c; }
    .worker-mobile-package-status.is-pending { background:#fdecec; border:1px solid #f3c7c7; color:#b42318; }
    .worker-mobile-package-status.is-na { background:#f1f5f9; border:1px solid #d7e3ef; color:#475569; }
    .worker-mobile-package-body { padding:0 12px 12px; }
    .worker-mobile-req-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:8px; }
    .worker-mobile-req { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; border:1px solid #e5edf6; border-radius:0; background:#f8fbff; min-width:0; }
    .worker-mobile-req-copy { min-width:0; }
    .worker-mobile-req-code { font-size:11px; font-weight:800; line-height:1.2; color:#162033; }
    .worker-mobile-req-name { margin-top:3px; font-size:11px; line-height:1.25; color:#64748b; word-break:break-word; }
    .worker-mobile-req-pill { display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
    .worker-mobile-req .req-pill { margin:0; }
    .worker-mobile-empty { padding:12px; border:1px dashed #d9e3ef; border-radius:0; background:#fbfdff; color:#64748b; font-size:12px; text-align:center; }
    .worker-mobile-card .pc-progress,
    .worker-mobile-card .pc-progress-bar,
    .worker-mobile-card .pc-progress-pill { border-radius:0; }

    /* Matriz (Trabajadores vs R#) */
    .req-pill { width:26px; height:26px; border-radius:3px; display:flex; align-items:center; justify-content:center; margin:0 auto; font-size:12px; font-weight:900; user-select:none; cursor:pointer; border:1px solid transparent; }
    .req-pill:hover { border-color: var(--gray-400); }
    .req-pill.na { background:#edf1f5; color:transparent; cursor:default; border-color:#d1d9e2; border-style:dashed; }
    /* SIN SUBIR: que se perciba (antes era transparente y se veia "en blanco") */
    .req-pill.empty { background:#e5e7eb; color: transparent; border-color:#9ca3af; border-style: dashed; }
    .req-pill.ok { background: var(--success); color:#fff; }
    /* PENDIENTE: gris oscuro visible (antes podia verse "en blanco" por estados en minuscula) */
    .req-pill.pending { background: var(--warning); color:#78350f; }
    .req-pill.reject { background: var(--danger); color:#fff; }
    .req-pill.warn { background: var(--warning); color:#212529; }
    .req-pill.expired { background: var(--danger); color:#fff; }
    .req-pill.grace { background: #3b82f6; color:#fff; }
    .req-pill[data-disabled="1"] { cursor:default; }
    .req-pill[data-disabled="1"]:hover { border-color:transparent; }
    .company-requirements-table .req-table-stack { display:grid; gap:3px; min-width:0; }
    .company-requirements-table .req-table-main { font-size:13px; font-weight:700; line-height:1.25; color:#162033; }
    .company-requirements-table .req-table-sub { font-size:11px; line-height:1.3; color:#64748b; white-space:normal; }
    .company-requirements-table .req-table-status { justify-items:center; }
    .company-requirements-table .req-table-status .req-table-sub { text-align:center; }
    .late-delivery-note { margin-top:6px; padding:7px 9px; border-radius:7px; background:#fff1f2; border:1px solid #fecdd3; color:#b42318; font-size:11px; line-height:1.4; }
    .late-delivery-note strong { font-weight:800; }

    /* Mini popup (hover/click) */
    .req-popover { position:fixed; z-index:10050; width:284px; max-width:88vw; background: var(--white); border:1px solid #dbe4f0; border-radius:10px; box-shadow:0 16px 36px -24px rgba(15, 23, 42, .5); padding:10px; }
    .req-popover .title { font-weight:800; font-size:13px; margin-bottom:5px; color:#1f2937; }
    .req-popover .meta { font-size:11px; color: var(--gray-600); margin-bottom:7px; }
    .req-popover .desc { font-size:11px; color: var(--gray-700); white-space:pre-line; max-height:116px; overflow:auto; border:1px solid #e5ebf3; background:#f8fafc; border-radius:8px; padding:8px 9px; }
    .req-popover .actions { display:flex; justify-content:flex-end; gap:8px; margin-top:8px; }
    .req-popover .actions .btn { padding:6px 10px; font-size:12px; border-radius:8px; }
    .wm-head-tooltip { position:fixed; z-index:10040; width:260px; max-width:min(80vw, 260px); background:#fff; border:1px solid #dbe4f0; border-radius:10px; box-shadow:0 16px 36px -24px rgba(15, 23, 42, .5); padding:9px 10px; pointer-events:none; }
    .wm-head-tooltip-title { font-size:12px; font-weight:800; color:#1f2937; margin-bottom:4px; }
    .wm-head-tooltip-body { font-size:11px; color:#64748b; line-height:1.35; white-space:pre-line; }
    #trabajadores { scroll-margin-top:84px; }
    .table-responsive,
    .workers-matrix-shell { -webkit-overflow-scrolling:touch; touch-action:pan-x pan-y; overscroll-behavior-x:contain; overscroll-behavior-y:auto; }
    .table-responsive { width:100%; overflow-x:auto; overflow-y:visible; }
    .workers-matrix-shell { overflow-x:auto; overflow-y:visible; }
    .table-responsive > table:not(.table-mobile-stack) { min-width:max(100%, 680px); }
    .req-modal { display:flex; flex-direction:column; gap:12px; }
    .req-desc,
    .req-section { border:1px solid #e3ebf4; border-radius:8px; background:#fff; padding:12px; }
    .req-section-header { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
    .req-desc-title,
    .req-section-title { font-size:16px; font-weight:700; color:#162033; }
    .req-section-hint { font-size:12px; color:#64748b; }
    .req-desc-box { padding:10px 11px; border:1px solid #e5edf6; border-radius:7px; background:#f8fbff; font-size:13px; line-height:1.45; color:#475569; white-space:pre-line; }
    .req-meta { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:8px; }
    .req-meta > div { padding:9px 10px; border:1px solid #e2eaf3; border-radius:7px; background:#f8fbff; }
    .req-meta > div > strong,
    .req-meta .k { display:block; margin-bottom:4px; font-size:10px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:#64748b; }
    .req-meta .v { font-size:13px; color:#334155; }
    .req-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-start; }
    .req-actions .btn { border-radius:7px; }
    .req-modal-compact { max-width:min(980px, calc(100vw - 1rem)); width:min(980px, calc(100vw - 1rem)); max-height:calc(100vh - 1rem); display:flex; flex-direction:column; }
    .req-modal-compact .modal-body { overflow:auto; max-height:calc(100vh - 138px); }
    .req-campos-summary { padding:13px 14px; border:1px solid #e3ebf4; border-radius:8px; background:#fff; box-shadow:0 12px 28px -30px rgba(15, 23, 42, .35); }
    .req-campos-summary-label { font-size:17px; font-weight:700; letter-spacing:-.01em; color:#162033; margin-bottom:10px; }
    .req-campos-summary-list { display:grid; gap:8px; }
    .req-campos-summary-row { display:grid; grid-template-columns:1fr; gap:3px; padding:10px 11px; border:1px solid #e7eef7; border-radius:6px; background:#f8fbff; font-size:12px; line-height:1.4; color:#475569; }
    .req-campos-summary-row strong { color:#64748b; font-size:11px; font-weight:600; letter-spacing:0; text-transform:none; }
    .req-campos-summary-row span { font-size:15px; font-weight:600; line-height:1.35; color:#0f172a; word-break:break-word; }
    .modal-content.req-manage-modal { max-width:880px; width:90%; border-radius:10px; overflow:hidden; background:#fff; }
    .modal-content.req-manage-modal .modal-header { padding:14px 18px 12px; border-bottom:1px solid #e6edf5; background:linear-gradient(180deg, #fbfdff 0%, #f4f8fd 100%); }
    .modal-content.req-manage-modal .modal-header h3 { font-size:18px; font-weight:800; letter-spacing:-.02em; color:#162033; }
    .modal-content.req-manage-modal .modal-body { padding:16px; background:#f6f8fc; }
    .modal-content.req-manage-modal .modal-footer { padding:12px 18px 16px; border-top:1px solid #e6edf5; background:#fbfdff; }
    .modal-content.req-manage-modal .modal-close { width:34px; height:34px; border-radius:6px; border:1px solid #d9e4ef; background:#fff; color:#64748b; box-shadow:0 14px 28px -24px rgba(15, 23, 42, .6); }
    .modal-content.req-manage-modal .modal-close:hover { background:#f8fbff; color:#0f172a; border-color:#c9d8e8; }
    .modal-content.req-manage-modal .modal-footer .btn { min-width:102px; border-radius:7px; font-weight:800; }
    .modal-content.req-manage-modal .modal-footer .req-manage-close { border-color:#d7e1ed; background:#edf2f7; color:#334155; }
    .req-manage-layout { display:flex; flex-direction:column; gap:12px; }
    .req-manage-grid-top { display:grid; grid-template-columns:minmax(0, 1.15fr) minmax(220px, .85fr); gap:10px; }
    .req-manage-card { border:1px solid #e3ebf4; border-radius:9px; background:#fff; box-shadow:0 12px 28px -30px rgba(15, 23, 42, .35); }
    .req-manage-card-body { padding:14px; }
    .req-manage-eyebrow { font-size:10px; font-weight:800; letter-spacing:.11em; text-transform:uppercase; color:#64748b; margin-bottom:7px; }
    .req-manage-worker-row { display:flex; align-items:center; gap:10px; }
    .req-manage-avatar { width:40px; height:40px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:900; color:#0b5ed7; background:linear-gradient(135deg, #dbeafe 0%, #eff6ff 100%); }
    .req-manage-worker-name { font-size:13px; font-weight:500; color:#162033; line-height:1.2; }
    .req-manage-worker-meta { margin-top:3px; font-size:12px; color:#64748b; }
    .req-manage-code-chip { display:inline-flex; align-items:center; gap:6px; padding:4px 9px; border-radius:6px; background:#eef4fb; color:#475569; font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
    .req-manage-title-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:8px; }
    .req-manage-title { margin:0; font-size:17px; font-weight:700; line-height:1.25; color:#162033; }
    .req-manage-detail-box { margin-top:10px; padding:10px 12px; border:1px solid #e5edf6; border-radius:7px; background:#f8fbff; }
    .req-manage-detail-label { font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#748397; margin-bottom:4px; }
    .req-manage-copy { margin-top:0; font-size:13px; font-weight:400; color:#475569; line-height:1.5; white-space:pre-line; }
    .req-manage-hero { padding:14px; }
    .req-manage-hero-top { display:grid; grid-template-columns:minmax(0, 1fr); gap:12px; align-items:flex-start; }
    .req-manage-hero-status { display:flex; flex-direction:column; align-items:flex-end; gap:7px; }
    .req-manage-hero-head { padding-bottom:10px; border-bottom:1px solid #e8eef6; }
    .req-manage-meta-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; }
    .req-manage-meta-item { padding:9px 10px; border:1px solid #e2eaf3; border-radius:7px; background:#f8fbff; }
    .req-manage-meta-label { font-size:10px; font-weight:600; color:#64748b; letter-spacing:.04em; text-transform:uppercase; }
    .req-manage-meta-value { margin-top:4px; font-size:13px; font-weight:500; line-height:1.35; color:#334155; }
    .req-manage-meta-value.is-muted { color:#64748b; font-weight:500; }
    .req-manage-meta-value.is-badge { margin-top:2px; }
    .req-manage-status-card { display:flex; flex-direction:column; justify-content:space-between; gap:8px; min-height:100%; }
    .req-manage-status-badge { display:inline-flex; align-items:center; gap:6px; align-self:flex-start; padding:6px 10px; border-radius:7px; font-size:11px; font-weight:900; letter-spacing:.05em; text-transform:uppercase; border:1px solid transparent; }
    .req-manage-status-badge.compact { padding:4px 8px; font-size:10px; }
    .req-manage-status-badge.is-success { background:#eaf8ef; color:#16703c; border-color:#c9ebd6; }
    .req-manage-status-badge.is-pending { background:#eef2f7; color:#334155; border-color:#dbe3ed; }
    .req-manage-status-badge.is-danger { background:#fdecec; color:#b42318; border-color:#f3c7c7; }
    .req-manage-status-badge.is-missing { background:#fff4e2; color:#9a6700; border-color:#f1d6a6; }
    .req-manage-status-badge.is-secondary { background:#f8fafc; color:#64748b; border-color:#e2e8f0; }
    .req-manage-status-note { font-size:12px; line-height:1.45; color:#64748b; }
    .req-manage-hero-status .req-manage-status-note { max-width:220px; text-align:right; }
    .req-manage-stat-grid { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:10px; }
    .req-manage-stat { padding:10px 12px; }
    .req-manage-stat-label { font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#64748b; }
    .req-manage-stat-value { margin-top:6px; font-size:13px; font-weight:800; line-height:1.35; color:#0f172a; }
    .req-manage-panel { padding:13px 14px 14px; }
    .req-manage-panel-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
    .req-manage-panel-title { font-size:18px; font-weight:700; color:#162033; letter-spacing:-.01em; }
    .req-manage-panel-copy { margin-top:3px; font-size:11px; color:#64748b; line-height:1.4; }
    .req-manage-panel-note { display:inline-flex; align-items:center; gap:6px; padding:5px 9px; border-radius:6px; background:#f8fafc; border:1px solid #dbe4ee; font-size:10px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:#64748b; }
    .req-manage-file-actions { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
    .req-manage-file-actions .btn,
    .req-manage-review-actions .btn { padding:6px 10px; border-radius:7px; font-size:12px; font-weight:700; box-shadow:none; }
    .req-manage-file-actions .btn-open-file { background:#e8f5e9; border-color:#cce8d0; color:#1b5e20; }
    .req-manage-file-actions .btn-open-file:hover { background:#d7efdb; border-color:#b8dfbe; color:#14491a; }
    .req-manage-file-actions .btn-history-file { background:#f3f4f6; border-color:#d7dbe2; color:#374151; }
    .req-manage-file-actions .btn-history-file:hover { background:#e8ebf0; border-color:#c9ced8; color:#1f2937; }
    .modal-content.req-upload-modal { max-width:460px; width:92%; border-radius:10px; }
    .modal-content.req-upload-modal .modal-header { padding:14px 16px 12px; }
    .modal-content.req-upload-modal .modal-body { padding:16px; background:#f8fbff; }
    .modal-content.req-upload-modal .modal-footer { padding:12px 16px 16px; }
    .req-upload-layout { display:flex; flex-direction:column; gap:12px; }
    .req-upload-layout .req-manage-field > span { font-size:13px; }
    .req-upload-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
    .req-upload-actions .btn { padding:8px 12px; border-radius:7px; font-size:12px; font-weight:700; }
    .req-manage-upload-shell { border:1px solid #e2eaf3; border-radius:8px; background:#fbfdff; padding:12px; }
    .req-manage-upload-grid { display:grid; grid-template-columns:minmax(0, 1.2fr) minmax(190px, .8fr); gap:10px; }
    .req-manage-field { display:flex; flex-direction:column; gap:6px; }
    .req-manage-field > span { font-size:12px; font-weight:800; color:#475569; }
    .req-manage-field .form-control { min-height:40px; border-radius:6px; border-color:#d8e2ed; background:#fff; }
    .req-manage-dropnote { margin-top:1px; font-size:11px; color:#64748b; }
    .req-manage-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-top:10px; }
    .req-manage-actions .btn { border-radius:7px; padding:7px 11px; font-weight:700; box-shadow:none; font-size:12px; }
    .req-manage-note { padding:11px 12px; border:1px dashed #d8e3ee; border-radius:7px; background:#f8fbff; font-size:12px; line-height:1.4; color:#475569; }
    .req-manage-textarea { min-height:84px; border-radius:7px; border-color:#d8e2ed; }
    .req-manage-comment { padding:11px 12px; border:1px solid #e2eaf3; border-radius:7px; background:#f8fbff; font-size:12px; line-height:1.45; white-space:pre-line; color:#334155; }
    .req-manage-contact-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px; }
    .req-manage-contact-card { padding:10px 12px; }
    .req-manage-contact-card .req-manage-stat-label { margin-bottom:6px; display:block; }
    .req-manage-contact-card .req-manage-stat-value { margin-top:0; }
    .req-manage-review-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
    .req-manage-reject-shell { margin-top:10px; padding-top:10px; border-top:1px solid #e8eef6; }
    .req-manage-reject-shell[hidden] { display:none !important; }
    @media (max-width: 900px) {
      .content { min-width:0; }
      .section-title,
      .workers-matrix-toolbar,
      .workers-matrix-section-head { flex-direction:column; align-items:stretch; }
      .workers-matrix-section-meta { justify-content:flex-start; }
      .workers-matrix-shell { max-height:none; }
      .table-responsive > table:not(.table-mobile-stack) { min-width:620px; }
      .req-modal-compact,
      .modal-content.req-manage-modal,
      .modal-content.req-upload-modal { width:min(calc(100vw - 1rem), 760px) !important; max-width:min(calc(100vw - 1rem), 760px) !important; max-height:calc(100vh - 1rem); }
      .req-modal-compact .modal-body,
      .modal-content.req-manage-modal .modal-body,
      .modal-content.req-upload-modal .modal-body { overflow:auto; max-height:calc(100vh - 140px); }
      .req-manage-hero-top,
      .req-manage-meta-grid,
      .req-manage-grid-top,
      .req-manage-stat-grid,
      .req-manage-upload-grid,
      .req-manage-contact-grid { grid-template-columns:1fr; }
      .req-manage-hero-status { align-items:flex-start; }
      .req-manage-hero-status .req-manage-status-note { text-align:left; max-width:none; }
    }
    @media (max-width: 640px) {
      .content-header > div:last-child,
      .content-header > div:last-child > div { width:100%; }
      .content-header .form-control { width:100%; }
      .workers-matrix-summary { gap:8px; font-size:11px; }
      .workers-matrix-section { padding:10px 8px 8px; }
      .workers-matrix-section-copy { font-size:11px; }
      .workers-matrix-section-pill { font-size:10px; }
      .workers-matrix-table .req-pill,
      .req-pill { width:22px; height:22px; font-size:10px; }
      .table-responsive > table:not(.table-mobile-stack) { min-width:560px; }
      .req-modal-compact,
      .modal-content.req-manage-modal,
      .modal-content.req-upload-modal { width:calc(100vw - .5rem) !important; max-width:calc(100vw - .5rem) !important; margin:.25rem auto; }
      .req-modal,
      .req-manage-layout { gap:10px; }
      .req-meta,
      .req-manage-meta-grid,
      .req-manage-contact-grid { grid-template-columns:1fr; }
      .req-desc,
      .req-section,
      .req-manage-card,
      .req-campos-summary { padding:10px; }
      .req-section-header,
      .req-manage-panel-head { flex-direction:column; align-items:stretch; }
      .req-actions .btn,
      .req-manage-file-actions .btn,
      .req-manage-review-actions .btn,
      .req-manage-actions .btn,
      .req-upload-actions .btn { flex:1 1 calc(50% - 6px); justify-content:center; min-width:0; }
      .req-manage-file-actions,
      .req-manage-review-actions,
      .req-manage-actions,
      .req-upload-actions { width:100%; }
      .modal-content.req-manage-modal { width:calc(100% - 1rem); }
      .modal-content.req-manage-modal .modal-header,
      .modal-content.req-manage-modal .modal-body,
      .modal-content.req-manage-modal .modal-footer { padding:14px; }
      .req-manage-card-body,
      .req-manage-panel { padding:12px; }
      .req-campos-summary-row { grid-template-columns:1fr; gap:4px; }
      .req-manage-avatar { width:38px; height:38px; border-radius:12px; font-size:12px; }
      .req-manage-title { font-size:15px; }
    }
    @media (max-width: 768px) {
      .workers-matrix-stack { display:none; }
      .workers-matrix-mobile-list { display:grid; }
      .worker-mobile-card { padding:12px; }
    }
    @media (max-width: 480px) {
      .worker-mobile-req-grid { grid-template-columns:1fr; }
      .worker-mobile-package > summary { padding:11px 12px; }
      .worker-mobile-package-body { padding:0 10px 10px; }
    }

/* === portal\pages\admin-actividad-detalle.css === */
/* Extracted from admin\actividad_detalle.html for portal v3.1 */
.section-title {
      display: flex;
      justify-content: space-between;
      align-items: end;
      gap: 12px;
      flex-wrap: wrap;
    }
    .section-title h2,
    .section-title h3 {
      margin: 0;
    }
    .mini-muted {
      font-size: 12px;
      color: #6b7280;
    }
    .help-inline {
      display: inline-flex;
      align-items: center;
      gap: 6px;
    }
    .help-tip {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 18px;
      height: 18px;
      border-radius: 999px;
      border: 1px solid #cbd5e1;
      background: #fff;
      color: #64748b;
      font-size: 11px;
      font-weight: 700;
      cursor: help;
      flex: 0 0 auto;
    }
    .help-tip::before {
      content: "i";
    }
    .help-tip::after {
      content: attr(data-tip);
      position: absolute;
      left: 50%;
      top: calc(100% + 10px);
      transform: translateX(-50%);
      min-width: 180px;
      max-width: min(280px, 34vw);
      padding: 10px 12px;
      border-radius: 12px;
      background: #0f172a;
      color: #fff;
      font-size: 12px;
      line-height: 1.35;
      box-shadow: 0 16px 32px rgba(15, 23, 42, 0.24);
      opacity: 0;
      visibility: hidden;
      transition: opacity .15s ease, visibility .15s ease;
      pointer-events: none;
      z-index: 2000;
      white-space: normal;
      text-align: left;
    }
    .help-tip[data-tip-side="right"]::after {
      left: calc(100% + 10px);
      top: 50%;
      transform: translateY(-50%);
    }
    .help-tip[data-tip-side="left"]::after {
      left: auto;
      right: calc(100% + 10px);
      top: 50%;
      transform: translateY(-50%);
    }
    .help-tip:hover::after,
    .help-tip:focus-visible::after {
      opacity: 1;
      visibility: visible;
    }
    .help-tip:focus-visible {
      outline: 2px solid #2563eb;
      outline-offset: 2px;
    }
    @media (max-width: 960px) {
      .help-tip::after,
      .help-tip[data-tip-side="right"]::after,
      .help-tip[data-tip-side="left"]::after {
        left: auto;
        right: 0;
        top: calc(100% + 10px);
        transform: none;
        max-width: min(280px, 72vw);
      }
    }
    .kpi-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      gap: 12px;
    }
    .activity-admin-kpi-grid {
      margin-bottom: 16px;
    }
    .activity-admin-kpi-grid .kpi-card {
      padding: 16px 18px;
      text-align: left;
      min-height: 168px;
    }
    .activity-admin-kpi-grid .kpi-icon {
      font-size: 2rem;
      margin-bottom: 10px;
    }
    .activity-admin-kpi-grid .kpi-value {
      font-size: 2rem;
      line-height: 1.05;
    }
    .activity-admin-kpi-grid .kpi-value.is-text {
      font-size: 1.35rem;
      line-height: 1.15;
    }
    .activity-admin-kpi-grid .kpi-hint {
      margin-top: 6px;
      font-size: 12px;
      opacity: 0.92;
      line-height: 1.45;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .activity-panel-card {
      margin-bottom: 16px;
      overflow: visible;
    }
    .activity-admin-kpi-grid .kpi-card,
    .activity-worker-matrix,
    .worker-review-card {
      overflow: visible;
    }
    .activity-panel-card .card-header {
      background: linear-gradient(180deg, #fbfdff 0%, #f4f7fb 100%);
      border-bottom: 1px solid #e2e8f0;
    }
    .activity-panel-card .card-body {
      padding: 18px;
    }
    .activity-admin-info-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 12px;
    }
    .activity-admin-info-card {
      border: 1px solid #dbe1ea;
      border-radius: 14px;
      background: #ffffff;
      box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
      padding: 14px;
    }
    .activity-admin-info-label {
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      color: #64748b;
    }
    .activity-admin-info-value {
      margin-top: 6px;
      font-size: 16px;
      font-weight: 700;
      color: #0f172a;
    }
    .activity-admin-info-copy {
      margin-top: 8px;
      font-size: 13px;
      color: #475569;
      line-height: 1.5;
    }
    .activity-admin-note {
      margin-top: 12px;
      padding: 12px;
      border-radius: 12px;
      border: 1px solid #e2e8f0;
      background: #f8fafc;
    }
    .activity-admin-inline-strip {
      margin-top: 12px;
      padding: 12px 14px;
      border-radius: 12px;
      border: 1px solid #e2e8f0;
      background: #ffffff;
    }
    .activity-admin-chip-row {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      align-items: center;
      margin-top: 10px;
    }
    .activity-admin-chip {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 6px 10px;
      border-radius: 999px;
      border: 1px solid #e2e8f0;
      background: #f8fafc;
      color: #334155;
      font-size: 12px;
      line-height: 1.2;
    }
    .activity-admin-chip i {
      color: #64748b;
    }
    .activity-admin-note-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 8px;
    }
    .activity-admin-note-text {
      margin-top: 8px;
      color: #334155;
      line-height: 1.45;
    }
    .worker-review-list {
      display: grid;
      gap: 12px;
    }
    .worker-summary-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
      gap: 12px;
      margin-bottom: 12px;
    }
    .worker-summary-grid .kpi-card {
      padding: 12px 14px;
      text-align: left;
      min-height: 124px;
    }
    .worker-summary-grid .kpi-icon {
      font-size: 1.5rem;
      margin-bottom: 6px;
    }
    .worker-summary-grid .kpi-value {
      font-size: 1.7rem;
      line-height: 1.05;
    }
    .worker-summary-grid .kpi-hint {
      margin-top: 4px;
      font-size: 11px;
      opacity: 0.9;
      line-height: 1.2;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .worker-required-card {
      margin-bottom: 12px;
      border: 1px solid #dbe1ea;
      border-radius: 14px;
      background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
      box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
      padding: 12px 14px;
    }
    .worker-required-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      margin-bottom: 10px;
    }
    .worker-required-title {
      font-size: 14px;
      color: #0f172a;
      font-weight: 700;
    }
    .worker-required-copy {
      font-size: 12px;
      color: #475569;
    }
    .worker-required-chips {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .worker-required-chips .badge {
      margin: 0;
    }
    .pc-progress-wrap {
      min-width: 154px;
    }
    .pc-progress {
      position: relative;
      width: 100%;
      height: 14px;
      background: var(--gray-200);
      border-radius: 999px;
      overflow: hidden;
      box-shadow: inset 0 1px 2px rgba(0, 0, 0, .08);
    }
    .pc-progress-bar {
      height: 100%;
      width: 0;
      border-radius: 999px;
    }
    .pc-progress-bar.success {
      background: var(--success);
    }
    .pc-progress-bar.warning {
      background: var(--warning);
    }
    .pc-progress-bar.danger {
      background: var(--danger);
    }
    .pc-progress-bar.secondary {
      background: var(--gray-700, #374151);
    }
    .pc-progress-label {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      pointer-events: none;
    }
    .pc-progress-pill {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 2px 10px;
      border-radius: 999px;
      font-size: 10px;
      font-weight: 900;
      letter-spacing: .3px;
      text-transform: uppercase;
      color: #fff;
      background: var(--gray-700, #374151);
      box-shadow: 0 1px 2px rgba(0, 0, 0, .28);
      border: 1px solid rgba(255, 255, 255, .22);
    }
    .pc-progress-pill.success {
      background: var(--success);
    }
    .pc-progress-pill.warning {
      background: var(--warning);
      color: #212529;
      border-color: rgba(0, 0, 0, .12);
    }
    .pc-progress-pill.danger {
      background: var(--danger);
    }
    .pc-progress-pill.secondary {
      background: var(--gray-700, #374151);
    }
    .pc-progress-scale {
      display: flex;
      justify-content: space-between;
      font-size: 10px;
      color: var(--gray-600);
      line-height: 1;
      margin-top: 3px;
    }
    .pc-progress-scale .mid {
      font-weight: 800;
      color: var(--gray-700);
    }
    .activity-worker-matrix {
      border: 1px solid #dbe1ea;
      border-radius: 16px;
      background: #fff;
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
      overflow: visible;
    }
    .activity-worker-matrix-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      padding: 14px 16px;
      border-bottom: 1px solid #e2e8f0;
      background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
    }
    .activity-worker-matrix-meta {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .activity-worker-matrix .table th,
    .activity-worker-matrix .table td {
      vertical-align: middle;
    }
    .activity-worker-matrix .table {
      margin-bottom: 0;
    }
    .activity-worker-matrix .table thead th {
      position: sticky;
      top: 0;
      z-index: 2;
      background: #f8fafc;
      border-bottom: 1px solid #dbe1ea;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.04em;
      color: #64748b;
      white-space: nowrap;
    }
    .activity-worker-matrix .table tbody tr {
      transition: background-color .15s ease;
    }
    .activity-worker-matrix .table tbody tr:hover {
      background: #f8fbff;
    }
    .activity-worker-matrix .table th:first-child,
    .activity-worker-matrix .table td:first-child {
      position: sticky;
      left: 0;
      z-index: 1;
      background: #fff;
    }
    .activity-worker-matrix .table thead th:first-child {
      z-index: 3;
      background: #f8fafc;
    }
    .activity-worker-matrix .table tbody tr:hover td:first-child {
      background: #f8fbff;
    }
    .activity-worker-name {
      font-weight: 700;
      color: #0f172a;
    }
    .activity-worker-sub {
      margin-top: 4px;
      font-size: 12px;
      color: #64748b;
    }
    .activity-worker-progress {
      min-width: 154px;
    }
    .req-pill {
      width: 26px;
      height: 26px;
      border-radius: 6px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      font-size: 12px;
      font-weight: 900;
      user-select: none;
      border: 1px solid transparent;
    }
    .req-pill:hover {
      border-color: var(--gray-400);
    }
    .req-pill.na {
      background: var(--gray-100);
      color: var(--gray-500);
    }
    .req-pill.ok {
      background: var(--success);
      color: #fff;
    }
    .req-pill.reject {
      background: var(--danger);
      color: #fff;
    }
    .req-pill.warn {
      background: var(--warning);
      color: #212529;
    }
    .req-pill.grace {
      background: #3b82f6;
      color: #fff;
    }
    .worker-review-card {
      border: 1px solid #dbe1ea;
      border-radius: 16px;
      background: #ffffff;
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
      overflow: hidden;
    }
    .worker-review-card.is-risk {
      border-color: #f5d18c;
    }
    .worker-review-body {
      padding: 16px;
    }
    .worker-review-top {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      flex-wrap: wrap;
      align-items: flex-start;
    }
    .worker-review-top-right {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      justify-content: flex-end;
      align-items: center;
    }
    .worker-review-name {
      font-size: 16px;
      font-weight: 700;
      color: #0f172a;
    }
    .worker-review-meta {
      display: flex;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: 8px;
      font-size: 13px;
      color: #475569;
    }
    .worker-review-habs {
      margin-top: 12px;
      padding: 12px;
      border-radius: 12px;
      background: #f8fafc;
      border: 1px solid #e2e8f0;
    }
    .worker-review-habs-title {
      margin-bottom: 8px;
      font-size: 12px;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      color: #64748b;
    }
    .worker-review-habs-summary {
      margin-top: 8px;
      font-size: 12px;
      color: #475569;
    }
    .worker-review-habs-summary strong {
      color: #0f172a;
    }
    .worker-review-actions {
      margin-top: 12px;
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .worker-review-panel {
      padding: 0 16px 16px 16px;
    }
    .worker-review-docs-summary {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-bottom: 10px;
    }
    .worker-review-empty {
      padding: 14px;
      border: 1px dashed #cbd5e1;
      border-radius: 12px;
      background: #f8fafc;
      color: #64748b;
    }

/* === portal\pages\contratista-actividad-detalle.css === */
/* Extracted from contratista\actividad_detalle.html for portal v3.1 */
.section-title {
      display: flex;
      justify-content: space-between;
      align-items: end;
      gap: 12px;
      flex-wrap: wrap;
    }
    .section-title h3 {
      margin: 0;
    }
    .mini-muted {
      font-size: 12px;
      color: #6b7280;
    }
    .help-inline {
      display: inline-flex;
      align-items: center;
      gap: 6px;
    }
    .help-tip {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 18px;
      height: 18px;
      border-radius: 999px;
      border: 1px solid #cbd5e1;
      background: #fff;
      color: #64748b;
      font-size: 11px;
      font-weight: 700;
      cursor: help;
      flex: 0 0 auto;
    }
    .help-tip::before {
      content: "i";
    }
    .help-tip::after {
      content: attr(data-tip);
      position: absolute;
      left: 50%;
      top: calc(100% + 10px);
      transform: translateX(-50%);
      min-width: 180px;
      max-width: min(280px, 34vw);
      padding: 10px 12px;
      border-radius: 12px;
      background: #0f172a;
      color: #fff;
      font-size: 12px;
      line-height: 1.35;
      box-shadow: 0 16px 32px rgba(15, 23, 42, 0.24);
      opacity: 0;
      visibility: hidden;
      transition: opacity .15s ease, visibility .15s ease;
      pointer-events: none;
      z-index: 2000;
      white-space: normal;
      text-align: left;
    }
    .help-tip[data-tip-side="right"]::after {
      left: calc(100% + 10px);
      top: 50%;
      transform: translateY(-50%);
    }
    .help-tip[data-tip-side="left"]::after {
      left: auto;
      right: calc(100% + 10px);
      top: 50%;
      transform: translateY(-50%);
    }
    .help-tip:hover::after,
    .help-tip:focus-visible::after {
      opacity: 1;
      visibility: visible;
    }
    .help-tip:focus-visible {
      outline: 2px solid #2563eb;
      outline-offset: 2px;
    }
    @media (max-width: 960px) {
      .help-tip::after,
      .help-tip[data-tip-side="right"]::after,
      .help-tip[data-tip-side="left"]::after {
        left: auto;
        right: 0;
        top: calc(100% + 10px);
        transform: none;
        max-width: min(280px, 72vw);
      }
    }
    .kpi-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      gap: 12px;
    }
    .activity-kpi-grid .kpi-card {
      padding: 16px 18px;
      text-align: left;
      min-height: 172px;
    }
    .activity-kpi-grid .kpi-icon {
      font-size: 2rem;
      margin-bottom: 10px;
    }
    .activity-kpi-grid .kpi-value {
      font-size: 2rem;
      line-height: 1.05;
    }
    .activity-kpi-grid .kpi-value.is-text {
      font-size: 1.4rem;
      line-height: 1.15;
    }
    .activity-kpi-grid .kpi-hint {
      margin-top: 6px;
      font-size: 12px;
      opacity: 0.92;
      line-height: 1.45;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .activity-panel-card {
      margin-bottom: 16px;
      overflow: visible;
    }
    .activity-kpi-grid .kpi-card,
    .activity-worker-matrix {
      overflow: visible;
    }
    .activity-panel-card .card-header {
      background: linear-gradient(180deg, #fbfdff 0%, #f4f7fb 100%);
      border-bottom: 1px solid #e2e8f0;
    }
    .activity-panel-card .card-body {
      padding: 18px;
    }
    .activity-header-status {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      justify-content: flex-end;
      align-items: center;
    }
    .activity-req-list {
      display: grid;
      gap: 12px;
    }
    .activity-req-card {
      border: 1px solid #dbe1ea;
      border-radius: 14px;
      padding: 14px;
      background: #ffffff;
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
    }
    .activity-req-card.is-warning {
      border-color: #f5d18c;
      background: linear-gradient(180deg, #fffaf0 0%, #ffffff 100%);
    }
    .activity-req-top {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      flex-wrap: wrap;
      align-items: flex-start;
    }
    .activity-req-title {
      font-size: 15px;
      color: #0f172a;
    }
    .activity-req-meta {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-top: 8px;
    }
    .activity-req-meta-line {
      display: flex;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: 10px;
      font-size: 12px;
      color: #475569;
    }
    .activity-req-meta-line strong {
      color: #0f172a;
    }
    .activity-req-actions {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .activity-req-actions .btn {
      min-width: 132px;
      justify-content: center;
    }
    .activity-req-inline-note {
      margin-top: 10px;
      padding: 10px 12px;
      border-radius: 10px;
      border: 1px solid #e2e8f0;
      background: #f8fafc;
      font-size: 13px;
      color: #334155;
    }
    .activity-req-section-copy {
      margin-top: 10px;
      font-size: 13px;
      color: #475569;
    }
    .activity-req-embedded {
      margin-top: 12px;
      padding-top: 12px;
      border-top: 1px solid #e2e8f0;
    }
    .activity-req-embedded .activity-req-card {
      background: #f8fafc;
      box-shadow: none;
      border-color: #d9e2ec;
    }
    .activity-omit-box {
      margin-top: 12px;
      padding: 12px;
      border: 1px dashed #cbd5e1;
      border-radius: 12px;
      background: #f8fafc;
    }
    .activity-mini-chip-row {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      align-items: center;
      margin-top: 10px;
    }
    .activity-mini-chip {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 6px 10px;
      border-radius: 999px;
      border: 1px solid #e2e8f0;
      background: #fff;
      color: #334155;
      font-size: 12px;
      line-height: 1.2;
    }
    .activity-mini-chip i {
      color: #64748b;
    }
    .activity-toggle-row {
      display: flex;
      gap: 16px;
      flex-wrap: wrap;
      align-items: center;
    }
    .activity-toggle-row label {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-weight: 600;
      color: #334155;
    }
    .activity-soft-box {
      border: 1px solid #e2e8f0;
      border-radius: 12px;
      background: #f8fafc;
      padding: 12px;
    }
    .activity-soft-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      margin-bottom: 10px;
    }
    .activity-soft-title {
      font-size: 12px;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      color: #64748b;
      font-weight: 700;
    }
    .activity-soft-copy {
      font-size: 13px;
      color: #475569;
    }
    .worker-summary-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
      gap: 12px;
      margin-bottom: 12px;
    }
    .worker-summary-grid .kpi-card {
      padding: 12px 14px;
      text-align: left;
      min-height: 124px;
    }
    .worker-summary-grid .kpi-icon {
      font-size: 1.5rem;
      margin-bottom: 6px;
    }
    .worker-summary-grid .kpi-value {
      font-size: 1.7rem;
      line-height: 1.05;
    }
    .worker-summary-grid .kpi-hint {
      margin-top: 4px;
      font-size: 11px;
      opacity: 0.9;
      line-height: 1.2;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .worker-required-card {
      margin-bottom: 12px;
      border: 1px solid #dbe1ea;
      border-radius: 14px;
      background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
      box-shadow: 0 8px 20px rgba(15, 23, 42, 0.04);
      padding: 12px 14px;
    }
    .worker-required-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      margin-bottom: 10px;
    }
    .worker-required-title {
      font-size: 14px;
      color: #0f172a;
      font-weight: 700;
    }
    .worker-required-copy {
      font-size: 12px;
      color: #475569;
    }
    .worker-required-chips {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .worker-required-chips .badge {
      margin: 0;
    }
    .activity-hab-grid {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .activity-hab-option {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 8px 12px;
      border: 1px solid #dbe1ea;
      border-radius: 999px;
      background: #fff;
      box-shadow: 0 4px 12px rgba(15, 23, 42, 0.04);
      font-size: 13px;
      color: #334155;
    }
    .activity-hab-option input {
      margin: 0;
    }
    .worker-hab-chips {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }
    .worker-hab-chip {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 4px 10px;
      border: 1px solid #dbe1ea;
      border-radius: 999px;
      background: #f8fafc;
      font-size: 12px;
      color: #334155;
      cursor: pointer;
      transition: background 0.15s, border-color 0.15s;
    }
    .worker-hab-chip:has(input:checked) {
      background: #eff6ff;
      border-color: #3b82f6;
      color: #1d4ed8;
      font-weight: 600;
    }
    .worker-hab-chip input {
      margin: 0;
      accent-color: #3b82f6;
    }
    .pc-progress-wrap {
      min-width: 154px;
    }
    .pc-progress {
      position: relative;
      width: 100%;
      height: 14px;
      background: var(--gray-200);
      border-radius: 999px;
      overflow: hidden;
      box-shadow: inset 0 1px 2px rgba(0, 0, 0, .08);
    }
    .pc-progress-bar {
      height: 100%;
      width: 0;
      border-radius: 999px;
    }
    .pc-progress-bar.success {
      background: var(--success);
    }
    .pc-progress-bar.warning {
      background: var(--warning);
    }
    .pc-progress-bar.danger {
      background: var(--danger);
    }
    .pc-progress-bar.secondary {
      background: var(--gray-700, #374151);
    }
    .pc-progress-label {
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      pointer-events: none;
    }
    .pc-progress-pill {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 2px 10px;
      border-radius: 999px;
      font-size: 10px;
      font-weight: 900;
      letter-spacing: .3px;
      text-transform: uppercase;
      color: #fff;
      background: var(--gray-700, #374151);
      box-shadow: 0 1px 2px rgba(0, 0, 0, .28);
      border: 1px solid rgba(255, 255, 255, .22);
    }
    .pc-progress-pill.success {
      background: var(--success);
    }
    .pc-progress-pill.warning {
      background: var(--warning);
      color: #212529;
      border-color: rgba(0, 0, 0, .12);
    }
    .pc-progress-pill.danger {
      background: var(--danger);
    }
    .pc-progress-pill.secondary {
      background: var(--gray-700, #374151);
    }
    .pc-progress-scale {
      display: flex;
      justify-content: space-between;
      font-size: 10px;
      color: var(--gray-600);
      line-height: 1;
      margin-top: 3px;
    }
    .pc-progress-scale .mid {
      font-weight: 800;
      color: var(--gray-700);
    }
    .activity-worker-matrix {
      border: 1px solid #dbe1ea;
      border-radius: 16px;
      background: #fff;
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
      overflow: visible;
    }
    .activity-worker-matrix-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      padding: 14px 16px;
      border-bottom: 1px solid #e2e8f0;
      background: linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%);
    }
    .activity-worker-matrix-meta {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .activity-worker-matrix .table {
      margin-bottom: 0;
    }
    .activity-worker-matrix .table th,
    .activity-worker-matrix .table td {
      vertical-align: middle;
    }
    .activity-worker-matrix .table thead th {
      background: #f8fafc;
      border-bottom: 1px solid #dbe1ea;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: 0.04em;
      color: #64748b;
      white-space: nowrap;
    }
    .activity-worker-matrix .table tbody tr {
      transition: background-color .15s ease;
    }
    .activity-worker-matrix .table tbody tr:hover {
      background: #f8fbff;
    }
    .activity-worker-name {
      font-weight: 700;
      color: #0f172a;
    }
    .activity-worker-sub {
      margin-top: 4px;
      font-size: 12px;
      color: #64748b;
    }
    .activity-worker-progress {
      min-width: 154px;
    }
    .req-pill {
      width: 26px;
      height: 26px;
      border-radius: 6px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      font-size: 12px;
      font-weight: 900;
      user-select: none;
      border: 1px solid transparent;
    }
    .req-pill.na {
      background: var(--gray-100);
      color: var(--gray-500);
    }
    .req-pill.ok {
      background: var(--success);
      color: #fff;
    }
    .req-pill.reject {
      background: var(--danger);
      color: #fff;
    }
    @media (max-width: 720px) {
      .activity-req-actions {
        width: 100%;
      }
      .activity-req-actions .btn {
        flex: 1 1 100%;
      }
    }

/* === portal\pages\contratista-empresa.css === */
/* Extracted from contratista\empresa.html for portal v3.1 */
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
    .company-header {
      display:flex;
      justify-content:space-between;
      gap:12px;
      flex-wrap:wrap;
      align-items:end;
      margin-bottom:16px;
    }
    .company-header h2 { margin:0; color:#1f2937; }
    .company-header-subtitle {
      display:none;
      max-width:760px;
      font-size:14px;
      line-height:1.45;
      color:#6b7280;
    }
    .company-header-toolbar {
      margin-bottom:0;
      flex:0 0 auto;
      width:auto;
      min-width:auto;
      justify-content:flex-end;
    }
    .company-header-toolbar .filter-actions {
      width:auto;
      flex:0 0 auto;
      display:flex;
      gap:8px;
      flex-wrap:wrap;
    }
    .company-header-toolbar .btn {
      min-width:auto;
      box-shadow:none;
    }

    .company-overview-grid {
      margin-bottom:12px;
      grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));
      gap:12px;
    }
    .company-overview-grid .kpi-card { min-height:auto; }
    .company-overview-grid .kpi-card .kpi-value { font-size:1.8rem; }
    .company-overview-grid .kpi-card .kpi-label { font-size:.78rem; }
    .pill {
      display:inline-block;
      padding:2px 8px;
      border-radius:999px;
      font-size:12px;
      background:rgba(255,255,255,.18);
      color:#fff;
      margin-left:6px;
      vertical-align:middle;
    }
    .company-overview-grid .kpi-card.warning .pill { background:rgba(0,0,0,.12); color:#212529; }
    .company-kpi-head {
      display:block;
    }
    .company-kpi-status {
      display:inline-flex;
      align-items:center;
      justify-content:center;
      padding:5px 10px;
      border-radius:999px;
      font-size:10px;
      font-weight:800;
      letter-spacing:.08em;
      text-transform:uppercase;
      background:#e8f1ff;
      color:#1d4ed8;
      border:1px solid rgba(29, 78, 216, .14);
      white-space:nowrap;
    }
    .company-kpi-status.success {
      background:#e8f7ec;
      color:#15803d;
      border-color:rgba(21, 128, 61, .14);
    }
    .company-kpi-status.warning {
      background:#fff4df;
      color:#b45309;
      border-color:rgba(180, 83, 9, .14);
    }
    .company-kpi-status.danger {
      background:#feecee;
      color:#b91c1c;
      border-color:rgba(185, 28, 28, .14);
    }
    .company-kpi-focus {
      font-size:14px;
      line-height:1.4;
      color:#334155;
      font-weight:700;
    }
    .company-kpi-meta {
      font-size:12px;
      line-height:1.45;
      color:#64748b;
      opacity:1;
    }
    .company-kpi-bar {
      width:100%;
      height:8px;
      border-radius:999px;
      background:#edf2f7;
      overflow:hidden;
    }
    .company-kpi-bar-fill {
      display:block;
      height:100%;
      width:0;
      border-radius:999px;
      background:var(--company-kpi-accent, #1d4ed8);
    }
    .company-kpi-foot {
      margin-top:auto;
      display:flex;
      flex-wrap:wrap;
      gap:8px;
    }
    .company-kpi-chip {
      display:inline-flex;
      align-items:center;
      gap:6px;
      min-height:28px;
      padding:5px 10px;
      border-radius:999px;
      background:#f8fafc;
      border:1px solid #e2e8f0;
      color:#334155;
      font-size:12px;
      font-weight:700;
    }
    .section-title { display:flex; justify-content:space-between; align-items:end; gap:12px; flex-wrap:wrap; }
    .section-title h3 { margin:0; color:#162033; }
    .mini-muted { font-size:12px; color:#6b7280; }
    #empresaInfo {
      margin-bottom:12px;
      padding:11px 13px;
      border:1px solid var(--gray-200);
      border-radius:var(--border-radius);
      background:var(--gray-100);
      color:#475569;
      font-size:13px;
      line-height:1.5;
    }
    .company-requirements-table { margin:0; }
    .company-requirements-table tbody td:first-child strong { color:#15355a; }
    .company-requirements-table tbody td { vertical-align:middle; }
    .company-table-shell { margin-bottom:0; border:1px solid var(--gray-200); border-radius:0; box-shadow:none; overflow:hidden; background:#fff; }
    .company-table-shell .table-responsive {
      margin:0;
      background:#fff;
      border-radius:0;
      overflow-x:auto;
      -webkit-overflow-scrolling:touch;
    }
    .company-table-shell .table {
      margin:0;
      background:#fff;
    }
    /* Modal historial: más ancho para que la tabla quepa */
    #modal-empresa-history .modal-content {
      max-width: min(1100px, 96vw);
      width: 96vw;
    }
    #modal-empresa-history .modal-body {
      padding: 16px;
      overflow-y: auto;
    }
    .company-requirements-table { white-space: nowrap; }
    .company-requirements-table td.doc-file { max-width: 220px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .company-requirements-table td:nth-child(2) { white-space: normal; min-width: 140px; max-width: 220px; }
    .company-history-toolbar {
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:14px;
      flex-wrap:wrap;
      margin-bottom:14px;
      padding:14px 16px;
      border:1px solid #dbe4ee;
      border-left:4px solid #2563eb;
      border-radius:8px;
      background:#fff;
      box-shadow:0 12px 28px -30px rgba(15, 23, 42, .48);
    }
    .company-period-main {
      min-width:0;
      flex:1 1 260px;
    }
    .company-period-kicker {
      margin-bottom:5px;
      color:#64748b;
      font-size:10px;
      font-weight:850;
      letter-spacing:.08em;
      line-height:1.2;
      text-transform:uppercase;
    }
    .company-history-toolbar-actions {
      display:flex;
      gap:8px;
      flex-wrap:wrap;
    }
    .company-history-toolbar-actions .btn {
      min-height:40px;
      border-color:#0f172a;
      background:#0f172a;
      color:#fff;
    }
    .company-period-current {
      display:inline-flex;
      align-items:center;
      gap:10px;
      min-height:0;
      max-width:100%;
      padding:0;
      border:0;
      border-radius:0;
      background:transparent;
      color:#10213b;
      font-size:18px;
      font-weight:900;
      line-height:1.25;
    }
    .company-period-current i {
      display:inline-flex;
      align-items:center;
      justify-content:center;
      flex:0 0 auto;
      width:34px;
      height:34px;
      border-radius:8px;
      background:#eaf2ff;
      color:#2563eb;
    }
    .company-period-current span {
      min-width:0;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .company-period-note {
      margin-top:6px;
      color:#64748b;
      font-size:12px;
      line-height:1.4;
    }
    .company-period-manual {
      margin:-4px 0 14px;
      padding:12px;
      border:1px solid #dbe4ee;
      border-radius:var(--border-radius);
      background:#fff;
    }
    .company-period-manual-row {
      display:flex;
      gap:8px;
      align-items:center;
      flex-wrap:wrap;
    }
    .company-period-manual-row input[type="month"] {
      max-width:220px;
    }
    .company-history-filter-bar {
      display:flex;
      justify-content:space-between;
      align-items:flex-end;
      gap:12px;
      flex-wrap:wrap;
      margin-bottom:12px;
    }
    .company-history-filter-actions {
      display:flex;
      gap:8px;
      flex-wrap:wrap;
      align-items:flex-end;
    }
    .company-history-filter-panel {
      margin-bottom:12px;
      padding:12px;
      border:1px solid #dbe4ee;
      border-radius:8px;
      background:#f8fafc;
    }
    .company-history-filter-head {
      display:flex;
      justify-content:space-between;
      align-items:flex-start;
      gap:12px;
      flex-wrap:wrap;
      margin-bottom:10px;
    }
    .company-history-filter-head strong {
      display:block;
      color:#10213b;
      font-size:18px;
      line-height:1.25;
    }
    .company-history-month-list {
      display:flex;
      gap:8px;
      overflow-x:auto;
      padding-bottom:2px;
      -webkit-overflow-scrolling:touch;
    }
    .company-history-month {
      flex:0 0 auto;
      min-height:36px;
      padding:8px 12px;
      border:1px solid #d8e2ee;
      border-radius:999px;
      background:#fff;
      color:#334155;
      font-size:12px;
      font-weight:800;
      line-height:1;
      white-space:nowrap;
      cursor:pointer;
    }
    .company-history-month:hover {
      border-color:#9fb6d9;
      background:#eef6ff;
      color:#14315f;
    }
    .company-history-month.active {
      border-color:#2563eb;
      background:#2563eb;
      color:#fff;
      box-shadow:0 10px 20px -16px rgba(37, 99, 235, .85);
    }
    .company-history-empty {
      padding:14px;
      border:1px dashed var(--gray-300);
      border-radius:var(--border-radius);
      color:#64748b;
      font-size:13px;
      text-align:center;
      background:#f8fafc;
    }
    @media (max-width: 640px) {
      .company-history-toolbar,
      .company-history-toolbar-actions,
      .company-period-manual-row {
        align-items:stretch;
      }
      .company-history-toolbar > *,
      .company-history-toolbar-actions,
      .company-history-toolbar-actions .btn,
      .company-period-manual-row input[type="month"],
      .company-period-manual-row .btn {
        width:100%;
        max-width:100%;
      }
      .company-period-current {
        width:100%;
      }
      .company-history-toolbar {
        padding:13px 14px;
      }
      .company-history-month-list {
        margin-right:-12px;
        padding-right:12px;
      }
      .company-history-month {
        min-width:132px;
        justify-content:center;
        text-align:center;
      }
      /* Tabla historial responsiva en móvil */
      #modal-empresa-history .modal-content { max-width:98vw; width:98vw; }
      .company-table-shell { overflow:visible; }
      .company-table-shell .table-responsive {
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
      }
      .company-requirements-table { font-size:11px; }
      .company-requirements-table th,
      .company-requirements-table td { padding:5px 6px; }
      .company-requirements-table .req-table-sub { display:none; }
    }
    .doc-cards { display:flex; flex-direction:column; gap:10px; margin-top:12px; }
    .doc-card { border:1px solid var(--gray-200); border-radius:var(--border-radius); padding:12px; background:var(--white); }
    .doc-card-header { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; flex-wrap:wrap; }
    .doc-card-title { font-weight:700; color:#162033; }
    .doc-card-copy { margin-top:4px; font-size:12px; color:#64748b; line-height:1.4; }
    .doc-file { max-width:520px; word-break:break-word; }
    .doc-meta { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:8px 14px; margin-top:10px; }
    .doc-meta .k { font-size:11px; color:var(--gray-600); text-transform:uppercase; letter-spacing:.3px; }
    .doc-meta .v { font-size:13px; color:#334155; }
    .doc-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; margin-top:10px; }
    .req-modal-summary { display:flex; gap:10px; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; }
    .req-modal-summary-main { min-width:220px; flex:1 1 280px; }
    .req-modal-summary-code { font-size:16px; font-weight:700; color:#162033; }
    .req-modal-summary-name { margin-top:4px; font-size:14px; color:#334155; font-weight:600; }
    .req-modal-summary-side { min-width:180px; text-align:right; }
    .req-modal-summary-side-value { font-size:16px; font-weight:700; color:#162033; }
    .req-modal-summary-note { margin-top:10px; font-size:12px; color:#64748b; }
    .table-sortable th[data-sort-type] { cursor:pointer; user-select:none; position:relative; padding-right:18px; }
    .table-sortable th[data-sort-type]::after { content:'?'; position:absolute; right:6px; top:50%; transform:translateY(-50%); font-size:10px; opacity:.6; color:currentColor; }
    .table-sortable th[data-sort-type][data-sort-dir="asc"]::after { content:'?'; opacity:.95; }
    .table-sortable th[data-sort-type][data-sort-dir="desc"]::after { content:'?'; opacity:.95; }
    .pc-progress-wrap { display:flex; flex-direction:column; gap:4px; min-width:140px; }
    .pc-progress { position:relative; width:100%; height:14px; background: var(--gray-200); border-radius:999px; overflow:hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.08); }
    .pc-progress-bar { height:100%; width:0; border-radius:999px; transition: width .3s ease; }
    .pc-progress-bar.success { background: var(--success); }
    .pc-progress-bar.warning { background: var(--warning); }
    .pc-progress-bar.danger { background: var(--danger); }
    .pc-progress-bar.secondary { background: var(--secondary); }
    .pc-progress-label { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; }
    .pc-progress-pill { display:inline-flex; align-items:center; justify-content:center; padding:2px 10px; border-radius:999px; font-size:10px; font-weight:900; letter-spacing:.3px; text-transform:uppercase; color:#fff; background: var(--gray-700, #374151); box-shadow:0 1px 2px rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.22); }
    .pc-progress-pill.success { background: var(--success); }
    .pc-progress-pill.warning { background: var(--warning); color:#212529; border-color: rgba(0,0,0,.12); }
    .pc-progress-pill.danger { background: var(--danger); }
    .pc-progress-pill.secondary { background: var(--gray-700, #374151); }
    .pc-progress-scale { display:flex; justify-content:space-between; font-size:10px; color: var(--gray-600); line-height:1; }
    .pc-progress-scale .mid { font-weight:800; color: var(--gray-700); }
    .req-pill { width:26px; height:26px; border-radius:3px; display:flex; align-items:center; justify-content:center; margin:0 auto; font-size:12px; font-weight:900; user-select:none; cursor:pointer; border:1px solid transparent; }
    .req-pill:hover { border-color: var(--gray-400); }
    .req-pill.na { background:#edf1f5; color:#64748b; cursor:default; border-color:#d1d9e2; border-style:dashed; }
    .req-pill.empty { background:#e5e7eb; color: transparent; border-color:#9ca3af; border-style: dashed; }
    .req-pill.ok { background: var(--success); color:#fff; }
    .req-pill.pending { background: var(--warning); color:#78350f; }
    .req-pill.reject { background: var(--danger); color:#fff; }
    .req-pill.expired { background: var(--danger); color:#fff; }
    .req-pill.grace { background: #3b82f6; color:#fff; }
    .req-pill[data-disabled="1"] { cursor:default; }
    .req-pill[data-disabled="1"]:hover { border-color:transparent; }
    .company-requirements-table .req-table-stack { display:grid; gap:3px; min-width:0; }
    .company-requirements-table .req-table-main { font-size:13px; font-weight:700; line-height:1.25; color:#162033; }
    .company-requirements-table .req-table-sub { font-size:11px; line-height:1.3; color:#64748b; white-space:normal; }
    .company-requirements-table .req-table-status { justify-items:center; }
    .company-requirements-table .req-table-status .req-table-sub { text-align:center; }
    .workers-matrix-summary { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:0; font-size:12px; color:#6b7280; }
    .workers-matrix-summary span {
      display:inline-flex;
      align-items:center;
      gap:4px;
      padding:0;
      border:0;
      background:transparent;
      color:#475569;
      font-weight:400;
    }
    .workers-matrix-toolbar {
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:10px;
      flex-wrap:wrap;
      margin-bottom:12px;
      padding:0;
      border:0;
      border-radius:0;
      background:transparent;
    }
    .workers-matrix-tabs { display:flex; gap:6px; flex-wrap:wrap; }
    .workers-matrix-tab { border:1px solid #d7deea; background:#f3f6fb; color:#475569; border-radius:999px; padding:6px 10px; font-size:12px; font-weight:800; line-height:1; cursor:pointer; transition:all .18s ease; }
    .workers-matrix-tab:hover { border-color:#9fb6d9; background:#e8eff9; }
    .workers-matrix-tab.active { background:#0d6efd; border-color:#0d6efd; color:#fff; box-shadow:0 8px 18px -14px rgba(13, 110, 253, .85); }
    .workers-matrix-tab-count { opacity:.8; font-size:11px; margin-left:4px; }
    .workers-matrix-stack { display:flex; flex-direction:column; gap:10px; }
    .workers-matrix-section { border:1px solid var(--gray-200); border-radius:var(--border-radius); background:#fff; padding:12px 12px 10px; box-shadow:none; }
    .workers-matrix-section.general { border-color:var(--gray-200); background:#fcfdff; }
    .workers-matrix-section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:0; }
    .workers-matrix-section-head-main { display:flex; align-items:flex-start; gap:10px; }
    .workers-matrix-section-toggle { width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #d8e2ee; background:#f8fbff; color:#64748b; border-radius:0; box-shadow:none; }
    .workers-matrix-section-toggle:hover { background:#eef4fb; color:#1f3045; border-color:#c6d4e4; }
    .workers-matrix-section-toggle i { transition:transform .18s ease; }
    .workers-matrix-section.is-collapsed .workers-matrix-section-toggle i { transform:rotate(-90deg); }
    .workers-matrix-section-title { display:flex; align-items:center; gap:6px; margin:0; font-size:15px; font-weight:700; color:#1f3045; }
    .workers-matrix-section-copy { font-size:12px; color:#708196; margin-top:3px; }
    .workers-matrix-section-meta { display:flex; gap:8px; flex-wrap:wrap; }
    .workers-matrix-section-pill { display:inline-flex; align-items:center; gap:5px; padding:4px 9px; border-radius:999px; background:#f1f5f9; color:#475569; font-size:10px; font-weight:800; }
    .workers-matrix-section-pill strong { font-size:11px; }
    .workers-matrix-section-body { margin-top:10px; }
    .workers-matrix-section.is-collapsed .workers-matrix-section-body { display:none; }
    .workers-matrix-shell {
      position:relative;
      overflow:auto;
      max-width:100%;
      max-height:min(74vh, 860px);
      border:1px solid rgba(15, 56, 102, 0.10);
      border-radius:20px;
      background:#fff;
      box-shadow:0 18px 34px rgba(15, 56, 102, 0.08);
      cursor:grab;
      user-select:none;
    }
    .workers-matrix-shell.is-dragging { cursor:grabbing; }
    .workers-matrix-table { width:max-content; min-width:100%; border-collapse:separate; border-spacing:0; table-layout:fixed; --wm-name-width:236px; --wm-dni-width:104px; --wm-exp-width:90px; --wm-progress-width:136px; }
    .workers-matrix-table th,
    .workers-matrix-table td { padding:0; border-right:1px solid var(--gray-200); border-bottom:1px solid var(--gray-200); }
    .workers-matrix-table thead th { position:sticky; top:0; z-index:6; background:#2563eb; color:#fff; font-size:12px; font-weight:500; letter-spacing:0; text-transform:none; white-space:normal; word-break:break-word; padding:8px 10px; line-height:1.35; vertical-align:middle; border-right-color:rgba(255,255,255,.08); }
    .workers-matrix-table thead th[data-sort-type] { position:sticky; }
    .workers-matrix-table thead th:last-child,
    .workers-matrix-table tbody td:last-child { border-right:none; }
    .workers-matrix-table tbody tr { --wm-row-bg:#fff; }
    .workers-matrix-table tbody tr:nth-child(even) { --wm-row-bg:#fbfdff; }
    .workers-matrix-table tbody tr:hover { --wm-row-bg:#eef6ff; }
    .workers-matrix-table tbody tr.is-focused-worker { --wm-row-bg:#e0f2fe; }
    .workers-matrix-table tbody td { background:var(--wm-row-bg); }
    .workers-matrix-table tbody tr.is-focused-worker td { box-shadow: inset 0 1px 0 rgba(14, 116, 144, .24), inset 0 -1px 0 rgba(14, 116, 144, .24); }
    .workers-matrix-table tbody tr.is-focused-worker .wm-col-name { box-shadow: inset 3px 0 0 #0284c7; }
    .workers-matrix-table .wm-col-name,
    .workers-matrix-table .wm-col-dni,
    .workers-matrix-table .wm-col-exp,
    .workers-matrix-table .wm-col-progress { position:sticky; z-index:4; background:var(--wm-row-bg, #fff); }
    .workers-matrix-table thead .wm-col-name,
    .workers-matrix-table thead .wm-col-dni,
    .workers-matrix-table thead .wm-col-exp,
    .workers-matrix-table thead .wm-col-progress { z-index:9; background:#2563eb; }
    .workers-matrix-table .wm-col-name { left:0; width:var(--wm-name-width); min-width:var(--wm-name-width); max-width:var(--wm-name-width); }
    .workers-matrix-table .wm-col-dni { left:var(--wm-name-width); width:var(--wm-dni-width); min-width:var(--wm-dni-width); max-width:var(--wm-dni-width); }
    .workers-matrix-table-contractor .wm-col-exp { left:calc(var(--wm-name-width) + var(--wm-dni-width)); width:var(--wm-exp-width); min-width:var(--wm-exp-width); max-width:var(--wm-exp-width); }
    .workers-matrix-table-contractor .wm-col-progress { left:calc(var(--wm-name-width) + var(--wm-dni-width) + var(--wm-exp-width)); width:var(--wm-progress-width); min-width:var(--wm-progress-width); max-width:var(--wm-progress-width); }
    .workers-matrix-table .wm-sticky-edge::after { content:''; position:absolute; top:0; right:-10px; bottom:-1px; width:10px; pointer-events:none; box-shadow:8px 0 10px -10px rgba(15, 23, 42, .55); }
    .workers-matrix-table .wm-worker-cell,
    .workers-matrix-table .wm-meta-cell,
    .workers-matrix-table .wm-progress-cell { min-height:42px; display:flex; align-items:center; }
    .workers-matrix-table .wm-worker-cell { padding:0 10px; }
    .workers-matrix-table .wm-meta-cell { padding:0 8px; justify-content:center; font-size:12px; }
    .workers-matrix-table .wm-progress-cell { padding:6px 8px; justify-content:center; }
    .workers-matrix-table .wm-worker-link { display:block; width:100%; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:inherit; text-decoration:none; font-weight:700; }
    .workers-matrix-table .wm-worker-link:hover { text-decoration:underline; }
    .workers-matrix-table .pc-progress-wrap { min-width:auto; width:100%; max-width:112px; gap:3px; }
    .workers-matrix-table .pc-progress { height:11px; }
    .workers-matrix-table .pc-progress-pill { padding:1px 7px; font-size:9px; }
    .workers-matrix-table .pc-progress-scale { font-size:9px; }
    .workers-matrix-table .wm-req-head,
    .workers-matrix-table .wm-req-cell { width:50px; min-width:50px; max-width:50px; text-align:center; }
    .workers-matrix-table .wm-divider-col { border-left:2px solid #bcc9db; }
    .workers-matrix-table thead .wm-divider-col { box-shadow:inset 8px 0 8px -8px rgba(15, 23, 42, .35); }
    .workers-matrix-table tbody .wm-divider-col { background-image:linear-gradient(to right, rgba(148, 163, 184, .34), rgba(148, 163, 184, .34)); background-repeat:no-repeat; background-size:2px 100%; background-position:left top; }
    .workers-matrix-table .wm-req-head { cursor:default; }
    .workers-matrix-table .wm-req-head > span { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; width:50px; min-height:44px; margin:0 auto; overflow:hidden; }
    .workers-matrix-table .wm-req-cell { padding:4px 0; }
    .workers-matrix-table .wm-req-head { padding:2px 0; }
    .workers-matrix-table .wm-req-cell > div { margin:0 auto; }
    .workers-matrix-table .wm-req-main { display:block; max-width:100%; font-size:11px; line-height:1; font-weight:800; letter-spacing:0; }
    .workers-matrix-table .wm-req-main.only { font-size:12px; }
    .workers-matrix-table .wm-req-suffix { display:inline-flex; align-items:center; justify-content:center; max-width:100%; padding:1px 4px; border-radius:3px; background:rgba(255,255,255,.16); color:#fff; font-size:9px; line-height:1; font-weight:800; letter-spacing:.18px; }
    .workers-matrix-table .wm-req-main,
    .workers-matrix-table .wm-req-suffix { pointer-events:none; }
    .workers-matrix-table .req-pill { width:26px; height:26px; border-radius:3px; font-size:11px; }
    .workers-matrix-mobile { display:none; }
    .workers-matrix-mobile-list { display:none; gap:12px; }
    .worker-mobile-card { border:1px solid #dbe4ee; border-radius:0; background:#fff; padding:14px; box-shadow:none; }
    .worker-mobile-card.is-focused-worker { border-color:#0284c7; background:#f0f9ff; box-shadow:0 0 0 1px rgba(2, 132, 199, .18); }
    .worker-mobile-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; }
    .worker-mobile-main { min-width:0; flex:1 1 220px; }
    .worker-mobile-name { display:block; font-size:15px; font-weight:800; line-height:1.3; color:#162033; text-decoration:none; word-break:break-word; }
    .worker-mobile-name:hover { text-decoration:underline; }
    .worker-mobile-meta { display:flex; gap:8px; flex-wrap:wrap; margin-top:8px; }
    .worker-mobile-chip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border-radius:0; background:#f8fafc; border:1px solid #d9e3ef; color:#475569; font-size:11px; font-weight:700; }
    .worker-mobile-chip.is-ok { background:#eaf8ef; border-color:#c9ebd6; color:#16703c; }
    .worker-mobile-chip.is-pending { background:#fdecec; border-color:#f3c7c7; color:#b42318; }
    .worker-mobile-progress { flex:1 1 170px; min-width:min(100%, 170px); }
    .worker-mobile-packages { display:grid; gap:10px; margin-top:12px; }
    .worker-mobile-package { border:1px solid #e5edf6; border-radius:0; background:#fbfdff; overflow:hidden; }
    .worker-mobile-package > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; cursor:pointer; }
    .worker-mobile-package > summary::-webkit-details-marker { display:none; }
    .worker-mobile-package > summary::after { content:'+'; flex:0 0 auto; font-size:16px; line-height:1; color:#64748b; }
    .worker-mobile-package[open] > summary::after { content:'-'; }
    .worker-mobile-package-main { min-width:0; display:flex; flex-direction:column; gap:4px; }
    .worker-mobile-package-name { font-size:13px; font-weight:800; color:#162033; }
    .worker-mobile-package-copy { font-size:11px; color:#64748b; }
    .worker-mobile-package-status { display:inline-flex; align-items:center; justify-content:center; min-width:68px; padding:5px 10px; border-radius:0; font-size:11px; font-weight:800; }
    .worker-mobile-package-status.is-ok { background:#eaf8ef; border:1px solid #c9ebd6; color:#16703c; }
    .worker-mobile-package-status.is-pending { background:#fdecec; border:1px solid #f3c7c7; color:#b42318; }
    .worker-mobile-package-status.is-na { background:#f1f5f9; border:1px solid #d7e3ef; color:#475569; }
    .worker-mobile-package-body { padding:0 12px 12px; }
    .worker-mobile-req-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:8px; }
    .worker-mobile-req { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; border:1px solid #e5edf6; border-radius:0; background:#f8fbff; min-width:0; }
    .worker-mobile-req-copy { min-width:0; }
    .worker-mobile-req-code { font-size:11px; font-weight:800; line-height:1.2; color:#162033; }
    .worker-mobile-req-name { margin-top:3px; font-size:11px; line-height:1.25; color:#64748b; word-break:break-word; }
    .worker-mobile-req-pill { display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
    .worker-mobile-req .req-pill { margin:0; }
    .worker-mobile-empty { padding:12px; border:1px dashed #d9e3ef; border-radius:0; background:#fbfdff; color:#64748b; font-size:12px; text-align:center; }
    .worker-mobile-card .pc-progress,
    .worker-mobile-card .pc-progress-bar,
    .worker-mobile-card .pc-progress-pill { border-radius:0; }
    .wm-head-tooltip { position:fixed; z-index:10040; width:260px; max-width:min(80vw, 260px); background:#fff; border:1px solid #dbe4f0; border-radius:10px; box-shadow:0 16px 36px -24px rgba(15, 23, 42, .5); padding:9px 10px; pointer-events:none; }
    .wm-head-tooltip-title { font-size:12px; font-weight:800; color:#1f2937; margin-bottom:4px; }
    .wm-head-tooltip-body { font-size:11px; color:#64748b; line-height:1.35; white-space:pre-line; }
    #trabajadores { scroll-margin-top:84px; }
    #actividades_docs { scroll-margin-top:84px; }
    .table-responsive,
    .workers-matrix-shell,
    .req-table-wrap { -webkit-overflow-scrolling:touch; touch-action:pan-x pan-y; overscroll-behavior-x:contain; overscroll-behavior-y:auto; }
    .table-responsive,
    .req-table-wrap { width:100%; overflow-x:auto; overflow-y:visible; }
    .workers-matrix-shell { overflow-x:auto; overflow-y:visible; }
    .table-responsive > table:not(.table-mobile-stack),
    .req-table-wrap .table:not(.table-mobile-stack) { min-width:max(100%, 680px); }
    .req-modal { display:flex; flex-direction:column; gap:12px; }
    .req-desc,
    .req-section { border:1px solid #e3ebf4; border-radius:8px; background:#fff; padding:12px; }
    .req-section-header { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
    .req-desc-title,
    .req-section-title { font-size:16px; font-weight:700; color:#162033; }
    .req-section-hint { font-size:12px; color:#64748b; }
    .req-desc-box { padding:10px 11px; border:1px solid #e5edf6; border-radius:7px; background:#f8fbff; font-size:13px; line-height:1.45; color:#475569; white-space:pre-line; }
    .req-meta { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:8px; }
    .req-meta > div { padding:9px 10px; border:1px solid #e2eaf3; border-radius:7px; background:#f8fbff; }
    .req-meta > div > strong,
    .req-meta .k { display:block; margin-bottom:4px; font-size:10px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:#64748b; }
    .req-meta .v { font-size:13px; color:#334155; }
    .req-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-start; }
    .req-actions .btn { border-radius:7px; }
    .req-subdesc { margin-top:6px; font-size:12px; line-height:1.4; color:#64748b; max-height:38px; overflow:hidden; }
    .req-subdesc.expanded { max-height:none; }
    .req-subdesc-toggle { margin-top:6px; padding:0; border:none; background:none; color:#0d6efd; font-size:12px; font-weight:700; cursor:pointer; }
    .req-sticky-left { position:sticky; left:0; background:#fff; z-index:2; }
    .req-sticky-right { position:sticky; right:0; background:#fff; z-index:2; }
    .req-modal-dialog .modal-content,
    .req-modal-compact { max-width:min(980px, calc(100vw - 1rem)); width:min(980px, calc(100vw - 1rem)); max-height:calc(100vh - 1rem); display:flex; flex-direction:column; }
    .req-modal-dialog .modal-body,
    .req-modal-compact .modal-body { overflow:auto; max-height:calc(100vh - 138px); }
    @media (max-width: 900px) {
      .company-header-toolbar { width:100%; justify-content:flex-start; }
      .company-header-toolbar .filter-actions { width:100%; justify-content:flex-start; }
      .company-overview-grid { margin-bottom:10px; }
      .doc-file { max-width:100%; }
      .doc-actions { justify-content:flex-start; }
      .content { min-width:0; }
      .section-title,
      .workers-matrix-toolbar,
      .workers-matrix-section-head { flex-direction:column; align-items:stretch; }
      .workers-matrix-section-meta { justify-content:flex-start; }
      .workers-matrix-shell { max-height:none; }
      .table-responsive > table:not(.table-mobile-stack),
      .req-table-wrap .table:not(.table-mobile-stack) { min-width:620px; }
      .req-modal-dialog .modal-content,
      .req-modal-compact { width:min(calc(100vw - 1rem), 760px) !important; max-width:min(calc(100vw - 1rem), 760px) !important; }
    }
    @media (max-width: 640px) {
      .company-header { flex-direction:column; align-items:stretch; }
      .company-header h2 { font-size:1.7rem; }
      .company-header-subtitle { font-size:14px; }
      .company-header-toolbar,
      .company-header-toolbar .filter-actions { width:100%; }
      .company-header-toolbar .btn { width:100%; min-width:0; }
      .company-overview-grid .kpi-card { min-height:auto; padding:16px; gap:9px; }
      .company-overview-grid .kpi-value { font-size:1.8rem; }
      .doc-meta { grid-template-columns:1fr; }
      .req-modal-summary,
      .req-modal-summary-side { text-align:left; }
      .company-kpi-head { gap:8px; }
      .company-kpi-status,
      .company-kpi-chip { font-size:11px; }
      .card .card-header,
      .card .card-body { padding-left:16px; padding-right:16px; }
      .content-header,
      .content-header > div:last-child,
      .section-title { flex-direction:column; align-items:stretch; }

      .workers-matrix-summary { gap:8px; font-size:11px; }
      .workers-matrix-section { padding:10px 8px 8px; }
      .workers-matrix-section-copy { font-size:11px; }
      .workers-matrix-table .wm-sticky-edge::after { display:none; }
      .workers-matrix-table .req-pill,
      .req-pill { width:22px; height:22px; font-size:10px; }
      .table-responsive > table:not(.table-mobile-stack),
      .req-table-wrap .table:not(.table-mobile-stack) { min-width:560px; }
      .req-sticky-left,
      .req-sticky-right { position:static; }
      .req-modal-dialog .modal-content,
      .req-modal-compact { width:calc(100vw - .5rem) !important; max-width:calc(100vw - .5rem) !important; margin:.25rem auto; }
      .req-modal,
      .req-desc,
      .req-section { gap:10px; }
      .req-meta { grid-template-columns:1fr; }
      .req-actions .btn { flex:1 1 calc(50% - 6px); min-width:0; }
    }
    @media (max-width: 768px) {
      .workers-matrix-stack { display:none; }
      .workers-matrix-mobile-list { display:grid; }
      .worker-mobile-card { padding:12px; }
    }
    @media (max-width: 480px) {
      .worker-mobile-req-grid { grid-template-columns:1fr; }
      .worker-mobile-package > summary { padding:11px 12px; }
      .worker-mobile-package-body { padding:0 10px 10px; }
    }

/* === portal\pages\admin-requisitos.css === */
/* Extracted from admin\requisitos.html for portal v3.1 */
.check-row {
      display: grid;
      grid-template-columns: 18px minmax(0, 1fr);
      gap: 8px;
      align-items: start;
      margin: 6px 0;
      line-height: 1.3;
      cursor: pointer;
    }
    .check-row > input[type="checkbox"] {
      margin: 2px 0 0;
    }
    .check-row > span,
    .check-row > div {
      min-width: 0;
    }
    .requirements-page {
      display: grid;
      gap: 18px;
    }

    .requirements-hero {
      display: grid;
      grid-template-columns: minmax(0, 1.6fr) auto auto;
      gap: 16px;
      align-items: stretch;
      padding: 22px 24px;
      border: 1px solid rgba(11, 63, 122, 0.14);
      border-radius: 24px;
      background:
        radial-gradient(circle at top right, rgba(0, 123, 255, 0.18), transparent 30%),
        linear-gradient(135deg, #ffffff 0%, #f4f8ff 55%, #eef4fb 100%);
      box-shadow: 0 24px 50px rgba(15, 56, 102, 0.10);
    }

    .requirements-hero-copy h2 {
      margin: 0 0 8px;
      font-size: 1.9rem;
    }

    .requirements-hero-copy p {
      margin: 0 0 12px;
      max-width: 720px;
      color: var(--gray-700);
    }

    .requirements-tag-list {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .requirements-tag {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 7px 11px;
      border-radius: 999px;
      border: 1px solid rgba(0, 123, 255, 0.14);
      background: rgba(255, 255, 255, 0.88);
      color: #0f355d;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.02em;
      text-transform: uppercase;
    }

    .requirements-hero-stats {
      display: grid;
      grid-template-columns: repeat(2, minmax(120px, 1fr));
      gap: 10px;
      min-width: 270px;
    }

    .requirements-stat {
      display: flex;
      flex-direction: column;
      justify-content: center;
      gap: 4px;
      padding: 14px 16px;
      border-radius: 18px;
      background: rgba(255, 255, 255, 0.94);
      border: 1px solid rgba(15, 56, 102, 0.10);
      box-shadow: 0 14px 28px rgba(15, 56, 102, 0.08);
    }

    .requirements-stat strong {
      font-size: 1.55rem;
      line-height: 1;
      color: #0f355d;
    }

    .requirements-stat span {
      color: var(--gray-600);
      font-size: 12px;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      font-weight: 700;
    }

    .requirements-hero-actions {
      display: flex;
      align-items: flex-start;
      justify-content: flex-end;
      gap: 10px;
      flex-wrap: wrap;
      min-width: 220px;
    }

    .requirements-panel {
      border: 1px solid rgba(15, 56, 102, 0.08);
      border-radius: 22px;
      box-shadow: 0 20px 36px rgba(15, 56, 102, 0.08);
      overflow: hidden;
    }

    .requirements-panel .card-header {
      padding: 18px 22px;
      border-bottom-color: rgba(15, 56, 102, 0.08);
      background: linear-gradient(180deg, rgba(244, 248, 255, 0.96), rgba(255, 255, 255, 0.98));
    }

    .requirements-panel .card-header h3 {
      color: #0f355d;
    }

    .requirements-panel .card-body {
      padding: 22px;
      background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 251, 255, 0.98));
    }

    .requirements-filter-grid {
      display: grid;
      grid-template-columns: minmax(220px, 260px) minmax(0, 1fr);
      gap: 14px;
      align-items: end;
      margin-bottom: 18px;
      padding: 16px 18px;
      border: 1px solid rgba(15, 56, 102, 0.10);
      border-radius: 18px;
      background: linear-gradient(180deg, rgba(248, 251, 255, 0.98), rgba(255, 255, 255, 0.98));
      box-shadow: 0 16px 28px rgba(15, 56, 102, 0.07);
    }

    .requirements-filter-grid .form-label {
      margin-bottom: 6px;
      font-size: 0.78rem;
      font-weight: 800;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: #0f355d;
    }

    .requirements-caption {
      margin: 0 0 14px;
      color: var(--gray-600);
      max-width: 760px;
    }

    .requirements-table-shell {
      overflow: hidden;
      background: transparent;
      margin-bottom: 0;
    }

    .requirements-table-shell .table-wrapper {
      border-radius: 18px;
    }

    .requirements-table-shell .table {
      margin: 0;
      border-collapse: separate;
      border-spacing: 0;
      background: #ffffff;
    }

    .requirements-table-shell .table thead {
      background: #2563eb !important;
      color: #fff !important;
    }

    .requirements-table-shell .table thead tr {
      background: transparent !important;
    }

    .requirements-table-shell thead th {
      position: sticky;
      top: 0;
      z-index: 50;
      isolation: isolate;
      background: #2563eb !important;
      color: #fff !important;
      border-bottom: 0;
      border-right: 1px solid rgba(255, 255, 255, 0.34);
      box-shadow: inset -1px 0 0 rgba(15, 56, 102, 0.10);
      background-clip: border-box;
    }

    .requirements-table-shell thead th::before {
      content: "";
      position: absolute;
      inset: 0;
      z-index: -1;
      background: #2563eb;
      pointer-events: none;
    }

    .requirements-table-shell thead th > * {
      position: relative;
      z-index: 1;
    }

    .requirements-table-shell tbody td {
      position: relative;
      z-index: 1;
    }

    .requirements-table-shell thead th:last-child {
      border-right: 0;
      box-shadow: none;
    }

    .requirements-table-shell thead th.sortable {
      cursor: pointer;
      user-select: none;
      transition: box-shadow 0.18s ease, color 0.18s ease;
    }

    .requirements-table-shell thead th.sortable:hover {
      background: rgba(255, 255, 255, 0.10) !important;
      box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.06), inset -1px 0 0 rgba(255, 255, 255, 0.34);
    }

    .requirements-table-shell thead th.sortable:focus-visible {
      outline: 2px solid rgba(255, 255, 255, 0.78);
      outline-offset: -2px;
    }

    .requirements-table-shell .sort-label {
      display: inline-flex;
      align-items: center;
      gap: 0.45rem;
    }

    .sort-indicator {
      display: inline-block;
      min-width: 0.95rem;
      font-size: 0.72rem;
      opacity: 0.82;
    }

    .sort-indicator::before {
      content: "\2195";
    }

    thead th[aria-sort="ascending"] .sort-indicator::before {
      content: "\2191";
    }

    thead th[aria-sort="descending"] .sort-indicator::before {
      content: "\2193";
    }

    .requirements-table-shell .sort-indicator {
      display: inline-block;
      min-width: 0.95rem;
      font-size: 0.72rem;
      opacity: 0.82;
    }

    .requirements-table-shell .sort-indicator::before {
      content: "\2195";
    }

    .requirements-table-shell thead th[aria-sort="ascending"] .sort-indicator::before {
      content: "\2191";
    }

    .requirements-table-shell thead th[aria-sort="descending"] .sort-indicator::before {
      content: "\2193";
    }

    .requirements-name-cell {
      display: grid;
      gap: 4px;
      max-width: 450px;
      white-space: normal;
      word-break: break-word;
    }

    .requirements-name-cell strong {
      color: #0f355d;
      font-size: 0.88rem;
      line-height: 1.25;
    }

    .requirements-name-cell span {
      font-size: 12px;
      color: var(--gray-600);
      line-height: 1.35;
    }

    .requirements-action-group {
      display: inline-flex;
      gap: 6px;
      flex-wrap: wrap;
      justify-content: center;
    }

    .requirements-action-group .btn {
      min-width: 92px;
    }

    .requirements-empty {
      padding: 16px 18px;
      border: 1px dashed rgba(15, 56, 102, 0.18);
      border-radius: 16px;
      background: linear-gradient(180deg, rgba(245, 248, 252, 0.9), rgba(255, 255, 255, 0.98));
    }

    .req-admin-modal {
      width: min(1220px, calc(100vw - 32px));
      max-width: 1220px;
      max-height: calc(100vh - 28px);
      border: 1px solid rgba(15, 56, 102, 0.10);
      box-shadow: 0 32px 80px rgba(15, 56, 102, 0.22);
      background:
        linear-gradient(180deg, rgba(246, 249, 255, 0.96), rgba(255, 255, 255, 0.98) 22%, rgba(255, 255, 255, 0.99) 100%);
    }

    .req-admin-modal.req-side-modal {
      max-width: 760px;
      width: min(760px, calc(100vw - 32px));
    }

    .req-admin-modal.req-package-modal {
      max-width: 980px;
      width: min(980px, calc(100vw - 32px));
    }

    .req-admin-modal .modal-header {
      padding: 18px 22px;
      background: rgba(248, 251, 255, 0.88);
      border-bottom-color: rgba(15, 56, 102, 0.10);
      backdrop-filter: blur(12px);
    }

    .req-admin-modal .modal-body {
      padding: 0;
      background: transparent;
    }

    .req-admin-modal .modal-footer {
      position: sticky;
      bottom: 0;
      z-index: 5;
      padding: 16px 22px 18px;
      background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #ffffff);
      border-top-color: rgba(15, 56, 102, 0.10);
      backdrop-filter: blur(8px);
    }

    .req-modal-intro {
      display: grid;
      gap: 12px;
      padding: 22px;
      border-bottom: 1px solid rgba(15, 56, 102, 0.08);
      background:
        radial-gradient(circle at top right, rgba(0, 123, 255, 0.16), transparent 28%),
        linear-gradient(135deg, #ffffff 0%, #f4f8ff 55%, #edf3fb 100%);
    }

    .req-modal-intro h4,
    .req-summary-card h4,
    .req-section-head h4 {
      margin: 0;
      color: #0f355d;
    }

    .req-modal-intro p,
    .req-section-head p,
    .req-summary-note,
    .req-summary-list li {
      margin: 0;
      color: var(--gray-700);
      line-height: 1.45;
    }

    .req-chip-list {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .req-chip {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 8px 12px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.92);
      border: 1px solid rgba(0, 123, 255, 0.12);
      color: #0f355d;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.03em;
      text-transform: uppercase;
    }

    .req-form-shell {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 300px;
      gap: 18px;
      padding: 22px;
    }

    .req-form-main {
      display: grid;
      gap: 18px;
      min-width: 0;
    }

    .req-form-sidebar {
      display: grid;
      gap: 14px;
      align-self: start;
      position: sticky;
      top: 0;
    }

    .req-form-section,
    .req-summary-card {
      display: grid;
      gap: 14px;
      padding: 18px;
      border-radius: 20px;
      border: 1px solid rgba(15, 56, 102, 0.08);
      background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.96));
      box-shadow: 0 14px 28px rgba(15, 56, 102, 0.07);
    }

    .req-form-section[data-mode="soft"] {
      background: linear-gradient(180deg, rgba(244, 248, 255, 0.96), rgba(255, 255, 255, 0.98));
    }

    .req-section-head {
      display: grid;
      gap: 6px;
    }

    .req-form-grid {
      display: grid;
      gap: 14px;
    }

    .req-form-grid.two {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .req-form-grid.single {
      grid-template-columns: minmax(0, 1fr);
    }

    .req-form-grid > * {
      min-width: 0;
    }

    .req-form-grid .form-group {
      margin: 0;
      padding: 14px;
      border-radius: 16px;
      border: 1px solid rgba(15, 56, 102, 0.08);
      background: rgba(255, 255, 255, 0.82);
    }

    .req-subpanel .form-group,
    .req-builder-wrap .form-group,
    .req-selector-box .form-group {
      margin: 0;
      padding: 14px;
      border-radius: 16px;
      border: 1px solid rgba(15, 56, 102, 0.08);
      background: rgba(255, 255, 255, 0.82);
    }

    .req-subpanel,
    .req-builder-wrap,
    .req-selector-box {
      display: grid;
      gap: 12px;
      padding: 14px;
      border-radius: 16px;
      border: 1px solid rgba(15, 56, 102, 0.08);
      background: rgba(255, 255, 255, 0.80);
    }

    .req-builder-controls {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
    }

    .req-selector-box > .text-muted,
    .req-subpanel > .text-muted {
      font-size: 12px;
      line-height: 1.45;
    }

    .req-modal-section-label {
      margin: 0;
      font-size: 0.85rem;
      font-weight: 800;
      color: #0f355d;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      grid-column: 1 / -1;
    }

    .req-form-grid .req-summary-note,
    .req-subpanel,
    .req-builder-wrap,
    .req-selector-box {
      grid-column: 1 / -1;
    }

    .req-summary-grid {
      display: grid;
      gap: 10px;
    }

    .req-summary-row {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      align-items: center;
      font-size: 13px;
      color: var(--gray-700);
    }

    .req-summary-row strong {
      color: #0f355d;
      text-align: right;
    }

    .req-summary-note {
      padding: 12px 14px;
      border-radius: 14px;
      background: rgba(15, 56, 102, 0.05);
      border: 1px solid rgba(15, 56, 102, 0.08);
      font-size: 13px;
    }

    .req-summary-list {
      margin: 0;
      padding-left: 18px;
      display: grid;
      gap: 8px;
      font-size: 13px;
    }

    .req-admin-modal .campo-item,
    .req-admin-modal .subtipo-item,
    .req-admin-modal .hr-row {
      border: 1px solid rgba(15, 56, 102, 0.10) !important;
      border-radius: 16px !important;
      padding: 14px !important;
      background: rgba(255, 255, 255, 0.92);
      box-shadow: 0 10px 24px rgba(15, 56, 102, 0.06);
    }

    .req-admin-modal .subtipo-item {
      display: grid;
      gap: 12px;
    }

    .req-admin-modal .check-row {
      padding: 8px 10px;
      border-radius: 12px;
      transition: background-color 0.2s ease;
    }

    .req-admin-modal .check-row:hover {
      background: rgba(15, 56, 102, 0.04);
    }

    .req-package-list {
      display: grid;
      gap: 10px;
      max-height: 520px;
      overflow: auto;
      padding-right: 4px;
    }

    .req-package-row .req-package-grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto auto;
      gap: 12px;
      align-items: center;
    }

    .req-package-row .req-package-title {
      display: grid;
      gap: 4px;
    }

    .req-package-row .req-package-title strong {
      color: #0f355d;
    }

    .req-package-row .req-package-title span {
      font-size: 12px;
      color: var(--gray-600);
      line-height: 1.35;
    }

    .req-package-row .req-package-toggle,
    .req-package-row .req-package-order {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      padding: 10px 12px;
      border-radius: 14px;
      background: rgba(15, 56, 102, 0.04);
      font-size: 13px;
    }

    .req-package-row .req-package-order .form-control {
      width: 84px;
      min-width: 84px;
      text-align: center;
    }

    .req-package-row .req-package-order .btn {
      min-width: 36px;
      padding: 0.35rem 0.55rem;
    }

    @media (max-width: 1100px) {
      .requirements-hero {
        grid-template-columns: 1fr;
      }

      .requirements-hero-stats,
      .requirements-hero-actions {
        min-width: 0;
      }

      .req-form-shell {
        grid-template-columns: 1fr;
      }

      .req-form-sidebar {
        position: static;
      }
    }

    @media (max-width: 760px) {
      .requirements-filter-grid,
      .req-form-grid.two,
      .req-package-row .req-package-grid {
        grid-template-columns: 1fr;
      }

      .requirements-hero,
      .requirements-panel .card-body,
      .requirements-panel .card-header,
      .req-modal-intro,
      .req-form-shell,
      .req-admin-modal .modal-header,
      .req-admin-modal .modal-footer {
        padding-left: 16px;
        padding-right: 16px;
      }

      .requirements-hero-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

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

      .requirements-action-group .btn {
        flex: 1 1 100%;
      }
    }

    .requirements-toolbar {
      justify-content: flex-end;
      align-items: center;
      margin-bottom: 0;
    }

    .requirements-toolbar > span {
      display: none;
    }

    .requirements-caption {
      margin: 0 0 12px;
      max-width: none;
      line-height: 1.45;
    }

    .requirements-table-shell.table-container {
      border-color: rgba(15, 56, 102, 0.10);
      box-shadow: 0 18px 34px rgba(15, 56, 102, 0.08);
    }

    .requirements-table-shell .table tbody tr:nth-child(even) {
      background: #f8fbff;
    }

    .requirements-table-shell .table tbody tr:hover {
      background: #eef5ff;
    }

    .requirements-empty {
      padding: 14px 16px;
      border: 1px dashed rgba(15, 56, 102, 0.18);
      border-radius: 16px;
      background: linear-gradient(180deg, rgba(245, 248, 252, 0.9), rgba(255, 255, 255, 0.98));
    }

    .requirements-soft-note {
      display: grid;
      grid-template-columns: auto minmax(0, 1fr);
      gap: 10px 12px;
      align-items: start;
      margin-bottom: 16px;
      line-height: 1.45;
    }

    .requirements-soft-note i {
      color: var(--primary);
      margin-top: 2px;
    }

    .requirements-soft-note strong {
      display: block;
      margin-bottom: 2px;
      color: #0f355d;
    }

    .requirements-soft-note > strong,
    .requirements-soft-note > span {
      display: none;
    }

    .req-admin-modal {
      width: min(920px, calc(100vw - 32px));
      max-width: 920px;
      border: 0;
      border-radius: var(--border-radius-lg);
      box-shadow: var(--shadow-lg);
      background: var(--white);
    }

    .req-admin-modal.req-side-modal {
      max-width: 620px;
      width: min(620px, calc(100vw - 32px));
    }

    .req-admin-modal.req-package-modal {
      max-width: 860px;
      width: min(860px, calc(100vw - 32px));
    }

    .req-admin-modal .modal-header {
      padding: var(--spacing-md) var(--spacing-lg);
      background: var(--white);
      border-color: var(--gray-200);
      color: var(--gray-900);
      backdrop-filter: none;
    }

    .req-admin-modal .modal-footer {
      padding: var(--spacing-md) var(--spacing-lg);
      background: var(--white);
      border-color: var(--gray-200);
      backdrop-filter: none;
    }

    .req-admin-modal .modal-header h3,
    .req-admin-modal .modal-header .modal-title {
      color: var(--gray-900);
    }

    .req-admin-modal .modal-header .btn {
      color: inherit;
    }

    .req-admin-modal .modal-body {
      background: var(--white);
    }

    .req-modal-intro {
      gap: 8px;
      padding: 14px 16px;
      border: 1px solid var(--gray-200);
      border-radius: var(--border-radius);
      background: var(--gray-100);
    }

    .req-form-shell {
      grid-template-columns: minmax(0, 1fr);
      gap: 12px;
      padding: 14px;
    }

    .req-form-main {
      gap: 14px;
    }

    .req-form-section,
    .req-summary-card {
      gap: 10px;
      padding: 12px;
      border-radius: var(--border-radius);
      border: 1px solid var(--gray-200);
      background: var(--white);
      box-shadow: none;
    }

    .req-form-section[data-mode="soft"] {
      background: #fcfcfd;
    }

    .req-form-grid .form-group,
    .req-subpanel .form-group,
    .req-builder-wrap .form-group,
    .req-selector-box .form-group {
      padding: 12px;
      border-radius: var(--border-radius);
      border: 1px solid var(--gray-200);
      background: var(--gray-100);
    }

    .req-subpanel,
    .req-builder-wrap,
    .req-selector-box {
      gap: 10px;
      padding: 12px;
      border-radius: var(--border-radius);
      border: 1px solid var(--gray-200);
      background: #fafbfc;
    }

    .req-section-head p,
    .req-modal-intro p {
      font-size: 13px;
    }

    .req-modal-intro h4 {
      color: var(--gray-900);
    }

    .req-modal-intro p {
      color: var(--gray-700);
    }

    .req-inline-summary {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }

    .req-summary-pill {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 6px 10px;
      border: 1px solid var(--gray-300);
      border-radius: 999px;
      background: var(--white);
      color: var(--gray-700);
      font-size: 12px;
    }

    .req-summary-pill strong {
      color: var(--gray-900);
    }

    .req-summary-note {
      padding: 10px 12px;
      border-radius: var(--border-radius);
      border: 1px solid var(--gray-200);
      background: var(--white);
      font-size: 13px;
    }

    .req-admin-modal .campo-item,
    .req-admin-modal .subtipo-item,
    .req-admin-modal .hr-row {
      border: 1px solid var(--gray-200) !important;
      border-radius: var(--border-radius) !important;
      padding: 12px !important;
      background: var(--gray-100);
      box-shadow: none;
    }

    .req-admin-modal .check-row {
      padding: 8px;
      border-radius: var(--border-radius);
    }

    .req-admin-modal .check-row:hover {
      background: rgba(0, 0, 0, 0.02);
    }

    .req-package-row .req-package-toggle,
    .req-package-row .req-package-order {
      padding: 8px 10px;
      border-radius: var(--border-radius);
      border: 1px solid var(--gray-200);
      background: var(--white);
    }

    .req-grid-span-full {
      grid-column: 1 / -1;
    }

    .req-compliance-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 12px;
      grid-column: 1 / -1;
    }

    .req-compliance-grid .form-group {
      height: 100%;
    }

    .req-compliance-grid .form-group[data-span="2"] {
      grid-column: span 2;
    }

    .req-compliance-grid .form-group[data-span="3"] {
      grid-column: 1 / -1;
    }

    .req-inline-controls {
      display: grid;
      grid-template-columns: minmax(104px, 0.95fr) minmax(132px, 1.05fr);
      gap: 8px;
      align-items: center;
    }

    @media (max-width: 900px) {
      .req-compliance-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .req-compliance-grid .form-group[data-span="2"],
      .req-compliance-grid .form-group[data-span="3"] {
        grid-column: span 2;
      }
    }

    @media (max-width: 760px) {
      .req-compliance-grid,
      .req-inline-controls {
        grid-template-columns: 1fr;
      }

      .req-compliance-grid .form-group[data-span="2"],
      .req-compliance-grid .form-group[data-span="3"] {
        grid-column: auto;
      }
    }

/* === tabla thead === */
.table > thead { background: #2563eb !important; color: #fff !important; }
.table > thead > tr > th, .table > thead > tr > td { background: #2563eb !important; color: #fff !important; border-color: rgba(255,255,255,0.34) !important; }

/* === Bootstrap compatibility: botones y badges legacy === */
:root {
  --primary: #007bff;
  --primary-dark: #0056b3;
  --secondary: #6c757d;
  --success: #28a745;
  --danger: #dc3545;
  --warning: #ffc107;
  --info: #17a2b8;
  --light: #f8f9fa;
  --dark: #343a40;
  --white: #ffffff;
}

.btn {
  border: 1px solid transparent;
  text-decoration: none;
}

.btn-primary {
  color: #fff !important;
  background-color: #007bff !important;
  border-color: #007bff !important;
}

.btn-primary:hover,
.btn-primary:focus {
  color: #fff !important;
  background-color: #0056b3 !important;
  border-color: #0056b3 !important;
}

.btn-secondary {
  color: #fff !important;
  background-color: #6c757d !important;
  border-color: #6c757d !important;
}

.btn-secondary:hover,
.btn-secondary:focus {
  color: #fff !important;
  background-color: #5a6268 !important;
  border-color: #545b62 !important;
}

.btn-success {
  color: #fff !important;
  background-color: #28a745 !important;
  border-color: #28a745 !important;
}

.btn-success:hover,
.btn-success:focus {
  color: #fff !important;
  background-color: #218838 !important;
  border-color: #1e7e34 !important;
}

.btn-danger {
  color: #fff !important;
  background-color: #dc3545 !important;
  border-color: #dc3545 !important;
}

.btn-danger:hover,
.btn-danger:focus {
  color: #fff !important;
  background-color: #c82333 !important;
  border-color: #bd2130 !important;
}

.btn-warning {
  color: #212529 !important;
  background-color: #ffc107 !important;
  border-color: #ffc107 !important;
}

.btn-warning:hover,
.btn-warning:focus {
  color: #212529 !important;
  background-color: #e0a800 !important;
  border-color: #d39e00 !important;
}

.btn-info {
  color: #fff !important;
  background-color: #17a2b8 !important;
  border-color: #17a2b8 !important;
}

.btn-light {
  color: #212529 !important;
  background-color: #f8f9fa !important;
  border-color: #f8f9fa !important;
}

.btn-dark {
  color: #fff !important;
  background-color: #343a40 !important;
  border-color: #343a40 !important;
}

.badge {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
}

.badge-primary {
  color: #fff !important;
  background-color: #007bff !important;
}

.badge-secondary {
  color: #fff !important;
  background-color: #6c757d !important;
}

.badge-success {
  color: #fff !important;
  background-color: #28a745 !important;
}

.badge-danger {
  color: #fff !important;
  background-color: #dc3545 !important;
}

.badge-warning {
  color: #212529 !important;
  background-color: #ffc107 !important;
}

.badge-info {
  color: #fff !important;
  background-color: #17a2b8 !important;
}

.badge-light {
  color: #212529 !important;
  background-color: #f8f9fa !important;
}

.badge-dark {
  color: #fff !important;
  background-color: #343a40 !important;
}

.badge-cerrada {
  color: #fff !important;
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%) !important;
  box-shadow: 0 1px 4px rgba(79,70,229,0.25) !important;
}

/* ── MATRIZ: nombre del requisito en header de columna ─────────────────── */
.workers-matrix-table .wm-req-head { min-width: 90px !important; width: auto !important; max-width: 140px !important; }
.workers-matrix-table .wm-req-head > span { width: auto !important; min-width: 80px; max-width: 130px; white-space: normal !important; text-align: center; padding: 6px 4px !important; }
.workers-matrix-table .wm-req-cell { min-width: 90px !important; width: auto !important; max-width: 140px !important; }

/* ── MATRIZ: padding/margin encabezados — texto con margen, sin achicarse ── */
.workers-matrix-table thead th { padding: 10px 12px !important; }
.workers-matrix-table thead th.wm-col-name,
.workers-matrix-table thead th.wm-col-dni,
.workers-matrix-table thead th.wm-col-exp,
.workers-matrix-table thead th.wm-col-progress { padding: 10px 12px !important; }
/* Columnas fijas — nunca se achican por debajo de sus anchos definidos */
.workers-matrix-table .wm-col-name { min-width: var(--wm-name-width) !important; }
.workers-matrix-table .wm-col-dni  { min-width: var(--wm-dni-width)  !important; }
.workers-matrix-table .wm-col-progress { min-width: var(--wm-progress-width) !important; }
/* Shell siempre con scroll horizontal — nunca comprime la tabla */
.workers-matrix-shell { overflow-x: auto !important; overflow-y: auto !important; }
.workers-matrix-table { min-width: max-content !important; }
.workers-matrix-table .wm-req-nombre {
  display: block;
  font-size: 9px;
  font-weight: 500;
  color: rgba(255,255,255,.85);
  line-height: 1.2;
  margin-top: 2px;
  white-space: normal;
  word-break: break-word;
  max-width: 120px;
  text-align: center;
}

/* ── PORTAL TABLE CARD — override base .card styles ───────────────────── */
.portal-table-card,
.card.portal-table-card {
  border: 1px solid rgba(15, 56, 102, 0.08) !important;
  border-radius: 22px !important;
  box-shadow: 0 20px 36px rgba(15, 56, 102, 0.08) !important;
  overflow: visible !important;
}
/* El header y body manejan sus propios border-radius para simular overflow:hidden */
.portal-table-card .card-header,
.card.portal-table-card .card-header {
  border-radius: 22px 22px 0 0 !important;
}
.portal-table-card .card-body:last-child,
.card.portal-table-card .card-body:last-child {
  border-radius: 0 0 22px 22px !important;
}
.portal-table-card .card-header,
.card.portal-table-card .card-header {
  padding: 18px 22px !important;
  border-bottom: 1px solid rgba(15, 56, 102, 0.08) !important;
  background: linear-gradient(180deg, rgba(244,248,255,0.96), rgba(255,255,255,0.98)) !important;
}
.portal-table-card .card-body,
.card.portal-table-card .card-body {
  padding: 22px !important;
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(248,251,255,0.98)) !important;
}
.portal-table-card .card-body .table-container,
.card.portal-table-card .card-body .table-container {
  border: none !important;
  box-shadow: none !important;
  border-radius: 12px !important;
  background: transparent !important;
  margin-bottom: 0 !important;
}
.portal-table-card .card-body .table-wrapper,
.card.portal-table-card .card-body .table-wrapper {
  border: 1px solid rgba(15, 56, 102, 0.10) !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  box-shadow: 0 4px 16px rgba(15, 56, 102, 0.06) !important;
}


  
/* MATRIZ req header margin */  
.workers-matrix-table .wm-req-nombre-solo { display:block !important; font-size:9px !important; font-weight:400 !important; color:#fff !important; line-height:1.3 !important; white-space:normal !important; word-break:break-word !important; text-align:center !important; padding:6px !important; }  
.workers-matrix-table .wm-req-head  { padding:6px 4px !important; min-height:52px !important; }

/* FIX scroll horizontal matriz — body overflow-x:hidden no debe bloquear el shell */
.workers-matrix-shell {
  overflow-x: auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  position: relative !important;
}
.workers-matrix-section-body {
  overflow: visible !important;
  min-width: 0 !important;
}
#trabajadores .workers-matrix-shell,
#trabajadores .workers-matrix-section .workers-matrix-shell {
  overflow-x: auto !important;
  overflow-y: auto !important;
  max-height: min(72vh, 820px) !important;
  -webkit-overflow-scrolling: touch !important;
}

/* Auditoria documental: vista compacta tipo checklist para PC y celular */
.audit-pos { gap: 12px; }
.audit-intake { padding: 14px; }
.audit-mode-grid { margin-top: 8px; }
.audit-detail-hero { padding: 14px; border: 1px solid var(--portal-line-soft); border-radius: 12px; background: linear-gradient(180deg, #fff, #f8fbff); }
.audit-entity-pill { display: inline-flex; align-items: center; gap: 7px; padding: 5px 9px; border-radius: 999px; background: #eef4ff; color: var(--portal-blue); font-size: 11px; font-weight: 850; }
.audit-entity-meta { margin-top: 5px; color: var(--portal-muted); font-size: 12px; }
.audit-entity-flags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.audit-entity-flags span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid #e4edf6; border-radius: 999px; background: #fff; color: #40516a; font-size: 11px; font-weight: 750; }
.audit-section-title { display: flex; align-items: center; gap: 8px; color: var(--portal-ink); font-size: 14px; font-weight: 900; }
.audit-doc-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 10px; }
.audit-doc-group { align-content: start; border-radius: 12px; box-shadow: 0 10px 26px -26px rgba(15, 23, 42, .35); }
.audit-doc-group-head { position: sticky; top: 0; z-index: 1; padding-bottom: 6px; border-bottom: 1px solid #edf2f7; background: #fff; }

.audit-doc-card { 
  display: flex !important; 
  flex-direction: column;
  gap: 12px; 
  align-items: stretch; 
  padding: 16px; 
  border-radius: 14px; 
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
  border: 1px solid #eef2f6;
  background: #fff;
  min-height: 0;
}
.audit-doc-card--aprobado { border-color: #d1fadf; background: #f8fff9; }
.audit-doc-card--pendiente { border-color: #d1e9ff; background: #f8fbff; }
.audit-doc-card--rechazado, .audit-doc-card--vencido { border-color: #fee2e2; background: #fffafa; }
.audit-doc-card--falta { border-color: #ffedd5; background: #fffdfa; }
.audit-doc-card--por-vencer { border-color: #fef08a; background: #fffdeb; border-left: 4px solid #f59e0b; }

.audit-doc-card-header {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.audit-doc-state { 
  width: 36px; height: 36px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center; 
  border-radius: 10px; font-size: 16px;
  background: #eef4ff; color: var(--portal-blue);
}
.audit-doc-card--falta .audit-doc-state, .audit-doc-card--por-vencer .audit-doc-state { background: #fff7ed; color: #c2410c; }
.audit-doc-card--rechazado .audit-doc-state, .audit-doc-card--vencido .audit-doc-state { background: #fef2f2; color: var(--portal-red); }
.audit-doc-card--aprobado .audit-doc-state { background: #ecfdf3; color: var(--portal-green); }

.audit-doc-main {
  flex: 1; min-width: 0;
}

.audit-doc-title-line { 
  display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; 
}
.audit-doc-title-line strong { color: var(--portal-ink); font-size: 13.5px; font-weight: 800; line-height: 1.3; }
.audit-doc-period { color: #64748b; font-size: 12px; white-space: nowrap; font-weight: 600; background: #f1f5f9; padding: 2px 8px; border-radius: 20px;}

.audit-doc-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; align-items: center; }
.audit-doc-meta span { color: #64748b; font-size: 11.5px; display: inline-flex; align-items: center; }
.audit-status-dot { background: #e2e8f0; color: #334155; font-weight: 850; padding: 2px 8px; border-radius: 20px; display: inline-block; margin-right: 4px;}

.audit-doc-actions { 
  display: flex; flex-wrap: wrap; gap: 8px; 
  padding-top: 12px;
  border-top: 1px dashed #e2e8f0;
  margin-top: auto;
}
.audit-doc-actions .btn { min-height: 32px; padding: 6px 14px; border-radius: 8px; font-size: 12px; font-weight: 600; flex: 1 1 auto; justify-content: center; display: inline-flex; align-items: center; gap: 6px;}

.audit-worker-activities { border-radius: 12px; box-shadow: 0 10px 26px -26px rgba(15, 23, 42, .35); }
.audit-worker-activity-list { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.audit-activity-state { justify-self: end; padding: 4px 8px; border-radius: 999px; background: #eef2f7; color: #334155; font-size: 11px; font-weight: 850; }
.audit-worker-empty { padding: 10px; border: 1px dashed #cbd5e1; border-radius: 10px; color: #64748b; font-size: 12px; }

@media (min-width: 1180px) {
  .audit-doc-groups { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .audit-doc-groups { grid-template-columns: 1fr; }
  .audit-detail-hero { padding: 12px; }
}
@media (max-width: 560px) {
  .audit-intake { padding: 10px; }
  .audit-mode-grid { gap: 7px; }
  .audit-mode-card { min-height: 50px; padding: 9px; }
  .audit-mode-card i { width: 32px; height: 32px; }
  .audit-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .audit-summary .portal-mini-stat { padding: 8px 6px; }
  .audit-summary .portal-mini-stat span { font-size: 10px; }
  .audit-summary .portal-mini-stat strong { font-size: 17px; }
  .audit-doc-actions { flex-direction: row; flex-wrap: nowrap; justify-content: flex-start; gap: 4px; }
  .audit-doc-actions .btn { width: auto; flex: 1 1 0; min-width: 0; padding: 4px 2px; font-size: 10.5px; }
  .audit-worker-activity { grid-template-columns: 30px minmax(0, 1fr); }
  .audit-activity-state { grid-column: 2; justify-self: start; }
}
 
