:root{
  --bg:#0f172a;
  --card:#0f172a;
  --card2:#111c33;
  --text:#e5e7eb;
  --muted:#94a3b8;
  --border:#1f2a44;
  --accent:#22c55e;
  --danger:#ef4444;
  --warn:#f59e0b;
  --surface:#0a1327;
  --surface2:#12203b;
  --hover:rgba(255,255,255,.08);
  --shadow:0 18px 38px rgba(2,6,23,.28);
}

:root[data-theme="light"]{
  --bg:#f5f7fa;
  --card:#ffffff;
  --card2:#f8fafc;
  --text:#172033;
  --muted:#5d6878;
  --border:#d7e0ea;
  --accent:#6e9c72;
  --danger:#dc2626;
  --warn:#b7791f;
  --surface:#eef3f8;
  --surface2:#e8eef5;
  --hover:#eef3f8;
  --shadow:0 18px 38px rgba(15,23,42,.08);
}

*{box-sizing:border-box}
body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(--bg);color:var(--text)}
a{color:inherit;text-decoration:none}

.app{display:flex;min-height:100vh}
.sidebar{width:260px;background:#070d18;border-right:1px solid var(--border);padding:18px;display:flex;flex-direction:column;gap:18px}
.brand{display:flex;gap:12px;align-items:center}
.logo{width:40px;height:40px;border-radius:12px;background:var(--accent);display:flex;align-items:center;justify-content:center;color:#071018;font-weight:900}
.brand-name{font-weight:800}
.brand-sub{font-size:12px;color:var(--muted);margin-top:2px}

.nav{display:flex;flex-direction:column;gap:10px}
.nav-item{padding:10px 12px;border-radius:12px;background:transparent;border:1px solid transparent}
.nav-item:hover{border-color:var(--border);background:#0a1327}
.nav-item.active{border-color:rgba(34,197,94,.45);background:rgba(34,197,94,.10)}

.sidebar-footer{margin-top:auto}

.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{
  position:relative;
  z-index:140;
  overflow:visible;
  padding:18px 22px;
  border-bottom:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.topbar-logo{
  width:132px;
  max-width:28vw;
  height:auto;
  object-fit:contain;
  display:block;
  margin-right:4px;
}
.topbar-heading{min-width:0}
.page-title{font-size:18px;font-weight:800}
.page-sub{font-size:12px;color:var(--muted);margin-top:3px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border-radius:999px;border:1px solid var(--border);background:#0a1327;color:var(--muted);font-size:12px}

/* Agenda/Tareas: accesos globales fijos en el topbar (transversales a las áreas) */
.topbar-globals{display:inline-flex;align-items:center;gap:6px}
.topbar-global-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 12px;border-radius:999px;
  border:1px solid var(--border);background:#0a1327;
  color:var(--text);font-size:12px;font-weight:700;
  white-space:nowrap;text-decoration:none;
}
.topbar-global-chip:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18)}
.topbar-global-chip.active{
  background:rgba(34,197,94,.14);
  border-color:rgba(34,197,94,.34);
  color:#f0fdf4;
}
@media (max-width: 980px){
  .topbar-globals{ display:none; }
}

/* Barra de contexto: válvula "Más ▾" para lo que no entra a lo ancho */
.modulebar-context .modulebar-row{ overflow:visible; }
.ctx-more-wrap{ position:relative; display:inline-flex; }
.ctx-more[hidden]{ display:none; }
.ctx-more-panel{
  position:absolute; top:calc(100% + 6px); right:0; z-index:80;
  min-width:200px; display:flex; flex-direction:column; gap:4px;
  padding:8px; border-radius:12px;
  background:var(--card); border:1px solid var(--border);
  box-shadow:0 18px 40px rgba(2,6,23,.35);
}
.ctx-more-panel[hidden]{ display:none; }
.ctx-more-panel .module-trigger{ width:100%; justify-content:flex-start; }

.modulebar{
  position:relative;
  padding:0 24px 14px;
  border-bottom:1px solid var(--border);
  background:rgba(10,19,39,.78);
  backdrop-filter:saturate(140%) blur(6px);
  z-index:70;
}
.topbar-mega{
  flex:1;
  min-width:0;
  padding:0;
  border:0;
  background:transparent;
  backdrop-filter:none;
  z-index:210;
}
/* Modales de página: deben quedar por encima del topbar (140) y del mega menú (210) */
.rc-modal-bg,
.op-modal-bg,
.mt-modal-bg,
.hk-modal-bg,
.rk-modal-bg{
  z-index:500 !important;
}
.topbar-mega .modulebar-row{
  min-height:42px;
  gap:6px;
  overflow-x:auto;
  overflow-y:visible;
  padding-right:4px;
}
.topbar-mega .module-trigger{
  padding:8px 12px;
  font-size:12px;
}
.modulebar-context{
  padding:8px 24px;
  border-top:1px solid rgba(255,255,255,.08);
}
.modulebar-context .modulebar-row{
  min-height:48px;
  align-items:center;
}
.modulebar-row{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:46px;
  overflow:auto;
  scrollbar-width:thin;
}
.module-trigger{
  border:1px solid transparent;
  background:transparent;
  color:var(--text);
  border-radius:10px;
  padding:9px 14px;
  font-size:13px;
  font-weight:800;
  letter-spacing:.24px;
  text-transform:uppercase;
  cursor:pointer;
  white-space:nowrap;
}
.module-trigger:hover{
  background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.12);
}
.module-trigger.active{
  background:rgba(34,197,94,.14);
  border-color:rgba(34,197,94,.34);
}
.module-trigger[aria-expanded="true"]{
  background:rgba(34,197,94,.14);
  border-color:rgba(34,197,94,.34);
}
@media (min-width: 981px){
  .app{ display:block; }
  .sidebar{ display:none; }

  /* Mega menú: fila propia a ancho completo bajo el logo y controles */
  .topbar{ flex-wrap:wrap; row-gap:0; }
  .topbar-mega{
    order:10;
    flex:0 0 100%;
    width:100%;
    margin-top:10px;
    padding-top:10px;
    border-top:1px solid var(--border);
  }
  .topbar-mega .modulebar-row{
    flex-wrap:wrap;
    overflow:visible;
    gap:4px;
    padding-right:0;
  }
  /* Triggers compactos (sin mayúsculas) para que entren todos los permisos */
  .topbar-mega .module-trigger{
    text-transform:none;
    letter-spacing:.2px;
    font-size:13px;
    font-weight:700;
    padding:8px 12px;
  }
}

.mobile-menu-btn{
  display:none;
  width:36px;
  height:36px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);
  color:#eaf2ff;
  cursor:pointer;
  font-size:18px;
  line-height:1;
  padding:0;
}
.mobile-menu-btn:hover{ background:rgba(255,255,255,.10); }

.sidebar-overlay{
  position:fixed;
  inset:0;
  background:rgba(2,6,23,.52);
  z-index:109;
}

