/* =====================================================================
   MARSHAL OPS — SISTEMA DE DISEÑO (design-system.css)
   ---------------------------------------------------------------------
   La "cara" estándar del sistema: tokens, botones, estructura (barra
   lateral + barra superior), tarjetas, tablas, chips, formularios.
   ADDITIVE: solo agrega clases (con prefijo o nombres nuevos). NO cambia
   selectores globales existentes, así no altera nada hasta que se aplica.
   Se aplica página por página, módulo por módulo. NO toca la lógica.
   ===================================================================== */

/* ---------- 1. TOKENS ---------- */
:root{
  /* Colores base (los de Marshal Ops, superficies afinadas) */
  --ds-bg:#0b1120; --ds-surface:#0f172a; --ds-surface-2:#141f38; --ds-card:#16213c;
  --ds-border:#243049; --ds-border-soft:#1c2740;
  --ds-text:#eef2f9; --ds-muted:#9aa8c2; --ds-faint:#64748b;
  --ds-primary:#3b82f6; --ds-primary-2:#60a5fa; --ds-primary-hover:#2563eb;
  --ds-success:#10b981; --ds-warning:#f59e0b; --ds-danger:#ef4444; --ds-violet:#8b5cf6;
  /* Espaciado — grilla de 8 puntos */
  --ds-s1:4px; --ds-s2:8px; --ds-s3:12px; --ds-s4:16px; --ds-s5:24px; --ds-s6:32px;
  /* Radios, sombras, foco */
  --ds-radius:10px; --ds-radius-lg:14px;
  --ds-shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  --ds-ring:0 0 0 3px rgba(59,130,246,.35);
  /* Escala tipográfica */
  --ds-text-xs:.75rem; --ds-text-sm:.875rem; --ds-text-base:1rem;
  --ds-text-lg:1.125rem; --ds-text-xl:1.4rem; --ds-text-2xl:1.9rem;
}

/* ---------- 2. ÍCONOS (SVG de línea, una sola familia) ---------- */
.ds-ic{display:inline-block;vertical-align:middle;flex:none;}
.ds-ic svg{display:block;width:100%;height:100%;}
.ds-ic-sm{width:15px;height:15px;} .ds-ic-md{width:19px;height:19px;} .ds-ic-lg{width:22px;height:22px;}

