:root{
  --brand:#0093D4; --brand-dark:#0077AE; --brand-light:#E7F4FB;
  --accent:#EF7F1A; --accent-dark:#D86E0C;
  --ink:#0F1B2D; --ink-soft:#5B6B80; --line:#E7ECF3; --bg:#F6F8FB;
  --apto:#16A34A; --noapto:#DC2626; --norev:#D97706;
}
*{box-sizing:border-box}
html,body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px}

.layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.sidebar{background:#fff;border-right:1px solid var(--line);padding:0}
.sidebar .logo{height:64px;display:flex;align-items:center;padding:0 22px;border-bottom:1px solid var(--line)}
.sidebar .logo img{height:36px}
.sidebar .nav{padding:14px 12px;display:flex;flex-direction:column;gap:2px}
.sidebar .nav-title{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);padding:14px 12px 6px;font-weight:600}
.sidebar .nav a{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:500}
.sidebar .nav a:hover{background:var(--brand-light)}
.sidebar .nav a.active{background:var(--brand);color:#fff}
.sidebar .nav a.active i{color:#fff}
.sidebar .nav a i{color:var(--brand);font-size:18px;width:20px;text-align:center}
.sidebar .nav a.active i,.sidebar .nav a:hover i{color:inherit}
/* submenus desplegables */
.sidebar .nav details{margin:1px 0}
.sidebar .nav details summary{list-style:none;display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:10px;color:var(--ink);font-weight:500;cursor:pointer;font-size:14px}
.sidebar .nav details summary::-webkit-details-marker{display:none}
.sidebar .nav details summary:hover{background:var(--brand-light)}
.sidebar .nav details summary > i:first-child{color:var(--brand);font-size:18px;width:20px;text-align:center}
.sidebar .nav details summary .arrow{margin-left:auto;font-size:11px;color:var(--ink-soft);transition:transform .2s}
.sidebar .nav details[open] summary .arrow{transform:rotate(180deg)}
.sidebar .nav details .submenu{display:flex;flex-direction:column;gap:2px;padding:2px 0 6px 0}
.sidebar .nav details .submenu a{padding:7px 14px 7px 46px;border-radius:8px;color:var(--ink-soft);font-size:13px;font-weight:500;text-decoration:none;display:flex;align-items:center;gap:8px}
.sidebar .nav details .submenu a:hover{background:var(--brand-light);color:var(--brand)}
.sidebar .nav details .submenu a.active{background:var(--brand);color:#fff;font-weight:600}
.sidebar .nav details .submenu a::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--ink-soft);opacity:.5}
.sidebar .nav details .submenu a.active::before{background:#fff;opacity:1}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--line);height:64px;padding:0 28px;display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:100}
.topbar .search{flex:1;max-width:480px;position:relative}
.topbar .search input{width:100%;padding:9px 14px 9px 38px;border:1px solid var(--line);border-radius:10px;background:#F6F8FB;font-size:13.5px}
.topbar .search i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-soft)}
.topbar .actions{margin-left:auto;display:flex;align-items:center;gap:14px}
.topbar .btn-bell{position:relative;background:#F6F8FB;border:1px solid var(--line);width:38px;height:38px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink)}
.topbar .btn-bell .dot{position:absolute;top:8px;right:9px;width:8px;height:8px;background:var(--accent);border-radius:50%;border:2px solid #fff}
.topbar .user{display:flex;align-items:center;gap:10px}
.topbar .avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.topbar .user .name{font-weight:700;font-size:13px}
.topbar .user .role{font-size:11px;color:var(--ink-soft)}

.content{padding:26px 28px;flex:1}
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.page-head h1{font-size:24px;margin:0;font-weight:800}
.page-head .crumbs{color:var(--ink-soft);font-size:12.5px;margin-top:4px}
.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:10px;padding:10px 16px;font-weight:600;font-size:13.5px;cursor:pointer;text-decoration:none}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-dark)}
.btn-accent{background:var(--accent);color:#fff}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:var(--brand-light)}
/* Metronic griséa los <i> (i{color:#A1A5B7}); en botones de color el icono va del color del texto */
.btn-primary i,.btn-primary .bi,.btn-accent i,.btn-accent .bi{color:#fff !important}
.btn-ghost i,.btn-ghost .bi{color:inherit !important}
/* Regla general: los iconos del contenido reskin heredan el color de su contexto
   (mata el gris i{color:#A1A5B7} de Metronic). Las reglas mas especificas
   (botones de color, doc-row, filter-chip, chips) siguen ganando. */
.rvz i,.rvz .bi,.rvz-form i,.rvz-form .bi{color:inherit}

.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.cards.cols-3{grid-template-columns:repeat(3,1fr)}
.stat{display:flex;flex-direction:column;gap:6px}
.stat .icon{flex-shrink:0}
.stat .label{color:var(--ink-soft);font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.stat .value{font-size:28px;font-weight:800}
.stat .trend{font-size:12px;color:var(--ink-soft)}
.stat .trend.up{color:var(--apto)} .stat .trend.down{color:var(--noapto)}
.stat .icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;margin-bottom:8px}
.icon-brand{background:var(--brand)} .icon-apto{background:var(--apto)} .icon-noapto{background:var(--noapto)} .icon-accent{background:var(--accent)}
/* Forzar icono blanco dentro del cuadro de color (Metronic lo pinta gris) */
.stat .icon i,.stat .icon .bi,.content .stat .icon i,.kpi-mini .ico i,.rvz-hamb i,.rvz-hamb .bi{color:#fff !important;opacity:1}
/* Metronic mete i{font-size:1rem} y encoge el glifo dentro del cuadro: lo forzamos */
.stat .icon i,.stat .icon .bi{font-size:22px !important}
.kpi-mini .ico i,.kpi-mini .ico .bi{font-size:20px !important}

.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}

.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.section-title h2{font-size:16px;margin:0;font-weight:700}
.section-title .link{color:var(--brand);text-decoration:none;font-weight:600;font-size:13px}

table.tbl{width:100%;border-collapse:collapse}
table.tbl th{text-align:left;padding:10px 12px;font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);border-bottom:1px solid var(--line);background:#FBFCFD}
table.tbl td{padding:14px 12px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}
table.tbl tr:last-child td{border-bottom:none}
table.tbl tr:hover td{background:#FAFBFD}
.serie{font-weight:700;color:var(--brand)}
.cell-ico{color:var(--ink-soft);font-size:13px;white-space:nowrap}
.cell-ico i,.cell-ico .bi{margin-right:5px;vertical-align:-2px}
/* Celda con avatar de iniciales (inspector) */
.cell-user{display:flex;align-items:center;gap:9px}
.avatar-sm{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-dark));
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11.5px;flex-shrink:0}
.avatar-sm.muted{background:#E6EAF0;color:var(--ink-soft)}
.avatar-sm i{color:#fff}
.avatar-sm.muted i{color:var(--ink-soft)}

.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap}
.chip.apto{background:#E5F6EC;color:var(--apto)}
.chip.noapto{background:#FBE7E7;color:var(--noapto)}
.chip.norev{background:#FCEBD3;color:var(--norev)}
.chip.muted{background:#F0F2F5;color:var(--ink-soft)}
/* Metronic griséa los <i> por defecto: en el chip de resultado el icono hereda el color del chip */
.content .chip i,.content .chip .bi{color:inherit !important;opacity:1 !important}
.content .cell-ico i,.content .cell-ico .bi{color:var(--ink-soft) !important;opacity:1 !important}
.chip.brand{background:var(--brand-light);color:var(--brand)}

.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar select,.toolbar input{padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:13px;min-width:160px}
.filter-chip{padding:7px 14px;border-radius:20px;background:#fff;border:1px solid var(--line);font-weight:600;cursor:pointer;font-size:12.5px}
.filter-chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}

.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:16px;color:var(--ink-soft);font-size:13px}
.pagination .pages{display:flex;gap:6px}
.pagination .pages a{padding:7px 12px;border:1px solid var(--line);border-radius:8px;color:var(--ink);text-decoration:none;font-weight:600}
.pagination .pages a.active{background:var(--brand);color:#fff;border-color:var(--brand)}

.timeline{display:flex;flex-direction:column;gap:12px}
.timeline .item{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:flex-start}
.timeline .dot{width:14px;height:14px;border-radius:50%;margin-top:4px}
.timeline .body .meta{color:var(--ink-soft);font-size:12px}
.timeline .body .what{font-weight:600;font-size:13.5px}
.timeline a.item{text-decoration:none;color:inherit;padding:8px;margin:-8px;border-radius:10px}
.timeline a.item:hover{background:var(--brand-light)}
.timeline a.item:hover .what{color:var(--brand)}
/* Ranking (top inspectores) */
.rank{display:flex;flex-direction:column;gap:14px;padding-top:4px}
.rank-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center}
.rank-pos{width:26px;height:26px;border-radius:50%;background:var(--brand-light,#E6F4FB);color:var(--brand);
  display:grid;place-items:center;font-weight:700;font-size:13px;flex-shrink:0}
.rank-item:nth-child(1) .rank-pos{background:var(--accent);color:#fff}
.rank-main{min-width:0}
.rank-name{font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-bar{height:6px;border-radius:6px;background:#EAF1F7;margin-top:5px;overflow:hidden}
.rank-bar span{display:block;height:100%;border-radius:6px;background:var(--brand)}
.rank-val{font-weight:700;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
/* Fila de KPIs secundarios (Clientes, Inspectores, Ubicaciones, Conformidad) */
.kpis-2{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.kpi-mini{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:12px}
.kpi-mini .ico{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;flex-shrink:0}
.kpi-mini .l{font-size:11.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.3px;font-weight:600}
.kpi-mini .v{font-size:22px;font-weight:800;line-height:1.1;margin-top:2px}
@media(max-width:900px){.kpis-2{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.kpis-2{grid-template-columns:1fr}}
/* Fila de gráficos: evolución (ancha) + estado (donut) */
.charts-row{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;margin-bottom:16px}
@media(max-width:900px){.charts-row{grid-template-columns:1fr}}
/* Fila final: recientes (tabla ancha) + próximas (timeline) */
.bottom-row{display:grid;grid-template-columns:1.7fr 1fr;gap:16px}
@media(max-width:1100px){.bottom-row{grid-template-columns:1fr}}

.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 18px;font-size:13.5px;margin-bottom:6px}
.kv .k{color:var(--ink-soft)}
.kv .v{font-weight:600}

.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.field label{display:block;font-size:12.5px;color:var(--ink-soft);font-weight:600;margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:13.5px;background:#fff}

/* Login */
.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.login .left{background:linear-gradient(135deg,var(--brand-light),#fff);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:60px}
.login .left img{width:280px;margin-bottom:20px}
.login .left .bar{width:60px;height:5px;background:var(--accent);border-radius:4px;margin:14px 0 18px}
.login .left .sub{color:var(--ink-soft);max-width:340px;text-align:center}
.login .right{display:flex;flex-direction:column;justify-content:center;padding:60px 80px;background:#fff}
.login .right h1{font-size:22px;margin:0 0 6px}
.login .right .desc{color:var(--ink-soft);margin-bottom:28px;font-size:13.5px}
.login .field{margin-bottom:14px}
.login .btn-primary{width:100%;padding:13px;font-size:14px;justify-content:center}
.login .footer{margin-top:24px;color:var(--ink-soft);font-size:12px;text-align:center}

.badge-multi{display:inline-flex;align-items:center;gap:4px;background:var(--accent);color:#fff;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:700}

.avatars{display:flex}
.avatars .a{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;border:2px solid #fff;margin-left:-8px}
.avatars .a:first-child{margin-left:0}

/* ===== Botón hamburguesa + backdrop (móvil) ===== */
.rvz-hamb{display:none;gap:7px;background:var(--brand);border:none;height:40px;padding:0 14px;border-radius:10px;align-items:center;justify-content:center;cursor:pointer;color:#fff;font-size:15px;font-weight:700;flex-shrink:0}
.rvz-hamb i{font-size:19px}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(15,27,45,.45);z-index:150}
.sidebar-backdrop.show{display:block}
/* Barra de impersonación (admin viendo como cliente/inspector) */
.impersonate-bar{background:linear-gradient(90deg,#FFF3E0,#FFE7C7);border-bottom:1px solid #F0C88A;color:#8a5a12;
  padding:9px 20px;font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.impersonate-bar i{color:var(--accent)}
.impersonate-bar b{color:#5c3d0a}
.impersonate-bar a{margin-left:auto;color:var(--brand);font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:6px;
  background:#fff;border:1px solid var(--brand);border-radius:8px;padding:5px 12px}
.impersonate-bar a:hover{background:var(--brand);color:#fff}
.impersonate-bar a i{color:inherit}
/* Botón plegar menú (escritorio) + estado plegado con expansión al pasar el ratón */
.rvz-collapse{display:none}
@media(min-width:901px){
  /* Menú lateral FIJO: patrón app-shell. El layout ocupa la pantalla y NO scrollea;
     el contenido (.main) scrollea por su cuenta y el menú se queda quieto. Si el menú
     es más largo que la pantalla, scrollea dentro del propio sidebar. */
  .layout{height:100vh;min-height:0;overflow:hidden}
  .sidebar{overflow-y:auto}
  .main{height:100vh;overflow-y:auto}
  .rvz-collapse{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;
    border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;flex-shrink:0;font-size:18px}
  .rvz-collapse:hover{background:var(--brand-light);color:var(--brand);border-color:var(--brand)}
  body.sb-collapsed .layout{grid-template-columns:74px 1fr}
  body.sb-collapsed .sidebar{overflow:visible}
  body.sb-collapsed .sidebar .logo{padding:0;justify-content:center}
  body.sb-collapsed .sidebar .logo img{height:28px}
  body.sb-collapsed .sidebar .nav{padding:14px 10px}
  body.sb-collapsed .sidebar .nav-title{font-size:0;height:12px;padding:6px 0}
  body.sb-collapsed .sidebar .nav > a,
  body.sb-collapsed .sidebar .nav summary{font-size:0;justify-content:center;gap:0}
  body.sb-collapsed .sidebar .nav > a i,
  body.sb-collapsed .sidebar .nav summary > i:first-child{font-size:19px}
  body.sb-collapsed .sidebar .nav summary .arrow{display:none}
  body.sb-collapsed .sidebar .nav details > .submenu{display:none}
  /* Flyout: al pasar el ratón sobre una sección, su submenú sale como popup al lado (no tapa el contenido) */
  body.sb-collapsed .sidebar .nav details{position:relative}
  body.sb-collapsed .sidebar .nav details:hover > .submenu{display:block;position:absolute;left:calc(100% + 8px);top:0;
    min-width:200px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px rgba(20,40,70,.18);
    padding:8px;z-index:500}
  body.sb-collapsed .sidebar .nav details:hover > .summary,
  body.sb-collapsed .sidebar .nav details:hover > summary{background:var(--brand-light)}
  body.sb-collapsed .sidebar .nav details:hover > .submenu a{font-size:13.5px;white-space:nowrap}
  /* Tooltip de la etiqueta para items sin submenú (Dashboard) */
  body.sb-collapsed .sidebar .nav > a{position:relative}
  body.sb-collapsed .sidebar .nav > a[data-label]:hover::after{content:attr(data-label);position:absolute;left:calc(100% + 8px);
    top:50%;transform:translateY(-50%);background:var(--ink,#0F1B2D);color:#fff;font-size:12px;padding:6px 10px;border-radius:8px;
    white-space:nowrap;z-index:500;font-weight:600}
}

/* ===== Responsive ===== */
@media (max-width:1200px){
  .cards{grid-template-columns:repeat(2,1fr)}
  .grid-2{grid-template-columns:1fr}
}
@media (max-width:900px){
  .layout{grid-template-columns:1fr}
  .cards.cols-3{grid-template-columns:1fr}
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:264px;z-index:200;transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 0 44px rgba(0,0,0,.18);overflow-y:auto}
  .sidebar.open{transform:translateX(0)}
  .rvz-hamb{display:inline-flex}
  .topbar{padding:0 14px;gap:10px}
  .topbar .search{max-width:none}
  .content{padding:18px 14px}
  .page-head{flex-direction:column;align-items:flex-start;gap:12px}
  .page-head h1{font-size:20px}
  .cards{grid-template-columns:repeat(2,1fr);gap:12px}
  .topbar .user .name{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar .user .role{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media (max-width:560px){
  .cards{grid-template-columns:1fr}
  .topbar .user > div:not(.avatar){display:none}
  .topbar .search input{font-size:13px;padding:9px 12px 9px 36px}
}

/* ===== Armonización de páginas Metronic dentro del shell nuevo =====
   Cosmético y conservador: NO cambia estructura ni rompe DataTables/JS.
   Solo aplica dentro de .content (los modales quedan fuera). */
.content #kt_content_container{max-width:none !important;margin:0 !important;padding:0 !important;background:none !important;border-radius:0 !important}
.content .card{box-shadow:none}
.content .card .card-header{border-bottom:1px solid var(--line);min-height:auto;padding:16px 20px}
.content .card .card-title h1,.content .card .card-title h2,.content .card .card-title h3{font-size:16px;font-weight:700;color:var(--ink)}
/* Tablas (incluye DataTables) */
.content table.table thead th{text-transform:uppercase;font-size:11.5px;letter-spacing:.4px;color:var(--ink-soft);background:#FBFCFD;border-bottom:1px solid var(--line);font-weight:700}
.content table.table tbody td{font-size:13.5px;border-bottom:1px solid var(--line);vertical-align:middle}
.content table.table tbody tr:hover td{background:#FAFBFD}
/* Formularios */
.content .form-control,.content .form-select,.content .form-control-solid{border:1px solid var(--line) !important;border-radius:10px !important;background:#fff !important;font-size:13.5px}
.content .form-control:focus,.content .form-select:focus{border-color:var(--brand) !important;box-shadow:0 0 0 3px rgba(0,147,212,.12) !important}
.content .form-label{font-size:12.5px;color:var(--ink-soft);font-weight:600}
/* Botones (armoniza los colores de marca, mantiene tamaños de Bootstrap/Metronic) */
.content .btn.btn-primary,.content .btn.btn-light-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.content .btn.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}
.content .btn.btn-light-primary{background:var(--brand-light);color:var(--brand);border-color:var(--brand-light)}
/* Badges → chips redondeados como el mockup (el estado lo pinta users.js con
   badge-light-*; lo re-coloreamos por CSS sin tocar el JS ni la lógica de export) */
.content .badge{border-radius:20px !important;font-weight:700;font-size:11.5px;padding:5px 12px !important;letter-spacing:0}
.content .badge.badge-light-success{background:#E5F6EC;color:var(--apto)}
.content .badge.badge-light-danger{background:#FBE7E7;color:var(--noapto)}
.content .badge.badge-light-warning{background:#FCEBD3;color:var(--norev)}
.content .badge.badge-light-dark{background:#EEF0F3;color:#3A4453}
.content .badge.badge-light-primary{background:var(--brand-light);color:var(--brand)}
/* Paginación de DataTables */
.content .dataTables_wrapper .dataTables_paginate .paginate_button.current{background:var(--brand) !important;border-color:var(--brand) !important;color:#fff !important;border-radius:8px}
/* ===== DataTables (listados) armonizados con el reskin ===== */
/* Ocultar el buscador por defecto de DataTables en los listados que tienen buscador propio arriba */
#kt_customers_table_wrapper .dataTables_filter,
#kt_trabajadores_table_wrapper .dataTables_filter,
#kt_responsible_table_wrapper .dataTables_filter,
#kt_project_users_table_wrapper .dataTables_filter{display:none}
.content .dataTables_length label,.content .dataTables_info{color:var(--ink-soft);font-size:13px}
.content .dataTables_length select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;
  padding:7px 28px 7px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;
  color:var(--ink);font-size:13px;margin:0 6px;min-width:76px;cursor:pointer;height:auto;line-height:1.3}
.content .dataTables_length select:focus{outline:none;border-color:var(--brand)}
/* Botonera (Columnas / exportar) */
.content .dt-buttons{display:inline-flex;gap:8px;flex-wrap:wrap}
.content .dt-buttons .dt-button,.content .dt-buttons .dt-button.btn{
  background:#fff;border:1px solid var(--line);border-radius:9px;color:var(--ink) !important;
  padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;box-shadow:none}
.content .dt-buttons .dt-button:hover{background:var(--brand-light);border-color:var(--brand);color:var(--brand) !important}
.content .dt-buttons .dt-button i,.content .dt-buttons .dt-button .bi{color:inherit !important;opacity:1}
/* Selector de columnas propio (reskin) */
.rvz-colpick{position:relative;display:inline-block}
.rvz-colpick-btn{background:#fff;border:1px solid var(--line);border-radius:9px;color:var(--ink);
  padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.rvz-colpick-btn:hover{background:var(--brand-light);border-color:var(--brand);color:var(--brand)}
.rvz-colpick-btn i{color:inherit}
.rvz-colpick-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:1300;display:none;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 38px rgba(20,40,70,.18);padding:8px;
  min-width:240px;max-height:360px;overflow:auto}
.rvz-colpick.open .rvz-colpick-menu{display:block}
.rvz-colpick-head{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);
  font-weight:700;padding:6px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.rvz-colpick-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;font-size:13.5px;
  color:var(--ink);cursor:pointer;font-weight:500;user-select:none}
.rvz-colpick-item:hover{background:var(--brand-light)}
.rvz-colpick-item input{width:16px;height:16px;accent-color:var(--brand);cursor:pointer;margin:0}
/* ===== Barra de filtros del listado (chips + panel avanzado) ===== */
.rvz-filterbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.filter-chips{display:flex;gap:8px;flex-wrap:wrap}
.filter-chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;border:1px solid var(--line);
  background:#fff;color:var(--ink-soft);font-size:13px;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.filter-chip .cnt{background:#EEF2F7;color:var(--ink-soft);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.filter-chip i{font-size:13px}
.filter-chip:hover{border-color:var(--brand);color:var(--brand)}
.filter-chip.fc-apto i{color:var(--apto)} .filter-chip.fc-noapto i{color:var(--noapto)} .filter-chip.fc-norev i{color:var(--norev)}
.filter-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}
.filter-chip.fc-apto.active{background:var(--apto);border-color:var(--apto)}
.filter-chip.fc-noapto.active{background:var(--noapto);border-color:var(--noapto)}
.filter-chip.fc-norev.active{background:var(--norev);border-color:var(--norev)}
.filter-chip.active i{color:#fff !important}
.filter-chip.active .cnt{background:rgba(255,255,255,.25);color:#fff}
.filter-actions{display:flex;gap:8px}
.filter-actions .btn{white-space:nowrap}
/* Móvil: chips en rejilla 2×2 y botones a ancho completo (evita el apilado suelto) */
@media(max-width:640px){
  .rvz-filterbar{flex-direction:column;align-items:stretch;gap:12px}
  .filter-chips{display:flex;flex-direction:column;gap:8px}
  .filter-chip{justify-content:space-between;padding:11px 14px;width:100%}
  .filter-chip i{flex-shrink:0}
  .filter-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .filter-actions .btn{width:100%;justify-content:center}
}
/* Panel avanzado (bloque inset agrupado) */
.rvz-adv{display:none;margin-top:16px;background:#F7FAFC;border:1px solid var(--line);border-radius:12px;padding:18px}
.rvz-adv.open{display:block}
.rvz-adv-title{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px}
.rvz-adv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.rvz-adv-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.rvz-adv-grid{grid-template-columns:1fr}}
/* el desplegable de Select2 nunca más estrecho que su campo */
.select2-container .select2-dropdown{min-width:240px}
.rvz-adv .fld label{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:6px}
.rvz-adv .fld label i{color:var(--brand);font-size:13px}
.rvz-adv-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);gap:12px;flex-wrap:wrap}
.rvz-switch{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink);cursor:pointer;user-select:none}
.rvz-switch input{width:16px;height:16px;accent-color:var(--brand)}
/* Select2 dentro del panel avanzado, con estilo reskin (borde en el contenedor exterior) */
/* OJO: Metronic usa el tema select2 'bootstrap5' (no 'default') y le mete height:auto !important.
   Por eso apuntamos a .select2-container SIN calificador de tema y forzamos la altura. */
.rvz-adv .select2-container{width:100% !important;border:1px solid #CBD5E1;border-radius:10px;background:#fff}
.rvz-adv .select2-container:focus-within{border-color:var(--brand)}
.rvz-adv .select2-container .select2-selection--single,
.rvz-adv .select2-container .select2-selection{height:44px !important;min-height:44px !important;border:0 !important;
  box-shadow:none !important;background:transparent !important;display:flex !important;align-items:center;padding:0}
.rvz-adv .select2-container .select2-selection__rendered{line-height:normal !important;color:var(--ink);padding:0 30px 0 14px !important;width:100%}
.rvz-adv .select2-container .select2-selection__arrow{height:42px !important;top:1px}
.rvz-adv .select2-container .select2-selection__placeholder{color:var(--ink-soft)}
.rvz-adv .select2-container .select2-selection__clear{margin-right:6px}
.select2-dropdown{border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px rgba(20,40,70,.14)}

/* ===== Detalle del equipo — vista de lectura (mockup 04) ===== */
.detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
.detail-head .ttl{display:flex;align-items:center;gap:14px;margin-top:6px}
.detail-head h1{margin:0;font-size:26px;font-weight:800;color:var(--brand)}
.detail-head .acts{display:flex;gap:10px;flex-wrap:wrap}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 30px}
.kv{margin-bottom:14px}
.kv:last-child{margin-bottom:0}
.kv .k{color:var(--ink-soft);font-size:12.5px;margin-bottom:2px}
.kv .v{font-weight:600;font-size:14px}
.kv .v.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.5px}
.avatar-md{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
.avatar-md.accent{background:linear-gradient(135deg,var(--accent),var(--accent-dark))}
.insp-row{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--line);border-radius:10px}
.insp-row .who{flex:1;min-width:0}
.insp-row .who .nm{font-weight:700;font-size:13.5px}
.insp-row .who .rl{color:var(--ink-soft);font-size:12px}
.doc-row{display:flex;align-items:center;gap:10px;padding:8px;text-decoration:none;color:inherit;border-radius:8px}
.doc-row:hover{background:var(--brand-light)}
.doc-row .file{font-size:20px}
.doc-row .info{flex:1;min-width:0}
.doc-row .info .nm{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-row .info .mt{color:var(--ink-soft);font-size:11px}
.doc-row .dl{color:var(--ink-soft)}
.qa-btn{justify-content:flex-start !important}
/* Rejilla de campos de formulario (altas estilo mockup 06) */
.rvz-fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rvz-fgrid .field.full{grid-column:1 / -1}
.rvz-form .field .form-label{margin-bottom:6px}
.rvz-form .field{min-width:0}
.rvz-note{color:var(--ink-soft);font-size:13px;background:var(--brand-light);border-radius:10px;padding:12px 14px}
@media(max-width:1100px){.rvz-fgrid{grid-template-columns:1fr}}
@media(max-width:900px){.detail-grid{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr;gap:0}.detail-head{flex-direction:column}.rvz-fgrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.rvz-fgrid{grid-template-columns:1fr}}

/* ===== Ficha del equipo / formularios reskin (detalle_articulo, altas) ===== */
.equipo-strip{display:flex;flex-wrap:wrap;gap:14px 30px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 22px;margin-bottom:18px}
.equipo-strip .es-item{display:flex;flex-direction:column;gap:5px}
.equipo-strip .es-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);font-weight:600}
.equipo-strip .es-val{font-weight:700;font-size:14.5px}
.equipo-strip .es-val.serie{color:var(--brand)}
/* Tarjetas y cabeceras dentro del formulario */
.rvz-form .card,.rvz-form .card.card-flush{border-radius:16px;border:1px solid var(--line);box-shadow:none}
.rvz-form .card-header{border-bottom:1px solid var(--line);min-height:auto;padding:16px 22px}
.rvz-form .card-header .card-title h2{font-size:16px;font-weight:700;margin:0}
.rvz-form .card-body{padding:20px 22px}
/* Etiquetas */
.rvz-form .form-label{font-weight:600;font-size:12.5px;color:var(--ink);margin-bottom:6px}
.rvz-form .form-label.required::after{content:" *";color:var(--noapto)}
/* Formularios horizontales Metronic (altas de cliente/inspector/trabajador/responsable/ubicación) */
.rvz-form .card-header h3{font-size:16px;font-weight:700;margin:0}
.rvz-form .col-form-label{font-weight:600;font-size:13px;color:var(--ink)}
.rvz-form .row.mb-6{margin-bottom:18px !important}
/* Espaciadores &nbsp legacy fuera; usamos gap real entre filas */
.rvz-form .text-muted.fs-7{display:none}
.rvz-form .d-flex.flex-wrap.gap-5{margin-bottom:16px}
/* Inputs y selects nativos */
.rvz-form .form-control,.rvz-form .form-select{min-height:44px;border:1px solid #CBD5E1;border-radius:10px;background:#fff;font-size:13.5px;color:var(--ink)}
.rvz-form .form-control:focus,.rvz-form .form-select:focus{border-color:var(--brand);box-shadow:none}
.rvz-form .form-control[readonly],.rvz-form .form-control:disabled,.rvz-form .form-select:disabled{background:#EFF2F5;color:var(--ink-soft)}
.rvz-form textarea.form-control{min-height:90px}
/* Select2 (mismo fix de altura que .rvz-adv, scoped al formulario) */
.rvz-form .select2-container{width:100% !important;border:1px solid #CBD5E1;border-radius:10px;background:#fff}
.rvz-form .select2-container:focus-within{border-color:var(--brand)}
.rvz-form .select2-container--disabled,.rvz-form .select2-container--disabled .select2-selection{background:#EFF2F5 !important}
.rvz-form .select2-container .select2-selection--single,
.rvz-form .select2-container .select2-selection{height:44px !important;min-height:44px !important;border:0 !important;
  box-shadow:none !important;background:transparent !important;display:flex !important;align-items:center;padding:0}
.rvz-form .select2-container .select2-selection__rendered{line-height:normal !important;color:var(--ink);padding:0 30px 0 14px !important;width:100%}
.rvz-form .select2-container .select2-selection__arrow{height:42px !important;top:1px}
.rvz-form .select2-container .select2-selection__placeholder{color:var(--ink-soft)}
.rvz-form .select2-container .select2-selection__clear{margin-right:6px}
/* Botonera del formulario */
.rvz-form .btn.btn-primary{background:var(--brand);border-color:var(--brand)}
.rvz-form .btn.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}
.rvz-form .image-input-wrapper{border-radius:12px}
/* Alineación estable de la tabla (evita desalineado al ordenar) */
#kt_project_users_table td,#kt_project_users_table th{vertical-align:middle}
#kt_project_users_table td.sorting_1,#kt_project_users_table td.sorting_2,#kt_project_users_table td.sorting_3{background:transparent}
#kt_project_users_table .avatar-sm{display:inline-flex}
.content .page-item.active .page-link{background:var(--brand);border-color:var(--brand)}

/* --- Fotos del equipo (galería + lightbox) --- */
.foto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}
.foto-thumb{position:relative;aspect-ratio:1/1;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--bg)}
.foto-thumb img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;display:block}
.foto-del{position:absolute;top:3px;right:3px;width:22px;height:22px;border:none;border-radius:50%;background:rgba(15,27,45,.62);color:#fff;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s}
.foto-thumb:hover .foto-del{opacity:1}
.foto-del:hover{background:var(--noapto,#DC2626)}
.rvz-lightbox{position:fixed;inset:0;background:rgba(8,14,24,.85);z-index:1080;display:none;align-items:center;justify-content:center;padding:24px}
.rvz-lightbox.open{display:flex}
.rvz-lightbox img{max-width:92vw;max-height:88vh;border-radius:10px;box-shadow:0 12px 48px rgba(0,0,0,.5)}
.rvz-lb-close{position:absolute;top:18px;right:24px;color:#fff;font-size:26px;cursor:pointer;line-height:1;opacity:.85}
.rvz-lb-close:hover{opacity:1}

/* --- Chips de resultado seleccionables (pantalla Revisar / mockup 08) --- */
.rvz-res{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;font-weight:600;padding:10px 18px;border-radius:10px;border:2px solid var(--line);background:#fff;color:var(--ink-soft);transition:all .12s}
.rvz-res:hover{border-color:var(--ink-soft)}
.rvz-res i{font-size:15px}
.rvz-res.sel.apto{background:var(--apto);border-color:var(--apto);color:#fff}
.rvz-res.sel.noapto{background:var(--noapto);border-color:var(--noapto);color:#fff}
.rvz-res.sel.norev{background:var(--norev);border-color:var(--norev);color:#fff}

/* --- Input de fichero con texto en español (evita el "No file chosen" nativo) --- */
.rvz-file{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer;margin:0}
.rvz-file > input[type=file]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.rvz-file-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:14px;font-weight:600;transition:all .12s}
.rvz-file:hover .rvz-file-btn{border-color:var(--brand);color:var(--brand)}
.rvz-file-txt{color:var(--ink-soft);font-size:13px}

/* --- Tarjetas de LISTADO (contienen tabla .table-row-dashed): un solo padding limpio,
   sin el doble margen de .card + .card-body de Metronic. La tabla queda a un inset comodo. --- */
.content .card:has(.table-row-dashed){padding:0}
.content .card:has(.table-row-dashed) > .card-header{padding:18px 24px !important}
.content .card:has(.table-row-dashed) > .card-body{padding:8px 24px 18px !important}
/* Primera columna: un poco de aire para que el texto/cabecera no quede pegado al borde. */
.content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th:first-child,
.content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td:first-child{ padding-left:6px; }
/* En las tablas de informe (sin dropdown) la 1ª columna suele ser un checkbox pegado; darle aire. */
.content .card:not(:has(.dropdown-menu)) table.table-row-dashed > thead > tr > th:first-child,
.content .card:not(:has(.dropdown-menu)) table.table-row-dashed > tbody > tr > td:first-child{ padding-left:14px !important; }

/* --- Columna de Acciones (última) de los listados: cabecera y botón alineados al mismo
   borde derecho (mismo padding en th/td) y sin la flecha de orden de DataTables que descuadra. --- */
.content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th:last-child,
.content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td:last-child{ text-align:center !important; padding-right:0 !important; }
.content .card:has(.dropdown-menu) table.dataTable thead th:last-child.sorting:after,
.content .card:has(.dropdown-menu) table.dataTable thead th:last-child.sorting:before,
.content .card:has(.dropdown-menu) table.dataTable thead th:last-child.sorting_asc:after,
.content .card:has(.dropdown-menu) table.dataTable thead th:last-child.sorting_desc:after{ display:none !important; }

/* --- Tablas de INFORMES (muchas columnas, sin dropdown de acciones): no comprimir;
   scroll horizontal dentro de la card para que no colapsen columnas ni desborden. --- */
.content .card:not(:has(.dropdown-menu)) > .card-body{ overflow-x:auto; }
.content .card:not(:has(.dropdown-menu)) table.table-row-dashed{ min-width:900px; }

/* --- Formularios: errores de campo y grid de checkboxes (nuevo cliente, etc.) --- */
.rvz-err{color:var(--noapto);font-size:12.5px;margin-top:4px;font-weight:600}
.rvz-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 16px}
.rvz-check{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink);cursor:pointer}
.rvz-check input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand);flex-shrink:0}

/* --- El menú "Acciones" (dropdown Bootstrap) se cortaba dentro del contenedor con overflow
   de la tabla. En los listados con dropdown nativo dejamos que el menú se vea entero.
   (No afecta al listado de equipos, que usa el menú de Metronic anclado al body.) --- */
.content .card:has(.dropdown-menu) > .card-body.table-responsive,
.content .card:has(.dropdown-menu) .table-responsive,
.content .card:has(.dropdown-menu) .dataTables_wrapper{overflow:visible}

/* --- Fila superior de DataTables (Mostrar N + botones de export) en una fila limpia --- */
.content .rvz-dt-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}
.content .rvz-dt-top .dataTables_length{margin:0}

/* --- Avatares con color determinista por persona (paleta sobria) --- */
.avatar-sm.rc0,.avatar-md.rc0,.avatars .a.rc0{background:#0093D4}
.avatar-sm.rc1,.avatar-md.rc1,.avatars .a.rc1{background:#2AA6A0}
.avatar-sm.rc2,.avatar-md.rc2,.avatars .a.rc2{background:#5C74C4}
.avatar-sm.rc3,.avatar-md.rc3,.avatars .a.rc3{background:#8A78BE}
.avatar-sm.rc4,.avatar-md.rc4,.avatars .a.rc4{background:#C56B8A}
.avatar-sm.rc5,.avatar-md.rc5,.avatars .a.rc5{background:#C0893C}
.avatar-sm.rc6,.avatar-md.rc6,.avatars .a.rc6{background:#4FA274}
.avatar-sm.rc7,.avatar-md.rc7,.avatars .a.rc7{background:#6B7A90}
/* .muted mantiene su gris por encima de la paleta */
.avatar-sm.muted{background:#E6EAF0 !important}

/* --- Truncado de celdas largas (email, cliente...) para que la tabla no desborde el card --- */
.rvz-ellip{display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}

/* --- Tablas de listados con dropdown: caben SIEMPRE en el card (no desbordan) ---
   table-layout:fixed fuerza la tabla al 100% del card y reparte columnas; el contenido
   largo se trunca con "…". La última columna (Acciones) deja overflow visible para que el
   dropdown escape. Combinado con el overflow:visible del .table-responsive de arriba. */
.content .card:has(.dropdown-menu) table.table-row-dashed{table-layout:fixed;width:100%}
.content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th,
.content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th:last-child,
.content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td:last-child{width:150px;overflow:visible}
/* La celda de nombre (avatar + texto) debe poder encoger y truncar el nombre */
.content .card:has(.dropdown-menu) .cell-user{min-width:0}
.content .card:has(.dropdown-menu) .cell-user > .fw-bold,
.content .card:has(.dropdown-menu) .cell-user > span:not(.avatar-sm){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Badge "Sin app": marca clientes/inspectores sin acceso a la app movil (app_acceso=0) */
.rvz-tag-noapp{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;line-height:1;padding:3px 8px;border-radius:999px;background:#F1F3F7;color:var(--ink-soft);border:1px solid var(--line);margin-left:8px;vertical-align:middle;white-space:nowrap}
.rvz-tag-noapp i{font-size:12px;opacity:.85}

/* --- MÓVIL: los listados con menú "Acciones" se DESLIZAN en horizontal (como el de equipos)
   en vez de comprimir las columnas y volverse ilegibles. La columna Acciones va DENTRO de la
   tabla (se desliza con el resto). El menú desplegable se abre con Popper (flip hacia arriba en
   las filas de abajo), sin trucos de padding que rompen el card con tablas altas. --- */
@media (max-width:768px){
  /* El card-body contiene el scroll horizontal, tenga o no la clase .table-responsive
     (algunos listados como trabajadores no la llevan). Gana con !important. */
  .content .card:has(.dropdown-menu) > .card-body{
    overflow-x:auto !important;-webkit-overflow-scrolling:touch;
  }
  .content .card:has(.dropdown-menu) .dataTables_wrapper{overflow:visible}
  .content .card:has(.dropdown-menu) table.table-row-dashed{table-layout:auto;min-width:560px}
  .content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th,
  .content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td{
    overflow:visible;text-overflow:clip;white-space:nowrap
  }
  /* La última columna (Acciones) vuelve a su ancho normal, dentro del scroll (no sticky) */
  .content .card:has(.dropdown-menu) table.table-row-dashed > thead > tr > th:last-child,
  .content .card:has(.dropdown-menu) table.table-row-dashed > tbody > tr > td:last-child{
    width:auto;position:static
  }
}