.content{padding:22px}
.grid{display:grid;gap:14px}
.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px}
.card h3{margin:0 0 8px 0;font-size:14px;color:var(--muted);font-weight:700}
.big{font-size:28px;font-weight:900}
.btn{
  display:inline-flex;
  gap:8px;
  align-items:center;
  justify-content:center;
  padding:10px 14px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.06);
  color:#eaf2ff;
  cursor:pointer;
  transition:.18s ease;
}
.btn.primary{
  border:none;
  background:#6e9c72;
  color:#ffffff;
  font-weight:800;
  box-shadow:0 12px 24px rgba(110,156,114,.24);
}
.btn:hover{
  transform:translateY(-1px);
  background:rgba(255,255,255,.08);
}
.btn.primary:hover{ background:#5d8864; }
.btn:disabled,
.btn[disabled]{ opacity:.58; cursor:not-allowed; transform:none; }

/* Semantic tone helpers (shared across modules) */
.ok{ color:#86efac; font-weight:700; }
.warn{ color:#fde68a; font-weight:700; }
.err{ color:#fca5a5; font-weight:700; }
.pill.ok{
  border-color:rgba(134,239,172,.35) !important;
  background:rgba(134,239,172,.10) !important;
  color:#86efac !important;
}
.pill.warn{
  border-color:rgba(253,230,138,.35) !important;
  background:rgba(253,230,138,.10) !important;
  color:#fde68a !important;
}
.pill.err{
  border-color:rgba(248,113,113,.35) !important;
  background:rgba(248,113,113,.10) !important;
  color:#fca5a5 !important;
}

:root[data-theme="light"] .ok{ color:#15803d; font-weight:700; }
:root[data-theme="light"] .warn{ color:#b45309; font-weight:700; }
:root[data-theme="light"] .err{ color:#b91c1c; font-weight:700; }
:root[data-theme="light"] .pill.ok{
  border-color:rgba(34,197,94,.36) !important;
  background:rgba(34,197,94,.14) !important;
  color:#166534 !important;
}
:root[data-theme="light"] .pill.warn{
  border-color:rgba(245,158,11,.40) !important;
  background:rgba(245,158,11,.15) !important;
  color:#92400e !important;
}
:root[data-theme="light"] .pill.err{
  border-color:rgba(239,68,68,.36) !important;
  background:rgba(239,68,68,.14) !important;
  color:#991b1b !important;
}

.tabs{ display:flex; gap:8px; flex-wrap:wrap; }
.tab{
  cursor:pointer;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  color:#eaf2ff;
  padding:8px 14px;
  border-radius:999px;
  transition:.18s ease;
}
.tab:hover{ background:rgba(255,255,255,.08); }
.tab.active{ background:rgba(255,255,255,.10); }

/* === Estilo unificado de formularios (dashboard style) === */
.content .field input,
.content .field select,
.content .field textarea,
.content input.input,
.content select.input,
.content textarea.input,
.content input[type="text"],
.content input[type="date"],
.content input[type="number"],
.content input[type="email"],
.content input[type="password"],
.content input[type="search"],
.content input[type="time"],
.content input[type="datetime-local"],
.content input[type="month"],
.content input[type="tel"],
.content input[type="url"],
.content input[type="file"],
.content textarea,
.content select {
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  color: #eaf2ff;
  padding: 10px 12px;
  outline: none;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0);
}

.content .field input:focus,
.content .field select:focus,
.content .field textarea:focus,
.content input.input:focus,
.content select.input:focus,
.content textarea.input:focus,
.content input[type="text"]:focus,
.content input[type="date"]:focus,
.content input[type="number"]:focus,
.content input[type="email"]:focus,
.content input[type="password"]:focus,
.content input[type="search"]:focus,
.content input[type="time"]:focus,
.content input[type="datetime-local"]:focus,
.content input[type="month"]:focus,
.content input[type="tel"]:focus,
.content input[type="url"]:focus,
.content input[type="file"]:focus,
.content textarea:focus,
.content select:focus {
  border-color: #c89b63;
  box-shadow: 0 0 0 3px rgba(200,155,99,.18);
}

.content select,
.content select option {
  background: #0b1220;
  color: #eaf2ff;
}

.content select option:checked {
  background: #0f1b33;
  color: #eaf2ff;
}

:root { color-scheme: dark; }
:root[data-theme="light"] { color-scheme: light; }
.main{background:var(--bg)}
.nav-group { margin: 6px 0 10px; }

.nav-group-title{
  padding: 10px 12px;
  border-radius: 12px;
  color: rgba(255,255,255,.85);
  font-weight: 700;
}

.nav-group-title.active{
  background: rgba(34,197,94,.12);
  border: 1px solid rgba(34,197,94,.25);
}

.nav-sub{
  margin-top: 6px;
  padding-left: 12px;
  display: grid;
  gap: 6px;
}

.nav-sub-item{
  display:block;
  padding: 10px 12px;
  border-radius: 12px;
  color: rgba(255,255,255,.78);
  text-decoration:none;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.06);
}

.nav-sub-item:hover{
  background: rgba(255,255,255,.07);
}

.nav-sub-item.active{
  background: rgba(34,197,94,.18);
  border-color: rgba(34,197,94,.28);
  color: #fff;
}
/* === Sidebar: grupo + submenú === */
.nav-group { margin: 8px 0 14px; }

.nav-group-title{
  padding: 10px 12px;
  border-radius: 12px;
  color: rgba(255,255,255,.9);
  font-weight: 800;
  letter-spacing: .2px;
}

.nav-group-title.active{
  background: rgba(34,197,94,.10);
  border: 1px solid rgba(34,197,94,.22);
}

.nav-sub{
  margin-top: 6px;
  padding-left: 14px;
  border-left: 1px solid rgba(255,255,255,.10);
  display: grid;
  gap: 6px;
}

.nav-sub-item{
  display:block;
  padding: 9px 12px;
  border-radius: 12px;
  color: rgba(255,255,255,.78);
  text-decoration:none;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.06);
}

.nav-sub-item:hover{
  background: rgba(255,255,255,.06);
}

.nav-sub-item.active{
  background: rgba(34,197,94,.16);
  border-color: rgba(34,197,94,.28);
  color: #fff;
}
.brand{ display:flex;
  justify-content: center;
  align-items: center;
  padding: 14px 0 18px 0;
  }
  .brand-logo{
    width: 180px;
    max-width: 90%;
    height: auto;
    object-fit: contain;
    display: block;
    }


/* =========================================================
   IkamLodge — /usuarios tweaks (Feb 2026)
   - Keep existing table/buttons
   - Improve contrast for "Accesos" and "Reset pass"
   - Make "Crear nuevo usuario" look like login/change-password card
   ========================================================= */

/* Card style inspired by login/change-password */
.user-create-card{  background: #111827;
  border: 1px solid #1f2937;
  border-radius: 18px;
  padding: 32px 30px;
  box-shadow: 0 20px 50px rgba(0,0,0,.45);
}

.user-create-card h2{
  margin:0 0 6px 0;
  font-size:22px;
  font-weight:800;
  color:#ffffff;
}

.user-create-card .sub{
  color:#9bb3d6;
  font-size:14px;
  margin-bottom:18px;
}

.user-create-card label{
  display:block;
  margin:18px 0 8px;
  font-size:14px;
  color:#cfd9ea;
}

.user-create-card .field{
  width:100%;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid #1e3559;
  background:#0a1a30;
  color:#ffffff;
  outline:none;
}

.user-create-card .field:focus{
  border-color:#c89b63;
  box-shadow:0 0 0 2px rgba(200,155,99,0.22);
}

.user-create-card .btn-gold{
  width:100%;
  margin-top:24px;
  padding:14px;
  border-radius:14px;
  border:none;
  background:#6e9c72;
  color:#ffffff;
  font-weight:700;
  cursor:pointer;
  transition:0.2s ease;
}
.user-create-card .btn-gold:hover{ background:#5d8864; }

/* Higher-contrast outline buttons just for specific actions */
.btn-contrast{
  background: rgba(255,255,255,0.06) !important;
  border: 1px solid rgba(255,255,255,0.22) !important;
  color: rgba(226,232,240,0.95) !important;
}
.btn-contrast:hover{
  background: rgba(255,255,255,0.10) !important;
  border-color: rgba(255,255,255,0.30) !important;
}

/* Make the "Administrar perfiles" button readable inside the card */
.user-create-card .btn.btn-outline{
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.18);
}
/* =========================================================
   IkamLodge — SaaS Standard Components (Feb 2026)
   Reusable visual system inspired by /usuarios/{id}/accesos
   - Does NOT change existing .card/.btn defaults
   - Use .saas-card / .saas-section / .btn-gold / .btn-secondary
   ========================================================= */

:root{
  --saas-bg:#0f172a;
  --saas-card:#111827;
  --saas-border:#1f2937;
  --saas-soft:rgba(255,255,255,.05);
  --saas-soft2:rgba(255,255,255,.03);
  --saas-soft-border:rgba(255,255,255,.08);
  --saas-gold:#c89b63;
  --saas-text:#ffffff;
  --saas-muted:#94a3b8;
}

.saas-wrapper{ max-width:1200px; margin:0 auto; }

.saas-card{
  background:var(--saas-card);
  border:1px solid var(--saas-border);
  border-radius:20px;
  padding:30px;
  box-shadow:0 25px 60px rgba(0,0,0,.45);
}

.saas-section{
  background:var(--saas-soft2);
  border:1px solid var(--saas-soft-border);
  border-radius:16px;
  padding:20px;
}

.btn-gold{
  padding:12px 20px;
  border-radius:14px;
  border:none;
  background:#6e9c72;
  color:#ffffff;
  font-weight:700;
  cursor:pointer;
  transition:.2s ease;
}
.btn-gold:hover{ background:#5d8864; }

.btn-secondary{
  padding:12px 20px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.20);
  background:var(--saas-soft);
  color:var(--saas-text);
  cursor:pointer;
  transition:.2s ease;
}
.btn-secondary:hover{ background:rgba(255,255,255,.08); }

.btn-sm{ padding:10px 14px; border-radius:12px; font-size:13px; }

.pill{
  display:inline-flex;
  gap:8px;
  align-items:center;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.05);
  font-size:12px;
  opacity:.95;
}

.topbar-right{display:flex;align-items:center;gap:10px;position:relative;z-index:150}
.topbar-theme{
  display:inline-flex;
  align-items:center;
  gap:8px;
  user-select:none;
}
.topbar-theme-label{
  font-size:12px;
  color:var(--muted);
  font-weight:700;
}
.topbar-theme .toggle{
  position:relative;
  width:44px;
  height:24px;
}
.topbar-theme .toggle input{
  opacity:0;
  width:0;
  height:0;
}
.topbar-theme .slider{
  position:absolute;
  cursor:pointer;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background:#334155;
  transition:.3s;
  border-radius:34px;
}
.topbar-theme .slider:before{
  position:absolute;
  content:"";
  height:18px;
  width:18px;
  left:3px;
  bottom:3px;
  background:white;
  transition:.3s;
  border-radius:50%;
}
.topbar-theme .toggle input:checked + .slider{ background:#c89b63; }
.topbar-theme .toggle input:checked + .slider:before{ transform:translateX(20px); }

.user-menu-wrap{ position:relative; }
.user-menu-btn{
  cursor:pointer;
  border:1px solid var(--border);
  background:#0a1327;
  color:var(--text);
  min-height:38px;
}
.user-menu-caret{ font-size:11px; opacity:.86; }
.user-menu{
  position:absolute;
  right:0;
  top:44px;
  min-width:240px;
  width:min(92vw, 280px);
  max-height:calc(100vh - 110px);
  overflow:auto;
  padding:8px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.14);
  background:#0f172a;
  box-shadow:0 18px 40px rgba(0,0,0,.42);
  z-index:95;
}
.user-menu-item{
  display:block;
  padding:10px 12px;
  border-radius:10px;
  color:#dbeafe;
  font-size:13px;
  font-weight:600;
}
.user-menu-item:hover{ background:rgba(255,255,255,.06); }
.user-menu-item.danger{
  color:#fecaca;
  border:1px solid rgba(248,113,113,.28);
  background:rgba(248,113,113,.10);
}
.user-menu-item.danger:hover{ background:rgba(248,113,113,.18); }
.user-menu-sep{
  height:1px;
  margin:6px 4px;
  background:rgba(255,255,255,.10);
}

.notif-wrap{position:relative}
.notif-btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);
  color:#eaf2ff;
  cursor:pointer;
  text-decoration:none;
}
.notif-count{
  position:absolute;
  top:-6px;
  right:-6px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  border-radius:999px;
  background:#ef4444;
  color:#fff;
  font-size:11px;
  line-height:18px;
  text-align:center;
  border:1px solid rgba(0,0,0,.25);
}
.notif-panel{
  position:absolute;
  right:0;
  top:46px;
  width:min(380px, 86vw);
  max-height:65vh;
  overflow:hidden;
  background:#0f172a;
  border:1px solid rgba(255,255,255,.14);
  border-radius:14px;
  box-shadow:0 18px 40px rgba(0,0,0,.4);
  z-index:80;
}
.notif-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.notif-read-all{
  border:0;
  background:transparent;
  color:#9bd1ff;
  cursor:pointer;
  font-size:12px;
}
.notif-list{max-height:54vh; overflow:auto;}
.notif-item{
  display:block;
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.06);
  color:#eaf2ff;
}
.notif-item:hover{background:rgba(255,255,255,.05)}
.notif-item.unread{background:rgba(200,155,99,.08)}
.notif-title{font-weight:700; font-size:13px; margin-bottom:2px}
.notif-body{font-size:12px; color:#cbd5e1}
.notif-time{font-size:11px; color:#94a3b8; margin-top:4px}
.notif-empty{padding:14px 12px; font-size:12px; color:#94a3b8}

[hidden]{display:none !important;}

/* === Sidebar colapsable por grupos === */
.nav-group-title{
  width:100%;
  text-align:left;
  cursor:pointer;
  background:transparent;
}

.nav-group .nav-sub{
  display:none;
}

.nav-group.open .nav-sub{
  display:grid;
}

.kpis { display:grid; grid-template-columns: repeat(4, 1fr); gap:12px; }
.kpi {
  padding:14px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
}
.kpi .k { font-size:12px; opacity:.75; }
.kpi .v { font-size:22px; font-weight:900; margin-top:4px; }

.chartCard{
  padding:16px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
}

/* ===== Tema claro global ===== */
:root[data-theme="light"] body{ background:var(--bg); color:var(--text); }
:root[data-theme="light"] body{
  background:
    radial-gradient(circle at top left, rgba(255,255,255,.72), rgba(255,255,255,0) 26%),
    linear-gradient(180deg, #fbfcfe 0%, var(--bg) 100%);
}
:root[data-theme="light"] .sidebar{
  background:var(--surface);
  border-right:1px solid rgba(148,163,184,.18);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.65);
}
:root[data-theme="light"] .brand-logo{ filter:none; }

:root[data-theme="light"] .nav-item{
  color:var(--text);
  border-color:transparent;
}
:root[data-theme="light"] .nav-item:hover{
  border-color:rgba(148,163,184,.22);
  background:var(--hover);
}
:root[data-theme="light"] .nav-item.active{
  border-color:rgba(110,156,114,.30);
  background:rgba(110,156,114,.15);
  color:#46704d;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65);
}

:root[data-theme="light"] .nav-group-title,
:root[data-theme="light"] .nav-sub-item{ color:#0f172a; }
:root[data-theme="light"] .nav-group-title.active{
  background:rgba(110,156,114,.12);
  border:1px solid rgba(110,156,114,.22);
}
:root[data-theme="light"] .nav-sub{ border-left:1px solid rgba(148,163,184,.18); }
:root[data-theme="light"] .nav-sub-item{
  background:rgba(255,255,255,.88);
  border:1px solid rgba(148,163,184,.18);
}
:root[data-theme="light"] .nav-sub-item:hover{ background:var(--hover); }
:root[data-theme="light"] .nav-sub-item.active{
  background:rgba(110,156,114,.15);
  border-color:rgba(110,156,114,.30);
  color:#46704d;
}

:root[data-theme="light"] .topbar{
  background:rgba(255,255,255,.88);
  border-bottom:1px solid rgba(148,163,184,.18);
  backdrop-filter:saturate(160%) blur(12px);
}
:root[data-theme="light"] .chip{
  background:var(--card2);
  color:#334155;
  border-color:rgba(148,163,184,.22);
}
:root[data-theme="light"] .topbar-global-chip{
  background:var(--card2);
  color:#334155;
  border-color:rgba(148,163,184,.22);
}
:root[data-theme="light"] .topbar-global-chip:hover{
  background:#eef3f8;
  border-color:rgba(148,163,184,.34);
}
:root[data-theme="light"] .topbar-global-chip.active{
  background:rgba(34,197,94,.16);
  border-color:rgba(34,197,94,.45);
  color:#166534;
}
:root[data-theme="light"] .topbar-theme-label{ color:#64748b; }
:root[data-theme="light"] .topbar-theme .slider{ background:#cbd5e1; }
:root[data-theme="light"] .user-menu-btn{
  background:var(--card2);
  border-color:rgba(148,163,184,.22);
  color:#0f172a;
}
:root[data-theme="light"] .user-menu{
  background:#ffffff;
  border-color:rgba(148,163,184,.22);
  box-shadow:0 18px 32px rgba(15,23,42,.12);
}
:root[data-theme="light"] .user-menu-item{ color:#0f172a; }
:root[data-theme="light"] .user-menu-item:hover{ background:#eef3f8; }
:root[data-theme="light"] .user-menu-item.danger{
  color:#b91c1c;
  border-color:rgba(239,68,68,.28);
  background:rgba(239,68,68,.10);
}
:root[data-theme="light"] .user-menu-sep{ background:rgba(148,163,184,.24); }
:root[data-theme="light"] .notif-btn{
  border-color:rgba(148,163,184,.22);
  background:var(--card2);
  color:#0f172a;
}
:root[data-theme="light"] .mobile-menu-btn{
  border-color:rgba(148,163,184,.22);
  background:var(--card2);
  color:var(--text);
}
:root[data-theme="light"] .mobile-menu-btn:hover{ background:var(--hover); }
:root[data-theme="light"] .modulebar{
  background:rgba(255,255,255,.84);
  border-bottom:1px solid rgba(148,163,184,.18);
}
:root[data-theme="light"] .topbar-mega{
  background:transparent;
  border-bottom:0;
}
:root[data-theme="light"] .modulebar-context{
  border-top:1px solid rgba(148,163,184,.18);
}
:root[data-theme="light"] .module-trigger{
  color:#0f172a;
}
:root[data-theme="light"] .module-trigger:hover{
  background:#f8fafc;
  border-color:rgba(148,163,184,.24);
}
:root[data-theme="light"] .module-trigger.active{
  background:rgba(110,156,114,.16);
  border-color:rgba(110,156,114,.34);
  color:#46704d;
}
:root[data-theme="light"] .module-trigger[aria-expanded="true"]{
  background:rgba(110,156,114,.16);
  border-color:rgba(110,156,114,.34);
  color:#46704d;
}
:root[data-theme="light"] .card,
:root[data-theme="light"] .kpi,
:root[data-theme="light"] .chartCard,
:root[data-theme="light"] .saas-card,
:root[data-theme="light"] .saas-section,
:root[data-theme="light"] .user-create-card{
  background:var(--card) !important;
  border-color:rgba(148,163,184,.18) !important;
  color:#0f172a !important;
  box-shadow:var(--shadow) !important;
}

:root[data-theme="light"] .user-create-card h2,
:root[data-theme="light"] .user-create-card .sub,
:root[data-theme="light"] .user-create-card label,
:root[data-theme="light"] .kpi .k,
:root[data-theme="light"] .notif-body,
:root[data-theme="light"] .notif-time,
:root[data-theme="light"] .notif-empty,
:root[data-theme="light"] .page-sub,
:root[data-theme="light"] .card h3{ color:#475569 !important; }

:root[data-theme="light"] .btn,
:root[data-theme="light"] .btn-secondary,
:root[data-theme="light"] .btn-contrast,
:root[data-theme="light"] .tab{
  background:var(--card2) !important;
  border:1px solid rgba(148,163,184,.22) !important;
  color:var(--text) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
}
:root[data-theme="light"] .btn:hover,
:root[data-theme="light"] .btn-secondary:hover,
:root[data-theme="light"] .btn-contrast:hover,
:root[data-theme="light"] .tab:hover{ background:var(--hover) !important; }
:root[data-theme="light"] .btn.primary,
:root[data-theme="light"] .btn-gold,
:root[data-theme="light"] .btn-primary,
:root[data-theme="light"] .rt-btn.primary,
:root[data-theme="light"] .cal-btn.primary,
:root[data-theme="light"] .rf-btn.primary,
:root[data-theme="light"] .face-btn.primary,
:root[data-theme="light"] .padron-btn-primary,
:root[data-theme="light"] #caja-page .btn-primary{
  background:#6e9c72 !important;
  border-color:#6e9c72 !important;
  color:#ffffff !important;
  box-shadow:0 14px 24px rgba(110,156,114,.22) !important;
}
:root[data-theme="light"] .btn.primary:hover,
:root[data-theme="light"] .btn-gold:hover,
:root[data-theme="light"] .btn-primary:hover,
:root[data-theme="light"] .rt-btn.primary:hover,
:root[data-theme="light"] .cal-btn.primary:hover,
:root[data-theme="light"] .rf-btn.primary:hover,
:root[data-theme="light"] .face-btn.primary:hover,
:root[data-theme="light"] .padron-btn-primary:hover,
:root[data-theme="light"] #caja-page .btn-primary:hover{
  background:#5d8864 !important;
  border-color:#5d8864 !important;
}

:root[data-theme="light"] .content .field input,
:root[data-theme="light"] .content .field select,
:root[data-theme="light"] .content .field textarea,
:root[data-theme="light"] .content input.input,
:root[data-theme="light"] .content select.input,
:root[data-theme="light"] .content textarea.input,
:root[data-theme="light"] .content input[type="text"],
:root[data-theme="light"] .content input[type="date"],
:root[data-theme="light"] .content input[type="number"],
:root[data-theme="light"] .content input[type="email"],
:root[data-theme="light"] .content input[type="password"],
:root[data-theme="light"] .content input[type="search"],
:root[data-theme="light"] .content input[type="time"],
:root[data-theme="light"] .content input[type="datetime-local"],
:root[data-theme="light"] .content input[type="month"],
:root[data-theme="light"] .content input[type="tel"],
:root[data-theme="light"] .content input[type="url"],
:root[data-theme="light"] .content input[type="file"],
:root[data-theme="light"] .content textarea,
:root[data-theme="light"] .content select,
:root[data-theme="light"] .user-create-card .field,
:root[data-theme="light"] .content .user-form input,
:root[data-theme="light"] .content .user-form select,
:root[data-theme="light"] .content .reset-input,
:root[data-theme="light"] .content .perm-filter-select{
  background:var(--card2) !important;
  color:var(--text) !important;
  border:1px solid rgba(148,163,184,.22) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
}

:root[data-theme="light"] .content select,
:root[data-theme="light"] .content select option{
  background:var(--card2) !important;
  color:var(--text) !important;
}
:root[data-theme="light"] .content .field input:focus,
:root[data-theme="light"] .content .field select:focus,
:root[data-theme="light"] .content .field textarea:focus,
:root[data-theme="light"] .content input.input:focus,
:root[data-theme="light"] .content select.input:focus,
:root[data-theme="light"] .content textarea.input:focus,
:root[data-theme="light"] .content input[type="text"]:focus,
:root[data-theme="light"] .content input[type="date"]:focus,
:root[data-theme="light"] .content input[type="number"]:focus,
:root[data-theme="light"] .content input[type="email"]:focus,
:root[data-theme="light"] .content input[type="password"]:focus,
:root[data-theme="light"] .content input[type="search"]:focus,
:root[data-theme="light"] .content input[type="time"]:focus,
:root[data-theme="light"] .content input[type="datetime-local"]:focus,
:root[data-theme="light"] .content input[type="month"]:focus,
:root[data-theme="light"] .content input[type="tel"]:focus,
:root[data-theme="light"] .content input[type="url"]:focus,
:root[data-theme="light"] .content input[type="file"]:focus,
:root[data-theme="light"] .content textarea:focus,
:root[data-theme="light"] .content select:focus,
:root[data-theme="light"] .content .reset-input:focus,
:root[data-theme="light"] .content .user-form input:focus,
:root[data-theme="light"] .content .user-form select:focus,
:root[data-theme="light"] .content .perm-filter-select:focus{
  border-color:#c89b63 !important;
  box-shadow:0 0 0 3px rgba(200,155,99,.18), inset 0 1px 0 rgba(255,255,255,.75) !important;
}

:root[data-theme="light"] .notif-panel{
  background:var(--card);
  border:1px solid rgba(148,163,184,.22);
  box-shadow:0 18px 32px rgba(15,23,42,.10);
}
:root[data-theme="light"] .notif-head{ border-bottom:1px solid rgba(148,163,184,.18); }
:root[data-theme="light"] .notif-read-all{ color:#2563eb; }
:root[data-theme="light"] .notif-item{ color:#0f172a; border-bottom:1px solid rgba(148,163,184,.14); }
:root[data-theme="light"] .notif-item:hover{ background:var(--hover); }
:root[data-theme="light"] .notif-item.unread{ background:rgba(200,155,99,.18); }

/* ===== Refuerzo de contraste (modo claro) ===== */
:root[data-theme="light"] .content,
:root[data-theme="light"] .content p,
:root[data-theme="light"] .content span:not([class]),
:root[data-theme="light"] .content strong,
:root[data-theme="light"] .content b,
:root[data-theme="light"] .content li,
:root[data-theme="light"] .content td,
:root[data-theme="light"] .content th,
:root[data-theme="light"] .content label,
:root[data-theme="light"] .content .title,
:root[data-theme="light"] .content .big,
:root[data-theme="light"] .content .status,
:root[data-theme="light"] .content .statusBox,
:root[data-theme="light"] .content .table,
:root[data-theme="light"] .content .table td,
:root[data-theme="light"] .content .table th,
:root[data-theme="light"] .content .pill,
:root[data-theme="light"] .content .badge,
:root[data-theme="light"] .content .nps-pill,
:root[data-theme="light"] .content .perm-title,
:root[data-theme="light"] .content .perm-desc,
:root[data-theme="light"] .content .text-muted{
  color:#0f172a !important;
}

:root[data-theme="light"] .content .muted,
:root[data-theme="light"] .content .page-sub,
:root[data-theme="light"] .content .perm-desc,
:root[data-theme="light"] .content small,
:root[data-theme="light"] .content .sub,
:root[data-theme="light"] .content [style*="color:#94a3b8"],
:root[data-theme="light"] .content [style*="color:#cbd5e1"]{
  color:#475569 !important;
  opacity:1 !important;
}

:root[data-theme="light"] .content [style*="color:#eaf2ff"],
:root[data-theme="light"] .content [style*="color:#fff"],
:root[data-theme="light"] .content [style*="color: white"],
:root[data-theme="light"] .content [style*="color:#ffffff"]{
  color:#0f172a !important;
}

:root[data-theme="light"] .content .divider,
:root[data-theme="light"] .content hr{
  background:rgba(15,23,42,.12) !important;
  border-color:rgba(15,23,42,.12) !important;
}

:root[data-theme="light"] .content .tableWrap,
:root[data-theme="light"] .content .miniTable,
:root[data-theme="light"] .content table,
:root[data-theme="light"] .content .status,
:root[data-theme="light"] .content .statusBox,
:root[data-theme="light"] .content .pill,
:root[data-theme="light"] .content .badge,
:root[data-theme="light"] .content .nps-pill,
:root[data-theme="light"] .content .section-box,
:root[data-theme="light"] .content .reset-card,
:root[data-theme="light"] .content .access-card,
:root[data-theme="light"] .content .subCard,
:root[data-theme="light"] .content .panel{
  border-color:rgba(148,163,184,.18) !important;
}

:root[data-theme="light"] .content .table th,
:root[data-theme="light"] .content .table td,
:root[data-theme="light"] .content .miniTable th,
:root[data-theme="light"] .content .miniTable td,
:root[data-theme="light"] .content th,
:root[data-theme="light"] .content td{
  border-bottom-color:rgba(148,163,184,.18) !important;
}

:root[data-theme="light"] .content .status,
:root[data-theme="light"] .content .statusBox,
:root[data-theme="light"] .content .pill,
:root[data-theme="light"] .content .badge,
:root[data-theme="light"] .content .nps-pill,
:root[data-theme="light"] .content .kpi,
:root[data-theme="light"] .content .chartCard,
:root[data-theme="light"] .content .section-box,
:root[data-theme="light"] .content .reset-card,
:root[data-theme="light"] .content .access-card,
:root[data-theme="light"] .content .subCard,
:root[data-theme="light"] .content .panel,
:root[data-theme="light"] .content .perm-item,
:root[data-theme="light"] .content .rt-status,
:root[data-theme="light"] .content .rt-card,
:root[data-theme="light"] .content .cal-card,
:root[data-theme="light"] .content .cal-status,
:root[data-theme="light"] .content .rf-card,
:root[data-theme="light"] .content .rf-status{
  background:var(--card2) !important;
}

:root[data-theme="light"] .content .cellBtn,
:root[data-theme="light"] .content .tab,
:root[data-theme="light"] .content .btn-outline{
  color:#0f172a !important;
  border-color:rgba(148,163,184,.22) !important;
}
:root[data-theme="light"] .content .tableWrap,
:root[data-theme="light"] .content .miniTable,
:root[data-theme="light"] .content table,
:root[data-theme="light"] .content .access-card,
:root[data-theme="light"] .content .reset-card{
  background:var(--card) !important;
  box-shadow:var(--shadow) !important;
}
:root[data-theme="light"] .content .table th,
:root[data-theme="light"] .content th{
  background:rgba(148,163,184,.08) !important;
}
:root[data-theme="light"] .content .perm-item:hover{
  background:var(--hover) !important;
}
:root[data-theme="light"] .content .user-create-title,
:root[data-theme="light"] .content .section-title,
:root[data-theme="light"] .content .reset-title,
:root[data-theme="light"] .content .access-card h3{
  color:var(--text) !important;
}
:root[data-theme="light"] .content .user-create-sub{
  color:var(--muted) !important;
}
:root[data-theme="light"] .content .perm-module-title{
  color:#314056 !important;
}
:root[data-theme="light"] .content .perm-badge{
  background:#eef3f8 !important;
  color:#3f4b5d !important;
}
:root[data-theme="light"] .content .perm-badge.excepcion{
  color:#7c4a14 !important;
  border-color:rgba(200,155,99,.44) !important;
}
:root[data-theme="light"] .content .perm-badge.denegado{
  color:#b91c1c !important;
  border-color:rgba(220,38,38,.32) !important;
}
:root[data-theme="light"] .content [style*="background:#111827"],
:root[data-theme="light"] .content [style*="background: #111827"],
:root[data-theme="light"] .content [style*="background:#0b1220"],
:root[data-theme="light"] .content [style*="background: #0b1220"]{
  background:var(--card2) !important;
}
:root[data-theme="light"] .content [style*="border:1px solid rgba(255,255,255"],
:root[data-theme="light"] .content [style*="border: 1px solid rgba(255,255,255"]{
  border-color:rgba(148,163,184,.20) !important;
}
:root[data-theme="light"] .content [style*="background:rgba(255,255,255,.03)"],
:root[data-theme="light"] .content [style*="background: rgba(255,255,255,.03)"],
:root[data-theme="light"] .content [style*="background:rgba(255,255,255,.04)"],
:root[data-theme="light"] .content [style*="background: rgba(255,255,255,.04)"],
:root[data-theme="light"] .content [style*="background:rgba(255,255,255,.05)"],
:root[data-theme="light"] .content [style*="background: rgba(255,255,255,.05)"],
:root[data-theme="light"] .content [style*="background:rgba(255,255,255,.06)"],
:root[data-theme="light"] .content [style*="background: rgba(255,255,255,.06)"]{
  background:var(--card2) !important;
}

:root[data-theme="light"] .caja-detalle .detail-topbar{
  border-bottom:1px solid rgba(148,163,184,.18) !important;
}
:root[data-theme="light"] .caja-detalle .page-title .title,
:root[data-theme="light"] .caja-detalle .gasto-summary .main,
:root[data-theme="light"] .caja-detalle .gasto-detail-box .value{
  color:var(--text) !important;
}
:root[data-theme="light"] .caja-detalle .page-title .subtitle,
:root[data-theme="light"] .caja-detalle .muted,
:root[data-theme="light"] .caja-detalle .gasto-summary .sub,
:root[data-theme="light"] .caja-detalle .gasto-detail-box .label,
:root[data-theme="light"] .caja-detalle .gasto-items th{
  color:var(--muted) !important;
}
:root[data-theme="light"] .caja-detalle .card,
:root[data-theme="light"] .caja-detalle .gasto-detail-card,
:root[data-theme="light"] .caja-detalle .gasto-detail-cell,
:root[data-theme="light"] .caja-detalle .gasto-detail-box{
  background:var(--card) !important;
  border-color:rgba(148,163,184,.18) !important;
  box-shadow:none !important;
}
:root[data-theme="light"] .caja-detalle .gasto-detail-card{
  border-top:1px solid rgba(148,163,184,.18) !important;
}
:root[data-theme="light"] .caja-detalle .gasto-items td,
:root[data-theme="light"] .caja-detalle th,
:root[data-theme="light"] .caja-detalle td{
  color:var(--text) !important;
  border-bottom-color:rgba(148,163,184,.18) !important;
}
:root[data-theme="light"] .caja-detalle .preview-card{
  background:#f8fafc !important;
  border:1px solid rgba(148,163,184,.20) !important;
}
:root[data-theme="light"] .caja-detalle .preview-top{
  border-bottom:1px solid rgba(148,163,184,.18) !important;
}
:root[data-theme="light"] .caja-detalle .preview-body{
  background:#ffffff !important;
}

@media (max-width: 980px){
  .app{display:block;min-height:100vh}

  .modulebar{ display:none; }

  .sidebar{
    display:flex;
    position:fixed;
    top:0;
    left:0;
    bottom:0;
    width:min(84vw, 320px);
    max-width:320px;
    transform:translateX(-110%);
    transition:transform .22s ease;
    z-index:120;
    overflow-y:auto;
    padding:14px;
  }
  .app.sidebar-open .sidebar{ transform:translateX(0); }

  .mobile-menu-btn{ display:inline-flex; align-items:center; justify-content:center; }

  .topbar{
    padding:12px 14px;
    align-items:flex-start;
    flex-wrap:wrap;
    gap:8px;
  }
  .topbar-left{ width:100%; gap:10px; }
  .topbar-logo{ display:none; }
  .topbar-right{
    width:100%;
    justify-content:flex-end;
    flex-wrap:wrap;
    gap:8px;
  }

  .user-menu{
    top:42px;
    right:0;
  }

  .content{
    padding:12px;
    overflow-x:auto;
  }

  .content [style*="display:grid"]{
    grid-template-columns: 1fr !important;
  }

  .content [style*="grid-template-columns"]{
    grid-template-columns: 1fr !important;
  }

  .content [style*="display:flex"]{
    flex-wrap: wrap !important;
  }

  .content [style*="min-width"]{
    min-width: 0 !important;
  }

  .content input,
  .content select,
  .content textarea,
  .content .btn,
  .content .btn-gold,
  .content .btn-secondary{
    max-width: 100%;
  }

  .grid.cols-2,
  .grid.cols-3,
  .kpis{ grid-template-columns:1fr; }

  .card,
  .saas-card,
  .saas-section,
  .user-create-card{
    border-radius:14px;
    padding:14px;
  }

  .btn,
  .btn-secondary,
  .btn-gold{
    min-height:40px;
  }

  .content table{
    display:block;
    max-width:100%;
    overflow-x:auto;
  }

  .content pre{ overflow:auto; }

  .notif-panel{
    width:min(94vw, 380px);
    right:0;
  }

.brand-logo{ width:150px; }
}

/* ===== Responsive "table → cards" utility (opt-in via .rcards) =====
   En teléfonos (≤640px) cada fila de una tabla con clase .rcards se
   convierte en una tarjeta etiqueta:valor (sin scroll horizontal). El
   <thead> se oculta accesiblemente y cada <td> muestra su rótulo desde
   data-label. Es aditivo: en desktop la tabla se ve igual que siempre.
   IMPORTANTE: todas las reglas usan combinador de hijo directo
   (> tbody > tr > td) para NO filtrarse a tablas anidadas dentro de una
   celda (p.ej. la tabla .gasto-items del "Detalle extraído" en caja). */
@media (max-width: 640px){
  table.rcards{ display:block; width:100%; border:0; }
  table.rcards > thead{
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
  }
  table.rcards > tbody{ display:block; width:100%; }
  table.rcards > tbody > tr{
    display:block; width:100%; box-sizing:border-box;
    border:1px solid var(--border); border-radius:12px;
    background:var(--card2);
    margin:0 0 10px; padding:6px 12px;
  }
  table.rcards > tbody > tr > td{
    display:flex; align-items:flex-start; gap:14px;
    justify-content:space-between;
    padding:8px 0; border:0 !important; text-align:right;
    min-width:0; word-break:break-word;
  }
  table.rcards > tbody > tr > td + td{ border-top:1px solid var(--border) !important; }
  table.rcards > tbody > tr > td::before{
    content:attr(data-label);
    flex:0 0 38%; text-align:left;
    font-size:12px; font-weight:600; color:var(--muted);
    text-transform:none; letter-spacing:0; white-space:normal;
  }
  /* Celdas sin rótulo (data-label vacío) ocupan toda la fila */
  table.rcards > tbody > tr > td[data-label=""]::before{ content:""; flex:0 0 0; }
  /* Celdas anchas: rótulo arriba, contenido abajo a todo el ancho */
  table.rcards > tbody > tr > td.rc-wide{ display:block; text-align:left; }
  table.rcards > tbody > tr > td.rc-wide::before{ display:block; margin-bottom:6px; flex:none; }
  /* Celdas con colspan (cargando / vacío / detalle) a todo el ancho */
  table.rcards > tbody > tr > td[colspan]{ display:block; text-align:left; }
  table.rcards > tbody > tr > td[colspan]::before{ content:""; display:none; }
  /* Tap targets cómodos para botones de acción dentro de tarjetas */
  table.rcards > tbody > tr > td .btn,
  table.rcards > tbody > tr > td .btn.xs,
  table.rcards > tbody > tr > td a.btn{ min-height:36px; }
}

/* ===== Semantic colors parity for light theme (cross-module) ===== */
:root[data-theme="light"] .content .pill.ok,
:root[data-theme="light"] .content .chip.ok,
:root[data-theme="light"] .content .chip.approved,
:root[data-theme="light"] .content .badge.ok,
:root[data-theme="light"] .content .badge.approved,
:root[data-theme="light"] .content .badge.closed,
:root[data-theme="light"] .content .badge.bg-success{
  color:#166534 !important;
  border-color:rgba(34,197,94,.40) !important;
  background:rgba(34,197,94,.16) !important;
}

:root[data-theme="light"] .content .pill.warn,
:root[data-theme="light"] .content .chip.warn,
:root[data-theme="light"] .content .chip.pending,
:root[data-theme="light"] .content .chip.pen,
:root[data-theme="light"] .content .badge.warn,
:root[data-theme="light"] .content .badge.pending,
:root[data-theme="light"] .content .badge.open,
:root[data-theme="light"] .content .badge.bg-warning,
:root[data-theme="light"] .content .badge.bg-warning.text-dark{
  color:#92400e !important;
  border-color:rgba(245,158,11,.42) !important;
  background:rgba(245,158,11,.17) !important;
}

:root[data-theme="light"] .content .pill.err,
:root[data-theme="light"] .content .chip.err,
:root[data-theme="light"] .content .chip.bad,
:root[data-theme="light"] .content .chip.rejected,
:root[data-theme="light"] .content .badge.err,
:root[data-theme="light"] .content .badge.rejected{
  color:#991b1b !important;
  border-color:rgba(239,68,68,.40) !important;
  background:rgba(239,68,68,.15) !important;
}

:root[data-theme="light"] .content td.ok,
:root[data-theme="light"] .content .ok{
  color:#166534 !important;
}
:root[data-theme="light"] .content td.warn,
:root[data-theme="light"] .content .warn{
  color:#92400e !important;
}
:root[data-theme="light"] .content td.err,
:root[data-theme="light"] .content .err{
  color:#991b1b !important;
}

/* ============================================================
   Inventario / Activos (módulo inv_*)
   ============================================================ */
.iv-wrap { display:grid; gap:14px; }
.iv-card { padding:16px; border-radius:16px; background:var(--card); border:1px solid var(--border); }
.iv-title { font-size:16px; font-weight:800; margin:0 0 10px 0; display:flex; align-items:center; gap:8px; }
.iv-sub { font-size:12px; color:var(--muted); margin:0 0 10px 0; }
.iv-input, .iv-select, .iv-textarea {
  padding:9px 11px; border-radius:10px; border:1px solid var(--border);
  background:var(--card2); color:var(--text); width:100%; box-sizing:border-box; font-size:14px;
}
.iv-input::placeholder, .iv-textarea::placeholder { color:var(--muted); }
.iv-textarea { min-height:54px; resize:vertical; }
.iv-btn { padding:9px 14px; border-radius:10px; border:1px solid transparent;
  background:#2563eb; color:#fff; cursor:pointer; font-weight:600; font-size:14px; }
.iv-btn:hover { filter:brightness(1.08); }
.iv-btn.secondary { background:var(--card2); color:var(--text); border-color:var(--border); }
.iv-btn.ok { background:#16a34a; }
.iv-btn.danger { background:#dc2626; }
.iv-btn.sm { padding:5px 9px; font-size:12px; }
.iv-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
.iv-kpi { padding:14px; border-radius:14px; background:var(--card2); border:1px solid var(--border); }
.iv-kpi b { font-size:26px; display:block; line-height:1.1; }
.iv-kpi span { font-size:12px; color:var(--muted); }
.iv-kpi.warn { border-color:rgba(245,158,11,.5); background:rgba(245,158,11,.12); }
.iv-kpi.bad { border-color:rgba(239,68,68,.5); background:rgba(239,68,68,.12); }
.iv-field label { display:block; font-size:12px; color:var(--muted); margin-bottom:4px; }
.iv-field { margin-bottom:2px; }
.iv-toolbar { display:flex; gap:10px; flex-wrap:wrap; align-items:end; justify-content:space-between; }
.iv-tableWrap { overflow:auto; border-radius:12px; border:1px solid var(--border); min-width:0; max-width:100%; }
table.iv-table { width:100%; border-collapse:collapse; font-size:13px; }
.iv-table th, .iv-table td { padding:9px 10px; border-bottom:1px solid var(--border); text-align:left; vertical-align:middle; }
.iv-table th { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.iv-table tr.clickable { cursor:pointer; }
.iv-table tr.clickable:hover td { background:color-mix(in srgb, var(--text) 6%, transparent); }
.iv-badge { padding:3px 9px; border-radius:999px; font-size:11px; font-weight:700; display:inline-block; white-space:nowrap; }
.iv-est-operativo { background:rgba(22,163,74,.30); }
.iv-est-en_reparacion { background:rgba(245,158,11,.30); }
.iv-est-prestado { background:rgba(37,99,235,.28); }
.iv-est-almacen { background:rgba(100,116,139,.28); }
.iv-est-extraviado { background:rgba(217,70,239,.30); }
.iv-est-baja { background:rgba(239,68,68,.28); }
.iv-chip { padding:3px 9px; border-radius:999px; font-size:11px; font-weight:700; display:inline-block;
  background:color-mix(in srgb, var(--text) 9%, transparent); }
.iv-chip.bad { background:rgba(239,68,68,.25); }
.iv-chip.warn { background:rgba(245,158,11,.25); }
.iv-code { font-family:ui-monospace,monospace; font-size:12px; color:var(--muted); }
.iv-modal { width:min(640px,100%); max-height:92vh; overflow:auto; background:var(--card); color:var(--text);
  border:1px solid var(--border); border-radius:16px; padding:18px; }
.iv-modal[open] { display:block; }
.iv-modal::backdrop { background:rgba(0,0,0,.6); }
.iv-grid2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.iv-grid3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.iv-empty { padding:16px; text-align:center; color:var(--muted); font-size:13px; }
.iv-msg { font-size:13px; min-height:16px; }
.iv-scanbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.iv-scanbar .iv-input { flex:1; min-width:180px; }
.iv-scan-hint { font-size:11px; color:var(--muted); }
.iv-drawer { position:fixed; top:0; right:0; height:100vh; width:min(460px,100%); z-index:400;
  background:var(--card); border-left:1px solid var(--border); box-shadow:-12px 0 40px rgba(0,0,0,.35);
  transform:translateX(100%); transition:transform .22s ease; overflow:auto; padding:0; }
.iv-drawer.open { transform:translateX(0); }
.iv-drawer-bg { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:390; display:none; }
.iv-drawer-bg.open { display:block; }
/* Cabecera fija de la ficha (sticky limpia, sin márgenes negativos) */
.iv-drawer-head { position:sticky; top:0; z-index:6; background:var(--card); padding:14px 18px; border-bottom:1px solid var(--border); }
.iv-drawer-inner { padding:14px 18px 20px; }
/* Lista de opciones seleccionables (Mover / Estado) */
.iv-optlist { display:grid; gap:6px; max-height:50vh; overflow:auto; }
.iv-opt { display:block; width:100%; text-align:left; padding:11px 12px; border:1px solid var(--border); border-radius:10px;
  background:var(--card2); color:var(--text); cursor:pointer; font-size:14px; }
.iv-opt:hover { background:color-mix(in srgb, var(--text) 7%, transparent); }
.iv-opt.current { border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
.iv-kv { display:grid; grid-template-columns:120px 1fr; gap:6px 10px; font-size:13px; margin:10px 0; }
.iv-kv dt { color:var(--muted); }
.iv-kv dd { margin:0; }
.iv-hist { list-style:none; padding:0; margin:0; display:grid; gap:8px; }
.iv-hist li { font-size:12px; padding:8px 10px; border-radius:10px; background:var(--card2);
  border-left:3px solid var(--accent); }
.iv-hist li .t { color:var(--muted); font-size:11px; }
/* Cámara de escaneo: vista cuadrada + recuadro punteado para encuadrar el QR */
.iv-cam-wrap { position:relative; width:min(320px,78vw); aspect-ratio:1/1; margin:8px auto 0; border-radius:14px; overflow:hidden; background:#000; }
.iv-cam-wrap video { width:100%; height:100%; object-fit:cover; display:block; }
.iv-cam-frame { position:absolute; inset:15%; border:2px dashed rgba(255,255,255,.92); border-radius:12px; pointer-events:none;
  box-shadow:0 0 0 9999px rgba(0,0,0,.28); }
/* compat: por si quedara algún .iv-cam suelto */
.iv-cam { width:100%; border-radius:12px; background:#000; }
/* Clasificación y código (sección del formulario de activos) */
.iv-cb-card { margin:10px 0 2px; border:1px solid var(--border); border-radius:12px; background:var(--card2); padding:12px; }
.iv-cb-h { font-size:13px; font-weight:700; color:var(--text); margin-bottom:10px; }
/* Combobox custom (popup estilizado, mismo patrón que .pp-budget-pop de Proveedores) */
.iv-combo { position:relative; }
.iv-combo-pop { position:absolute; top:calc(100% + 4px); left:0; width:min(420px,100%); max-height:240px; overflow:auto;
  border:1px solid var(--border); border-radius:10px; background:var(--card); box-shadow:0 12px 28px rgba(2,6,23,.28); z-index:40; display:none; }
.iv-combo-pop.open { display:block; }
.iv-combo-pop.up { top:auto; bottom:calc(100% + 4px); }
.iv-combo-item { display:block; width:100%; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text);
  text-align:left; padding:9px 11px; cursor:pointer; font-size:13px; }
.iv-combo-item:last-child { border-bottom:0; }
.iv-combo-item:hover { background:var(--card2); }
.iv-combo-sub { display:block; font-size:11px; color:var(--muted); margin-top:1px; }
@media (max-width:640px){
  .iv-grid2, .iv-grid3 { grid-template-columns:1fr; }
  /* Las tablas .iv-table.rcards se vuelven tarjetas (utilidad .rcards); sin scroll horizontal. */
  table.iv-table.rcards { min-width:0 !important; }
  .iv-drawer { width:100%; }
}
/* Carga masiva: flujo de pasos (sin cajas anidadas) */
.iv-uprow { display:flex; gap:12px; align-items:flex-start; }
.iv-upbody { flex:1; min-width:0; }
.iv-uph { font-weight:700; font-size:14px; margin:0 0 2px; line-height:1.35; }
.iv-upbody .iv-sub { margin:0 0 10px; }
.iv-updiv { height:1px; background:var(--border); margin:16px 0; }
.iv-step-n { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:999px; background:#2563eb; color:#fff; font-size:12px; font-weight:700; flex:0 0 auto; margin-top:1px; }
/* Área de resultado de la carga: colapsa cuando está vacía (sin espacio muerto). */
.iv-result { font-size:13px; }
.iv-result:empty { display:none; }
.iv-result:not(:empty) { margin-top:10px; }
/* Etiquetas imprimibles — etiquetadora 62mm. Etiqueta CUADRADA: nombre / QR / código. */
.iv-labels { display:flex; flex-wrap:wrap; gap:5mm; align-content:flex-start; }
.iv-label {
  width:62mm; height:62mm; box-sizing:border-box; overflow:hidden;
  background:#fff; color:#000; border:1px solid #cfd6df; border-radius:2mm;
  padding:2.5mm; display:flex; flex-direction:column; align-items:center; justify-content:space-between; gap:1.5mm;
}
.iv-label .nm { font-size:8.5pt; font-weight:700; line-height:1.15; text-align:center; width:100%;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.iv-label .qr { width:42mm; height:42mm; flex:0 0 auto; }
.iv-label .qr svg { width:100%; height:100%; display:block; }
.iv-label .code { font-family:ui-monospace,monospace; font-size:8pt; letter-spacing:.2px; line-height:1.15;
  text-align:center; width:100%; word-break:break-all; }
/* Impresión: cada etiqueta una "página" cuadrada de 62×62mm, sin márgenes. */
@page { size:62mm 62mm; margin:0; }
@media print {
  body * { visibility:hidden; }
  #iv-print, #iv-print * { visibility:visible; }
  #iv-print { position:absolute; left:0; top:0; display:block; }
  .iv-label { width:62mm; height:62mm; border:0; border-radius:0; margin:0; break-inside:avoid; break-after:page; }
  .iv-label:last-child { break-after:auto; }
}