/* ---------- 3. BOTÓN UNIFICADO ---------- */
.ds-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 15px;                      /* tamaño MEDIO por defecto */
  font-family:inherit;font-size:var(--ds-text-sm);font-weight:600;line-height:1;
  border:1px solid transparent;border-radius:var(--ds-radius);cursor:pointer;
  transition:background-color .15s,border-color .15s,transform .05s;white-space:nowrap;
  width:auto;                            /* anula anchos globales heredados */
}
.ds-btn svg{width:15px;height:15px;}
.ds-btn:active{transform:translateY(1px);}
.ds-btn:focus-visible{outline:none;box-shadow:var(--ds-ring);}
.ds-btn--primary{background:var(--ds-primary);color:#fff;}
.ds-btn--primary:hover{background:var(--ds-primary-hover);}
.ds-btn--secondary{background:transparent;color:var(--ds-text);border-color:var(--ds-border);}
.ds-btn--secondary:hover{border-color:var(--ds-primary);background:rgba(59,130,246,.08);}
.ds-btn--danger{background:rgba(239,68,68,.14);color:#fca5a5;}
.ds-btn--danger:hover{background:rgba(239,68,68,.24);}
.ds-btn--danger-solid{background:var(--ds-danger);color:#fff;}
.ds-btn--success{background:var(--ds-success);color:#fff;}
.ds-btn--ghost{background:transparent;color:var(--ds-muted);}
.ds-btn--ghost:hover{color:var(--ds-text);background:var(--ds-surface-2);}
.ds-btn--sm{padding:6px 11px;font-size:var(--ds-text-xs);}
.ds-btn--lg{padding:13px 20px;font-size:var(--ds-text-base);}
.ds-btn--block{width:100%;}
.ds-btn:disabled{opacity:.5;cursor:not-allowed;}

/* ---------- 4. ESTRUCTURA: barra lateral + barra superior ---------- */
.ds-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh;background:var(--ds-bg);color:var(--ds-text);}
.ds-side{background:linear-gradient(180deg,#0d1526,#0b1120);border-right:1px solid var(--ds-border-soft);
  padding:var(--ds-s5) var(--ds-s4);display:flex;flex-direction:column;gap:var(--ds-s5);position:sticky;top:0;height:100vh;}
.ds-brand{display:flex;align-items:center;gap:var(--ds-s3);}
.ds-brand .ds-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(135deg,#3b82f6,#8b5cf6);box-shadow:0 6px 16px -4px rgba(59,130,246,.6);}
.ds-brand b{font-size:var(--ds-text-base);} .ds-brand span{display:block;font-size:.7rem;color:var(--ds-faint);font-weight:600;letter-spacing:.4px;text-transform:uppercase;}
.ds-nav-label{font-size:.68rem;color:var(--ds-faint);font-weight:700;letter-spacing:.8px;text-transform:uppercase;padding:0 var(--ds-s3);margin-bottom:var(--ds-s2);}
.ds-nav{display:flex;flex-direction:column;gap:2px;}
/* Sirve tanto para <a> como para los <button class="tab-btn"> existentes */
.ds-nav a, .ds-nav button{display:flex;align-items:center;gap:var(--ds-s3);width:100%;text-align:left;
  padding:10px var(--ds-s3);border:none;background:none;border-radius:var(--ds-radius);
  color:var(--ds-muted);text-decoration:none;font-weight:600;font-size:.9rem;font-family:inherit;transition:.15s;cursor:pointer;}
.ds-nav a svg, .ds-nav button svg{width:19px;height:19px;flex:none;}
.ds-nav a:hover, .ds-nav button:hover{background:var(--ds-surface-2);color:var(--ds-text);}
.ds-nav a.active, .ds-nav button.active{background:linear-gradient(90deg,rgba(59,130,246,.18),rgba(59,130,246,.05));
  color:#dbeafe;box-shadow:inset 3px 0 0 var(--ds-primary);border-bottom:none;}
/* El menú vive en la barra lateral pero CONSERVA su id nav-tabs-wrapper (el JS de permisos lo necesita) */
.ds-side #nav-tabs-wrapper{display:flex;flex-direction:column;gap:var(--ds-s5);border:none;padding:0;margin:0;}
.ds-spacer{flex:1;}
.ds-user{display:flex;align-items:center;gap:var(--ds-s3);padding:var(--ds-s3);border-radius:var(--ds-radius);background:var(--ds-surface-2);border:1px solid var(--ds-border-soft);}
.ds-user small{color:var(--ds-faint);font-size:.72rem;display:block;}

.ds-main{display:flex;flex-direction:column;min-width:0;}
.ds-topbar{display:flex;align-items:center;gap:var(--ds-s4);padding:var(--ds-s4) var(--ds-s6);
  border-bottom:1px solid var(--ds-border-soft);background:rgba(15,23,42,.6);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10;}
.ds-topbar h1{font-size:var(--ds-text-lg);font-weight:700;}
.ds-crumb{color:var(--ds-faint);font-size:.8rem;margin-top:2px;}
.ds-content{padding:var(--ds-s6);display:flex;flex-direction:column;gap:var(--ds-s5);}

/* Búsqueda, estado, botón de ícono */
.ds-search{position:relative;}
.ds-search input{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius);
  color:var(--ds-text);padding:9px 14px 9px 36px;width:240px;font-family:inherit;font-size:.85rem;}
.ds-search input:focus{outline:none;box-shadow:var(--ds-ring);border-color:var(--ds-primary);}
.ds-search .ds-mag{position:absolute;left:11px;top:9px;color:var(--ds-faint);}
.ds-status{display:inline-flex;align-items:center;gap:var(--ds-s2);background:rgba(16,185,129,.12);color:#6ee7b7;
  font-size:.78rem;font-weight:600;padding:7px 12px;border-radius:999px;border:1px solid rgba(16,185,129,.25);}
.ds-dot{width:8px;height:8px;border-radius:50%;background:var(--ds-success);box-shadow:0 0 0 3px rgba(16,185,129,.2);}
.ds-icon-btn{width:38px;height:38px;border-radius:10px;border:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-muted);cursor:pointer;display:grid;place-items:center;}

/* ---------- 5. TARJETAS, PANELES, KPIs ---------- */
.ds-card{background:var(--ds-card);border:1px solid var(--ds-border-soft);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow);}
.ds-panel{background:var(--ds-card);border:1px solid var(--ds-border-soft);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow);overflow:hidden;}
.ds-panel-head{display:flex;align-items:center;justify-content:space-between;padding:var(--ds-s5);border-bottom:1px solid var(--ds-border-soft);}
.ds-panel-head h2{font-size:var(--ds-text-base);font-weight:700;}
.ds-panel-head .sub{font-size:.78rem;color:var(--ds-faint);margin-top:2px;}
.ds-panel-body{padding:var(--ds-s4) var(--ds-s5) var(--ds-s5);}

.ds-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--ds-s4);}
.ds-kpi{background:linear-gradient(180deg,var(--ds-card),var(--ds-surface));border:1px solid var(--ds-border-soft);
  border-radius:var(--ds-radius-lg);padding:var(--ds-s4) var(--ds-s5);box-shadow:var(--ds-shadow);}
.ds-kpi .top{display:flex;align-items:center;justify-content:space-between;}
.ds-kpi .lbl{color:var(--ds-muted);font-size:.8rem;font-weight:600;}
.ds-kpi .ico{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;}
.ds-kpi .ico svg{width:18px;height:18px;}
.ds-kpi .num{font-size:2rem;font-weight:800;letter-spacing:-.5px;margin-top:var(--ds-s2);}
.ds-kpi .sub{font-size:.78rem;color:var(--ds-faint);margin-top:2px;}
.ds-i-blue{background:rgba(59,130,246,.15);color:var(--ds-primary-2);}
.ds-i-green{background:rgba(16,185,129,.15);color:#34d399;}
.ds-i-amber{background:rgba(245,158,11,.15);color:#fbbf24;}
.ds-i-violet{background:rgba(139,92,246,.15);color:#a78bfa;}

/* ---------- 6. TABLA (con prefijo, no pisa la global) ---------- */
.ds-table{width:100%;border-collapse:collapse;}
.ds-table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--ds-faint);font-weight:700;padding:var(--ds-s3) var(--ds-s2);}
.ds-table td{padding:var(--ds-s3) var(--ds-s2);border-top:1px solid var(--ds-border-soft);font-size:.88rem;vertical-align:middle;}
.ds-who{display:flex;align-items:center;gap:var(--ds-s3);white-space:nowrap;}
.ds-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:.85rem;color:#fff;flex:none;background:linear-gradient(135deg,#3b82f6,#8b5cf6);}

/* ---------- 7. CHIPS DE ESTADO ---------- */
.ds-chip{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap;}
.ds-chip svg{width:12px;height:12px;}
.ds-chip--green{background:rgba(16,185,129,.14);color:#34d399;}
.ds-chip--amber{background:rgba(245,158,11,.14);color:#fbbf24;}
.ds-chip--red{background:rgba(239,68,68,.14);color:#fca5a5;}
.ds-chip--blue{background:rgba(59,130,246,.14);color:var(--ds-primary-2);}
.ds-chip--gray{background:rgba(148,163,184,.14);color:var(--ds-muted);}
/* Separación entre botones de acción dentro de celdas de tabla */
td .ds-btn + .ds-btn{margin-left:6px;}

/* ---------- 8. FORMULARIOS (con prefijo) ---------- */
.ds-field{margin-bottom:var(--ds-s4);}
.ds-field label{display:block;font-size:.75rem;font-weight:600;color:var(--ds-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;}
.ds-field input,.ds-field select,.ds-field textarea{width:100%;background:var(--ds-surface);border:1px solid var(--ds-border);
  border-radius:var(--ds-radius);color:var(--ds-text);padding:11px 12px;font-family:inherit;font-size:.88rem;}
.ds-field input:focus,.ds-field select:focus,.ds-field textarea:focus{outline:none;box-shadow:var(--ds-ring);border-color:var(--ds-primary);}
.ds-hint{font-size:.75rem;color:var(--ds-faint);margin-top:6px;}

/* ---------- 9. UTILIDADES ---------- */
.ds-row{display:flex;align-items:center;gap:var(--ds-s3);flex-wrap:wrap;}
.ds-between{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-s3);}
.ds-grid2{display:grid;grid-template-columns:1.6fr 1fr;gap:var(--ds-s5);align-items:start;}
@media (max-width:900px){
  .ds-shell{grid-template-columns:1fr;}
  .ds-grid2{grid-template-columns:1fr;}
  .ds-side{
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 260px;
    height: 100vh;
    z-index: 1000;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.5);
    border-right: 1px solid var(--ds-border-soft);
  }
  .ds-side.active {
    display: flex;
  }
  .ds-menu-btn {
    display: grid !important;
  }
  .ds-topbar{padding:var(--ds-s4);}
  .ds-content{padding:var(--ds-s4);}
}

.ds-menu-btn {
  display: none;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  border: 1px solid var(--ds-border);
  background: var(--ds-surface);
  color: var(--ds-muted);
  cursor: pointer;
  place-items: center;
  margin-right: 12px;
  flex: none;
}
.ds-menu-btn:hover {
  background: var(--ds-surface-2);
  color: var(--ds-text);
}

/* ---------- 10. AJUSTES DE MONITOREO + COMPATIBILIDAD DE BADGES ---------- */
/* El formulario de asignar orden no se estira en toda la pantalla */
#card-asignar-orden{ max-width:640px; }

/* Los ".badge" viejos (estados de órdenes y de varios módulos) se ven como
   chips del estándar, sin tener que tocar el JavaScript de cada módulo. */
.badge{ display:inline-flex; align-items:center; gap:6px; font-size:.72rem; font-weight:700;
  padding:4px 10px; border-radius:999px; white-space:nowrap; line-height:1.2; }
.badge-success{ background:rgba(16,185,129,.14); color:#34d399; }
.badge-warning{ background:rgba(245,158,11,.14); color:#fbbf24; }
.badge-danger{ background:rgba(239,68,68,.14); color:#fca5a5; }
.badge-info{ background:rgba(59,130,246,.14); color:var(--ds-primary-2); }
.badge-primary{ background:rgba(139,92,246,.14); color:#a78bfa; }
.badge-secondary{ background:rgba(148,163,184,.14); color:var(--ds-muted); }
.badge-success-double{ background:rgba(16,185,129,.2); color:#34d399; }
