/* =========================================================
   Sistema visual v2 (docs/ui-redesign/proposals/00-sistema-compartido.md)
   Namespace "dc2-" a proposito: convive con las clases dc-* antiguas
   mientras se migra pantalla a pantalla. No tocar dc-* desde aqui.
   El claro/oscuro usa el MISMO mecanismo que ya activa layout.js:
   atributo [data-theme="dark"] en <html> (sin media query aparte).
========================================================= */
:root{
  /* ink-faint: >= 4.5:1 sobre blanco (WCAG AA texto pequeno; hallazgo QA). */
  --dc2-ink:#17191a; --dc2-ink-soft:#5c6266; --dc2-ink-faint:#6b7175;
  --dc2-surface:#ffffff; --dc2-surface-card:#ffffff; --dc2-surface-sunken:#f2f2f1;
  --dc2-border:#e2e3e1; --dc2-border-soft:#ececea;
  --dc2-accent:#21505b; --dc2-accent-strong:#173a43; --dc2-accent-ink:#21505b;
  --dc2-accent-soft:rgba(33,80,91,.08); --dc2-accent-soft-2:rgba(33,80,91,.15);
  /* Estado: texto sobre su fondo "soft" >= 4.5:1 (pills), hallazgo QA. */
  --dc2-ok:#077a43; --dc2-ok-soft:rgba(7,122,67,.12);
  --dc2-warn:#8a5900; --dc2-warn-soft:rgba(138,89,0,.12);
  --dc2-bad:#c21f1f; --dc2-bad-soft:rgba(194,31,31,.10);
  --dc2-on-bad:#ffffff; /* texto sobre fondo --dc2-bad (badge) */
  --dc2-neutral:#8a8f94; --dc2-neutral-soft:rgba(138,143,148,.14);
  --dc2-shadow-card:0 1px 2px rgba(18,36,40,.04), 0 8px 24px -12px rgba(18,36,40,.14);
  --dc2-shadow-pop:0 2px 6px rgba(18,36,40,.06), 0 16px 40px -16px rgba(18,36,40,.22);
  --dc2-radius-lg:20px; --dc2-radius-md:14px; --dc2-radius-sm:10px; --dc2-radius-pill:999px;
}
:root[data-theme="dark"]{
  --dc2-ink:#eef0ef; --dc2-ink-soft:#aeb2b1; --dc2-ink-faint:#9a9f9e;
  --dc2-surface:#131414; --dc2-surface-card:#1b1c1c; --dc2-surface-sunken:#0f1010;
  --dc2-border:#2a2b2a; --dc2-border-soft:#232423;
  --dc2-accent:#2f6d78; --dc2-accent-strong:#3f93a3; --dc2-accent-ink:#7fd6cc;
  --dc2-accent-soft:rgba(127,214,204,.10); --dc2-accent-soft-2:rgba(127,214,204,.18);
  --dc2-ok:#39c184; --dc2-ok-soft:rgba(57,193,132,.14);
  --dc2-warn:#e0a634; --dc2-warn-soft:rgba(224,166,52,.14);
  --dc2-bad:#f0685f; --dc2-bad-soft:rgba(240,104,95,.14);
  --dc2-on-bad:#1c0a09; /* el rojo claro del tema oscuro no da contraste con blanco */
  --dc2-neutral:#7f9092; --dc2-neutral-soft:rgba(127,144,146,.16);
  --dc2-shadow-card:0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
  --dc2-shadow-pop:0 2px 6px rgba(0,0,0,.35), 0 16px 40px -16px rgba(0,0,0,.6);
}

/* ---- icono base ---- */
.dc2-ic{ width:18px; height:18px; stroke:currentColor; stroke-width:1.75; fill:none; stroke-linecap:round; stroke-linejoin:round; display:block; flex:none; }

/* ---- botones ---- */
.dc2-btn{
  font-family:"Manrope","Poppins",system-ui,sans-serif; font-weight:700; font-size:13.5px;
  border-radius:var(--dc2-radius-pill); padding:10px 18px; border:1px solid transparent; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px; text-decoration:none; transition:filter .15s ease, background .15s ease;
}
.dc2-btn .dc2-ic{ width:15px; height:15px; }
.dc2-btn--primary{ background:var(--dc2-accent); color:#fff; }
.dc2-btn--primary:hover{ filter:brightness(1.08); color:#fff; }
.dc2-btn--secondary{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.dc2-btn--secondary:hover{ background:var(--dc2-accent-soft-2); }
.dc2-btn--ghost{ background:transparent; color:var(--dc2-ink-soft); border-color:var(--dc2-border); }
.dc2-btn--ghost:hover{ border-color:var(--dc2-ink-faint); color:var(--dc2-ink); }
.dc2-btn--danger{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-btn--outline{ background:var(--dc2-surface-card); color:var(--dc2-ink); border-color:var(--dc2-border); }
.dc2-btn--outline:hover{ border-color:var(--dc2-ink-faint); }

/* ---- pills de estado (siempre icono + texto, nunca solo color) ---- */
.dc2-pill{
  display:inline-flex; align-items:center; gap:7px; font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:12.5px;
  padding:7px 13px 7px 10px; border-radius:var(--dc2-radius-pill);
}
.dc2-pill .dc2-ic{ width:14px; height:14px; }
.dc2-pill--ok{ background:var(--dc2-ok-soft); color:var(--dc2-ok); }
.dc2-pill--warn{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-pill--bad{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-pill--neutral{ background:var(--dc2-neutral-soft); color:var(--dc2-neutral); }

/* ---- tarjetas KPI: icono + valor + etiqueta, terso (sin caption suelta;
   si hace falta explicar algo largo, botón (i) -> modal, no texto en la
   tarjeta). Layout fiel a docs/ui-redesign maqueta Resumen. ---- */
/* minmax(0,1fr) + min-width:0: un hijo con contenido nowrap (SN, cifras)
   no puede ensanchar la columna y provocar scroll horizontal (hallazgo QA). */
.dc2-kpi-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.dc2-kpi-grid > *, .dc2-panels > *, .dc2-panel, .dc2-donut-col, .dc2-legend, .dc2-mrow{ min-width:0; }
@media (max-width:900px){ .dc2-kpi-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .dc2-kpi-grid{ grid-template-columns:1fr; } }
.dc2-kpi{
  background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md);
  padding:16px 18px; box-shadow:var(--dc2-shadow-card); display:flex; align-items:center; gap:12px;
}
.dc2-kpi__icon{ width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex:none; }
.dc2-kpi__icon .dc2-ic{ width:17px; height:17px; }
.dc2-kpi--danger .dc2-kpi__icon{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-kpi--warn .dc2-kpi__icon{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-kpi--ok .dc2-kpi__icon{ background:var(--dc2-ok-soft); color:var(--dc2-ok); }
.dc2-kpi__val{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:21px; line-height:1; color:var(--dc2-ink); }
.dc2-kpi__lbl{ font-size:10.5px; color:var(--dc2-ink-faint); font-weight:700; text-transform:uppercase; letter-spacing:.02em; margin-top:3px; }

/* ---- panel de resumen (par de donuts + listas) ---- */
.dc2-panels{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; }
@media (max-width:960px){ .dc2-panels{ grid-template-columns:1fr; } }
.dc2-panel{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); padding:22px 24px; box-shadow:var(--dc2-shadow-card); }
.dc2-panel__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.dc2-panel__eyebrow{ font-size:10.5px; font-weight:800; color:var(--dc2-accent-ink); text-transform:uppercase; letter-spacing:.04em; }
.dc2-panel__title{ font-size:15px; font-weight:800; margin-top:2px; color:var(--dc2-ink); }

.dc2-donutrow{ display:flex; gap:22px; flex-wrap:wrap; }
.dc2-donut-col{ flex:1; min-width:220px; display:flex; flex-direction:column; gap:14px; }
.dc2-donutcard{ display:flex; align-items:center; gap:14px; }
.dc2-donut{ width:84px; height:84px; border-radius:50%; position:relative; flex:none; }
.dc2-donut::before{ content:''; position:absolute; inset:12px; border-radius:50%; background:var(--dc2-surface-card); }
.dc2-donut__center{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.dc2-donut__value{ font-size:16px; font-weight:800; color:var(--dc2-ink); }
.dc2-donut__label{ font-size:8px; color:var(--dc2-ink-faint); font-weight:700; text-transform:uppercase; }
.dc2-legend{ display:flex; flex-direction:column; gap:5px; }
.dc2-legend__title{ font-size:11px; font-weight:800; margin-bottom:6px; color:var(--dc2-ink); }
.dc2-legend__row{ display:flex; align-items:center; gap:6px; font-size:11px; font-weight:700; color:var(--dc2-ink-soft); }
.dc2-dot{ display:inline-block; width:7px; height:7px; border-radius:50%; flex:none; }
.dc2-dot--ok{ background:var(--dc2-ok); } .dc2-dot--warn{ background:var(--dc2-warn); } .dc2-dot--bad{ background:var(--dc2-bad); }

.dc2-listtitle{ font-size:11px; font-weight:800; color:var(--dc2-ink-faint); text-transform:uppercase; letter-spacing:.03em; margin:0 0 8px; }
.dc2-mrow{ display:flex; align-items:center; gap:9px; padding:8px 0; border-bottom:1px solid var(--dc2-border-soft); font-size:12px; font-weight:700; color:var(--dc2-ink); }
.dc2-mrow:last-child{ border-bottom:none; }
/* Fila de lista: el NOMBRE es lo que se recorta (elipsis, title con el
   completo); el VALOR nunca encoge por debajo de su palabra mas larga y,
   si tiene varias partes (span.dc2-nowrap), baja de linea entre ellas. */
.dc2-mrow__name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc2-mrow .dc2-mrow__val{ margin-left:auto; flex:0 1 auto; min-width:auto; white-space:normal; text-align:right; color:var(--dc2-ink-faint); font-weight:700; }
.dc2-mrow--empty{ color:var(--dc2-ink-faint); font-weight:600; }

/* ---- ayuda contextual: boton (i) clicable -> modal, nunca hover ---- */
.dc2-info-btn{
  width:20px; height:20px; border-radius:50%; background:var(--dc2-neutral-soft); color:var(--dc2-ink-soft);
  display:inline-flex; align-items:center; justify-content:center; font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:11px;
  border:none; cursor:pointer; flex:none; padding:0;
}
.dc2-info-btn:hover{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.dc2-info-btn:focus-visible{ outline:2px solid var(--dc2-accent-ink); outline-offset:2px; }
dialog.dc2-modal{
  border:none; border-radius:var(--dc2-radius-lg); padding:0; max-width:440px; width:calc(100% - 40px);
  background:var(--dc2-surface-card); color:var(--dc2-ink); box-shadow:var(--dc2-shadow-pop); margin:auto;
}
dialog.dc2-modal::backdrop{ background:rgba(8,16,17,.5); backdrop-filter:blur(2px); }
.dc2-modal__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px 20px; border-bottom:1px solid var(--dc2-border-soft); }
.dc2-modal__head b{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; }
.dc2-modal__close{ width:28px; height:28px; border-radius:9px; background:var(--dc2-surface-sunken); border:none; color:var(--dc2-ink-soft); cursor:pointer; display:flex; align-items:center; justify-content:center; flex:none; }
.dc2-modal__close .dc2-ic{ width:14px; height:14px; }
.dc2-modal__body{ padding:18px 20px 22px; font-size:13.5px; line-height:1.65; color:var(--dc2-ink-soft); }
.dc2-modal__body p{ margin:0 0 10px; }
.dc2-modal__body p:last-child{ margin-bottom:0; }

/* ---- compat: deja que clases dc- ya existentes (tamaño ya resuelto en
   styles.css) sirvan tambien para el <svg> del sprite v2, sin duplicar
   reglas de tamaño/layout ni tocar los <img> aun no migrados ---- */
.dc-nav__icon,
.dc-hiconbtn__icon{ stroke:currentColor; stroke-width:1.75; fill:none; stroke-linecap:round; stroke-linejoin:round; color:inherit; }

/* ---- datos que no se recortan (SN, series...) ---- */
.dc2-table-wrap{ overflow-x:auto; position:relative; } /* contiene los .dc2-visually-hidden de las cabeceras: sin esto ensanchan la pagina */
/* Tabla "a medida" (sin scroll horizontal): reparto automatico del
   navegador (table-layout auto) para que cada columna tienda a su contenido
   de forma homogenea. Solo estado y accion tienen ancho fijo. Cabeceras y
   texto largo (nombre, modelo, UAS asignados) hacen salto de linea; cifras
   y SN van en una linea (nowrap), asi el SN "manda" en el reparto. Si aun
   asi la tabla no cabe, layout.js pasa TODOS los SN de esa tabla a la forma
   corta "XXXXX…XXXXX" (data-sn-full / data-sn-short; title = completo). */
.dc2-table--fit{ table-layout:auto; }
.dc2-table--fit th{ white-space:normal; vertical-align:bottom; }
.dc2-table--fit td{ white-space:normal; overflow-wrap:anywhere; }
.dc2-table--fit td.dc2-nowrap, .dc2-table--fit td.dc2-mono{ white-space:nowrap; }
.dc2-col--state{ width:60px; }
.dc2-col--act{ width:52px; }
.dc2-sn{ white-space:nowrap; }
.dc2-nowrap{ white-space:nowrap; }
.dc2-mono{ font-family:"IBM Plex Mono","Poppins",monospace; font-variant-numeric:tabular-nums; }
/* SN y similares: se recortan visualmente (el valor completo esta en
   el title nativo, tooltip al pasar el raton) para no comerse ancho de
   tabla -- a diferencia de otros identificadores donde se pidio
   explicitamente no recortar nunca (ver .dc2-nowrap). */
.dc2-truncate{ max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; cursor:default; }

/* =========================================================
   LISTADOS — filtros, tabla y paginador (reemplaza dc-ptools/
   dc-ptable/dc-ppager en las pantallas migradas).
========================================================= */
/* Switch de vista tabla/tarjetas: icono, no texto -- patron estandar
   (rayas = lista, cuadricula = tarjetas), no pills del tabbar de modulo. */
.dc2-viewswitch{ display:inline-flex; gap:2px; background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-sm); padding:3px; }
.dc2-viewswitch__btn{
  width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center;
  color:var(--dc2-ink-faint);
}
.dc2-viewswitch__btn:hover{ color:var(--dc2-ink); }
.dc2-viewswitch__btn.is-active{ background:var(--dc2-surface-card); color:var(--dc2-accent-ink); box-shadow:var(--dc2-shadow-card); }
.dc2-viewswitch__btn .dc2-ic{ width:16px; height:16px; }

/* ---- barra de herramientas de listado (mantenimiento/partials/
   listado-toolbar.php): busqueda + boton Filtros que despliega un panel
   plegable; sin fondo gris, sin etiquetas, se aplica solo. ---- */
.dc2-toolbar{ margin-bottom:16px; }
.dc2-toolbar__row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dc2-search{ position:relative; flex:1 1 240px; max-width:440px; }
.dc2-search .dc2-ic{ position:absolute; left:11px; top:10px; width:16px; height:16px; color:var(--dc2-ink-faint); pointer-events:none; }
.dc2-search__input{
  width:100%; height:36px; box-sizing:border-box; padding:0 12px 0 34px; border-radius:var(--dc2-radius-sm);
  border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink);
  font-family:"Manrope","Poppins",sans-serif; font-size:13px;
}
.dc2-search__input:focus{ outline:2px solid var(--dc2-accent-ink); outline-offset:-1px; }
/* Sin la "x" nativa de type=search (duplicaba la nuestra en Chrome/Edge). */
.dc2-search__input::-webkit-search-cancel-button, .dc2-search__input::-webkit-search-decoration{ -webkit-appearance:none; appearance:none; display:none; }
/* Con texto: boton "x" a la derecha que limpia la busqueda (conserva filtros). */
.dc2-search.has-value .dc2-search__input{ padding-right:36px; }
.dc2-search__clear{ position:absolute; right:6px; top:50%; transform:translateY(-50%); width:26px; height:26px; border-radius:7px; display:flex; align-items:center; justify-content:center; color:var(--dc2-ink-faint); text-decoration:none; }
.dc2-search__clear:hover{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); }
.dc2-search .dc2-search__clear .dc2-ic{ position:static; width:14px; height:14px; color:inherit; pointer-events:auto; }
.dc2-filterbtn{
  position:relative; height:36px; padding:0 14px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border);
  background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px;
  display:inline-flex; align-items:center; gap:8px; cursor:pointer; flex:none;
}
.dc2-filterbtn:hover{ border-color:var(--dc2-ink-faint); }
.dc2-filterbtn.is-on{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); border-color:transparent; }
.dc2-filterbtn .dc2-ic{ width:15px; height:15px; }
.dc2-filterbtn__badge{
  position:absolute; top:-6px; right:-6px; min-width:17px; height:17px; padding:0 5px; border-radius:9px;
  background:var(--dc2-accent); color:#fff; font-size:10px; font-weight:800; display:flex; align-items:center; justify-content:center;
}
.dc2-toolbar__gap{ flex:1; }
.dc2-toolbar__count{ font-size:12px; font-weight:600; color:var(--dc2-ink-faint); white-space:nowrap; }
.dc2-toolbar__pagesize{
  height:36px; padding:0 10px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border);
  background:var(--dc2-surface-card); color:var(--dc2-ink-soft); font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:12.5px; cursor:pointer;
}
.dc2-toolbar__panel{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:12px 0 2px; margin-top:12px; border-top:1px solid var(--dc2-border-soft); }
.dc2-toolbar__panel[hidden]{ display:none; }
/* Campos del panel de filtros (select/input); se autoaplican al cambiar. */
.dc2-toolbar__select, .dc2-toolbar__input{
  height:36px; padding:0 12px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border);
  background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-size:12.5px; min-width:170px;
}
.dc2-toolbar__select:focus, .dc2-toolbar__input:focus{ outline:2px solid var(--dc2-accent-ink); outline-offset:-1px; }
.dc2-range__lbl{ font-size:11px; font-weight:700; color:var(--dc2-ink-faint); margin-right:2px; }
.dc2-range{ display:flex; align-items:center; gap:6px; height:36px; }
.dc2-range input[type="range"]{ width:80px; accent-color:var(--dc2-accent); }
.dc2-range__val{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:11.5px; color:var(--dc2-ink-soft); min-width:2ch; text-align:center; }
.dc2-range__sep{ color:var(--dc2-ink-faint); font-size:11px; }

/* ---- tarjetas de listado (UAS/Baterías) ---- */
/* Tarjetas anchas (max 3 por fila en 1440px) y de la misma altura por
   fila (grid estira), con el pie (estado + accion) siempre pegado abajo. */
.dc2-cards-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(400px,1fr)); gap:18px; align-items:stretch; }
.dc2-card{
  background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md);
  padding:18px; box-shadow:var(--dc2-shadow-card); display:flex; flex-direction:column; gap:14px;
}
.dc2-card__head{ display:flex; align-items:flex-start; gap:12px; }
.dc2-card__avatar{ width:48px; height:48px; border-radius:13px; overflow:hidden; flex:none; background:var(--dc2-surface-sunken); }
.dc2-card__avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-card__id{ min-width:0; flex:1; }
.dc2-card__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* Meta "modelo · SN": el SN sale SIEMPRE entero; si falta sitio se recorta el
   modelo con puntos suspensivos. */
.dc2-card__meta{ font-size:11px; color:var(--dc2-ink-faint); margin-top:2px; display:flex; align-items:center; gap:5px; min-width:0; }
.dc2-card__meta-model{ flex:0 1 auto; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-card__meta-sn{ flex:none; white-space:nowrap; }
.dc2-card__bars{ display:grid; grid-template-columns:1fr; gap:12px; }
.dc2-card__barset-title{ font-family:"Manrope","Poppins",sans-serif; font-size:12.5px; font-weight:800; color:var(--dc2-ink); margin-bottom:8px; }
.dc2-barrow{ display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.dc2-barrow:last-child{ margin-bottom:0; }
.dc2-barrow__label{ font-size:10.5px; color:var(--dc2-ink-faint); width:74px; flex:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-bar{ flex:1; height:6px; border-radius:4px; background:var(--dc2-surface-sunken); overflow:hidden; }
.dc2-bar__fill{ height:100%; border-radius:4px; display:block; }
.dc2-bar__fill--ok{ background:var(--dc2-ok); }
.dc2-bar__fill--warn{ background:var(--dc2-warn); }
.dc2-bar__fill--bad{ background:var(--dc2-bad); }
.dc2-barrow__val{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:10px; color:var(--dc2-ink-soft); flex:none; min-width:42px; text-align:right; }
.dc2-card__foot{ display:flex; align-items:center; justify-content:space-between; padding-top:12px; border-top:1px solid var(--dc2-border-soft); margin-top:auto; }
.dc2-cards-empty{ padding:40px 20px; text-align:center; color:var(--dc2-ink-faint); font-size:13px; }

/* ---- tarjeta de persona: avatar circular con insignia de nivel opcional,
   chips de titulaciones y pie con dos estados ---- */
.dc2-card__avatar--round{ border-radius:50%; overflow:hidden; }
.dc2-card__avatar--round img{ border-radius:50%; }
.dc2-chips{ display:flex; flex-wrap:wrap; gap:6px; }
/* Chips de titulacion: fondo solido con el color del estado (decision del usuario). */
.dc2-pill--solid.dc2-pill--ok{ background:var(--dc2-ok); color:#fff; }
.dc2-pill--solid.dc2-pill--warn{ background:var(--dc2-warn); color:#fff; }
.dc2-pill--solid.dc2-pill--bad{ background:var(--dc2-bad); color:var(--dc2-on-bad); }
.dc2-card__foot-states{ display:flex; gap:6px; flex-wrap:wrap; }
/* Dos cifras en cajas (operaciones, horas) en vez de filas etiqueta/valor separadas. */
.dc2-stats{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.dc2-stat{ background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-sm); padding:10px 12px; display:flex; flex-direction:column; gap:3px; min-width:0; }
.dc2-stat__lbl{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
.dc2-stat__val{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:15px; font-weight:600; color:var(--dc2-ink); }

/* ---- acciones de pagina (fila propia, alineada a la derecha, encima del
   panel de listado): secundarias + iconos + una primaria ---- */
.dc2-pageactions{ display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.dc2-pageactions__sep{ width:1px; height:24px; background:var(--dc2-border); margin:0 4px; }
.dc2-iconbtn{
  width:36px; height:36px; border-radius:10px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card);
  color:var(--dc2-ink-soft); display:inline-flex; align-items:center; justify-content:center; cursor:pointer; flex:none; padding:0; text-decoration:none;
}
.dc2-iconbtn:hover, .dc2-iconbtn:visited{ color:var(--dc2-ink); border-color:var(--dc2-ink-faint); }
.dc2-iconbtn .dc2-ic{ width:16px; height:16px; }

/* ---- estado de una titulacion en tabla (icono en caja pequena) ---- */
.dc2-cert{ display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:7px; color:var(--dc2-ink-faint); }
.dc2-cert--ok{ color:var(--dc2-ok); background:var(--dc2-ok-soft); }
.dc2-cert--warn{ color:var(--dc2-warn); background:var(--dc2-warn-soft); }
.dc2-cert--bad{ color:var(--dc2-bad); background:var(--dc2-bad-soft); }
.dc2-cert--x{ color:var(--dc2-bad); background:var(--dc2-bad-soft); }
.dc2-cert--off{ color:var(--dc2-ink-faint); background:var(--dc2-surface-sunken); }
.dc2-cert[role="button"]{ cursor:pointer; }
/* Boton de envio oculto (Enter en toolbars con mas de un campo de texto). */
.dc2-visually-hidden{ position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; padding:0; margin:-1px; }
.dc2-cert .dc2-ic{ width:13px; height:13px; }
.dc2-cert[role="button"]{ cursor:pointer; }
.dc2-pill[role="button"]{ cursor:pointer; }
button.dc2-sortlink{ border:0; background:none; padding:0; font:inherit; color:inherit; cursor:pointer; text-transform:inherit; letter-spacing:inherit; }
/* Papelera: icono rojo limpio, sin caja; la caja aparece solo al pasar. */
.dc2-table__action--danger{ background:transparent; color:var(--dc2-bad); border:0; cursor:pointer; }
.dc2-table__action--danger:hover{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-table__link{ color:var(--dc2-accent-ink); text-decoration:none; }
.dc2-table__link:hover{ text-decoration:underline; }
.dc2-table__name{ font-weight:700; }
.dc2-table__muted{ color:var(--dc2-ink-soft); }
.dc2-cell-center{ text-align:center; }
.dc2-pager__meta{ margin-right:auto; font-size:12px; color:var(--dc2-ink-soft); }
.dc2-pager__meta b{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; color:var(--dc2-ink); }

/* ---- overlay + dialogo (para modales que abre/cierra JS existente por
   display; alternativa a <dialog>.dc2-modal cuando no se puede cambiar el JS) ---- */
.dc2-overlay{ position:fixed; inset:0; background:rgba(8,16,17,.5); backdrop-filter:blur(2px); z-index:1200; display:none; align-items:center; justify-content:center; padding:20px; }
.dc2-dialog{ width:100%; max-width:520px; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); overflow:hidden; }
.dc2-dialog__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 20px 0; }
.dc2-dialog__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:16px; color:var(--dc2-ink); }
.dc2-dialog__body{ padding:20px; display:flex; flex-direction:column; gap:16px; }
body.dc-dialog-open{ overflow:hidden; }
.dc2-dialog__foot{ display:flex; justify-content:flex-end; gap:10px; padding:0 20px 20px; }
/* Campo de fichero: el input nativo queda oculto (mismo id/name); se ve una
   zona de soltar con icono, texto y el nombre del fichero elegido. */
.dc2-filefield{ display:flex; align-items:center; gap:12px; padding:14px 16px; border:1.5px dashed var(--dc2-border); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); cursor:pointer; color:var(--dc2-ink-soft); transition:border-color .15s ease, background .15s ease; }
.dc2-filefield:hover, .dc2-filefield.is-drag{ border-color:var(--dc2-accent-ink); background:var(--dc2-accent-soft); }
.dc2-filefield.has-file{ border-style:solid; border-color:var(--dc2-accent-ink); color:var(--dc2-ink); }
.dc2-filefield__ic{ width:36px; height:36px; border-radius:10px; background:var(--dc2-surface-card); display:flex; align-items:center; justify-content:center; color:var(--dc2-accent-ink); flex:none; }
.dc2-filefield__txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.dc2-filefield__txt b{ font-family:"Manrope","Poppins",sans-serif; font-size:13px; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-filefield__txt small{ font-size:11.5px; color:var(--dc2-ink-faint); }
.dc2-filefield__input{ position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; clip:rect(0 0 0 0); }

/* ---- panel lateral (drawer) a la derecha: abre una URL en un iframe sin
   shell (embed=1) para procesos como "Crear usuario" sin salir del listado ---- */
/* Cerrado: invisible Y sin capturar clics (antes bloqueaba la pagina). */
.dc2-drawer-overlay{ position:fixed; inset:0; background:rgba(8,16,17,.45); backdrop-filter:blur(2px); z-index:1300; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .2s ease, visibility .2s ease; }
.dc2-drawer{ position:fixed; top:0; right:0; bottom:0; width:min(760px, 100%); background:var(--dc2-surface-card); border-left:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-pop); z-index:1301; display:flex; flex-direction:column; transform:translateX(100%); visibility:hidden; transition:transform .22s ease, visibility .22s ease; }
.dc2-drawer.is-open{ transform:translateX(0); visibility:visible; }
.dc2-drawer-overlay.is-open{ opacity:1; visibility:visible; pointer-events:auto; }
.dc2-drawer__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 20px; border-bottom:1px solid var(--dc2-border-soft); flex:none; }
.dc2-drawer__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; color:var(--dc2-ink); }
.dc2-drawer__frame{ flex:1; border:0; width:100%; background:var(--dc2-surface); }
body.dc-drawer-open{ overflow:hidden; }
/* Pagina embebida (embed=1): sin sidebar ni header, contenido a todo el ancho. */
body.dc-embed .dc-main{ margin-left:0 !important; width:100% !important; height:auto !important; }
body.dc-embed .dc-headerwrap{ display:none; }
body.dc-embed .dc-content{ padding:22px 28px 32px !important; }
body.dc-embed .dc-content > .dc-dash{ padding-top:0 !important; margin-top:0 !important; }
/* Dentro del panel lateral el contenido va "a pelo": sin tarjeta dentro de
   la tarjeta, mas aire entre campos, secciones claras. */
body.dc-embed .dc2-panel{ border:0; box-shadow:none; padding:0; background:transparent; }
body.dc-embed .dc2-panel__head{ margin-bottom:18px; }
body.dc-embed .dc2-panel__title{ font-size:18px; }
body.dc-embed .dc2-form{ gap:18px 22px; }
body.dc-embed .dc2-form .dc-input, body.dc-embed .dc2-form .dc2-input, body.dc-embed .dc2-form .dc-mselect__summary{ height:42px; font-size:13.5px; }
body.dc-embed .dc2-form-actions{ margin-top:24px; padding-top:18px; }
.dc2-field{ display:flex; flex-direction:column; gap:6px; font-size:13px; }
.dc2-field__lbl{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-input{ height:36px; padding:0 12px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-size:13px; }
.dc2-input:focus{ outline:2px solid var(--dc2-accent-ink); outline-offset:-1px; }
.dc2-check{ display:flex; align-items:flex-start; gap:9px; font-size:13px; color:var(--dc2-ink); cursor:pointer; }
.dc2-check input{ margin-top:3px; accent-color:var(--dc2-accent); }
.dc2-check small{ display:block; font-size:12px; color:var(--dc2-ink-soft); margin-top:2px; }

/* Donut pequeño (tarjeta de batería): un solo valor 0-100, color segun estado. */
.dc2-donut--sm{ width:56px; height:56px; }
.dc2-donut--sm::before{ inset:8px; }
.dc2-donut--sm .dc2-donut__value{ font-size:12px; }
.dc2-donut--sm .dc2-donut__label{ font-size:6.5px; }

.dc2-metric{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; font-size:11px; padding:3px 0; }
.dc2-metric span{ color:var(--dc2-ink-faint); }
.dc2-metric strong{ color:var(--dc2-ink); font-weight:700; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:130px; }

.dc2-table{ width:100%; border-collapse:collapse; font-size:13px; }
.dc2-table th{
  text-align:left; font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; text-transform:uppercase;
  letter-spacing:.04em; color:var(--dc2-ink-faint); padding:0 14px 10px; border-bottom:1px solid var(--dc2-border); white-space:nowrap;
}
/* Cabecera ordenable: todo el texto es el enlace; el icono indica el
   estado (neutro / ascendente / descendente) y la columna activa se
   resalta. */
.dc2-sortlink{ display:inline-flex; align-items:center; gap:4px; color:inherit; text-decoration:none; }
.dc2-sortlink .dc2-ic{ width:13px; height:13px; opacity:.4; }
.dc2-sortlink:hover{ color:var(--dc2-ink); }
.dc2-sortlink:hover .dc2-ic{ opacity:1; }
.dc2-sortlink.is-active{ color:var(--dc2-ink); }
.dc2-sortlink.is-active .dc2-ic{ opacity:1; color:var(--dc2-accent-ink); }
/* Estado solo icono (columna estrecha): el icono ya distingue el
   estado sin depender del color; el texto va en title/aria-label. */
.dc2-pill--sm{ font-size:11px; padding:4px 9px 4px 7px; gap:5px; }
.dc2-pill--sm .dc2-ic{ width:12px; height:12px; }
.dc2-pill--icon{ width:28px; height:28px; padding:0; justify-content:center; }
.dc2-pill--icon .dc2-ic{ width:15px; height:15px; }
.dc2-table td{ padding:12px 14px; border-bottom:1px solid var(--dc2-border-soft); color:var(--dc2-ink); vertical-align:middle; }
.dc2-table tbody tr:last-child td{ border-bottom:none; }
.dc2-table tbody tr:hover td{ background:var(--dc2-surface-sunken); }
.dc2-table__empty{ padding:32px 14px; text-align:center; color:var(--dc2-ink-faint); font-size:13px; }
/* Acciones de fila/tarjeta: solo icono, sin caja (la caja aparece al pasar). */
.dc2-table__action{
  width:32px; height:32px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center;
  color:var(--dc2-ink-soft); background:transparent; border:0; padding:0; cursor:pointer; text-decoration:none;
}
.dc2-table__action:hover{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.dc2-table__action .dc2-ic{ width:16px; height:16px; }

.dc2-pager{ display:flex; align-items:center; justify-content:flex-end; gap:12px; margin-top:16px; }
.dc2-pager__info{ font-size:12px; color:var(--dc2-ink-faint); font-weight:600; }
.dc2-pager__btn{
  width:32px; height:32px; border-radius:9px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card);
  color:var(--dc2-ink-soft); display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.dc2-pager__btn:hover{ border-color:var(--dc2-ink-faint); color:var(--dc2-ink); }
.dc2-pager__btn:disabled{ opacity:.4; cursor:default; }
.dc2-pager__btn .dc2-ic{ width:15px; height:15px; }

/* =========================================================
   SIDEBAR — rail de iconos + panel de categoria (decision del usuario:
   "Sidebar 1 · Rail + panel"). La raiz <aside class="dc-sidebar"> se
   conserva (posicion fixed, ancho de layout y hook de JS en
   styles.css); todo lo de dentro es nuevo. .is-expanded en el aside
   (+ body.dc-sidebar-expanded) = panel abierto; lo pone layout.js al
   pulsar una categoria del rail.
========================================================= */
/* ---- SHELL (contrato: docs/ui-redesign/contrato-ui-v2.md §2) ----
   Mecanica tomada de la referencia TrainingForever: logo arriba en la
   columna del sidebar; el header va de punta a punta (desde el borde
   del rail hasta el borde derecho del viewport, sin huecos ni caja
   flotante); el panel de categoria queda DEBAJO del header y sin logo;
   el contenido usa todo el ancho con el mismo padding que el header. */
:root{
  --dc2-header-h:60px; --dc2-content-x:24px; --dc2-content-top:20px;
  --dc2-rail-w:64px; --dc2-rail-w-expanded:200px; --dc2-panel-w:212px;
  /* El rail NO es el verde del logo (#21505b): tono mas profundo para que el
     logo se vea sin loseta blanca. */
  --dc2-rail-bg:#0f2b31; --dc2-rail-ink:rgba(255,255,255,.78); --dc2-rail-hover:rgba(255,255,255,.10);
  --dc2-rail-active:rgba(255,255,255,.18); --dc2-rail-sep:rgba(255,255,255,.14);
  --dc2-panel-bg:#f4f6f5;
}
:root[data-theme="dark"]{ --dc2-rail-bg:#0a1d21; --dc2-panel-bg:#181b1b; }
body.dc-layout{ background:var(--dc2-surface); }
body.dc-layout .dc-headerwrap{ padding:0; height:var(--dc2-header-h); flex:none; }
body.dc-layout .dc-header.dc2-header,
body.dc-layout.dc-sidebar-expanded .dc-header.dc2-header{
  position:fixed; top:0; left:var(--dc2-rail-w); right:0; width:auto; height:var(--dc2-header-h);
  border:0 !important; border-bottom:1px solid var(--dc2-border) !important; border-radius:0;
  box-shadow:none !important; z-index:1001; transition:left .18s ease;
}
body.dc-layout .dc-content{ padding:var(--dc2-content-top) var(--dc2-content-x) 40px; width:auto; max-width:none; margin:0; }
/* El hueco bajo el header ya lo reserva .dc-headerwrap: se anulan los
   margenes/paddings "de compensacion" que operadora.css metia al primer
   bloque del contenido (.dc-dash, section/div:first-of-type). */
body.dc-layout .dc-content > .dc-dash,
body.dc-layout .dc-content > section:first-of-type,
body.dc-layout .dc-content > div:first-of-type,
body.dc-layout .dc-content > .dc-pagehead:first-of-type{ margin-top:0 !important; }
body.dc-layout .dc-content > .dc-dash{ padding-top:0 !important; }

/* Dos estados independientes en escritorio:
   - rail expandido (iconos + texto, 200px) <-> plegado (solo iconos, 64px):
     html.dc-rail-expanded (lo pone el script de <head> desde localStorage
     "dc-rail-expanded" para que no parpadee) y el boton [data-rail-toggle].
   - panel de categoria abierto (212px): body.dc-sidebar-expanded.
   Sidebar = rail + panel; .dc-main y el header se desplazan solo por la
   izquierda; el contenido del header empieza en la vertical del contenido. */
@media (min-width:901px){
  body.dc-layout{ --dc2-side-rail:var(--dc2-rail-w); --dc2-side-panel:0px; }
  html.dc-rail-expanded body.dc-layout{ --dc2-side-rail:var(--dc2-rail-w-expanded); }
  body.dc-layout.dc-sidebar-expanded{ --dc2-side-panel:var(--dc2-panel-w); }
  /* Sin salto al cargar: html.dc-panel-open (script de <head>) reserva el
     panel y muestra el grupo de la categoria activa antes de que layout.js
     ponga body.dc-sidebar-expanded / .is-open. Solo si la pagina tiene
     categoria activa (data-active-cat). */
  /* dc-panel-has-cat la pone sidebar.php (script inline tras el aside) cuando
     la pagina tiene categoria activa: sin depender de :has(). */
  html.dc-panel-open.dc-panel-has-cat body.dc-layout{ --dc2-side-panel:var(--dc2-panel-w); }
  /* Solo hasta que layout.js toma el control (html.dc-nav-ready): si no, el
     grupo de la categoria de la pagina seguia visible al abrir otra. */
  html.dc-panel-open:not(.dc-nav-ready) .dc-sidebar[data-active-cat]:not([data-active-cat=""]) .dc2-subnav{ display:flex; }
  html.dc-panel-open:not(.dc-nav-ready) .dc-sidebar[data-active-cat="org"] .dc2-subnav__group[data-nav-group="org"],
  html.dc-panel-open:not(.dc-nav-ready) .dc-sidebar[data-active-cat="flota"] .dc2-subnav__group[data-nav-group="flota"],
  html.dc-panel-open:not(.dc-nav-ready) .dc-sidebar[data-active-cat="op"] .dc2-subnav__group[data-nav-group="op"]{ display:flex; }
  body.dc-layout .dc-sidebar, body.dc-layout .dc-sidebar.is-expanded{ width:calc(var(--dc2-side-rail) + var(--dc2-side-panel)); }
  body.dc-layout .dc-main, body.dc-layout.dc-sidebar-expanded .dc-main{
    margin-left:calc(var(--dc2-side-rail) + var(--dc2-side-panel));
    width:calc(100% - var(--dc2-side-rail) - var(--dc2-side-panel));
  }
  body.dc-layout .dc-header.dc2-header, body.dc-layout.dc-sidebar-expanded .dc-header.dc2-header{ left:var(--dc2-side-rail); }
  /* Mas especifico que la regla base de .dc2-header__inner (bloque HEADER,
     mas abajo en este fichero): el crumb se mueve con el panel. */
  body.dc-layout .dc2-header .dc2-header__inner{ padding-left:calc(var(--dc2-side-panel) + var(--dc2-content-x)); transition:padding-left .18s ease; }
  /* (mas especifico que la regla base .dc2-rail del bloque SIDEBAR, mas abajo) */
  body.dc-layout .dc2-rail{ width:var(--dc2-side-rail); }
  html.dc-rail-expanded body.dc-layout .dc2-rail__btn{ justify-content:flex-start; padding:0 12px; }
  html.dc-rail-expanded body.dc-layout .dc2-rail__lbl{ display:block; }
  /* Expandido: logo + nombre (o logo ancho de operadora) + chevron de
     contraer; plegado: solo el logo, que expande al pulsarlo. */
  /* Desplegado: la marca centrada (el chevron ya no vive en esta fila). */
  html.dc-rail-expanded body.dc-layout .dc2-rail__brand{ justify-content:center; padding:0 10px; }
  html.dc-rail-expanded body.dc-layout .dc2-rail__brand-name{ display:block; }
  html.dc-rail-expanded body.dc-layout .dc2-rail__brand--wide .dc2-rail__logo--c{ display:none; }
  html.dc-rail-expanded body.dc-layout .dc2-rail__brand--wide .dc2-rail__logo--f{ display:block; }
  html.dc-rail-expanded body.dc-layout .dc2-rail__collapse .dc2-ic{ transform:rotate(180deg); }
  /* El chevron sobresale del rail: el sidebar no recorta en escritorio
     (el panel de categoria y el rail tienen su propio scroll). */
  body.dc-layout .dc-sidebar{ overflow:visible; }
  body.dc-layout .dc2-rail{ overflow:visible; }
}
@media (max-width:900px){ .dc2-rail__collapse{ display:none; } }
@media (max-width:900px){
  body.dc-layout .dc-header.dc2-header, body.dc-layout.dc-sidebar-expanded .dc-header.dc2-header{ left:0; right:0; top:0; z-index:900; }
  body.dc-layout .dc2-header .dc2-header__inner{ padding-left:12px; }
  body.dc-layout .dc-content{ padding:16px 12px 40px; }
  /* Movil: la vista tabla redirige a tarjetas (layout.js); sin selector. */
  .dc2-viewswitch{ display:none; }
  /* Menu movil: UN solo panel (drawer) con todas las categorias; el rail no
     se pinta. Se abre con la hamburguesa (body.dc-nav-open) y se cierra con
     la X, el fondo, Escape o al pulsar un enlace. */
  body.dc-layout .dc-sidebar{
    position:fixed; top:0; left:0; bottom:0; height:100%; width:min(300px, 86vw); z-index:1200;
    transform:translateX(-105%); transition:transform .22s ease; overflow:hidden;
    border-right:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-pop) !important;
  }
  body.dc-layout.dc-nav-open .dc-sidebar{ transform:translateX(0); }
  body.dc-layout .dc2-rail{ display:none; }
  body.dc-layout .dc2-subnav{ display:flex; width:100%; height:100%; padding:0 12px 24px; background:var(--dc2-surface-card); overflow-y:auto; }
  body.dc-layout .dc2-subnav__brand{ display:flex; }
  body.dc-layout .dc2-subnav__group{ display:flex; }
  body.dc-layout .dc2-subnav__group + .dc2-subnav__group{ margin-top:12px; }
  body.dc-layout .dc2-subnav__group--extra{ display:flex; margin-top:auto; padding-top:16px; border-top:1px solid var(--dc2-border-soft); }
  body.dc-layout .dc2-subnav__close:not(.dc2-subnav__close--drawer){ display:none; }
  body.dc-layout .dc2-subnav__title{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--dc2-ink-faint); }
  body.dc-layout .dc2-nav-overlay{ position:fixed; inset:0; z-index:1199; background:rgba(8,16,17,.45); opacity:0; visibility:hidden; pointer-events:none; transition:opacity .2s ease, visibility .2s ease; }
  body.dc-layout.dc-nav-open .dc2-nav-overlay{ opacity:1; visibility:visible; pointer-events:auto; }
  body.dc-layout.dc-nav-open{ overflow:hidden; }
  /* Header movil: hamburguesa + titulo de pagina; Cloud/Meteo solo icono;
     usuario solo avatar. */
  /* Prefijo body.dc-layout: las reglas base del bloque HEADER van despues en
     este fichero y, sin el, las pisarian (trampa 1). */
  body.dc-layout .dc2-header__crumb-top{ display:none; }
  body.dc-layout .dc2-header__crumb-bottom{ font-size:14px; }
  body.dc-layout .dc2-header__inner{ gap:8px; }
  body.dc-layout .dc2-header__left{ gap:6px; flex:1 1 auto; min-width:0; }
  body.dc-layout .dc2-header__right{ gap:0; }
  body.dc-layout .dc2-header__pill span{ display:none; }
  body.dc-layout .dc2-header__pill{ width:38px; padding:0; justify-content:center; }
  body.dc-layout .dc2-header__user-info, body.dc-layout .dc2-header__user-caret{ display:none; }
  body.dc-layout .dc2-header__user-trigger{ padding:0; gap:0; }
}
/* Fila de marca y grupo "Cuenta" del panel: solo existen en movil. */
.dc2-subnav__brand{ display:none; align-items:center; justify-content:space-between; gap:10px; height:var(--dc2-header-h); margin:0 0 8px; border-bottom:1px solid var(--dc2-border-soft); flex:none; }
.dc2-subnav__brand-link{ display:flex; align-items:center; gap:10px; min-width:0; text-decoration:none; color:var(--dc2-ink); }
.dc2-subnav__logo-svg{ fill:var(--dc2-ink); }
.dc2-subnav__logo{ height:26px; max-width:150px; object-fit:contain; display:block; }
.dc2-subnav__brand-name{ font-family:"Poppins","Manrope",sans-serif; font-weight:700; font-size:15px; letter-spacing:.06em; color:var(--dc2-ink); white-space:nowrap; }
.dc2-subnav__close--drawer{ width:34px; height:34px; }
.dc2-subnav__group--extra{ display:none; }
.dc2-nav-overlay{ display:none; }
@media (max-width:900px){ .dc2-nav-overlay{ display:block; } }

.dc-sidebar{
  background: var(--dc2-surface-card) !important;
  border-right: 1px solid var(--dc2-border);
  box-shadow: none !important;
  flex-direction: row;
  overflow: hidden;
}
/* Rail: fondo verde corporativo (el unico bloque "de color" del shell). */
.dc2-rail{
  position:relative;
  width:var(--dc2-rail-w); flex:none; display:flex; flex-direction:column; align-items:stretch; padding:0 10px 12px; gap:4px;
  height:100%; overflow-y:auto; overflow-x:hidden; background:var(--dc2-rail-bg); color:var(--dc2-rail-ink); transition:width .18s ease;
  scrollbar-width:none;
}
.dc2-rail::-webkit-scrollbar{ display:none; }
/* La marca ocupa exactamente la altura del header: logo alineado con la barra. */
/* Fila de marca: plegado = solo el logo (pulsarlo expande); expandido = logo
   + DRONCORE (Poppins) + chevron redondo para contraer. */
.dc2-rail__brand{ height:var(--dc2-header-h); display:flex; align-items:center; justify-content:center; gap:10px; padding:0 8px; margin:0 -10px 8px; flex:none; border-bottom:1px solid var(--dc2-rail-sep); }
.dc2-rail__brand-link{ display:flex; align-items:center; gap:10px; min-width:0; text-decoration:none; color:#fff; }
/* Logo DC del sprite, en blanco, sin loseta ni borde. */
.dc2-rail__logo-svg{ width:40px; height:21px; fill:#fff; stroke:none; display:block; flex:none; }
.dc2-rail__logo{ display:block; object-fit:contain; border-radius:9px; }
img.dc2-rail__logo--c{ width:36px; height:36px; }
/* Logos propios de operadora: la imagen real sobre una loseta blanca (plegado) o pill blanca (expandido). */
.dc2-rail__logo--tile{ background:#fff; padding:3px; filter:none; }
.dc2-rail__logo--f{ display:none; height:28px; max-width:130px; padding:3px 8px; background:#fff; border-radius:8px; filter:none; }
.dc2-rail__brand-name{ display:none; font-family:"Poppins","Manrope",sans-serif; font-weight:700; font-size:15px; letter-spacing:.06em; color:#fff; white-space:nowrap; }
/* Chevron redondo a caballo del borde derecho del rail, justo bajo el
   header (si fuera a la altura del logo, el header lo taparia). */
.dc2-rail__collapse{ position:absolute; right:-12px; top:calc(var(--dc2-header-h) + 10px); z-index:2; width:24px; height:24px; border-radius:50%; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); box-shadow:var(--dc2-shadow-card); display:flex; align-items:center; justify-content:center; cursor:pointer; padding:0; }
.dc2-rail__collapse:hover{ color:var(--dc2-accent-ink); border-color:var(--dc2-accent-ink); }
.dc2-rail__collapse .dc2-ic{ width:12px; height:12px; transition:transform .18s ease; }
.dc2-rail__btn{
  height:42px; border-radius:11px; border:0; background:transparent; padding:0; cursor:pointer; gap:10px;
  display:flex; align-items:center; justify-content:center; color:var(--dc2-rail-ink); position:relative; flex:none; text-decoration:none;
  font:inherit; text-align:left;
}
.dc2-rail__btn:hover, .dc2-rail__btn:visited{ background:var(--dc2-rail-hover); color:#fff; }
.dc2-rail__btn.is-active, .dc2-rail__btn.is-open{ background:var(--dc2-rail-active); color:#fff; }
/* Categoria de la pagina actual: fondo suave siempre (mas marcado si el
   panel esta abierto) y, con el panel cerrado, ademas un punto discreto. */
.dc2-rail__btn.is-current:not(.is-open){ background:rgba(255,255,255,.09); color:#fff; }
.dc2-rail__btn.is-current:not(.is-open)::after{ content:''; position:absolute; top:7px; right:7px; width:6px; height:6px; border-radius:50%; background:#fff; }
.dc2-rail__btn .dc2-ic{ width:18px; height:18px; }
.dc2-rail__lbl{ display:none; font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.dc2-rail__btn--cta{ color:#f6c453; }
.dc2-rail__btn--cta.is-enterprise{ color:#7de2a9; }
.dc2-rail__btn--cta.is-simulated{ color:#ffb26b; }
.dc2-rail__sep{ height:1px; background:var(--dc2-rail-sep); margin:6px 6px; flex:none; }
.dc2-rail__gap{ flex:1; }

/* Panel de categoria: sin logo, empieza justo debajo del header (el header
   pasa por encima de su franja superior; el padding-top reserva ese alto). */
.dc2-subnav{
  width:calc(var(--sidebar-expanded) - var(--sidebar-collapsed)); flex:none; height:100%; display:none; flex-direction:column;
  padding:calc(var(--dc2-header-h) + 8px) 10px 14px; overflow-y:auto; overflow-x:hidden; background:var(--dc2-panel-bg);
}
.dc2-subnav__item:hover{ background:var(--dc2-surface-card); }
.dc2-mrow__val{ text-align:right; }
.dc-sidebar.is-expanded .dc2-subnav, body.dc-nav-open .dc2-subnav{ display:flex; }
.dc2-subnav__group{ display:none; flex-direction:column; gap:2px; }
.dc2-subnav__group.is-open{ display:flex; }
/* Cabecera del panel: nombre de la categoria + chevron para plegarlo. */
.dc2-subnav__head{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:4px 2px 10px 10px; }
.dc2-subnav__title{ font-family:"Manrope","Poppins",sans-serif; font-size:14px; font-weight:800; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-subnav__close{ width:28px; height:28px; border-radius:8px; border:0; background:transparent; color:var(--dc2-ink-faint); display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }
.dc2-subnav__close:hover{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); }
.dc2-subnav__close .dc2-ic{ width:15px; height:15px; }
/* Movil (drawer): todas las categorias a la vista, sin pasar por el rail;
   el titulo pasa a ser etiqueta de grupo y el chevron no aplica. */
body.dc-nav-open .dc2-subnav{ padding-top:12px; }
body.dc-nav-open .dc2-subnav__group{ display:flex; }
body.dc-nav-open .dc2-subnav__group + .dc2-subnav__group{ margin-top:10px; }
body.dc-nav-open .dc2-subnav__close:not(.dc2-subnav__close--drawer){ display:none; }
body.dc-nav-open .dc2-subnav__title{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--dc2-ink-faint); }
.dc2-subnav__item{
  display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:10px; color:var(--dc2-ink-soft);
  text-decoration:none; font-family:"Manrope","Poppins",sans-serif; font-weight:600; font-size:13px; white-space:nowrap;
}
.dc2-subnav__item:hover{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); }
.dc2-subnav__item.is-active{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.dc2-subnav__item--affiliated{ background:rgba(230,81,0,.12); color:#e65100; }
.dc2-subnav__item--affiliated:hover{ background:rgba(230,81,0,.18); color:#e65100; }
.dc2-subnav__item .dc2-ic{ width:16px; height:16px; }

/* =========================================================
   HEADER — reemplaza el contenido visual de .dc-header.
========================================================= */
.dc-header{ background:var(--dc2-surface-card) !important; }
/* Mismo padding lateral que .dc-content para que crumb y contenido alineen. */
.dc2-header__inner{ display:flex; align-items:center; gap:16px; height:100%; padding:0 var(--dc2-content-x); }
@media (max-width:900px){ .dc2-header__inner{ padding:0 12px; } }
/* .dc-burger ya trae display:none por defecto y solo se muestra <900px
   (styles.css) -- aqui SOLO estilo visual, nunca display, para no pisar
   esa regla responsive. */
.dc2-header__burger{
  width:38px; height:38px; border-radius:11px; border:none; background:transparent; color:var(--dc2-ink-soft);
  align-items:center; justify-content:center; cursor:pointer; flex:none;
}
.dc2-header__burger:hover{ background:var(--dc2-surface-sunken); }
.dc2-header__burger .dc2-ic{ width:19px; height:19px; }
@media (max-width:900px){ .dc2-header__burger{ display:flex; } }
.dc2-header__left{ display:flex; align-items:center; gap:14px; min-width:0; }
.dc2-header__crumb{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.dc2-header__crumb-top{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--dc2-ink-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-header__crumb-bottom{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14.5px; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-header__gap{ flex:1; }
.dc2-header__right{ display:flex; align-items:center; gap:6px; flex:none; }

.dc2-header__iconbtn{
  position:relative; width:40px; height:40px; border-radius:12px; border:none; background:transparent;
  color:var(--dc2-ink-soft); display:flex; align-items:center; justify-content:center; cursor:pointer;
  text-decoration:none; flex:none;
}
.dc2-header__iconbtn:hover, .dc2-header__iconbtn:visited{ background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); }
.dc2-header__iconbtn .dc2-ic{ width:18px; height:18px; }
.dc2-header__theme-icon{ position:absolute; width:18px; height:18px; transition:opacity .2s ease, transform .2s ease; }
.dc2-header__theme-icon--sun{ opacity:1; transform:scale(1) rotate(0deg); }
.dc2-header__theme-icon--moon{ opacity:0; transform:scale(.7) rotate(30deg); }
:root[data-theme="dark"] .dc2-header__theme-icon--sun{ opacity:0; transform:scale(.7) rotate(-30deg); }
:root[data-theme="dark"] .dc2-header__theme-icon--moon{ opacity:1; transform:scale(1) rotate(0deg); }
.dc2-header__badge{
  position:absolute; top:4px; right:4px; min-width:16px; height:16px; padding:0 4px; border-radius:8px;
  background:var(--dc2-bad); color:var(--dc2-on-bad); font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:9.5px;
  display:flex; align-items:center; justify-content:center;
}
.dc2-header__pill{
  display:flex; align-items:center; gap:6px; height:38px; padding:0 13px; border-radius:var(--dc2-radius-pill);
  border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft);
  font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:11.5px; text-decoration:none; flex:none;
}
.dc2-header__pill:hover, .dc2-header__pill:visited{ color:var(--dc2-ink-soft); border-color:var(--dc2-ink-faint); }
.dc2-header__pill .dc2-ic{ width:14px; height:14px; }

/* Dropdowns (<details data-dc-dropdown>): notificaciones y usuario */
.dc2-header__notif, .dc2-header__user{ position:relative; }
.dc2-header__notif summary::-webkit-details-marker, .dc2-header__user summary::-webkit-details-marker{ display:none; }
.dc2-header__notif summary, .dc2-header__user summary{ list-style:none; cursor:pointer; }
.dc2-header__menu{
  position:absolute; top:calc(100% + 8px); right:0; min-width:320px; max-width:min(90vw,380px);
  background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md);
  box-shadow:var(--dc2-shadow-pop); z-index:1200; overflow:hidden;
}
.dc2-header__menu-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 16px; border-bottom:1px solid var(--dc2-border-soft); }
.dc2-header__menu-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13.5px; color:var(--dc2-ink); }
.dc2-header__menu-action{ background:none; border:none; color:var(--dc2-accent-ink); font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:11.5px; cursor:pointer; padding:0; }
.dc2-header__menu-list{ max-height:360px; overflow-y:auto; }
.dc2-header__menu-item{
  display:flex; align-items:flex-start; gap:10px; padding:11px 16px; text-decoration:none; color:var(--dc2-ink);
  border-bottom:1px solid var(--dc2-border-soft); cursor:pointer; background:none; border-left:none; border-right:none; border-top:none; width:100%; text-align:left; font:inherit;
}
.dc2-header__menu-item:last-child{ border-bottom:none; }
.dc2-header__menu-item:hover{ background:var(--dc2-surface-sunken); }
.dc2-header__menu-dot{ width:7px; height:7px; border-radius:50%; background:var(--dc2-border); flex:none; margin-top:5px; }
.dc2-header__menu-item.is-unread .dc2-header__menu-dot{ background:var(--dc2-accent-ink); }
.dc2-header__menu-text{ font-size:12.5px; font-weight:700; color:var(--dc2-ink); line-height:1.4; }
.dc2-header__menu-meta{ font-size:11px; color:var(--dc2-ink-faint); margin-top:2px; }
.dc2-header__menu-foot{ padding:10px 16px; border-top:1px solid var(--dc2-border-soft); text-align:center; }
.dc2-header__menu-foot a{ color:var(--dc2-accent-ink); font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:12px; text-decoration:none; }

.dc2-header__user-trigger{ display:flex; align-items:center; gap:9px; height:40px; padding:4px 10px 4px 4px; border-radius:var(--dc2-radius-pill); cursor:pointer; }
.dc2-header__user-trigger:hover{ background:var(--dc2-surface-sunken); }
.dc2-header__avatar{ width:30px; height:30px; border-radius:50%; overflow:hidden; flex:none; background:var(--dc2-accent-strong); display:flex; align-items:center; justify-content:center; }
.dc2-header__avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-header__user-info{ display:flex; flex-direction:column; line-height:1.2; min-width:0; }
.dc2-header__user-name{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:12.5px; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:160px; }
.dc2-header__user-role{ font-size:10.5px; color:var(--dc2-ink-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:160px; }
.dc2-header__user-caret{ color:var(--dc2-ink-faint); flex:none; }
.dc2-header__user-caret .dc2-ic{ width:14px; height:14px; }
.dc2-header__user-menu{ padding:8px; min-width:0; width:max-content; }
.dc2-header__user-menu .dc2-header__menu-item{ border-radius:10px; border-bottom:none; padding:9px 10px; font-size:12.5px; font-weight:700; }
.dc2-header__user-menu .dc2-header__menu-item.is-danger{ color:var(--dc2-bad); }
.dc2-header__user-divider{ height:1px; background:var(--dc2-border-soft); margin:6px 4px; }
.dc2-header__user-profile{ padding:10px; }
.dc2-header__user-profile strong{ display:block; font-size:12.5px; color:var(--dc2-ink); }
.dc2-header__user-profile span{ display:block; font-size:11px; color:var(--dc2-ink-faint); margin-top:2px; }
.dc2-header__lang-flags{ display:inline-flex; gap:6px; align-items:center; }
.dc2-header__lang-flags a{ display:flex; padding:3px; border-radius:6px; opacity:.5; }
.dc2-header__lang-flags a.is-active{ opacity:1; background:var(--dc2-accent-soft); }
.dc2-header__lang-flags img{ width:18px; height:13px; object-fit:cover; border-radius:2px; display:block; }

/* =========================================================
   FICHA (detalle de un registro): cabecera de entidad, rejilla principal +
   lateral, y FORMULARIOS. Los formularios de las fichas conservan su markup
   (ids, names, data-*, JS) y se re-estilizan dentro de .dc2-form: las
   clases heredadas dc-field/dc-input/dc-label/dc-help se pintan aqui con
   el sistema v2 (contrato §5.2). No usar .dc2-form fuera de una ficha.
========================================================= */
.dc2-ficha-grid{ display:grid; grid-template-columns:minmax(0,3fr) minmax(260px,1fr); gap:18px; align-items:start; }
@media (max-width:1100px){ .dc2-ficha-grid{ grid-template-columns:1fr; } }
.dc2-ficha-side{ display:flex; flex-direction:column; gap:18px; }
.dc2-entity{ display:flex; align-items:center; gap:14px; margin-bottom:18px; }
.dc2-entity__avatar{ width:56px; height:56px; border-radius:50%; overflow:hidden; background:var(--dc2-accent); color:#fff; display:flex; align-items:center; justify-content:center; font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:18px; flex:none; }
.dc2-entity__avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-entity__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:17px; color:var(--dc2-ink); display:flex; align-items:center; gap:8px; }
.dc2-entity__sub{ font-size:12px; color:var(--dc2-ink-soft); margin-top:3px; }
.dc2-entity__end{ margin-left:auto; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.dc2-recnav{ margin-left:auto; display:flex; align-items:center; gap:6px; }
.dc2-recnav__seq{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; color:var(--dc2-ink-soft); padding:0 6px; }
.dc2-recnav .dc2-pager__btn.is-disabled{ opacity:.4; pointer-events:none; }
/* Tabbar de ficha: ancho completo; pestañas con scroll lateral si no caben
   (sin barra visible), Volver + anterior/siguiente siempre a la derecha. */
/* Selectores con .dc2-tabbar delante: la regla base .dc2-tabbar va DESPUES en
   este fichero y, sin eso, la pisaba (fondo gris en toda la barra, trampa 1). */
.dc2-tabbar.dc2-tabbar--ficha{ display:flex; align-items:center; gap:12px; width:100%; background:none; padding:0; margin-bottom:18px; flex-wrap:nowrap; border-radius:0; }
.dc2-tabbar--ficha .dc2-tabbar__tabs{ flex:1 1 auto; min-width:0; display:flex; gap:4px; background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-pill); padding:4px; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.dc2-tabbar--ficha .dc2-tabbar__tabs::-webkit-scrollbar{ display:none; }
.dc2-tabbar--ficha .dc2-tab{ flex:none; }
.dc2-tabbar--ficha .dc2-recnav{ flex:none; }
/* Segundo nivel (p. ej. Mantenimientos del UAS): pestañas subrayadas sobre
   una linea, distintas de las pildoras del primer nivel. */
.dc2-tabbar.dc2-tabbar--sub{ display:flex; align-items:stretch; width:100%; background:none; padding:0; margin:-4px 0 18px; border-bottom:1px solid var(--dc2-border); border-radius:0; }
.dc2-tabbar.dc2-tabbar--sub .dc2-tabbar__tabs{ display:flex; gap:2px; background:none; border-radius:0; padding:0; overflow-x:auto; scrollbar-width:none; min-width:0; }
.dc2-tabbar.dc2-tabbar--sub .dc2-tabbar__tabs::-webkit-scrollbar{ display:none; }
.dc2-tabbar.dc2-tabbar--sub .dc2-tab{ height:38px; font-size:12.5px; padding:0 14px; flex:none; border-radius:0; background:none; color:var(--dc2-ink-soft); border-bottom:2px solid transparent; margin-bottom:-1px; box-shadow:none; }
.dc2-tabbar.dc2-tabbar--sub .dc2-tab:hover{ color:var(--dc2-ink); background:none; }
.dc2-tabbar.dc2-tabbar--sub .dc2-tab.is-active{ background:none; color:var(--dc2-accent-ink); border-bottom-color:var(--dc2-accent); }
/* Grupo input + boton (p. ej. SN + "Verificar con DJI"). */
.dc2-inputgroup{ display:flex; align-items:center; gap:6px; min-width:0; }
.dc2-inputgroup .dc-input{ flex:1 1 auto; min-width:0; }
.dc2-inputgroup__btn{ flex:none; height:38px; padding:0 10px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border); background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); font:inherit; font-size:12px; font-weight:700; display:inline-flex; align-items:center; gap:6px; cursor:pointer; white-space:nowrap; }
.dc2-inputgroup__btn:hover{ color:var(--dc2-accent-ink); border-color:var(--dc2-accent-ink); }
.dc2-inputgroup__btn .dc2-ic{ width:14px; height:14px; }
.dc2-form .dc2-field--wide{ grid-column:span 2; }
@media (max-width:600px){ .dc2-form .dc2-field--wide{ grid-column:auto; } }
.dc2-stat__val--wrap{ white-space:normal; overflow:visible; text-overflow:clip; word-break:break-all; }
/* Tarjetas de certificado: iconos de accion SVG (lapiz / papelera roja). */
.dc2-ficha.dc-user .dc-certcard__act .dc2-ic{ width:14px; height:14px; }
.dc2-ficha.dc-user .dc-certcard__act--trash{ color:var(--dc2-bad); }
.dc2-ficha.dc-user .dc-certcard__act--edit{ color:var(--dc2-ink-soft); }
/* Movil: las pestañas de la ficha pasan a una barra inferior fija (bottom
   nav, scroll lateral); arriba solo quedan Volver y anterior/siguiente. */
@media (max-width:900px){
  .dc2-tabbar--ficha{ margin-bottom:14px; }
  .dc2-tabbar--ficha .dc2-tabbar__tabs{
    position:fixed; left:0; right:0; bottom:0; z-index:950; border-radius:0;
    background:var(--dc2-surface-card); border-top:1px solid var(--dc2-border);
    padding:8px 10px calc(8px + env(safe-area-inset-bottom, 0px)); gap:6px;
    box-shadow:0 -6px 20px rgba(0,0,0,.06);
  }
  .dc2-tabbar--ficha .dc2-tab{ height:36px; }
  .dc2-tabbar--ficha .dc2-recnav{ flex:1; justify-content:space-between; }
  /* body.dc-has-ficha-tabbar la pone usuario-navbar.php (script inline). */
  body.dc-layout.dc-has-ficha-tabbar .dc-content{ padding-bottom:100px; }
}

/* Verificado (AESA): hexagono con check junto al campo. */
.dc2-verified{ display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; color:var(--dc2-ok); vertical-align:middle; margin-left:4px; }
.dc2-verified .dc2-ic{ width:16px; height:16px; }

/* Formularios (compat sobre markup heredado) */
.dc2-form{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px 18px; }
.dc2-form .dc-field, .dc2-form .dc2-field{ display:flex; flex-direction:column; gap:6px; min-width:0; margin:0; }
.dc2-form .dc-field--full, .dc2-form .dc2-field--full{ grid-column:1 / -1; }
.dc2-form .dc-label, .dc2-form .dc2-field__lbl{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); display:flex; align-items:center; gap:6px; margin:0; }
.dc2-form .dc-section-title, .dc2-form__section{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; letter-spacing:0; text-transform:none; color:var(--dc2-ink); padding-top:6px; border-bottom:1px solid var(--dc2-border-soft); padding-bottom:8px; }
.dc2-form .dc-field--full:first-child .dc-section-title{ padding-top:0; }
.dc2-form .dc-input, .dc2-form select.dc-input, .dc2-form textarea.dc-input, .dc2-form .dc2-input, .dc2-form .dc-mselect__summary{
  height:38px; padding:0 12px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border); background:var(--dc2-surface-card);
  color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-size:13px; width:100%; box-sizing:border-box; box-shadow:none; outline:none;
}
.dc2-form textarea.dc-input{ height:auto; min-height:90px; padding:10px 12px; }
.dc2-form .dc-input:focus, .dc2-form .dc2-input:focus{ border-color:var(--dc2-accent-ink); box-shadow:0 0 0 3px var(--dc2-accent-soft); }
.dc2-form .dc-input:disabled{ background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); }
/* Obligatorio sin rellenar: sin marcas extra (el navegador ya valida
   required al enviar); solo se anula el fondo chillon heredado. */
.dc2-form .dc-input.dc-required:not(.is-filled){ background:var(--dc2-surface-card); }
.dc2-form .dc-help{ font-size:11.5px; color:var(--dc2-ink-soft); margin:0; }
.dc2-form input[type="checkbox"]{ accent-color:var(--dc2-accent); width:16px; height:16px; }
.dc2-form .dc-mselect{ position:relative; }
.dc2-form .dc-mselect__summary{ display:flex; align-items:center; justify-content:space-between; cursor:pointer; list-style:none; }
.dc2-form .dc-mselect__summary::-webkit-details-marker{ display:none; }
.dc2-form .dc-mselect__panel{ position:absolute; left:0; right:0; top:calc(100% + 6px); z-index:50; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-pop); padding:6px; max-height:260px; overflow:auto; }
.dc2-form .dc-mselect__item{ display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:8px; font-size:13px; cursor:pointer; color:var(--dc2-ink); }
.dc2-form .dc-mselect__item:hover{ background:var(--dc2-surface-sunken); }
.dc2-form .dc-mselect__chev{ color:var(--dc2-ink-faint); font-size:11px; }
.dc2-form .dc-op-inputicon{ position:relative; display:flex; align-items:center; }
.dc2-form .dc-op-inputicon__input{ padding-right:40px; }
.dc2-form .dc-op-inputicon__btn{ position:absolute; right:6px; top:50%; transform:translateY(-50%); width:28px; height:28px; border-radius:8px; border:0; background:transparent; color:var(--dc2-ink-faint); display:flex; align-items:center; justify-content:center; cursor:pointer; }
.dc2-form .dc-op-inputicon__btn:hover{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); }
.dc2-form .dc-op-inputicon__btn .dc2-ic{ width:15px; height:15px; }
.dc2-form .dc-op-inputicon--dual .dc-op-inputicon__input{ padding-right:74px; }
.dc2-form .dc-op-inputicon--dual .dc-op-inputicon__btn--ok{ right:38px; color:var(--dc2-ok); }
.dc2-form .dc-op-inputicon--dual .dc-op-inputicon__btn--close{ color:var(--dc2-bad); }
.dc2-form .dc-deptnew{ margin-top:6px; }
.dc2-form .dc-iconbtn--mini, .dc2-iconbtn--mini{ width:22px; height:22px; border-radius:6px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-accent-ink); display:inline-flex; align-items:center; justify-content:center; cursor:pointer; padding:0; }
.dc2-form .dc-iconbtn--mini:hover, .dc2-iconbtn--mini:hover{ background:var(--dc2-accent-soft); }
.dc2-form .dc-iconbtn--mini .dc2-ic, .dc2-iconbtn--mini .dc2-ic{ width:12px; height:12px; }
/* Acciones de formulario (fila propia, derecha). */
.dc2-form-actions{ display:flex; justify-content:flex-end; align-items:center; gap:10px; flex-wrap:wrap; margin-top:18px; padding-top:14px; border-top:1px solid var(--dc2-border-soft); }
.dc2-form-actions__left{ margin-right:auto; display:flex; gap:10px; flex-wrap:wrap; }
.dc2-form-actions .dc2-form-actions__left{ margin-right:auto; display:flex; gap:8px; flex-wrap:wrap; }
/* Nota de licencia / aviso en la ficha */
.dc2-note{ display:flex; align-items:center; gap:10px; padding:10px 14px; border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-sunken); font-size:12.5px; color:var(--dc2-ink-soft); }
.dc2-note--warn{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-note--bad{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-note b{ color:inherit; }
/* Foto de perfil en la ficha */
/* Ficha apilada: paneles a todo el ancho, uno por bloque de datos. */
.dc2-stack{ display:flex; flex-direction:column; gap:18px; }
/* Datos generales: foto integrada a la izquierda, campos a la derecha. */
.dc2-profile{ display:grid; grid-template-columns:180px minmax(0,1fr); gap:24px 32px; align-items:start; }
.dc2-profile__photo{ display:flex; flex-direction:column; align-items:center; }
.dc2-profile__fields{ min-width:0; }
.dc2-photo__ph{ width:56px; height:56px; color:var(--dc2-ink-faint); }
/* Variante para equipos (UAS, auxiliares): foto apaisada con esquinas redondeadas. */
.dc2-profile--wide{ grid-template-columns:240px minmax(0,1fr); }
.dc2-photo__img--square{ width:220px; height:165px; border-radius:var(--dc2-radius-md); }
@media (max-width:760px){ .dc2-profile--wide{ grid-template-columns:1fr; } }
.dc2-photo__hint{ text-align:center; margin:0; }
.dc2-stats--row{ grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); margin-bottom:16px; }
.dc2-iconbtn--danger{ color:var(--dc2-bad); }
.dc2-ficha .dc2-uploader{ display:flex; align-items:center; justify-content:flex-start; text-align:left; gap:10px; flex-wrap:wrap; }
.dc2-ficha .dc2-uploader .dc-op-file{ display:none; }
/* Paneles hermanos dentro de una ficha (Titulaciones, Carnet…): separacion
   fija; en .dc2-stack la aporta el gap. */
.dc2-ficha .dc2-panel ~ .dc2-panel{ margin-top:18px; }
.dc2-stack > .dc2-panel ~ .dc2-panel{ margin-top:0; }
.dc2-ficha.dc-carnet{ gap:0; }
@media (max-width:760px){
  .dc2-profile{ grid-template-columns:1fr; }
}
.dc2-photo{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.dc2-photo__img{ width:160px; height:160px; border-radius:50%; overflow:hidden; background:var(--dc2-surface-sunken); display:flex; align-items:center; justify-content:center; }
.dc2-photo__img img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Sin foto: el <img> con src vacio no pinta su alt encima del hueco. */
.dc2-photo__img img[src=""]{ display:none; }
.dc2-stats--ficha{ grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); margin-bottom:18px; }
.dc2-stats--ficha.dc2-stats--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.dc2-stats--4 .dc2-stat--wide{ grid-column:auto; min-width:0; }
.dc2-stat--wide .dc2-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-top:2px; }
@media (max-width:1100px){ .dc2-stats--ficha.dc2-stats--4{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:900px){ .dc2-stats--ficha, .dc2-stats--ficha.dc2-stats--4{ grid-template-columns:repeat(2,minmax(0,1fr)); } .dc2-stats--ficha .dc2-stat--wide, .dc2-stats--4 .dc2-stat--wide{ grid-column:1 / -1; } }
@media (max-width:520px){ .dc2-stats--ficha, .dc2-stats--ficha.dc2-stats--4{ grid-template-columns:1fr; } }
/* Contraste AA: placeholder del multiselect y pill neutra. */
.dc2-form .dc-mselect__placeholder{ color:var(--dc2-ink-soft); }
.dc2-pill--neutral{ color:var(--dc2-ink-soft); }
.dc2-photo__actions{ display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
/* Lista de cifras (horas de vuelo) en lateral */
.dc2-kv{ display:flex; flex-direction:column; gap:8px; }
.dc2-kv__row{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-sunken); }
.dc2-kv__row span{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-kv__row b{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; font-size:14px; color:var(--dc2-ink); }
/* Documentos (DNI) en rejilla */
.dc2-form .dc-dni-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:12px; }
.dc2-form .dc-dni-card{ border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-card); padding:8px; }
.dc2-form .dc-dni-thumb{ border:1px solid var(--dc2-border-soft); border-radius:8px; background:var(--dc2-surface-sunken); }
.dc2-form .dc-dni-name{ color:var(--dc2-ink); }
.dc2-form .dc-dni-pdf{ color:var(--dc2-ink-faint); }
/* Botones heredados dentro de la ficha: aspecto v2 */
.dc2-ficha .dc-btn{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; border-radius:var(--dc2-radius-pill); padding:0 16px; height:36px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); display:inline-flex; align-items:center; gap:8px; cursor:pointer; text-decoration:none; box-shadow:none; }
.dc2-ficha .dc-btn--primary{ background:var(--dc2-accent); color:#fff; border-color:var(--dc2-accent); }
.dc2-ficha .dc-btn--primary:hover{ filter:brightness(1.08); color:#fff; }
.dc2-ficha .dc-btn--secondary{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); border-color:transparent; }
.dc2-ficha .dc-btn--attention{ background:transparent; color:var(--dc2-ink-soft); border-color:var(--dc2-border); }
.dc2-ficha .dc-btn:disabled{ opacity:.5; cursor:default; }
.dc2-ficha .dc-btn img{ display:none; }

/* ---- Recorte de imagen (op-logo-cropper.js genera el DOM): skin v2 ---- */
body.dc-layout .dc-cropper__overlay{ background:rgba(8,16,17,.5); backdrop-filter:blur(2px); }
body.dc-layout .dc-cropper__panel{ background:var(--dc2-surface-card); color:var(--dc2-ink); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-pop); }
body.dc-layout .dc-cropper__header{ padding:16px 20px; border-bottom:1px solid var(--dc2-border-soft); }
body.dc-layout .dc-cropper__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:16px; color:var(--dc2-ink); }
body.dc-layout .dc-cropper__close{ width:32px; height:32px; border-radius:50%; background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); font-size:18px; }
body.dc-layout .dc-cropper__body{ background:var(--dc2-surface-sunken); }
body.dc-layout .dc-cropper__controls{ padding:14px 20px; color:var(--dc2-ink-soft); font-size:12.5px; }
body.dc-layout .dc-cropper__zoom input[type=range]{ accent-color:var(--dc2-accent); }
body.dc-layout .dc-cropper__hint{ color:var(--dc2-ink-faint); }
body.dc-layout .dc-cropper__actions{ padding:0 20px 20px; display:flex; justify-content:flex-end; gap:10px; }
body.dc-layout .dc-cropper__actions .dc-btn{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; border-radius:var(--dc2-radius-pill); padding:0 16px; height:36px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); cursor:pointer; box-shadow:none; }
body.dc-layout .dc-cropper__actions .dc-btn--primary{ background:var(--dc2-accent); color:#fff; border-color:var(--dc2-accent); }

/* ---- Titulaciones (usuario-titulaciones.css, ambito .dc-user): skin v2 de
   tarjetas de certificado, zona de carga y avisos. Misma DOM/JS. ---- */
.dc2-note--warn{ background:var(--dc2-warn-soft, #fff4e0); color:var(--dc2-warn); }
.dc2-ficha .dc-help--warn{ color:var(--dc2-warn); font-size:12px; }
.dc2-ficha .dc-kpi__info{ display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:50%; border:0; background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); font-size:11px; font-weight:800; font-style:normal; cursor:pointer; vertical-align:middle; margin-left:6px; position:relative; }
.dc2-ficha .dc-verified-inline-btn{ display:inline-flex; align-items:center; }
.dc2-ficha.dc-user .dc-certlayout{ display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:20px; align-items:start; }
.dc2-ficha.dc-user .dc-certgrid--squares{ gap:12px; }
.dc2-ficha.dc-user .dc-certcard{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); box-shadow:none; transition:border-color .15s ease, box-shadow .15s ease; }
.dc2-ficha.dc-user .dc-certcard:hover{ border-color:var(--dc2-accent-ink); box-shadow:var(--dc2-shadow-card); }
.dc2-ficha.dc-user .dc-certcard.is-selected{ border-color:var(--dc2-accent); box-shadow:0 0 0 2px var(--dc2-accent-soft); }
.dc2-ficha.dc-user .dc-certcard.is-expired{ background:var(--dc2-bad-soft); border-color:transparent; }
.dc2-ficha.dc-user .dc-certcard.is-expired .dc-certcard__sub{ color:var(--dc2-bad); font-weight:700; }
.dc2-ficha.dc-user .dc-certcard.is-locked{ opacity:.55; }
.dc2-ficha.dc-user .dc-certcard--square{ width:168px; }
.dc2-ficha.dc-user .dc-certcard__imgwrap{ border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-sunken); }
.dc2-ficha.dc-user .dc-certcard__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; color:var(--dc2-ink); }
.dc2-ficha.dc-user .dc-certcard__sub{ font-size:11.5px; color:var(--dc2-ink-soft); }
.dc2-ficha.dc-user .dc-certcard__aesa-link{ color:var(--dc2-accent-ink) !important; }
.dc2-ficha.dc-user .dc-certcard__act{ border:0; border-radius:50%; background:var(--dc2-surface-card); box-shadow:var(--dc2-shadow-card); }
.dc2-ficha.dc-user .dc-certcard__locknote{ font-size:11px; color:var(--dc2-warn); }
.dc2-ficha.dc-user .dc-certform{ background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-md); padding:16px; }
.dc2-ficha.dc-user .dc-certform form{ display:flex; flex-direction:column; gap:14px; }
.dc2-ficha.dc-user .dc-certform .dc-field{ display:flex; flex-direction:column; gap:6px; margin:0; }
.dc2-ficha.dc-user .dc-certform .dc-label{ font-size:11.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--dc2-ink-soft); }
.dc2-ficha.dc-user .dc-certform .dc-input{ height:38px; width:100%; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-sm); padding:0 12px; font:inherit; font-size:13px; background:var(--dc2-surface-card); color:var(--dc2-ink); }
.dc2-ficha .dc-op-uploader{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.dc2-ficha .dc-btn--smart{ background:var(--dc2-accent); color:#fff; border-color:var(--dc2-accent); }
.dc2-ficha .dc-btn--smart-alt{ background:var(--dc2-warn); border-color:var(--dc2-warn); color:#fff; }
@media (max-width:1100px){ .dc2-ficha.dc-user .dc-certlayout{ grid-template-columns:1fr; } }

/* ---- Modales legacy .dc-modal (uas-nuevo.css / mantenimientos-nuevo.css, JS
   propio por .is-on) y barras de progreso de mantenimiento: skin v2 ---- */
body.dc-layout .dc-modal{ background:rgba(8,16,17,.5); backdrop-filter:blur(2px); }
body.dc-layout .dc-modal__overlay{ background:transparent; }
body.dc-layout .dc-modal__panel{ background:var(--dc2-surface-card); color:var(--dc2-ink); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-pop); padding:20px; max-width:560px; }
body.dc-layout .dc-modal__panel{ max-height:calc(100vh - 40px); overflow:auto; }
body.dc-layout .dc-modal__panel--wide{ max-width:min(1040px, calc(100vw - 32px)); width:100%; }
body.dc-layout .dc-modal__close{ position:absolute; right:14px; top:14px; }
body.dc-layout .dc-modal .dc2-table-wrap{ max-height:50vh; overflow:auto; }
body.dc-layout .dc-modal .dc2-form > .dc-field--full > .dc2-form{ grid-template-columns:repeat(auto-fill,minmax(160px,1fr)) !important; }
/* Cesión: fieldsets, insignias y switch del formulario de nueva cesión. */
.dc2-ficha .dc-cesion-op-fieldset{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); padding:14px 16px 16px; margin:0 0 14px; min-width:0; }
.dc2-ficha .dc-cesion-op-fieldset legend{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; color:var(--dc2-ink); padding:0 6px; }
.dc2-ficha .dc-cesion-op-fieldset .dc2-form{ gap:14px 18px; }
.dc2-ficha .dc-cesion-doc-wrap{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dc2-ficha .dc-cesion-doc-status{ font-size:12px; color:var(--dc2-ink-soft); }
.dc2-ficha #cesionDocPreview{ display:none; align-items:center; gap:8px; margin-top:8px; padding:8px 12px; border-radius:var(--dc2-radius-sm); background:var(--dc2-ok-soft); color:var(--dc2-ok); font-size:12.5px; }
.dc2-ficha #cesionDocPreview.visible{ display:flex; }
.dc2-ficha .dc-badge{ display:inline-flex; align-items:center; height:22px; padding:0 9px; border-radius:var(--dc2-radius-pill); font-size:11px; font-weight:700; background:var(--dc2-neutral-soft); color:var(--dc2-ink-soft); }
.dc2-ficha .dc-badge--pendiente{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-ficha .dc-badge--devuelta{ background:var(--dc2-neutral-soft); color:var(--dc2-ink-soft); }
.dc2-ficha .dc-empty{ padding:28px 12px; text-align:center; color:var(--dc2-ink-faint); font-size:13px; }
.dc2-ficha .dc-toggle-switch{ display:inline-flex; align-items:center; cursor:pointer; }
.dc2-ficha .dc-toggle-switch input{ display:none; }
.dc2-ficha .dc-toggle-track{ position:relative; width:36px; height:20px; border-radius:999px; background:var(--dc2-border); transition:background .2s ease; display:block; }
.dc2-ficha .dc-toggle-thumb{ position:absolute; left:2px; top:2px; width:16px; height:16px; border-radius:50%; background:#fff; transition:left .2s ease; display:block; }
.dc2-ficha .dc-toggle-switch input:checked + .dc-toggle-track{ background:var(--dc2-accent); }
.dc2-ficha .dc-toggle-switch input:checked + .dc-toggle-track .dc-toggle-thumb{ left:18px; }
body.dc-layout .dc-modal .dc2-form{ gap:14px 18px; }
body.dc-layout .dc-modal .dc-field{ display:flex; flex-direction:column; gap:6px; margin:0; min-width:0; }
body.dc-layout .dc-modal .dc-field--full, body.dc-layout .dc-modal .dc-field--span2{ grid-column:1 / -1; }
body.dc-layout .dc-modal .dc-label{ font-size:11.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--dc2-ink-soft); }
body.dc-layout .dc-modal .dc-input{ min-height:38px; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-sm); padding:8px 12px; font:inherit; font-size:13px; background:var(--dc2-surface-card); color:var(--dc2-ink); width:100%; }
body.dc-layout .dc-modal .dc-input:focus{ outline:none; border-color:var(--dc2-accent); box-shadow:0 0 0 3px var(--dc2-accent-soft); }
body.dc-layout .dc-modal .dc2-dialog__title{ padding-right:36px; }
body.dc-layout .dc-modal .dc-thumbgrid{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.dc2-ficha .dc-mtto-progress{ padding:12px 0 0; }
.dc2-ficha .dc-mtto-progress__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; color:var(--dc2-ink); }
.dc2-ficha .dc-mtto-progress__meta, .dc2-ficha .dc-mtto-progress__foot{ font-size:12px; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-mtto-progress__track{ height:8px; border-radius:4px; background:var(--dc2-surface-sunken); border:0; overflow:hidden; }
.dc2-ficha .dc-mtto-progress__fill{ height:100%; border-radius:4px; }
.dc2-ficha .dc-mtto-progress__fill--ok{ background:var(--dc2-ok); }
.dc2-ficha .dc-mtto-progress__fill--warn{ background:var(--dc2-warn); }
.dc2-ficha .dc-mtto-progress__fill--bad{ background:var(--dc2-bad); }
@media (max-width:900px){ .dc2-panels--2{ grid-template-columns:1fr; } }

/* ---- Carnet Droncore (usuario-carnet.css): skin v2 sobre la misma DOM ---- */
.dc2-ficha .dc-carnet-hero{ align-items:center; }
.dc2-ficha .dc-carnet-name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:24px; color:var(--dc2-ink); }
.dc2-ficha .dc-carnet-meta{ color:var(--dc2-ink-soft); font-size:13px; }
.dc2-ficha .dc-carnet-chip{ border:0; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); border-radius:var(--dc2-radius-pill); padding:4px 10px; }
.dc2-ficha .dc-carnet-subtitle{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; color:var(--dc2-ink); margin-top:8px; }
.dc2-ficha .dc-carnet-kpi{ border:0; background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-sm); padding:12px 14px; }
.dc2-ficha .dc-carnet-kpi span{ color:var(--dc2-ink-soft); font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.dc2-ficha .dc-carnet-kpi strong{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:22px; color:var(--dc2-ink); }
.dc2-ficha .dc-carnet-kpi__sub{ text-transform:none; letter-spacing:0; color:var(--dc2-ink-faint); }
.dc2-ficha .dc-carnet-kpi--top{ background:var(--dc2-accent-soft); }
.dc2-ficha .dc-carnet-kpi--top strong{ color:var(--dc2-accent-ink); }
.dc2-ficha .dc-carnet-kpi .dc-kpiico{ color:var(--dc2-accent-ink); opacity:.6; font-size:20px; }
.dc2-ficha .dc-carnet-kpi--verified{ background:var(--dc2-accent); border:0; }
.dc2-ficha .dc-carnet-kpi--verified span, .dc2-ficha .dc-carnet-kpi--verified strong, .dc2-ficha .dc-carnet-kpi--verified .dc-kpiico{ color:#fff; opacity:1; }
.dc2-ficha .dc-carnet-kpi--verified .dc-kpi__info{ background:rgba(255,255,255,.25); color:#fff; }
.dc2-ficha .dc-carnet-level__bar, .dc2-ficha .dc-carnet-level-item__bar{ border:0; background:var(--dc2-surface-sunken); }
.dc2-ficha .dc-carnet-level__bar span, .dc2-ficha .dc-carnet-level-item__bar span{ background:var(--dc2-accent); }
.dc2-ficha .dc-carnet-level__next, .dc2-ficha .dc-carnet-level-item__head span{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-carnet-level-detail{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); padding:14px; }
.dc2-ficha .dc-carnet-uascard{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); padding:12px; }
.dc2-ficha .dc-carnet-uascard img{ border:0; background:var(--dc2-surface-sunken); }
.dc2-ficha .dc-carnet-uascard strong{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; color:var(--dc2-ink); }
.dc2-ficha .dc-carnet-uascard span{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-carnet-empty{ color:var(--dc2-ink-faint); }
.dc2-ficha .dc-switch__slider{ background:var(--dc2-border); }
.dc2-ficha .dc-switch input:checked + .dc-switch__slider{ background:var(--dc2-accent); }
.dc2-ficha .dc-switch__txt{ color:var(--dc2-ink); font-weight:700; }

/* Bloques heredados dentro de la ficha que aun no se han reescrito
   (Titulaciones, Carnet): titulos, etiquetas y tablas con aspecto v2. */
.dc2-ficha .dc-labelrow{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; flex-wrap:wrap; }
.dc2-ficha .dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; color:var(--dc2-ink); text-transform:none; letter-spacing:0; }
.dc2-ficha .dc-label{ font-size:12px; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-help{ font-size:11.5px; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-ptable{ width:100%; border-collapse:collapse; font-size:13px; }
.dc2-ficha .dc-ptable th{ text-align:left; font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); padding:0 12px 10px; border-bottom:1px solid var(--dc2-border); background:transparent; }
.dc2-ficha .dc-ptable td{ padding:10px 12px; border-bottom:1px solid var(--dc2-border-soft); color:var(--dc2-ink); vertical-align:middle; background:transparent; }
.dc2-ficha .dc-ptable tbody tr:hover td{ background:var(--dc2-surface-sunken); }
.dc2-ficha .dc-ptools__select, .dc2-ficha .dc-ptools__field input{ height:36px; padding:0 12px; border-radius:var(--dc2-radius-sm); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-size:12.5px; }
.dc2-ficha .dc-ppager{ display:flex; align-items:center; justify-content:flex-end; gap:12px; margin-top:16px; color:var(--dc2-ink-soft); font-size:12px; font-weight:600; }
.dc2-ficha .dc-ppager__btn{ width:32px; height:32px; border-radius:9px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); cursor:pointer; }
.dc2-ficha .dc-op-trash img, .dc2-ficha .dc-iconbtn img{ filter:none; }

/* Uploaders heredados dentro de la ficha (ids/clases que usa su JS). */
.dc2-ficha .dc-op-uploader{ display:flex; flex-direction:column; gap:10px; }
/* Uploader de boton (DNI): en fila y pegado a la izquierda, sin estirar. */
.dc2-ficha .dc-op-uploader.dc2-uploader{ flex-direction:row; align-items:center; justify-content:flex-start; }
.dc2-ficha .dc-op-uploader.dc2-uploader > .dc2-btn{ align-self:flex-start; }
.dc2-ficha .dc-op-file{ display:none; }
/* Filtros aplicados como chips (los pinta layout.js): "Categoria: valor" con
   (x) para quitar uno y "Limpiar filtros" para todos. */
.dc2-filterchips{ display:flex; flex-wrap:wrap; gap:6px; padding:10px 0 0; }
.dc2-filterchip{ display:inline-flex; align-items:center; gap:6px; height:28px; padding:0 4px 0 10px; border-radius:var(--dc2-radius-pill); background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); font-size:12px; border:0; font-family:inherit; }
.dc2-filterchip__lbl{ color:var(--dc2-ink-soft); font-weight:600; }
.dc2-filterchip b{ font-weight:800; }
.dc2-filterchip__x{ width:20px; height:20px; border-radius:50%; border:0; background:transparent; color:inherit; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; padding:0; }
.dc2-filterchip__x:hover{ background:rgba(0,0,0,.08); }
.dc2-filterchip__x .dc2-ic{ width:12px; height:12px; }
.dc2-filterchip--clear{ background:transparent; border:1px dashed var(--dc2-border); color:var(--dc2-ink-soft); padding:0 12px 0 8px; cursor:pointer; gap:4px; }
.dc2-filterchip--clear:hover{ color:var(--dc2-ink); border-color:var(--dc2-ink-faint); }
.dc2-filterchip--clear .dc2-ic{ width:12px; height:12px; }
/* Filtro aplicado: el control se marca (ademas del contador del boton). */
.dc2-toolbar__select.is-active, .dc2-toolbar__input.is-active{ border-color:var(--dc2-accent); background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); font-weight:700; }
.dc2-ficha .dc-multi-dropzone{ border:1.5px dashed var(--dc2-border); border-radius:var(--dc2-radius-md); padding:24px 16px; background:var(--dc2-surface-sunken); text-align:center; outline:none; transition:border-color .15s ease, background .15s ease; }
.dc2-ficha .dc-multi-dropzone:hover, .dc2-ficha .dc-multi-dropzone:focus, .dc2-ficha .dc-multi-dropzone.is-dragover{ border-color:var(--dc2-accent-ink); background:var(--dc2-accent-soft); }
.dc2-ficha .dc-multi-dropzone__inner{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.dc2-ficha .dc-multi-dropzone__title{ margin:6px 0 0; font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; color:var(--dc2-ink); }
.dc2-ficha .dc-multi-dropzone__hint{ margin:0 0 8px; font-size:11.5px; color:var(--dc2-ink-faint); }
.dc2-ficha .dc-multi-items{ display:flex; flex-direction:column; gap:6px; }
.dc2-ficha .dc-multi-item{ display:flex; align-items:center; gap:10px; padding:8px 10px; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-card); font-size:12.5px; color:var(--dc2-ink); }
.dc2-ficha .dc-multi-item__name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc2-ficha .dc-multi-item__size{ color:var(--dc2-ink-faint); font-size:11px; white-space:nowrap; }
.dc2-ficha .dc-multi-item__progress{ width:90px; height:6px; accent-color:var(--dc2-accent); }
.dc2-ficha .dc-multi-item__status{ font-size:11px; min-width:80px; text-align:right; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-multi-item__status.is-ok{ color:var(--dc2-ok); font-weight:700; }
.dc2-ficha .dc-multi-item__status.is-error{ color:var(--dc2-bad); font-weight:700; }
.dc2-ficha .dc-multi-item__remove{ border:none; background:none; color:var(--dc2-ink-faint); cursor:pointer; font-size:16px; padding:0 4px; }
.dc2-ficha .dc-multi-item__remove:hover{ color:var(--dc2-bad); }
.dc2-ficha .dc-op-link{ color:var(--dc2-accent-ink); text-decoration:none; font-weight:600; }

/* SweetAlert2 con el aspecto del sistema (modales de acciones secundarias). */
.swal2-popup{ border-radius:var(--dc2-radius-lg) !important; font-family:"Public Sans","Manrope",system-ui,sans-serif !important; color:var(--dc2-ink) !important; background:var(--dc2-surface-card) !important; box-shadow:var(--dc2-shadow-pop) !important; padding:22px 24px 20px !important; }
.swal2-title{ font-family:"Manrope","Poppins",sans-serif !important; font-weight:800 !important; font-size:17px !important; color:var(--dc2-ink) !important; }
.swal2-html-container{ font-size:13.5px !important; line-height:1.6 !important; color:var(--dc2-ink-soft) !important; }
.swal2-actions{ gap:10px !important; margin-top:18px !important; }
.swal2-styled.swal2-confirm, .swal2-confirm.dc-btn{ font-family:"Manrope","Poppins",sans-serif !important; font-weight:700 !important; font-size:13px !important; border-radius:var(--dc2-radius-pill) !important; padding:10px 18px !important; background:var(--dc2-accent) !important; color:#fff !important; border:0 !important; box-shadow:none !important; }
.swal2-styled.swal2-cancel, .swal2-cancel.dc-btn, .swal2-styled.swal2-deny{ font-family:"Manrope","Poppins",sans-serif !important; font-weight:700 !important; font-size:13px !important; border-radius:var(--dc2-radius-pill) !important; padding:10px 18px !important; background:transparent !important; color:var(--dc2-ink-soft) !important; border:1px solid var(--dc2-border) !important; box-shadow:none !important; }
.swal2-styled:focus{ box-shadow:0 0 0 3px var(--dc2-accent-soft) !important; }
.swal2-icon{ border-width:2px !important; margin-top:0 !important; }
.swal2-input, .swal2-select, .swal2-textarea{ border-radius:var(--dc2-radius-sm) !important; border:1px solid var(--dc2-border) !important; font-family:"Manrope","Poppins",sans-serif !important; font-size:13px !important; box-shadow:none !important; }
.swal2-backdrop-show{ background:rgba(8,16,17,.5) !important; backdrop-filter:blur(2px); }

/* =========================================================
   TABBAR — menu horizontal de pestañas entre pantallas del modulo
   (reemplaza .dc-dashbar/.dc-dashtab).
========================================================= */
.dc2-tabbar{ display:inline-flex; gap:4px; background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-pill); padding:4px; margin-bottom:18px; }
.dc2-tab{
  padding:9px 18px; border-radius:var(--dc2-radius-pill); font-family:"Manrope","Poppins",sans-serif; font-weight:800;
  font-size:12.5px; color:var(--dc2-ink-soft); text-decoration:none; white-space:nowrap;
}
.dc2-tab:hover{ color:var(--dc2-ink); }
.dc2-tab.is-active{ background:var(--dc2-accent); color:#fff; }

/* ---- M06 Auxiliares: piezas legacy dentro del sistema v2 ---- */
/* Salud de bateria (cards.css) en el pie de la tarjeta v2 y detalle en dialogo v2. */
body.dc-layout .dc2-card__foot-states .dc-usercard__bathealthbtn{ margin:0; }
body.dc-layout .dc2-dialog__body.dc-bat-modal-text{ font-size:13px; line-height:1.55; color:var(--dc2-ink); }
body.dc-layout .dc2-dialog__body .dc-kpi-info-rich p{ margin:0 0 8px; }
body.dc-layout .dc2-dialog__body .dc-kpi-info-rich div{ margin:0 0 6px; }
/* Celdas largas (nombre, modelo, responsable): una linea con elipsis; el texto completo va en title. */
.dc2-table--fit td.dc2-cell-trunc{ max-width:200px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc2-table--fit td.dc2-cell-trunc .dc2-table__link{ display:block; overflow:hidden; text-overflow:ellipsis; }

/* ---- M06 Auxiliares / Informacion de bateria: piezas legacy (auxiliares-bateria.css) sobre tokens v2 ---- */
/* Tercer nivel de navegacion (sub-secciones de Carga): pills. */
.dc2-subpills{ display:flex; flex-wrap:wrap; gap:6px; margin:-8px 0 16px; }
.dc2-subpills__item{ display:inline-flex; align-items:center; height:28px; padding:0 12px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); font-size:12px; font-weight:700; text-decoration:none; }
.dc2-subpills__item:hover{ color:var(--dc2-ink); }
.dc2-subpills__item.is-active{ background:var(--dc2-accent); border-color:var(--dc2-accent); color:#fff; }
/* KPIs legacy (dc-kpi-grid / dc-kpi) dentro de un panel v2: misma pinta que .dc2-stat. */
body.dc-layout .dc2-ficha .dc-kpi-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin:0 0 16px; }
body.dc-layout .dc2-ficha .dc-kpi-grid .dc-card{ background:var(--dc2-surface-sunken); border:1px solid transparent; border-radius:var(--dc2-radius-sm); padding:12px 14px; margin:0; box-shadow:none; }
body.dc-layout .dc2-ficha .dc-kpi-grid .dc-card.dc-kpi--warn{ border-color:var(--dc2-warn); }
body.dc-layout .dc2-ficha .dc-kpi-grid .dc-card.dc-kpi--alert{ border-color:var(--dc2-bad); }
body.dc-layout .dc2-ficha .dc-kpi{ position:relative; display:flex; flex-direction:column; gap:3px; padding:0; min-height:0; }
body.dc-layout .dc2-ficha .dc-kpi__label{ display:flex; align-items:center; gap:6px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-ficha .dc-kpi__value{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:20px; font-weight:600; color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-kpi__value--small{ font-size:15px; }
body.dc-layout .dc2-ficha .dc-kpi__sub{ font-size:12px; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-ficha .dc-kpi__icon{ display:none; }
body.dc-layout .dc2-ficha .dc2-info-btn.dc-kpi__info{ position:static; }
/* Filtros inline de graficas y tablas (orden, direccion, carga, temperatura). */
body.dc-layout .dc2-ficha .dc-bat-filters-row{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; margin:0 0 14px; }
body.dc-layout .dc2-ficha .dc-bat-filters-row .dc-field{ min-width:180px; }
body.dc-layout .dc2-ficha .dc-bat-filters-row .dc-legend-btn{ margin-bottom:9px; }
/* Ciclos BMS (+ / -) y formulario de ciclos. */
.dc2-btn.dc2-btn--sq{ width:36px; padding:0; justify-content:center; }
body.dc-layout .dc2-ficha .dc-cycle-form{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px; }
body.dc-layout .dc2-ficha .dc-cycle-form .dc-input{ width:90px; text-align:center; }
/* Modales legacy de bateria (info KPI, leyenda, QR) con la piel del dialogo v2. */
body.dc-layout .dc-kpimodal__backdrop, body.dc-layout .dc-legend-modal__backdrop{ background:rgba(8,16,17,.5); backdrop-filter:blur(2px); }
body.dc-layout .dc-kpimodal__dialog, body.dc-layout .dc-legend-modal__dialog{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); padding:20px 22px; }
body.dc-layout .dc-kpimodal__dialog .dc-labelrow, body.dc-layout .dc-legend-modal__dialog .dc-labelrow{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 12px; }
body.dc-layout .dc-kpimodal__dialog .dc-section-title, body.dc-layout .dc-legend-modal__dialog .dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:16px; color:var(--dc2-ink); }
body.dc-layout .dc-kpimodal__dialog .dc-bat-modal-text{ font-size:13px; line-height:1.55; color:var(--dc2-ink); }
body.dc-layout .dc-legend-modal__dialog h4{ margin:0 0 6px; font-size:12px; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
body.dc-layout .dc-legend-modal__dialog ul{ margin:0; padding-left:0; list-style:none; font-size:13px; }
body.dc-layout .dc-legend-modal__dialog li{ display:flex; align-items:center; gap:8px; margin:0 0 6px; }
body.dc-layout .dc-modal-x{ position:absolute; top:12px; right:12px; width:32px; height:32px; border-radius:50%; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); cursor:pointer; }
/* Celdas de umbral (carga, temperatura) de las tablas de bateria: colores legacy con !important -> tokens v2 legibles en ambos temas. */
body.dc-layout .dc2-table td.dc-cell--softwarn{ background:var(--dc2-warn-soft) !important; color:var(--dc2-ink); }
body.dc-layout .dc2-table td.dc-cell--warn{ background:var(--dc2-warn-soft) !important; color:var(--dc2-warn); font-weight:700; }
body.dc-layout .dc2-table td.dc-cell--danger{ background:var(--dc2-bad-soft) !important; color:var(--dc2-bad); font-weight:700; }
body.dc-layout .dc2-table td.dc-cell--cold1, body.dc-layout .dc2-table td.dc-cell--cold2, body.dc-layout .dc2-table td.dc-cell--cold3{ background:var(--dc2-accent-soft) !important; color:var(--dc2-ink); }
body.dc-layout .dc2-table td.dc-cell--cold3{ background:var(--dc2-accent-soft-2) !important; }
/* Vida util / donuts de bateria: textos legacy con color fijo oscuro -> tokens. */
body.dc-layout .dc2-ficha .dc-health-state, body.dc-layout .dc2-ficha .dc-health-life strong, body.dc-layout .dc2-ficha .dc-donut-center strong{ color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-health-life, body.dc-layout .dc2-ficha .dc-donut-center small, body.dc-layout .dc2-ficha .dc-life-meta{ color:var(--dc2-ink-soft); }
body.dc-layout .dc2-ficha .dc-health--warn .dc-health-state{ color:var(--dc2-warn); }
body.dc-layout .dc2-ficha .dc-health--alert .dc-health-state, body.dc-layout .dc2-ficha .dc-health--critical .dc-health-state{ color:var(--dc2-bad); }
body.dc-layout .dc2-ficha .dc-health--ok .dc-health-state{ color:var(--dc2-ok); }
/* Separador dentro de un panel (p. ej. filtros de servidor + resultados en el mismo panel). */
.dc2-sep{ border:0; border-top:1px solid var(--dc2-border-soft); margin:18px 0; }

/* ---- M08 Dashboard: piezas legacy (dashboard.css) sobre tokens v2 ---- */
/* Tabbar de dashboards: botones (no enlaces) y filtros de rango a la derecha. */
.dc2-tabbar.dc2-tabbar--dash .dc2-tab{ border:0; cursor:pointer; font:inherit; font-weight:800; }
.dc2-tabbar .dc2-tab[aria-selected="true"]{ background:var(--dc2-accent); color:#fff; }
.dc2-recnav--filters .dc-dashbar__filters{ display:flex; gap:8px; align-items:center; margin:0; }
body.dc-layout .dc2-recnav--filters .dc-dashbar__select{ height:34px; padding:0 30px 0 12px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font-size:12.5px; font-weight:700; }
/* KPIs del dashboard: tarjetas sobre el fondo, icono del sprite a la derecha, acento por estado. */
body.dc-layout .dc-dash--dashboard .dc-kpi-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:0 0 18px; }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); padding:16px 18px; margin:0; position:relative; overflow:hidden; }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--dc2-border); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--ok::before{ background:var(--dc2-ok); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--warn::before, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--overdue::before{ background:var(--dc2-warn); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--danger::before, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--alert::before{ background:var(--dc2-bad); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--inactive::before{ background:var(--dc2-ink-soft); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card[data-kpi-link]:hover{ border-color:var(--dc2-accent); }
body.dc-layout .dc-dash--dashboard .dc-kpi{ display:grid; grid-template-columns:1fr 40px; grid-template-rows:auto auto; column-gap:12px; align-items:center; padding:0; }
body.dc-layout .dc-dash--dashboard .dc-kpi__label{ grid-column:1; grid-row:1; display:flex; align-items:center; gap:6px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
body.dc-layout .dc-dash--dashboard .dc-kpi__value{ grid-column:1; grid-row:2; margin-top:4px; font-family:"IBM Plex Mono","Poppins",monospace; font-size:26px; font-weight:600; line-height:1.1; color:var(--dc2-ink); }
body.dc-layout .dc-dash--dashboard .dc-kpi__value--small{ font-size:18px; }
body.dc-layout .dc-dash--dashboard .dc-kpi__sub{ grid-column:1 / -1; font-size:12px; color:var(--dc2-ink-soft); }
body.dc-layout .dc-dash--dashboard .dc-kpi__icon{ grid-column:2; grid-row:1 / span 2; display:grid; place-items:center; width:40px; height:40px; border-radius:12px; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
body.dc-layout .dc-dash--dashboard .dc-kpi__icon .dc2-ic{ width:22px; height:22px; }
body.dc-layout .dc-dash--dashboard .dc-card--kpiHero .dc-kpi__value{ font-size:32px; }
/* Marcos (mapa, promo, chart) y tarjetas de contenido. */
body.dc-layout .dc-dash--dashboard .dc-frame{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); }
body.dc-layout .dc-dash--dashboard .dc-map-frame, body.dc-layout .dc-dash--dashboard .dc-chart-frame{ background:var(--dc2-surface-sunken); }
body.dc-layout .dc-dash--dashboard .dc-chart-wrap svg{ color:var(--dc2-ink-soft); }
body.dc-layout .dc-dash--dashboard .dc2-chart__title{ font-size:12px; font-weight:800; color:var(--dc2-ink); }
body.dc-layout .dc-dash--dashboard .dc-card:not(.dc-kpi):not(.dc-kpi-grid > *){ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
body.dc-layout .dc-dash--dashboard .dc-pilots-h3{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; color:var(--dc2-ink); margin:0; }
body.dc-layout .dc-dash--dashboard .dc-dash-empty{ padding:40px 20px; text-align:center; color:var(--dc2-ink-soft); background:var(--dc2-surface-card); border:1px dashed var(--dc2-border); border-radius:var(--dc2-radius-md); }
@media (max-width:1100px){ body.dc-layout .dc-dash--dashboard .dc-kpi-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ body.dc-layout .dc-dash--dashboard .dc-kpi-grid{ grid-template-columns:1fr; } }
/* Dashboard: el borde de las tarjetas KPI no cambia con el estado (el acento va en la barra izquierda); controles legacy de las tablas. */
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--ok, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--warn, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--danger, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--inactive, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--overdue{ border-color:var(--dc2-border); background:var(--dc2-surface-card); }
body.dc-layout .dc-dash--dashboard .dc-pilots-table select, body.dc-layout .dc-dash--dashboard .dc-mtlist select, body.dc-layout .dc-dash--dashboard .dc-opsup select, body.dc-layout .dc-dash--dashboard .dc-pilots-table input[type="text"], body.dc-layout .dc-dash--dashboard .dc-mtlist input[type="text"], body.dc-layout .dc-dash--dashboard .dc-opsup input[type="text"]{ height:34px; padding:0 12px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font-size:12.5px; }

/* ---- Listados con filtros de formulario (Operaciones, Logbook, Notificaciones): un solo panel ---- */
.dc2-form-actions--filters{ margin-top:14px; }
.dc2-form-actions--filters > .dc-actions{ display:flex; gap:10px; margin:0; }
.dc2-form-actions--filters > .dc-ptools__right{ order:-1; margin-right:auto; display:flex; align-items:center; gap:6px; }
.dc2-form-actions--filters > .dc-ptools__right:empty{ display:none; }
body.dc-layout .dc2-panel .dc-notifs__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 12px; }
body.dc-layout .dc2-panel .dc-notifs__title{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
body.dc-layout .dc2-panel .dc-notifs__title .dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; color:var(--dc2-ink); }
body.dc-layout .dc2-panel .dc-notifs__count{ font-size:12px; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-panel .dc-notifs__actions{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
body.dc-layout .dc2-panel .dc-logbook-notice{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:36px 20px; text-align:center; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-panel .dc-logbook-notice__icon .dc2-ic{ width:28px; height:28px; color:var(--dc2-accent-ink); }
body.dc-layout .dc2-panel .dc-logbook-notice__title{ margin:0; font-weight:800; color:var(--dc2-ink); }
body.dc-layout .dc2-panel .dc-logbook-notice__text{ margin:0; font-size:13px; }
.dc2-form-actions--filters > .dc-ptools__right{ margin-left:0 !important; }
body.dc-layout .dc2-panel form .dc2-form + .dc-ptools__right{ display:flex; justify-content:flex-end; margin-top:8px; }
body.dc-layout .dc2-panel form .dc-ptools__right .dc-field{ display:flex; align-items:center; gap:8px; margin:0; }
body.dc-layout .dc2-panel form .dc-ptools__right .dc-field .dc-label{ margin:0; }
/* Enlaces: acciones de tarjeta v2 y rejilla dentro del panel. */
body.dc-layout .dc2-panel .dc-links{ margin:0; }
body.dc-layout .enl-card-actions{ position:absolute; top:8px; right:8px; display:none; gap:2px; }
body.dc-layout .dc-linkcard:hover .enl-card-actions{ display:flex; }

/* Tarjetas en movil: una columna que nunca desborda el panel. */
@media (max-width:600px){ .dc2-cards-grid{ grid-template-columns:minmax(0,1fr); gap:12px; } .dc2-card{ min-width:0; } .dc2-card .dc2-stats{ grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ---- Calendario (site/calendario*.php): piezas legacy (calendario.css) sobre tokens v2 ---- */
body.dc-layout .dc2-ficha .dc-calhero, body.dc-layout .dc2-ficha .dc-calbox, body.dc-layout .dc2-ficha .dc-calops, body.dc-layout .dc2-ficha .dc-calstat, body.dc-layout .dc2-ficha .dc-ycal{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-calhero__sub{ color:var(--dc2-ink-soft); }
body.dc-layout .dc2-ficha .dc-calstat__title{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-ficha .dc-calstat__num{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:20px; font-weight:600; color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-calyear__btn{ display:inline-grid; place-items:center; width:32px; height:32px; border-radius:50%; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-calyear__year{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-callegend__item{ color:var(--dc2-ink-soft); font-size:12px; }
body.dc-layout .dc2-ficha .dc-calops__item{ border-color:var(--dc2-border-soft); color:var(--dc2-ink); }
body.dc-layout .dc2-ficha .dc-calops__meta, body.dc-layout .dc2-ficha .dc-calops__date{ color:var(--dc2-ink-soft); }

/* ---- M11 Notificaciones: tarjetas de notificacion legacy (usuario-notificaciones.css) sobre tokens v2 ---- */
body.dc-layout .dc-user-notifs .dc-notif{ background:var(--dc2-surface-sunken); border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); color:var(--dc2-ink); }
body.dc-layout .dc-user-notifs .dc-notif.is-unread{ border-color:var(--dc2-accent); box-shadow:none; }
body.dc-layout .dc-user-notifs .dc-notif__dot{ background:var(--dc2-border); }
body.dc-layout .dc-user-notifs .dc-notif.is-unread .dc-notif__dot{ background:var(--dc2-ok); }
body.dc-layout .dc-user-notifs .dc-notif__title{ color:var(--dc2-ink); font-weight:700; }
body.dc-layout .dc-user-notifs .dc-notif__meta, body.dc-layout .dc-user-notifs .dc-notif__sep{ color:var(--dc2-ink-soft); }
body.dc-layout .dc-user-notifs .dc-notif__msg{ color:var(--dc2-ink); opacity:.85; }
body.dc-layout .dc-user-notifs .dc-notif__btn{ background:var(--dc2-surface-card); border-color:var(--dc2-border); color:var(--dc2-ink); }
body.dc-layout .dc-user-notifs .dc-notif__links a{ color:var(--dc2-accent-ink); }

/* ---- Ronda 2 C-UAS ---- */
/* Fichas: la fila de acciones no lleva linea superior (el panel ya separa). */
.dc2-ficha .dc2-form-actions{ border-top:0; padding-top:0; }
/* Subtitulo de panel. */
.dc2-panel__sub{ margin:4px 0 0; font-size:13px; color:var(--dc2-ink-soft); line-height:1.5; }
/* Cesion (UAS y C-UAS): bloques del formulario sin caja; solo un rotulo. */
.dc2-ficha .dc-cesion-op-fieldset{ border:0; padding:0; margin:0 0 18px; min-width:0; }
.dc2-ficha .dc-cesion-op-fieldset legend{ padding:0; margin:0 0 10px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
/* Toolbar: campo de fecha con rotulo corto. */
.dc2-toolbar__datefield{ display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--dc2-ink-soft); }
.dc2-toolbar__datefield input{ width:auto; }
/* Fila con deteccion activa y accion "en vivo". */
.dc2-table tr.is-live td:first-child{ box-shadow:inset 3px 0 0 var(--dc2-bad); }
.dc2-table__action--live{ color:var(--dc2-bad); }
.dc2-livedot{ width:8px; height:8px; border-radius:50%; background:var(--dc2-bad); box-shadow:0 0 0 0 var(--dc2-bad-soft); animation:dc2-pulse 1.4s ease-out infinite; }
.dc2-btn--live{ border-color:var(--dc2-bad); color:var(--dc2-bad); }
@keyframes dc2-pulse{ 0%{ box-shadow:0 0 0 0 rgba(194,31,31,.45);} 100%{ box-shadow:0 0 0 8px rgba(194,31,31,0);} }
/* Detalle de deteccion (Swal). */
.dc-det-swal{ text-align:left; }
.dc-det-detail{ text-align:left; font-size:13px; color:var(--dc2-ink); }
.dc-det-detail__head{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; margin-bottom:6px; }
.dc-det-detail__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:17px; }
.dc-det-detail__sn{ font-size:12px; color:var(--dc2-ink-soft); }
.dc-det-detail__sect{ margin:16px 0 8px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
.dc-det-detail__grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
.dc-det-detail__pos{ display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-sunken); margin-bottom:6px; }
.dc-det-detail__pos > div{ min-width:0; flex:1; display:flex; flex-direction:column; gap:4px; }
.dc-det-detail__pos > div > div:last-child{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dc-det-detail__ic{ display:grid; place-items:center; width:34px; height:34px; border-radius:10px; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); flex:0 0 auto; }
.dc-det-detail__map{ height:28px; padding:0 10px; font-size:12px; }
.dc-det-detail__raw{ margin-top:16px; font-size:12px; }
.dc-det-detail__raw summary{ cursor:pointer; color:var(--dc2-ink-soft); }
.dc-det-detail__raw pre{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); border-radius:var(--dc2-radius-sm); }
body.dc-layout .swal2-popup.dc-det-swal{ background:var(--dc2-surface-card); color:var(--dc2-ink); }
body.dc-layout .swal2-popup.dc-det-swal .swal2-title{ color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-size:18px; }
/* ASDT: dos paneles en horizontal, pasos numerados. */
.dc2-asdt{ display:grid; grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr); gap:18px; align-items:start; }
@media (max-width:1000px){ .dc2-asdt{ grid-template-columns:1fr; } }
.dc2-steps{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:18px; }
.dc2-step{ display:grid; grid-template-columns:32px 1fr; gap:14px; align-items:start; }
.dc2-step__num{ display:grid; place-items:center; width:32px; height:32px; border-radius:50%; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); font-weight:800; font-size:13px; }
.dc2-step.is-done .dc2-step__num{ background:var(--dc2-ok); color:#fff; }
.dc2-step__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; color:var(--dc2-ink); margin-top:6px; }
.dc2-step__help{ margin:2px 0 10px; font-size:12.5px; color:var(--dc2-ink-soft); line-height:1.5; }
.dc2-step .dc2-form{ margin-top:0; }
.dc2-details{ margin-top:16px; border-top:1px solid var(--dc2-border-soft); padding-top:10px; }
.dc2-details summary{ cursor:pointer; font-size:12.5px; font-weight:700; color:var(--dc2-ink-soft); }
.dc2-asdt__map{ margin:12px 0 10px; border-radius:var(--dc2-radius-sm); overflow:hidden; border:1px solid var(--dc2-border); aspect-ratio:4/3; background:var(--dc2-surface-sunken); }
.dc2-asdt__map iframe{ width:100%; height:100%; border:0; display:block; }
/* Gestion de catalogos: alta inline sobre la tabla. */
.dc2-gestion-add{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:0 0 14px; }
.dc2-gestion-add .dc-input{ flex:1 1 240px; }
.dc2-gestion-add--estado select.dc-input{ flex:0 1 180px; }
/* ASDT: los dos paneles arrancan a la misma altura (sin el margen de paneles apilados). */
.dc2-ficha .dc2-asdt > .dc2-panel, .dc2-ficha .dc2-asdt .dc2-panel ~ .dc2-panel{ margin-top:0; }

/* Detalle de deteccion: SN protagonista, mapa de posiciones con leyenda. */
.dc-det-detail__snlbl{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
.dc-det-detail__sn{ font-size:22px; font-weight:700; color:var(--dc2-ink); line-height:1.15; }
.dc-det-detail__name{ font-size:13px; color:var(--dc2-ink-soft); margin-top:2px; }
.dc-det-detail__map{ height:280px; border-radius:var(--dc2-radius-sm); overflow:hidden; border:1px solid var(--dc2-border); background:var(--dc2-surface-sunken); }
.dc-det-detail__legend{ display:flex; flex-direction:column; gap:4px; margin-top:8px; }
.dc-det-detail__leg{ display:flex; align-items:center; gap:8px; font-size:12px; flex-wrap:wrap; }
.dc-det-detail__legic{ display:inline-flex; width:22px; height:22px; flex:0 0 auto; }
.dc-det-detail__leglbl{ font-weight:700; min-width:150px; }
@media (max-width:600px){ .dc-det-detail__map{ height:220px; } .dc-det-detail__leglbl{ min-width:0; width:100%; } }

/* Pills: nunca se parten; recnav como primer bloque de las acciones de pagina. */
.dc2-pill{ white-space:nowrap; }
.dc2-pageactions > .dc2-recnav{ margin-left:auto; order:99; }

/* ---- M12 Operadora ---- */
.dc2-btn--sm{ height:30px; padding:0 10px; font-size:12px; }
body.dc-layout .dc2-ficha .dc2-panel .dc-logoUploader{ margin-bottom:18px; }
body.dc-layout .dc2-ficha .dc2-panel .dc-logoUploader:last-child{ margin-bottom:0; }
/* Operadora: cabeceras legacy (.dc-labelrow / .dc-section-title) dentro de paneles v2. */
body.dc-layout .dc2-panel .dc-labelrow{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 14px; }
body.dc-layout .dc2-panel .dc-labelrow--left{ justify-content:flex-start; }
body.dc-layout .dc2-panel .dc-labelrow .dc2-panel__title, body.dc-layout .dc2-panel .dc-labelrow .dc-section-title{ margin:0; }
body.dc-layout .dc2-panel .dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; color:var(--dc2-ink); display:inline-flex; align-items:center; gap:8px; flex-wrap:wrap; }
body.dc-layout .dc2-panel .dc-labelrow .dc-label:not(.dc-section-title){ margin:0; }
/* Estadisticas legacy (pc-stats) y grupos del panel de control. */
body.dc-layout .dc2-panel .pc-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin:0 0 16px; }
body.dc-layout .dc2-panel .pc-stat{ background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-sm); padding:10px 12px; }
body.dc-layout .dc2-panel .pc-stat .k{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-panel .pc-stat .v{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:18px; font-weight:600; color:var(--dc2-ink); }
/* Operadora · imagen: pestañas de logo como pills y previsualizaciones acotadas. */
body.dc-layout .dc2-panel .dc-logoTabs{ display:flex; gap:6px; flex-wrap:wrap; margin:0 0 14px; border:0; }
body.dc-layout .dc2-panel .dc-logoTabs__btn{ height:28px; padding:0 12px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); font-size:12px; font-weight:700; cursor:pointer; }
body.dc-layout .dc2-panel .dc-logoTabs__btn--active{ background:var(--dc2-accent); border-color:var(--dc2-accent); color:#fff; }
body.dc-layout .dc2-panel .dc-logoUploader__preview{ max-width:220px; max-height:220px; margin:0 auto; }
body.dc-layout .dc2-panel .dc-logoUploader__preview--wide{ max-width:460px; max-height:180px; }
body.dc-layout .dc2-panel .dc-logoUploader__actions{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-top:10px; }

/* M12 Operadora, pasada 3: cabecera de panel dentro de un formulario en rejilla ocupa toda la fila; obligatorios sin fondo naranja legacy; tablas de log sin saltos. */
.dc2-form > .dc2-panel__head,
.dc2-form > .dc2-panel__title{ grid-column:1 / -1; }
body.dc-layout .dc2-ficha .dc-required{ background:var(--dc2-surface); }
body.dc-layout .dc2-ficha .dc-required:focus{ background:var(--dc2-surface); }
.dc2-table--fit td{ overflow-wrap:break-word; }
.dc2-table--nowrap td, .dc2-table--nowrap th{ white-space:nowrap; }
.dc2-ficha .dc2-toolbar__row > label{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--dc2-muted); }
.dc2-ficha .dc2-toolbar__row > label > .dc-input{ height:36px; padding:0 10px; width:auto; }

/* M12 Operadora, ronda 2: modales de carga y alta (contrato §5.1). Anchos y scroll interno para formularios largos. */
.dc2-dialog--wide{ max-width:820px; }
.dc2-dialog--xl{ max-width:960px; }
.dc2-dialog--wide, .dc2-dialog--xl{ display:flex; flex-direction:column; max-height:calc(100vh - 40px); }
.dc2-dialog--wide .dc2-dialog__body, .dc2-dialog--xl .dc2-dialog__body{ overflow:auto; }
.dc2-dialog__body > .dc2-form{ margin:0; }

/* M12 Operadora, ronda 2: imagen de la operadora como tarjetas de previsualizacion (rail cerrado/abierto, dashboard, acceso). */
.dc2-brandgrid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:14px; }
.dc2-brandcard{ display:flex; flex-direction:column; gap:8px; padding:12px; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); text-align:left; cursor:pointer; font:inherit; color:var(--dc2-ink); transition:border-color .15s, box-shadow .15s; }
.dc2-brandcard:hover:not([disabled]){ border-color:var(--dc2-accent-ink); box-shadow:var(--dc2-shadow-card); }
.dc2-brandcard[disabled]{ cursor:default; }
.dc2-brandcard__frame{ position:relative; height:104px; border-radius:10px; background:var(--dc2-surface-sunken); overflow:hidden; }
.dc2-brandcard__rail{ display:none; position:absolute; left:0; top:0; bottom:0; width:40px; background:var(--dc2-rail-bg); }
.dc2-brandcard__content{ display:none; position:absolute; top:12px; right:12px; bottom:12px; left:52px; border-radius:8px; background:var(--dc2-surface-card); border:1px solid var(--dc2-border-soft); }
.dc2-brandcard__content::before, .dc2-brandcard__content::after{ content:""; position:absolute; left:12px; height:6px; border-radius:3px; background:var(--dc2-border); }
.dc2-brandcard__content::before{ top:12px; width:46%; }
.dc2-brandcard__content::after{ top:26px; width:70%; opacity:.6; }
.dc2-brandcard__frame--rail .dc2-brandcard__rail, .dc2-brandcard__frame--rail .dc2-brandcard__content{ display:block; }
.dc2-brandcard__frame--rail .dc2-brandcard__img{ position:absolute; left:8px; top:10px; width:24px; height:24px; object-fit:contain; border-radius:6px; background:#fff; }
.dc2-brandcard__frame--railopen .dc2-brandcard__rail, .dc2-brandcard__frame--railopen .dc2-brandcard__content{ display:block; }
.dc2-brandcard__frame--railopen .dc2-brandcard__rail{ width:110px; }
.dc2-brandcard__frame--railopen .dc2-brandcard__content{ left:122px; }
.dc2-brandcard__frame--railopen .dc2-brandcard__img{ position:absolute; left:10px; top:10px; width:90px; height:28px; object-fit:contain; border-radius:6px; background:#fff; padding:3px; }
.dc2-brandcard__frame--dash .dc2-brandcard__img{ position:absolute; left:12%; right:12%; top:50%; transform:translateY(-50%); width:76%; aspect-ratio:3.67 / 1; object-fit:cover; border-radius:8px; box-shadow:var(--dc2-shadow-card); }
.dc2-brandcard__frame--login .dc2-brandcard__img{ position:absolute; top:0; right:0; bottom:0; left:40%; width:60%; height:100%; object-fit:cover; object-position:center; }
.dc2-brandcard__frame--login::after{ content:""; position:absolute; left:10px; top:12px; bottom:12px; width:32%; border-radius:8px; background:var(--dc2-surface-card); box-shadow:var(--dc2-shadow-card); background-image:linear-gradient(var(--dc2-border) 0 0), linear-gradient(var(--dc2-border) 0 0), linear-gradient(var(--dc2-accent) 0 0); background-size:50% 5px, 70% 5px, 60% 8px; background-position:10px 12px, 10px 24px, 10px calc(100% - 12px); background-repeat:no-repeat; }
.dc2-brandcard__empty{ position:absolute; inset:10px; display:flex; align-items:center; justify-content:center; border:1.5px dashed var(--dc2-border); border-radius:8px; font-size:12px; color:var(--dc2-ink-faint); background:var(--dc2-surface-card); z-index:1; }
.dc2-brandcard__frame--rail .dc2-brandcard__empty, .dc2-brandcard__frame--railopen .dc2-brandcard__empty{ inset:auto 10px 10px 52px; height:26px; }
.dc2-brandcard__frame--railopen .dc2-brandcard__empty{ left:122px; }
.dc2-brandcard__lbl{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; color:var(--dc2-ink); }
.dc2-brandcard__hint{ font-size:11.5px; color:var(--dc2-ink-faint); margin-top:-4px; }
.dc2-ficha .dc2-dialog__body .dc-logoTabs__panel{ margin-top:6px; }

/* M12 Operadora, ronda 2: ENS (auditoria, accesos, compliance, retencion, almacenamiento) y utilidades. */
.dc2-note--info{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.dc2-note--ok{ background:var(--dc2-ok-soft); color:var(--dc2-ok); }
.dc2-muted{ color:var(--dc2-ink-faint); }
.dc2-prose p{ margin:0 0 10px; font-size:13.5px; line-height:1.6; color:var(--dc2-ink-soft); }
.dc2-prose p:last-child{ margin-bottom:0; }
.dc2-prose b{ color:var(--dc2-ink); }
.dc2-brandcard__empty[hidden], .dc2-brandcard__img[hidden]{ display:none; }
.dc2-panel__head .dc2-pageactions .dc2-btn{ white-space:nowrap; }
.dc2-ficha .dc2-toolbar__input[type="date"]{ height:36px; padding:0 10px; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-pill); background:var(--dc2-surface-card); color:var(--dc2-ink); font:inherit; font-size:13px; }
/* Auditoria de archivos: autocompletado de usuario y pastillas de operacion/tipo */
.audlog-usuario-wrap{ position:relative; }
.audlog-usuario-suggest{ display:none; position:absolute; left:0; right:0; top:calc(100% + 4px); z-index:30; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-pop); max-height:260px; overflow:auto; padding:4px; }
.audlog-usuario-suggest.is-visible{ display:block; }
.audlog-usuario-item{ padding:8px 10px; border-radius:8px; font-size:13px; cursor:pointer; color:var(--dc2-ink); }
.audlog-usuario-item:hover, .audlog-usuario-item.is-active{ background:var(--dc2-surface-sunken); }
.audlog-op-pill, .audlog-tipo-pill{ display:inline-flex; align-items:center; padding:3px 9px; border-radius:999px; font-size:11px; font-weight:700; background:var(--dc2-neutral-soft); color:var(--dc2-ink-soft); white-space:nowrap; }
.audlog-op-read, .audlog-op-download, .audlog-op-copy{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); }
.audlog-op-write, .audlog-op-modify, .audlog-op-restore{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.audlog-op-delete{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.audlog-ip{ font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--dc2-ink-soft); }
.audlog-fecha{ white-space:nowrap; }
.audlog-empty{ text-align:center; padding:28px 12px; color:var(--dc2-ink-faint); }
.audlog-empty .dc2-ic{ width:32px; height:32px; opacity:.5; }

/* M12 Operadora, ronda 3: avisos SweetAlert por encima de los modales v2, (i) en linea, pistas de campo, herramientas del mapa CECAF, modal de UAS del seguro, enlaces a mapas. */
.swal2-container{ z-index:1500 !important; }
.dc2-ficha .dc2-label--inline{ display:inline-flex; align-items:center; gap:6px; margin-bottom:6px; }
.dc2-fieldhint{ font-size:12px; color:var(--dc2-ink-faint); line-height:1.5; }
.dc2-steps--compact{ gap:10px; margin-bottom:6px; padding:12px 14px; border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); }
.dc2-steps--compact .dc2-step{ grid-template-columns:26px 1fr; gap:10px; }
.dc2-steps--compact .dc2-step__num{ width:26px; height:26px; font-size:12px; }
.dc2-steps--compact .dc2-step b{ font-size:13px; color:var(--dc2-ink); }
.dc-cecafareas-tools .dc2-btn{ width:44px; height:44px; padding:0; border-radius:10px; justify-content:center; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
.dc-cecafareas-tools .dc2-btn .dc2-ic{ width:18px; height:18px; }
.dc-cecafareas-tools .dc2-btn--primary{ background:var(--dc2-accent); color:#fff; border-color:transparent; }
.dc2-ficha .dc-link--maps{ color:var(--dc2-accent-ink); }
/* Modal de seleccion de UAS (seguro RC): mismo aspecto que .dc2-dialog */
.dc2-ficha .dc-uasmodal__backdrop{ background:rgba(8,16,17,.5); backdrop-filter:blur(2px); }
.dc2-ficha .dc-uasmodal__dialog{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); }
.dc2-ficha .dc-uasmodal__header{ border-bottom:0; padding:16px 20px 0; }
.dc2-ficha .dc-uasmodal__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:16px; color:var(--dc2-ink); margin:0; }
.dc2-ficha .dc-uasmodal__subtitle{ font-size:12.5px; color:var(--dc2-ink-soft); margin:2px 0 0; }
.dc2-ficha .dc-uasmodal__toolbar{ display:block; padding:12px 20px 0; border:0; background:transparent; }
.dc2-ficha .dc-uasmodal__body{ padding:12px 20px; }
.dc2-ficha .dc-uasmodal__tablewrap{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-uasmodal__footer{ border-top:0; padding:0 20px 20px; }
.dc2-ficha .dc-uasmodal__table .uas-checkbox, .dc2-ficha #uasSelectAllHead{ width:16px; height:16px; accent-color:var(--dc2-accent); }

/* CECAF areas: herramienta activa marcada; boton de capas encendido en vista satelite. */
.dc-cecafareas-tools .dc2-btn.is-on{ background:var(--dc2-accent); color:#fff; border-color:transparent; box-shadow:0 0 0 3px var(--dc2-accent-soft); }

/* Modo afiliado (body.dc-afiliado): una consultora dentro de la operadora de un afiliado. Header y fondo teñidos, tarjeta con el afiliado y (x) para salir. */
:root{ --dc2-aff:#e65100; --dc2-aff-soft:rgba(230,81,0,.12); }
body.dc-layout.dc-afiliado .dc-header.dc2-header{ background:color-mix(in srgb, var(--dc2-surface-card) 72%, var(--dc2-aff)) !important; border-bottom-color:rgba(230,81,0,.4) !important; }
.dc2-header__affcard{ display:inline-flex; align-items:center; gap:8px; height:32px; padding:0 4px 0 12px; border-radius:999px; background:var(--dc2-surface-card); border:1px solid rgba(230,81,0,.45); color:var(--dc2-aff); font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:12.5px; white-space:nowrap; max-width:320px; }
.dc2-header__affcard .dc2-ic{ width:15px; height:15px; flex:none; }
.dc2-header__affcard-name{ overflow:hidden; text-overflow:ellipsis; }
.dc2-header__affexit{ display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:50%; background:var(--dc2-aff); color:#fff; flex:none; text-decoration:none; transition:background .15s; }
.dc2-header__affexit .dc2-ic{ width:13px; height:13px; }
.dc2-header__affexit:hover{ background:#bf4300; color:#fff; }
@media (max-width:900px){ .dc2-header__affcard-name{ display:none; } .dc2-header__affcard{ padding-left:8px; } }
/* Checklist */
.dc2-table__actions{ display:inline-flex; align-items:center; gap:4px; }
.dc2-ficha .dc2-form .dc2-field--wide{ grid-column:span 2; }
.dc2-gestion-add > select.dc-input{ flex:1 1 260px; width:auto; }

/* Ronda D: pasos en horizontal para paneles explicativos, contador de notificaciones en el rail, logo DC del rail, buscador de Google sobre los modales, botones de SweetAlert sin halo. */
/* Mapa de localizacion en linea (alta/edicion de zona de vuelo): buscador, mapa y resumen del punto */
.dc2-locmap{ display:grid; gap:8px; }
.dc2-locmap__map{ height:300px; border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border); background:var(--dc2-surface-sunken); }
.dc2-locmap__summary{ display:flex; align-items:center; gap:6px; min-height:20px; }
.dc2-locmap__summary .dc2-ic{ width:14px; height:14px; flex:none; color:var(--dc2-accent); }
.dc2-locmap__summary .dc2-fieldhint{ margin:0; color:var(--dc2-ink); }
.dc2-locmap__summary .dc2-fieldhint[data-empty]{ color:var(--dc2-ink-faint); }
.dc2-rail__logo--dc{ width:36px; height:auto; border-radius:0; background:transparent; padding:0; filter:brightness(0) invert(1); }
/* Marca Droncore ancha (rail desplegado sin logo de operadora): sin loseta, en blanco. */
.dc2-rail__logo--f.dc2-rail__logo--fdc{ height:20px; max-width:160px; padding:0; background:transparent; border-radius:0; filter:brightness(0) invert(1); }
.dc2-rail__badge{ position:absolute; top:6px; right:8px; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--dc2-bad); color:#fff; font-size:10.5px; font-weight:800; line-height:18px; text-align:center; pointer-events:none; }
.dc2-rail__btn{ position:relative; }
.dc2-subnav__badge{ margin-left:auto; min-width:20px; height:20px; padding:0 6px; border-radius:999px; background:var(--dc2-bad); color:#fff; font-size:11px; font-weight:800; line-height:20px; text-align:center; }
.pac-container{ z-index:2000 !important; border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-pop); border:1px solid var(--dc2-border); font-family:inherit; }
.pac-item{ padding:8px 10px; font-size:13px; }
.swal2-popup .dc2-btn:focus{ outline:none; box-shadow:none; }
.swal2-popup .dc2-btn--danger{ background:var(--dc2-bad); color:#fff; }
.swal2-popup .dc2-btn--danger:hover{ background:#a31717; color:#fff; }
.swal2-actions{ gap:10px; }

/* ---- M09 Operaciones: filtros rapidos dentro de la toolbar y tarjeta con mini-mapa ---- */
.dc2-subpills--toolbar{ margin:10px 0 0; }
.dc2-pill--accent{ background:var(--dc2-accent-soft-2); color:var(--dc2-accent-ink); }
.dc2-cards-grid--ops{ grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); }
.dc2-opcard{ gap:12px; }
.dc2-opcard__map{ position:relative; display:block; height:150px; margin:-18px -18px 0; border-radius:var(--dc2-radius-md) var(--dc2-radius-md) 0 0; overflow:hidden; background:var(--dc2-surface-sunken); text-decoration:none; }
.dc2-opcard__map img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-opcard__map-ph{ display:none; position:absolute; inset:0; align-items:center; justify-content:center; gap:8px; color:var(--dc2-ink-faint); font-size:12px; font-weight:600; background:repeating-linear-gradient(135deg, transparent 0 10px, var(--dc2-border-soft) 10px 11px); }
.dc2-opcard__map-ph .dc2-ic{ width:16px; height:16px; }
.dc2-opcard__map.is-empty .dc2-opcard__map-ph{ display:flex; }
/* Chip de estado sobre el mapa: fondo solido de tarjeta y punto de color para que se lea sobre cualquier mapa. */
.dc2-opcard .dc2-opcard__state.dc2-pill{ position:absolute; top:10px; left:10px; background:var(--dc2-surface-card); box-shadow:var(--dc2-shadow-card); padding-left:8px; }
.dc2-opcard .dc2-opcard__state::before{ content:""; width:8px; height:8px; border-radius:50%; background:currentColor; margin-right:6px; flex:none; }
.dc2-opcard .dc2-opcard__state.dc2-pill--neutral{ color:var(--dc2-ink-soft); }
.dc2-dot--lg{ width:12px; height:12px; cursor:help; }
.dc2-dot--neutral{ background:var(--dc2-neutral); } .dc2-dot--accent{ background:var(--dc2-accent); }
.dc2-opcard__code{ position:absolute; top:10px; right:10px; padding:3px 8px; border-radius:var(--dc2-radius-pill); background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; font-weight:600; box-shadow:var(--dc2-shadow-card); max-width:55%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc2-opcard__rows{ display:grid; gap:6px; }
.dc2-opcard__row{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--dc2-ink-soft); min-width:0; }
.dc2-opcard__row .dc2-ic{ width:14px; height:14px; flex:none; color:var(--dc2-ink-faint); }
.dc2-opcard__row span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc2-opcard__alta{ font-size:11px; color:var(--dc2-ink-faint); }
.dc2-opcard .dc2-card__foot{ padding-top:10px; }

/* ---- Piel v2 para tarjetas e inputs legacy dentro de una raiz dc2-ficha ---- */
.dc2-ficha .dc-card{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-lg); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
.dc2-ficha .dc-card .dc-card{ box-shadow:none; border-color:var(--dc2-border-soft); border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-input, .dc2-ficha select.dc-input, .dc2-ficha textarea.dc-input{ border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); border-radius:var(--dc2-radius-sm); }
.dc2-ficha .dc-input:focus{ outline:2px solid var(--dc2-accent-ink); outline-offset:-1px; border-color:var(--dc2-accent); }
.dc2-ficha .dc-iconbtn{ color:var(--dc2-ink-soft); }

/* ---- M15 Wizard de operacion (op/operacion-*.php): cabecera, stepper, paneles y navegacion ---- */
.dc2-ficha.dc-opwizard{ padding:20px 22px; }
.dc2-ficha .dc-opwizard__header{ align-items:center; }
.dc2-ficha .dc-opwizard__header .dc-section-title{ font-size:18px; }
.dc2-ficha .dc-opwizard__header > div:last-child{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.dc2-ficha .dc-opwizard__dashbar{ background:transparent; border:0; box-shadow:none; padding:0; margin:14px 0 6px; border-radius:0; }
.dc2-ficha .dc-opstep{ border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); padding:6px 12px 6px 6px; gap:8px; }
.dc2-ficha .dc-opstep:hover{ border-color:var(--dc2-accent); box-shadow:none; }
.dc2-ficha .dc-opstep__num{ width:24px; height:24px; font-size:12px; }
.dc2-ficha .dc-opstep__text{ font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; }
.dc2-ficha .dc-dashbar__arrow{ background:var(--dc2-surface-card); border-color:var(--dc2-border); color:var(--dc2-ink); }
.dc2-ficha .dc-opwizard__panel{ border-top:1px solid var(--dc2-border-soft); padding-top:16px; margin-top:8px; }
.dc2-ficha .dc-opwizard__note{ background:var(--dc2-surface-sunken); border:1px solid var(--dc2-border-soft); color:var(--dc2-ink-soft); border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-opwizard__section{ border-color:var(--dc2-border-soft); }
.dc2-ficha .dc-opwizard__hint, .dc2-ficha .dc-opwizard__sub{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-opwizard__nav{ display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }
.dc2-ficha .dc-opwizard__nav .dc-btn{ width:40px; height:40px; min-width:40px; padding:0; border-radius:50%; justify-content:center; }
.dc2-ficha .dc-dashbar__recnav{ border-left-color:var(--dc2-border); }
.dc2-ficha .dc-dashbar__recnav .dc-recnav__back{ height:36px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font-family:"Manrope","Poppins",sans-serif; font-weight:700; font-size:13px; }
.dc2-ficha .dc-dashbar__recnav .dc-recnav__back:hover{ background:var(--dc2-surface-sunken); border-color:var(--dc2-border); }
.dc2-ficha .dc-logv-seq{ height:36px; border-color:var(--dc2-border); background:var(--dc2-surface-card); }
.dc2-ficha .dc-logv-seq-btn{ color:var(--dc2-accent-ink); }
.dc2-ficha .dc-logv-seq-btn:hover{ background:var(--dc2-accent-soft); }
.dc2-ficha .dc-logv-seq-btn.is-disabled{ color:var(--dc2-ink-faint); }
.dc2-ficha .dc-logv-seq-count{ color:var(--dc2-ink); }
.dc2-ficha .dc-opwizard .textForm{ color:var(--dc2-ink); }
.dc2-ficha .dc-help{ color:var(--dc2-ink-soft); }
.dc-license-card{ background:var(--dc2-surface-card) !important; border:1px solid var(--dc2-border) !important; border-radius:var(--dc2-radius-pill) !important; box-shadow:none !important; padding:6px 8px 6px 16px !important; }
.dc-license-card .dc-label{ color:var(--dc2-ink-soft); }
@media (max-width:760px){
  .dc2-ficha.dc-opwizard{ padding:14px; }
  .dc2-ficha .dc-opwizard__header{ flex-direction:column; align-items:stretch; }
  .dc2-ficha .dc-opwizard__header > div:last-child{ justify-content:flex-start; }
  .dc2-ficha .dc-dashbar__recnav{ border-left:0; padding-left:0; margin-left:0; }
}

/* ---- Logs: visor (logs-visor*.php) y carga (logs-cargar.php) ---- */
.dc2-ficha .dc-logv-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:18px; color:var(--dc2-ink); }
.dc2-ficha .dc-logv-meta{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-logv-main .dc-dashbar, .dc2-ficha .dc-dashbar{ background:transparent; border:0; box-shadow:none; padding:0; }
.dc2-ficha .dc-dashtab{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); color:var(--dc2-ink-soft); font-family:"Manrope","Poppins",sans-serif; font-weight:700; }
.dc2-ficha .dc-dashtab:hover{ background:var(--dc2-surface-sunken); color:var(--dc2-ink); }
.dc2-ficha .dc-dashtab.is-active, .dc2-ficha .dc-dashtab[aria-selected="true"]{ background:var(--dc2-accent); border-color:var(--dc2-accent); color:#fff; }
.dc2-ficha .dc-logv-subtabs a{ border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); border-radius:var(--dc2-radius-pill); font-weight:700; }
.dc2-ficha .dc-logv-subtabs a.is-active{ background:var(--dc2-accent-soft-2); border-color:transparent; color:var(--dc2-accent-ink); }
.dc2-ficha .dc-logv-kpi{ border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-logv-kpi .k{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-logv-kpi .v{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:16px; font-weight:600; color:var(--dc2-ink); }
.dc2-ficha .dc-logv-link{ color:var(--dc2-accent-ink); }
.dc2-ficha .dc-logv-empty{ color:var(--dc2-ink-faint); }
.dc2-ficha .dc-dropzone{ border:2px dashed var(--dc2-border); background:var(--dc2-surface-sunken); border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-dropzone__title{ color:var(--dc2-ink); }
.dc2-ficha .dc-dropzone__hint, .dc2-ficha .dc-logc-results-summary{ color:var(--dc2-ink-soft); }

/* ---- Calendario: barra (año/mes, leyenda, KPIs) dentro de un panel; selector con iconos ---- */
.dc2-panel--calbar .dc-calbar{ margin:0; }
.dc2-ficha .dc-calyear__btn, .dc-calpage .dc-calyear__btn{ width:34px; height:34px; border-radius:50%; }
.dc-calpage .dc-calyear__year{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:18px; color:var(--dc2-ink); }
.dc-calpage .dc-calstat{ background:var(--dc2-surface-sunken); border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); box-shadow:none; }
.dc-calpage .dc-calstat__num{ font-family:"IBM Plex Mono","Poppins",monospace; color:var(--dc2-ink); }
.dc-calpage .dc-callegend__item{ color:var(--dc2-ink-soft); font-size:12px; font-weight:600; }
.dc-calpage .dc-ycal__pill{ background:var(--dc2-accent-soft); border-color:transparent; color:var(--dc2-accent-ink); font-weight:700; }
.dc-calpage .dc-ycal__arrow .dc2-ic{ width:14px; height:14px; }
.dc-calpage .dc-cal__dow{ color:var(--dc2-ink-faint); }

/* Boton de icono pequeno junto a una etiqueta (anadir clasificacion/departamento en el wizard) e inputs con aceptar/cerrar dentro. */
.dc2-iconbtn--xs{ width:24px; height:24px; }
.dc2-iconbtn--xs .dc2-ic{ width:13px; height:13px; }
.dc2-ficha .dc-op-inputicon__btn{ width:28px; height:28px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; color:var(--dc2-ink-soft); background:transparent; border:0; }
.dc2-ficha .dc-op-inputicon__btn .dc2-ic{ width:15px; height:15px; }
.dc2-ficha .dc-op-inputicon__btn--ok{ color:var(--dc2-ok); }
.dc2-ficha .dc-op-inputicon__btn--close{ color:var(--dc2-ink-faint); }
.dc2-ficha .dc-op-inputicon__btn:hover{ background:var(--dc2-surface-sunken); }

/* ---- Area de operacion: herramientas del mapa (misma filosofia que CECAF areas) ---- */
.dc-mapwrap .dc-maptools.dc-cecafareas-tools{ position:absolute; left:12px; top:64px; width:auto; display:grid; grid-template-columns:1fr; gap:8px; z-index:5; background:transparent; border:0; padding:0; box-shadow:none; }
.dc-cecafareas-tools .dc-maptool-btn{ width:44px; height:44px; min-width:44px; }
.dc-mapwrap .dc-cecafareas-tools__sep{ height:1px; background:var(--dc2-border); margin:2px 6px; }
.dc-cecafareas-tools .dc2-btn.is-active{ background:var(--dc2-accent); color:#fff; border-color:transparent; box-shadow:0 0 0 3px var(--dc2-accent-soft); }
.dc-mapwrap .dc-maptools__actions{ position:absolute; left:50%; bottom:14px; transform:translateX(-50%); z-index:6; display:flex; align-items:center; gap:8px; padding:6px 8px 6px 14px; border-radius:var(--dc2-radius-pill); background:var(--dc2-surface-card); border:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-pop); white-space:nowrap; max-width:calc(100% - 24px); }
.dc-mapwrap .dc-maptools__actions[hidden]{ display:none; }
.dc-mapwrap .dc-maptools__actions .dc-cecafareas-actions__info{ font-size:12.5px; font-weight:700; color:var(--dc2-ink); overflow:hidden; text-overflow:ellipsis; }
.dc-mapwrap .dc-maptools__info{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); color:var(--dc2-ink); border-radius:var(--dc2-radius-md); }
.dc-mapwrap .dc-mapsearch .dc-input{ border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); border-radius:var(--dc2-radius-pill); height:38px; padding:0 14px; box-shadow:var(--dc2-shadow-card); }
@media (max-width:900px){ .dc-mapwrap .dc-maptools.dc-cecafareas-tools{ top:62px; } .dc-mapwrap .dc-maptools__actions{ left:12px; right:12px; transform:none; max-width:none; } }

/* ---- Wizard: pasos de seleccion (Pilotos / UAS / Auxiliares) ---- */
.dc2-toolbar__panel--fields{ align-items:flex-end; }
.dc2-toolbar__panel .dc-ptools__field{ display:flex; flex-direction:column; gap:4px; min-width:150px; }
.dc2-toolbar__panel .dc-ptools__label{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-toolbar__panel .dc-ptools__field .dc2-toolbar__select, .dc2-toolbar__panel .dc-ptools__field .dc2-toolbar__input{ width:100%; }
.dc2-table .dc-cell-center{ text-align:center; }
.dc2-table .dc-op-ellipsis{ display:block; max-width:200px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-ficha .dc-opsel__list{ display:flex; flex-wrap:wrap; gap:8px; }
.dc2-ficha .dc-opsel__avatar{ width:26px; height:26px; border-radius:50%; object-fit:cover; }
.dc2-ficha .dc-usercards.dc2-selgrid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:14px; }
.dc2-ficha .dc2-selgrid .dc-usercard{ display:grid; grid-template-columns:52px minmax(0,1fr) auto; gap:12px; align-items:start; padding:14px; margin:0; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
.dc2-ficha .dc2-selgrid .dc-usercard:hover{ border-color:var(--dc2-accent); }
.dc2-ficha .dc2-selgrid .dc-usercard__avatar{ width:52px; height:52px; margin:0; }
.dc2-ficha .dc2-selgrid .dc-usercard__avatarCircle{ width:52px; height:52px; border-radius:50%; overflow:hidden; background:var(--dc2-surface-sunken); border:0; box-shadow:none; }
.dc2-ficha .dc2-selgrid .dc-usercard__avatarCircle img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-ficha .dc2-selgrid .dc-usercard__mid{ min-width:0; display:flex; flex-direction:column; gap:6px; }
.dc2-ficha .dc2-selgrid .dc-usercard__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin:0; }
.dc2-ficha .dc2-selgrid .dc-usercard__chips{ display:flex; flex-wrap:wrap; gap:6px; margin:0; }
.dc2-ficha .dc2-selgrid .dc-usercard__profile{ font-size:11.5px; color:var(--dc2-ink-faint); margin:0; }
.dc2-ficha .dc2-selgrid .dc-usercard__ops, .dc2-ficha .dc2-selgrid .dc-usercard__hours{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; color:var(--dc2-ink-soft); margin:0; }
.dc2-ficha .dc2-selgrid .dc-usercard__right{ display:flex; align-items:flex-start; }
.dc2-ficha .dc-userchip{ display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:var(--dc2-radius-pill); font-size:11px; font-weight:700; background:var(--dc2-neutral-soft); color:var(--dc2-ink-soft); border:0; }
.dc2-ficha .dc-userchip--ok{ background:var(--dc2-ok-soft); color:var(--dc2-ok); }
.dc2-ficha .dc-userchip--warn{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-ficha .dc-userchip--bad{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
.dc2-ficha .dc-usercard__dot{ width:22px; height:22px; border:0; }
.dc2-ficha .dc-usercard__dot--ok{ background:var(--dc2-ok); } .dc2-ficha .dc-usercard__dot--warn{ background:var(--dc2-warn); } .dc2-ficha .dc-usercard__dot--bad{ background:var(--dc2-bad); } .dc2-ficha .dc-usercard__dot--off{ background:var(--dc2-neutral); }
.dc2-ficha .dc-usercard__dot--x{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); } .dc2-ficha .dc-usercard__dot--x::after{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-op-selectcard.is-assigned .dc-usercard__name::after{ content:""; display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--dc2-ok); margin-left:8px; vertical-align:middle; }
.dc2-ficha .dc-info-icon .dc2-ic{ width:13px; height:13px; }
@media (max-width:600px){ .dc2-ficha .dc-usercards.dc2-selgrid{ grid-template-columns:minmax(0,1fr); } }

/* Elementos v2 con display propio deben respetar [hidden] (p. ej. acciones de seleccion sin seleccion). */
.dc2-btn[hidden], .dc2-iconbtn[hidden], .dc2-pill[hidden], .dc2-toolbar__count[hidden], .dc2-note[hidden], .dc2-pageactions[hidden]{ display:none !important; }
/* Estado "en ejecucion" para los iconos de estado (misma familia que uas.php) */
.dc2-cert--accent{ color:var(--dc2-accent-ink); background:var(--dc2-accent-soft-2); }
.dc2-table .dc2-cert{ width:26px; height:26px; }
/* Rejillas de cifras de 3 y 4 columnas */
.dc2-stats--3{ grid-template-columns:repeat(3, minmax(0,1fr)); }
.dc2-stats--4{ grid-template-columns:repeat(4, minmax(0,1fr)); }
@media (max-width:760px){ .dc2-stats--4{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
/* Logbook: tarjetas de piloto */
.dc2-cards-grid--lb{ grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); }
.dc2-lbcard .dc2-stat__val{ font-size:14px; }
.dc2-lbcard .dc2-chips .dc2-pill{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; }

/* Tarjetas de seleccion del wizard (Pilotos / UAS / Auxiliares): misma estructura que las tarjetas de listado + marca de seleccion. */
.dc2-selgrid{ grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:14px; }
.dc2-selcard{ cursor:pointer; padding:16px; gap:12px; transition:border-color .12s, box-shadow .12s; }
.dc2-selcard:hover{ border-color:var(--dc2-accent); }
.dc2-selcard .dc2-card__meta{ white-space:normal; flex-wrap:wrap; }
.dc2-selcard__mark{ display:none; width:24px; height:24px; border-radius:50%; background:var(--dc2-ok); color:#fff; align-items:center; justify-content:center; flex:none; align-self:flex-start; }
.dc2-selcard__mark .dc2-ic{ width:14px; height:14px; }
.dc-op-selectcard.is-assigned .dc2-selcard__mark{ display:inline-flex; }
.dc-op-selectcard.is-assigned-warn .dc2-selcard__mark{ background:var(--dc2-warn); }
.dc2-selcard .dc2-card__foot-states{ gap:4px; }
.dc2-selcard.is-blocked{ opacity:.6; }

/* ---- M08 Dashboards de Pilotos / UAS / Operaciones / Mantenimientos: piel v2 sobre dashboard-*.css ---- */
body.dc-layout .dc-dash--dashboard .dc-pilots-top3__head{ margin-bottom:12px; }
body.dc-layout .dc-dash--dashboard .dc-pilot-top{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); padding:18px 14px 16px; gap:8px; transition:transform .12s, border-color .12s; }
body.dc-layout .dc-dash--dashboard .dc-pilot-top:hover{ transform:translateY(-2px); border-color:var(--dc2-accent); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top--gold{ background:linear-gradient(170deg, rgba(255,196,0,.22) 0%, var(--dc2-surface-sunken) 62%); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top--silver{ background:linear-gradient(170deg, rgba(160,170,185,.26) 0%, var(--dc2-surface-sunken) 62%); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top--bronze{ background:linear-gradient(170deg, rgba(205,127,50,.24) 0%, var(--dc2-surface-sunken) 62%); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__avatarwrap{ position:relative; align-items:center; }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__medal{ position:absolute; top:-6px; left:calc(50% + 28px); width:34px; height:34px; margin:0; z-index:2; filter:drop-shadow(0 2px 4px rgba(0,0,0,.18)); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__avatar{ width:clamp(88px, 7.5vw, 124px); border-width:4px; background:var(--dc2-surface-card); box-shadow:var(--dc2-shadow-card); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__avatar--gold{ border-color:#f5b800; } body.dc-layout .dc-dash--dashboard .dc-pilot-top__avatar--silver{ border-color:#a7b0bd; } body.dc-layout .dc-dash--dashboard .dc-pilot-top__avatar--bronze{ border-color:#c8803a; }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__hours{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; font-size:clamp(17px, 1.4vw, 24px); color:var(--dc2-ink) !important; margin-top:6px; }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; color:var(--dc2-ink); }
body.dc-layout .dc-dash--dashboard .dc-pilot-top__initial{ color:var(--dc2-ink-soft); }
/* Filtros legacy de las tablas de dashboard: etiqueta pequena encima, controles con la forma de la toolbar. */
body.dc-layout .dc-dash--dashboard .dc-pilots-table__controls{ padding:14px 16px 0; }
body.dc-layout .dc-dash--dashboard .dc-ptools{ display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; justify-content:space-between; }
body.dc-layout .dc-dash--dashboard .dc-ptools__left, body.dc-layout .dc-dash--dashboard .dc-ptools__right{ display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; }
body.dc-layout .dc-dash--dashboard .dc-ptools__field{ display:flex; flex-direction:column; gap:4px; min-width:150px; }
body.dc-layout .dc-dash--dashboard .dc-ptools__label{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
body.dc-layout .dc-dash--dashboard .dc-ptools__select, body.dc-layout .dc-dash--dashboard .dc-ptools__input, body.dc-layout .dc-dash--dashboard .dc-ptools__mostrar{ height:34px; border-radius:var(--dc2-radius-pill); border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); padding:0 12px; font:inherit; font-size:13px; min-width:0; box-shadow:none; }
body.dc-layout .dc-dash--dashboard .dc-ptools .dc-actions{ margin-top:0 !important; align-self:flex-end; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table{ padding-bottom:12px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table .dc2-table-wrap{ margin:0 16px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table .dc2-pager{ margin:12px 16px 0; }
/* Grafica de mantenimientos: barras con tokens; leyenda y ejes ya en var(). */
body.dc-layout .dc-dash--dashboard .b-serv{ fill:var(--dc2-accent); } body.dc-layout .dc-dash--dashboard .b-gen{ fill:var(--dc2-neutral); }
body.dc-layout .dc-dash--dashboard .dc-mtcorr__axistext{ font-family:"IBM Plex Mono","Poppins",monospace; }
/* Leyendas de mapa de los dashboards con la misma pildora del general. */
body.dc-layout .dc-dash--dashboard .dc-map-legend{ background:color-mix(in srgb, var(--dc2-surface-card) 88%, transparent); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-pill); box-shadow:var(--dc2-shadow-pop); }
body.dc-layout .dc-dash--dashboard .dc-map-legend__item{ color:var(--dc2-ink-soft); font-weight:700; }
body.dc-layout .dc-dash--dashboard .dc-map-legend__dot{ border:0; box-shadow:none; }
body.dc-layout .dc-dash--dashboard .dc-map-legend__dot--green{ background:var(--dc2-ok); } body.dc-layout .dc-dash--dashboard .dc-map-legend__dot--yellow{ background:var(--dc2-warn); } body.dc-layout .dc-dash--dashboard .dc-map-legend__dot--gray{ background:var(--dc2-neutral); } body.dc-layout .dc-dash--dashboard .dc-map-legend__dot--red{ background:var(--dc2-bad); }

/* Dashboard de Operaciones: cinco KPIs en una fila (tres y una en pantallas pequenas). */
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-kpi-grid{ grid-template-columns:repeat(5, minmax(0,1fr)); }
@media (max-width:1100px){ body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-kpi-grid{ grid-template-columns:repeat(3, minmax(0,1fr)); } }
@media (max-width:520px){ body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-kpi-grid{ grid-template-columns:1fr; } }
/* Marcos de mapa de los dashboards: altura minima para que Google Maps no arranque en cero. */
body.dc-layout .dc-dash--dashboard .dc-frame--opsmap, body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap{ min-height:420px; }

/* ---- M08 Dashboard general (ronda 5): KPIs fuera del mapa, mapa 2/3 con reparto por estado y proximas
   operaciones al lado, grafica legible a todo el ancho. Sin promo. ---- */
body.dc-layout .dc-dash--dashboard .dc-kpi-grid{ gap:14px; margin-bottom:18px; }
body.dc-layout .dc-dash--dashboard a.dc-kpi{ text-decoration:none; color:inherit; cursor:pointer; }
body.dc-layout .dc-dash--dashboard a.dc-kpi:hover{ border-color:var(--dc2-accent); }
/* Tarjetas KPI (todos los dashboards): sin barra lateral; lavado de color muy suave desde el icono y icono tenido del estado. */
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi{ --kpi-c:var(--dc2-ink-faint); background:linear-gradient(225deg, color-mix(in srgb, var(--kpi-c) 13%, var(--dc2-surface-card)) 0%, var(--dc2-surface-card) 62%); border-color:var(--dc2-border); box-shadow:var(--dc2-shadow-card); animation:none; }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card::before{ content:none; }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--ok{ --kpi-c:var(--dc2-ok); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--warn, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--overdue{ --kpi-c:var(--dc2-warn); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--danger, body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--alert{ --kpi-c:var(--dc2-bad); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--accent{ --kpi-c:var(--dc2-accent); }
body.dc-layout .dc-dash--dashboard .dc-kpi__icon{ background:color-mix(in srgb, var(--kpi-c) 16%, transparent); color:var(--kpi-c); }
body.dc-layout .dc-dash--dashboard .dc-kpi-grid > .dc-card.dc-kpi--inactive .dc-kpi__icon{ color:var(--dc2-ink-soft); }
body.dc-layout .dc-dash--dashboard .dc-kpi__sub{ margin-top:6px; display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
.dc-kpi__delta{ display:inline-flex; align-items:center; height:18px; padding:0 7px; border-radius:var(--dc2-radius-pill); font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; font-weight:600; background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); }
.dc-kpi__delta--ok{ background:var(--dc2-ok-soft); color:var(--dc2-ok); }
.dc-kpi__delta--bad{ background:var(--dc2-bad-soft); color:var(--dc2-bad); }
/* Tabbar de dashboards: mismo tamano que el resto de tabbars (el font:inherit del boton lo agrandaba). */
.dc2-tabbar.dc2-tabbar--dash .dc2-tab{ font-family:"Manrope","Poppins",sans-serif; font-size:12.5px; line-height:1.25; }
/* Escenario: mapa + lateral */
.dc2-dashgen{ display:grid; grid-template-columns:minmax(0,2fr) minmax(300px,1fr); gap:18px; margin-bottom:18px; align-items:stretch; }
.dc2-dashside{ display:grid; grid-template-rows:auto minmax(0,1fr); gap:18px; min-width:0; }
.dc2-mapstage{ display:flex; flex-direction:column; min-width:0; padding:18px 20px 20px; }
.dc2-mapstage__head{ margin-bottom:14px; }
.dc2-mapstage__frame{ position:relative; flex:1; min-height:460px; border-radius:var(--dc2-radius-md); overflow:hidden; border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-sunken); }
.dc2-mapstage__map{ position:absolute; inset:0; }
.dc2-mapstage__legend.dc-map-legend{ position:absolute; left:12px; bottom:12px; right:auto; width:fit-content; z-index:2; background:color-mix(in srgb, var(--dc2-surface-card) 88%, transparent); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-pill); box-shadow:var(--dc2-shadow-pop); padding:6px 12px; }
.dc2-mapstage__legend .dc-map-legend__item{ color:var(--dc2-ink-soft); font-weight:700; }
.dc2-mapstage__legend .dc-map-legend__dot{ border:0; box-shadow:none; }
.dc2-mapstage__legend .dc-map-legend__dot--green{ background:var(--dc2-ok); }
.dc2-mapstage__empty{ position:absolute; left:50%; top:14px; transform:translateX(-50%); z-index:2; display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border-radius:var(--dc2-radius-pill); background:color-mix(in srgb, var(--dc2-surface-card) 90%, transparent); border:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-pop); font-size:12.5px; color:var(--dc2-ink-soft); white-space:nowrap; max-width:calc(100% - 28px); }
.dc2-mapstage__empty .dc2-ic{ width:16px; height:16px; color:var(--dc2-accent-ink); flex:none; }
.dc2-mapstage .gm-style .gm-style-iw-c{ border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-pop); background:var(--dc2-surface-card); color:var(--dc2-ink); }
.dc2-mapstage .gm-style .gm-style-iw-tc::after{ background:var(--dc2-surface-card); }
.dc2-mapstage .dc2-viewswitch__btn{ width:auto; padding:0 10px; gap:6px; font-size:12px; font-weight:700; }
/* Reparto por estado */
.dc2-statuspanel__body{ display:flex; align-items:center; gap:20px; }
.dc2-donut--lg{ width:122px; height:122px; }
.dc2-donut--lg::before{ inset:16px; }
.dc2-donut--lg .dc2-donut__value{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:22px; font-weight:600; line-height:1; }
.dc2-donut__label{ font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); margin-top:3px; }
.dc2-statuslist{ list-style:none; margin:0; padding:0; flex:1; min-width:0; display:flex; flex-direction:column; gap:7px; }
.dc2-statuslist__row{ display:grid; grid-template-columns:10px minmax(0,1fr) auto auto; align-items:center; gap:8px; font-size:12.5px; }
.dc2-statuslist__dot{ width:10px; height:10px; border-radius:50%; }
.dc2-statuslist__lbl{ color:var(--dc2-ink-soft); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-statuslist__pct{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-faint); }
.dc2-statuslist__num{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; min-width:26px; text-align:right; color:var(--dc2-ink); }
/* Proximas operaciones */
.dc2-nextpanel{ display:flex; flex-direction:column; min-height:0; }
.dc2-nextpanel .dc2-panel__head{ flex:none; }
.dc2-nextlist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; overflow:auto; min-height:0; }
.dc2-nextlist__item{ display:flex; align-items:center; gap:12px; padding:8px 10px; border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border-soft); text-decoration:none; color:var(--dc2-ink); transition:border-color .12s, background .12s; }
.dc2-nextlist__item:hover{ border-color:var(--dc2-accent); background:var(--dc2-accent-soft); color:var(--dc2-ink); }
.dc2-nextlist__date{ flex:none; width:44px; height:44px; border-radius:10px; background:var(--dc2-surface-sunken); display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1; }
.dc2-nextlist__date b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:16px; font-weight:600; color:var(--dc2-ink); }
.dc2-nextlist__date small{ font-size:9.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--dc2-ink-faint); font-weight:700; margin-top:3px; }
.dc2-nextlist__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.dc2-nextlist__title{ font-weight:700; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-nextlist__meta{ font-size:11.5px; color:var(--dc2-ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; gap:8px; }
.dc2-nextlist__code{ font-family:"IBM Plex Mono","Poppins",monospace; color:var(--dc2-accent-ink); font-weight:600; }
.dc2-nextpanel__empty{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:28px 16px; text-align:center; color:var(--dc2-ink-soft); font-size:13px; border:1px dashed var(--dc2-border); border-radius:var(--dc2-radius-md); }
.dc2-nextpanel__empty .dc2-ic{ width:24px; height:24px; color:var(--dc2-accent-ink); }
/* Grafica */
.dc2-chartpanel__stats{ display:flex; gap:22px; flex-wrap:wrap; }
.dc2-chartpanel__stat{ display:flex; flex-direction:column; gap:2px; }
.dc2-chartpanel__stat small{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-chartpanel__stat b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:16px; font-weight:600; color:var(--dc2-ink); }
body.dc-layout .dc-dash--dashboard .dc2-chartpanel__frame{ height:250px; background:transparent; }
.dc2-chartpanel .dc-chart-wrap{ height:100%; }
.dc2-chartpanel svg{ color:var(--dc2-ink-soft); }
.dc2-chartpanel #opsLine{ stroke:var(--dc2-accent) !important; } .dc2-chartpanel #opsDot{ fill:var(--dc2-accent) !important; }
.dc2-chartpanel #fillGrad stop:first-child{ stop-color:var(--dc2-accent); stop-opacity:.26; } .dc2-chartpanel #fillGrad stop:last-child{ stop-color:var(--dc2-accent); stop-opacity:0; }
.dc2-chartpanel .dc-chart__tooltip{ background:var(--dc2-ink); color:var(--dc2-surface-card); border-radius:8px; }
@media (max-width:1100px){
  .dc2-dashgen{ grid-template-columns:1fr; }
  .dc2-dashside{ grid-template-rows:auto auto; }
  .dc2-mapstage__frame{ min-height:380px; }
}
@media (max-width:600px){
  .dc2-mapstage__frame{ min-height:300px; }
  .dc2-mapstage__head{ flex-wrap:wrap; }
  .dc2-statuspanel__body{ flex-direction:column; align-items:stretch; }
  .dc2-donut--lg{ align-self:center; }
  .dc2-chartpanel .dc2-panel__head{ flex-direction:column; align-items:flex-start; }
}

/* ---- M08 Subdashboards (ronda 5): podio top 3 con foto grande y rango, toolbar v2 en las tablas, fila superior sin cortes ---- */
body.dc-layout .dc-dash--dashboard .dc-pilots-main{ --pilots-row1-h:auto; grid-template-rows:auto auto; gap:18px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-top3, body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap{ height:auto; min-height:470px; }
body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap{ display:flex; overflow:hidden; }
body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap .dc-map-frame{ flex:1; min-height:470px; height:auto; }
body.dc-layout .dc-dash--dashboard .dc-dashspacer{ height:18px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-top3__head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-top3__head .dc2-subpills{ margin:0; }
.dc2-subpills--sm .dc2-subpills__item{ height:26px; padding:0 10px; font-size:11.5px; }
.dc2-top3{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:14px; flex:1; }
.dc2-top3card{ --top3-c:var(--dc2-neutral); position:relative; display:flex; flex-direction:column; min-width:0; border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-sunken); overflow:hidden; text-decoration:none; color:var(--dc2-ink); transition:transform .12s, border-color .12s, box-shadow .12s; }
.dc2-top3card:hover{ transform:translateY(-2px); border-color:var(--top3-c); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); }
.dc2-top3card--gold{ --top3-c:#e0a900; } .dc2-top3card--silver{ --top3-c:#9aa3b0; } .dc2-top3card--bronze{ --top3-c:#c27a34; }
.dc2-top3card__photo{ position:relative; aspect-ratio:4 / 3; background:var(--dc2-surface-card); overflow:hidden; border-bottom:3px solid var(--top3-c); }
.dc2-top3card__photo > img:first-child{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-top3card__rank{ position:absolute; top:8px; left:8px; width:26px; height:26px; border-radius:50%; background:var(--top3-c); color:#fff; font-family:"IBM Plex Mono","Poppins",monospace; font-weight:700; font-size:12.5px; display:grid; place-items:center; box-shadow:0 2px 6px rgba(0,0,0,.22); }
.dc2-top3card__medal{ position:absolute; top:6px; right:6px; width:30px; height:30px; object-fit:contain; filter:drop-shadow(0 2px 4px rgba(0,0,0,.22)); }
.dc2-top3card__body{ padding:10px 12px 2px; min-width:0; }
.dc2-top3card__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-top3card__meta{ font-size:11.5px; color:var(--dc2-ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:2px; }
.dc2-top3card__stats{ display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:8px 12px 12px; margin-top:auto; }
.dc2-top3card__stats span{ display:flex; flex-direction:column; min-width:0; }
.dc2-top3card__stats b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:15px; font-weight:600; color:var(--dc2-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-top3card__stats small{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); }
.dc2-top3card--empty{ align-items:center; justify-content:center; gap:8px; border-style:dashed; background:transparent; color:var(--dc2-ink-faint); font-size:12px; text-align:center; padding:16px; min-height:200px; }
.dc2-top3card--empty .dc2-ic{ width:22px; height:22px; }
/* Tabla del dashboard con la toolbar v2 dentro del marco. */
body.dc-layout .dc-dash--dashboard .dc-pilots-table{ padding:16px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table .dc2-toolbar{ margin-bottom:12px; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table .dc2-table-wrap{ margin:0; }
body.dc-layout .dc-dash--dashboard .dc-pilots-table .dc2-pager{ margin:12px 0 0; }
body.dc-layout .dc-dash--dashboard .dc2-toolbar__panel .dc2-info-btn{ align-self:center; }
@media (max-width:1200px){
  body.dc-layout .dc-dash--dashboard .dc-pilots-main{ grid-template-rows:auto auto auto; }
  body.dc-layout .dc-dash--dashboard .dc-pilots-top3{ min-height:0; }
}
@media (max-width:720px){
  .dc2-top3{ grid-template-columns:1fr; }
  .dc2-top3card{ flex-direction:row; align-items:stretch; }
  .dc2-top3card__photo{ aspect-ratio:auto; width:110px; flex:none; border-bottom:0; border-right:3px solid var(--top3-c); }
  .dc2-top3card__body{ padding:10px 12px 0; flex:1; }
  .dc2-top3card__stats{ margin-top:0; }
  .dc2-top3card--empty{ min-height:120px; }
  body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap, body.dc-layout .dc-dash--dashboard .dc-frame--pilotsmap .dc-map-frame{ min-height:340px; }
}

/* ---- M08 Dashboard de Operaciones (ronda 5): calendario como panel v2 con selectores de mes/año y tooltip; tabla con toolbar ---- */
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-ops-main{ gap:18px; margin-top:0; grid-template-columns:minmax(0,3fr) minmax(320px,2fr); }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opsmap{ height:auto; min-height:490px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opsmap .dc-map-frame{ min-height:490px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-ops-right{ display:flex; min-width:0; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opscal{ flex:1; height:auto; min-height:490px; overflow:visible; display:flex; flex-direction:column; padding:18px 20px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opscal > .dc2-panel__head{ margin-bottom:12px; flex-wrap:wrap; }
.dc-opscal__nav{ display:flex; gap:8px; align-items:center; margin:0; }
body.dc-layout .dc-opscal__nav .dc2-toolbar__select{ height:32px; font-size:12px; min-width:0; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opscal__grid{ display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); flex:1 1 auto; overflow:visible; gap:5px; align-content:start; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-cal__day{ height:36px; border-radius:9px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-cal__daynum{ font-size:12px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-callegend--inline{ margin:12px 0 0; padding:0; justify-content:flex-start; width:auto; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opsup{ margin-top:18px; padding:16px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opsup__head{ margin-bottom:12px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opsup .dc2-toolbar{ margin:0 0 12px; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opsup__scroll{ max-height:none; }
body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-opsup .dc2-pager{ margin-top:12px; }
body.dc-layout .dc-dash--dashboard .dc-dashbar__select optgroup{ font-weight:800; color:var(--dc2-ink-soft); }
@media (max-width:1100px){
  body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-ops-main{ grid-template-columns:1fr; }
  body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opsmap, body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opsmap .dc-map-frame{ min-height:380px; }
  body.dc-layout .dc-dash--dashboard.dc-dash--ops .dc-frame--opscal{ min-height:0; }
}

/* ---- M08 Dashboard de Mantenimientos (ronda 5): estado de la flota con donut y barras por tipo, ranking de urgencia,
   grafica de 12 meses con tooltip, tabla con toolbar v2 y vista por pildoras ---- */
.dc2-mtgrid{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:18px; margin-bottom:18px; align-items:stretch; }
.dc2-fleetpanel .dc2-statuspanel__body{ margin-bottom:18px; }
.dc2-mttolines{ display:flex; flex-direction:column; gap:12px; padding-top:14px; border-top:1px solid var(--dc2-border-soft); }
.dc2-mttoline{ display:grid; grid-template-columns:1fr; gap:6px; }
.dc2-mttoline small{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-mttoline em{ font-style:normal; font-size:11.5px; color:var(--dc2-ink-soft); font-family:"IBM Plex Mono","Poppins",monospace; }
.dc2-stackbar{ display:flex; height:10px; border-radius:999px; overflow:hidden; background:var(--dc2-surface-sunken); }
.dc2-stackbar i{ display:block; height:100%; }
.dc2-stackbar .is-ok{ background:var(--dc2-ok); } .dc2-stackbar .is-warn{ background:var(--dc2-warn); } .dc2-stackbar .is-bad{ background:var(--dc2-bad); }
.dc2-rankpanel{ display:flex; flex-direction:column; min-height:0; }
.dc2-mttorank{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px; }
.dc2-mttorank__item{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); padding:10px 12px; background:var(--dc2-surface-card); min-width:0; }
.dc2-mttorank__head{ display:flex; align-items:center; gap:8px; margin-bottom:8px; min-width:0; }
.dc2-mttorank__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:1; min-width:0; }
.dc2-mttorank__meta{ font-size:10.5px; color:var(--dc2-ink-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:52%; }
.dc2-mttorank__bars{ display:flex; flex-direction:column; gap:6px; }
.dc2-mttorank__bar{ --bar-c:var(--dc2-ok); display:grid; grid-template-columns:56px minmax(0,1fr) auto; align-items:center; gap:8px; }
.dc2-mttorank__bar.is-warn{ --bar-c:var(--dc2-warn); } .dc2-mttorank__bar.is-bad{ --bar-c:var(--dc2-bad); }
.dc2-mttorank__bar small{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
.dc2-mttorank__track{ display:block; height:8px; border-radius:999px; background:var(--dc2-surface-sunken); overflow:hidden; }
.dc2-mttorank__track > span{ display:block; height:100%; border-radius:999px; background:var(--bar-c); transition:width .3s; }
.dc2-mttorank__bar em{ font-style:normal; font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-soft); white-space:nowrap; min-width:64px; text-align:right; }
.dc2-mttorank__bar.is-bad em{ color:var(--dc2-bad); font-weight:600; }
.dc2-mtchart{ margin-bottom:18px; }
.dc2-mtchart__frame{ position:relative; height:250px; }
.dc2-mtchart__frame svg{ width:100%; height:100%; display:block; }
.dc2-mtchart .b-serv{ fill:var(--dc2-accent); } .dc2-mtchart .b-gen{ fill:var(--dc2-neutral); }
.dc2-mtchart .dc-chart__tooltip{ background:var(--dc2-ink); color:var(--dc2-surface-card); border-radius:8px; }
.dc2-legend-dot{ display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:5px; vertical-align:middle; }
.dc2-chartpanel__stats .dc2-info-btn{ align-self:center; }
body.dc-layout .dc-dash--dashboard .dc-mtlist .dc2-toolbar{ margin:0 0 12px; }
body.dc-layout .dc-dash--dashboard .dc-mtlist .dc2-pager{ margin-top:12px; }
body.dc-layout .dc-dash--dashboard .dc-mtlist .dc2-table-wrap{ margin:0; }
.dc2-subpills--inline{ margin:0; flex-wrap:nowrap; }
button.dc2-subpills__item{ cursor:pointer; font-family:inherit; }
.dc2-muted{ color:var(--dc2-ink-faint); font-size:11.5px; }
@media (max-width:1100px){ .dc2-mtgrid{ grid-template-columns:1fr; } }
@media (max-width:760px){ .dc2-mttorank{ grid-template-columns:1fr; } .dc2-mtchart__frame{ height:210px; } .dc2-mttorank__meta{ display:none; } }
/* Grafica de Mantenimientos: el SVG llena el marco (el CSS legacy le ponia height:auto y desbordaba); el viewBox lo fija el JS al tamano real. */
body.dc-layout .dc-dash--maint .dc2-mtchart__frame .dc-mtcorr__svg{ height:100%; width:100%; }
/* Tablas de los dashboards: las horas y los recuentos no se parten en dos lineas cuando la tabla va justa. */
body.dc-layout .dc-dash--dashboard .dc-ptable--dpil td[data-col="horas"], body.dc-layout .dc-dash--dashboard .dc-ptable--dpil td[data-col="ops"], body.dc-layout .dc-dash--dashboard .dc-ptable--duas td:nth-last-child(-n+2), body.dc-layout .dc-dash--dashboard .dc-ptable--dops td:first-child{ white-space:nowrap; }

/* ---- Ronda 6: publicidad del dashboard como tarjeta, paneles de Mantenimientos a la misma altura, tarjetas
   de seleccion del wizard, conmutador de mapa de las tarjetas de Operaciones, interruptor y barra masiva v2 ---- */
.dc2-dashside{ grid-template-rows:auto minmax(0,1fr) auto; }
.dc2-adcard{ display:block; padding:0; overflow:hidden; aspect-ratio:3.2 / 1; min-height:96px; text-decoration:none; }
.dc2-adcard .dc-ad__img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-adcard:hover{ border-color:var(--dc2-accent); }
@media (max-width:1100px){ .dc2-dashside{ grid-template-rows:auto auto auto; } .dc2-adcard{ aspect-ratio:4 / 1; } }
/* Mantenimientos: los dos paneles superiores estiran a la misma altura y la lista ocupa el hueco. */
.dc2-mtgrid > .dc2-panel{ height:100%; min-height:0; box-sizing:border-box; }
.dc2-fleetpanel{ display:flex; flex-direction:column; }
.dc2-fleetpanel .dc2-mttolines{ margin-top:auto; }
.dc2-rankpanel .dc2-mttorank{ flex:1; align-content:start; }
.dc2-chartpanel__stats .dc2-toolbar__select{ height:32px; font-size:12px; }
.dc2-mono{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; }
/* Wizard: tarjetas de seleccion mas anchas, foto mayor e iconos de estado en el pie. */
.dc2-ficha .dc2-cards-grid.dc2-selgrid{ grid-template-columns:repeat(auto-fill, minmax(340px, 1fr)); gap:14px; }
.dc2-selcard .dc2-card__avatar{ width:56px; height:56px; border-radius:16px; }
.dc2-selcard .dc2-card__title{ font-size:14px; }
.dc2-selcard .dc2-card__foot{ border-top:1px solid var(--dc2-border-soft); padding-top:10px; margin-top:2px; }
.dc2-selcard .dc2-card__foot-states{ gap:6px; }
.dc2-cert--empty{ visibility:hidden; }
.dc-op-selectcard.is-assigned{ border-color:var(--dc2-ok); box-shadow:0 0 0 2px var(--dc2-ok-soft); }
/* Operaciones: conmutador Mapa/Satelite de las tarjetas. */
.dc2-viewswitch--maptype{ margin-right:2px; }
/* Interruptor v2 (Forzar 2FA y similares). */
.dc2-switch{ position:relative; display:inline-block; width:42px; height:24px; flex:none; }
.dc2-switch input{ position:absolute; opacity:0; width:0; height:0; }
.dc2-switch__track{ position:absolute; inset:0; border-radius:999px; background:var(--dc2-border); transition:background .18s; }
.dc2-switch__track::after{ content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .18s; }
.dc2-switch input:checked + .dc2-switch__track{ background:var(--dc2-ok); }
.dc2-switch input:checked + .dc2-switch__track::after{ transform:translateX(18px); }
.dc2-switch input:disabled + .dc2-switch__track{ opacity:.7; cursor:not-allowed; }
.dc2-switchrow{ display:flex; align-items:center; gap:12px; cursor:pointer; }
.dc2-switchrow__text{ display:flex; flex-direction:column; gap:2px; font-size:13px; }
.dc2-switchrow__text b{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; }
.dc2-switchrow__text small{ font-size:12px; color:var(--dc2-ink-soft); }
/* Barra flotante de acciones masivas (gestion de usuarios). */
.dc2-bulkbar{ position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:1000; display:none; align-items:center; gap:12px; flex-wrap:wrap; max-width:calc(100vw - 32px); padding:10px 14px; border-radius:var(--dc2-radius-lg); background:var(--dc2-ink); color:var(--dc2-surface-card); box-shadow:var(--dc2-shadow-pop); }
.dc2-bulkbar.is-on{ display:flex; }
.dc2-bulkbar__count{ font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; font-size:15px; }
.dc2-bulkbar .dc2-toolbar__select{ min-width:260px; background:var(--dc2-surface-card); color:var(--dc2-ink); }
.dc2-bulkbar .dc2-btn--ghost{ color:var(--dc2-surface-card); border-color:color-mix(in srgb, var(--dc2-surface-card) 40%, transparent); }
.dc2-bulkbar .dc2-btn--ghost:hover{ background:color-mix(in srgb, var(--dc2-surface-card) 12%, transparent); color:var(--dc2-surface-card); }
/* Gestion de usuarios: tabla ancha con controles en linea. */
.dc2-table--gest{ table-layout:fixed; min-width:1380px; }
.dc2-table--gest td, .dc2-table--gest th{ padding:8px 8px; }
.dc2-table--gest .dc2-gest-select{ height:30px; padding:0 8px; border-radius:8px; border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); font:inherit; font-size:12px; max-width:100%; }
.dc2-table--gest input[type="checkbox"]{ width:16px; height:16px; accent-color:var(--dc2-accent); margin:0; vertical-align:middle; cursor:pointer; }
.dc2-table--gest .dc2-table__id{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; color:var(--dc2-accent-ink); text-decoration:none; font-weight:600; }
/* Mi cuenta: cabecera con foto grande y cambio de imagen encima. */
.dc2-account__hero{ display:flex; align-items:center; gap:20px; margin-bottom:22px; }
.dc2-account__avatar{ position:relative; width:112px; height:112px; flex:none; }
.dc2-account__avatar .dc-logoUploader{ width:100%; height:100%; margin:0; }
.dc2-account__avatar .dc-logoUploader__preview{ width:112px; height:112px; border-radius:50%; overflow:hidden; background:var(--dc2-surface-sunken); border:3px solid var(--dc2-surface-card); box-shadow:var(--dc2-shadow-card); margin:0; }
.dc2-account__avatar .dc-logoUploader__preview img{ width:100%; height:100%; object-fit:cover; display:block; }
.dc2-account__avatar .dc-logoUploader__placeholder{ width:100%; height:100%; display:grid; place-items:center; }
.dc2-account__avatar .dc-logoUploader__phIcon{ width:44px; height:44px; opacity:.5; }
.dc2-account__avatar .dc-logoUploader__actions{ position:absolute; right:-2px; bottom:-2px; display:flex; gap:4px; margin:0; }
.dc2-account__avatar .dc-logoUploader__input{ display:none; }
.dc2-account__body{ min-width:0; }
.dc2-account__name{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:20px; color:var(--dc2-ink); }
.dc2-account__role{ font-size:13px; color:var(--dc2-ink-soft); margin-top:2px; }
.dc2-account__chips{ margin-top:8px; }
.dc2-account__grid{ display:grid; grid-template-columns:minmax(0,1.4fr) minmax(300px,1fr); gap:18px; align-items:start; }
@media (max-width:1000px){ .dc2-account__grid{ grid-template-columns:1fr; } }
@media (max-width:600px){ .dc2-account__hero{ flex-direction:column; align-items:flex-start; } }
/* Panel de control de la operadora: rejilla de accesos con recuento. */
.dc2-hubgrid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:14px; }
.dc2-hubcard{ display:flex; align-items:center; gap:14px; padding:14px 16px; border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); text-decoration:none; color:var(--dc2-ink); transition:border-color .12s, transform .12s, box-shadow .12s; min-width:0; }
.dc2-hubcard:hover{ border-color:var(--dc2-accent); transform:translateY(-1px); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); }
.dc2-hubcard__ic{ width:42px; height:42px; border-radius:12px; display:grid; place-items:center; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); flex:none; }
.dc2-hubcard__ic .dc2-ic{ width:20px; height:20px; }
.dc2-hubcard__body{ min-width:0; flex:1; display:flex; flex-direction:column; gap:2px; }
.dc2-hubcard__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:13.5px; }
.dc2-hubcard__sub{ font-size:12px; color:var(--dc2-ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-hubcard__num{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:18px; font-weight:600; color:var(--dc2-ink); flex:none; }
.dc2-hubgrid--2{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.dc2-logohero{ display:flex; align-items:center; gap:20px; }
.dc2-logohero .dc-logoUploader{ margin:0; width:132px; }
.dc2-logohero .dc-logoUploader__preview{ width:132px; height:132px; border-radius:var(--dc2-radius-md); overflow:hidden; background:var(--dc2-surface-sunken); border:1px solid var(--dc2-border-soft); display:grid; place-items:center; }
.dc2-logohero .dc-logoUploader__preview img{ width:100%; height:100%; object-fit:contain; display:block; }
.dc2-logohero .dc-logoUploader__phIcon{ width:40px; height:40px; opacity:.5; }
.dc2-logohero .dc-logoUploader__input{ display:none; }
.dc2-logohero .dc-logoUploader__actions{ display:flex; gap:8px; margin-top:8px; flex-wrap:wrap; }
.dc2-logohero__text{ min-width:0; }
.dc2-logohero__text p{ margin:4px 0 0; font-size:13px; color:var(--dc2-ink-soft); }
@media (max-width:760px){ .dc2-hubgrid--2{ grid-template-columns:1fr; } .dc2-logohero{ flex-direction:column; align-items:flex-start; } }
.dc2-form--1col{ grid-template-columns:1fr; }
.dc2-account__grid form .dc2-inputgroup .dc-input{ flex:1; min-width:0; }
/* Crear auxiliar (panel lateral): un panel, imagen compacta arriba y rejilla v2. */
.dc2-logohero--sm .dc-logoUploader{ width:88px; }
.dc2-logohero--sm .dc-logoUploader__preview{ width:88px; height:88px; border-radius:50%; }
.dc2-logohero--sm{ margin-bottom:18px; padding-bottom:16px; border-bottom:1px solid var(--dc2-border-soft); }
.dc2-form--aux{ grid-template-columns:repeat(2, minmax(0,1fr)); }
.dc2-form--aux .dc-field--full{ grid-column:1 / -1; }
@media (max-width:640px){ .dc2-form--aux{ grid-template-columns:1fr; } }

/* ---- Ronda 7 (A): separaciones de Mantenimientos y del lateral del general, checkbox corporativo en tablas,
   campos obligatorios marcados en todos los formularios, truncado en Logs DJI, modal con iframe ---- */
.dc2-mtgrid > .dc2-panel ~ .dc2-panel, .dc2-dashside > .dc2-panel ~ .dc2-panel, .dc2-dashgen > .dc2-panel ~ .dc2-panel{ margin-top:0; }
.dc2-mtchart, .dc2-mtgrid + .dc2-mtchart{ margin-top:18px; }
/* Checkbox corporativo en cualquier tabla v2 (Logs DJI tenia el nativo). */
.dc2-table input[type="checkbox"], .dc2-toolbar input[type="checkbox"]{ width:16px; height:16px; accent-color:var(--dc2-accent); margin:0; vertical-align:middle; cursor:pointer; }
.dc2-table input[type="checkbox"]:disabled{ cursor:not-allowed; opacity:.45; }
/* Obligatorios: asterisco en la etiqueta (formularios v2 y filas del wizard) y borde izquierdo mientras el campo este vacio. */
.dc-field:has([required]) > .dc-label::after, .dc-field:has([data-required="true"]) > .dc-label::after, .dc-field:has(.dc-required) > .dc-label::after,
.dc-opwizard .form-group:has([required]) > .textForm::after, .dc-opwizard .form-group:has(.dc-required) > .textForm::after,
.dc2-form label:has([required]) > .dc-label::after{ content:" *"; color:var(--dc2-bad); font-weight:800; }
body.dc-layout .dc2-ficha .dc-input.dc-required:not(.is-filled), body.dc-layout .dc2-form .dc-input.dc-required:not(.is-filled),
body.dc-layout .dc2-ficha .dc-input:required:invalid:not(:focus), body.dc-layout .dc2-form .dc-input:required:invalid:not(:focus),
body.dc-layout .dc2-ficha .dc-input[data-required="true"]:placeholder-shown:not(:focus){ box-shadow:inset 3px 0 0 var(--dc2-bad); }
/* Logs DJI: piloto y operacion con puntos suspensivos para acortar la tabla. */
.dc2-table td.dc-trunc > .dc-tc{ display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dc-ptable--logs td.dc-trunc{ max-width:220px; }
.dc-ptable--logs td:nth-child(5){ max-width:130px; }
.dc-ptable--logs td:nth-child(6){ max-width:190px; }
.dc-ptable--logs td:nth-child(3){ max-width:200px; }
/* Modal con iframe (carga de logs y similares). */
.dc2-dialog--frame{ display:flex; flex-direction:column; height:min(88vh, 900px); }
.dc2-dialog__frame{ flex:1; width:100%; border:0; background:var(--dc2-surface-card); }

/* ---- Ronda 7 (B): Meteo de la operacion con piel v2 (cabecera con el dia elegido en grande, tira de dias, horas) ---- */
.dc2-wx{ display:flex; flex-direction:column; gap:18px; }
.dc2-ficha .dc2-wx > .dc2-panel ~ .dc2-panel{ margin-top:0; }
.dc2-wx__hero{ display:grid; grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr); gap:24px; align-items:center; background:linear-gradient(135deg, var(--dc2-accent-soft) 0%, var(--dc2-surface-card) 55%); }
.dc2-wx__hero-main{ min-width:0; display:flex; flex-direction:column; gap:6px; }
.dc2-wx__place{ display:flex; align-items:center; gap:8px; font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:22px; color:var(--dc2-ink); }
.dc2-wx__place .dc2-ic{ width:20px; height:20px; color:var(--dc2-accent-ink); flex:none; }
.dc2-wx__planned{ font-size:13px; color:var(--dc2-ink-soft); }
.dc2-wx__planned strong{ font-family:"IBM Plex Mono","Poppins",monospace; color:var(--dc2-ink); margin-left:4px; }
.dc2-wx__actions{ display:flex; gap:10px; flex-wrap:wrap; margin-top:10px; }
.dc2-wx__actions .dc2-btn.is-disabled{ opacity:.55; cursor:not-allowed; }
.dc2-wx__updateform{ margin:0; }
.dc2-wx__now{ display:flex; align-items:center; gap:14px; padding:14px 18px; border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); border:1px solid var(--dc2-border-soft); box-shadow:var(--dc2-shadow-card); min-width:0; }
.dc2-wx__now-icon{ width:96px; height:96px; flex:none; }
.dc2-wx__now-body{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.dc2-wx__now-day{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.dc2-wx__now-temp{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:38px; font-weight:600; line-height:1; color:var(--dc2-ink); }
.dc2-wx__now-temp small{ font-size:16px; color:var(--dc2-ink-faint); font-weight:500; margin-left:4px; }
.dc2-wx__now-desc{ font-weight:700; color:var(--dc2-ink); text-transform:capitalize; }
.dc2-wx__now-meta{ display:flex; gap:8px; flex-wrap:wrap; margin-top:6px; }
.dc2-wx__chip{ display:inline-flex; align-items:center; gap:6px; height:26px; padding:0 10px; border-radius:var(--dc2-radius-pill); background:var(--dc2-surface-sunken); font-size:12px; font-weight:700; color:var(--dc2-ink-soft); white-space:nowrap; }
.dc2-wx__chip .dc2-ic{ width:14px; height:14px; }
.dc2-wx__chip.is-warn{ background:var(--dc2-warn-soft); color:var(--dc2-warn); }
.dc2-wx__nav{ display:flex; gap:6px; }
.dc2-wx__navbtn.is-hidden{ visibility:hidden; }
.dc2-wx__strip{ position:relative; min-width:0; }
.dc2-wx__days, .dc2-wx__hours{ display:flex; gap:12px; overflow-x:auto; scroll-snap-type:x proximity; padding:4px 2px 8px; scrollbar-width:thin; }
.dc2-wxday{ flex:0 0 150px; scroll-snap-align:start; display:flex; flex-direction:column; align-items:center; gap:4px; padding:12px 10px; border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-card); text-decoration:none; color:var(--dc2-ink); text-align:center; transition:border-color .12s, transform .12s, box-shadow .12s; min-width:0; }
.dc2-wxday:hover{ border-color:var(--dc2-accent); transform:translateY(-2px); box-shadow:var(--dc2-shadow-pop); color:var(--dc2-ink); }
.dc2-wxday.is-active{ border-color:var(--dc2-accent); background:var(--dc2-accent-soft); box-shadow:0 0 0 2px var(--dc2-accent-soft-2); }
.dc2-wxday.is-planned{ border-style:dashed; }
.dc2-wxday.is-planned.is-active{ border-style:solid; }
.dc2-wxday__date{ font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); display:flex; align-items:center; gap:6px; }
.dc2-wxday__flag{ display:inline-grid; place-items:center; width:18px; height:18px; border-radius:50%; background:var(--dc2-accent); color:#fff; }
.dc2-wxday__flag .dc2-ic{ width:11px; height:11px; }
.dc2-wxday__icon{ width:56px; height:56px; }
.dc2-wxday__temp{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:18px; font-weight:600; }
.dc2-wxday__temp small{ font-size:12px; color:var(--dc2-ink-faint); font-weight:500; }
.dc2-wxday__desc{ font-size:11.5px; color:var(--dc2-ink-soft); text-transform:capitalize; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.dc2-wxday__meta{ display:flex; gap:8px; margin-top:4px; font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-soft); }
.dc2-wxday__meta span{ display:inline-flex; align-items:center; gap:4px; }
.dc2-wxday__meta .dc2-ic{ width:12px; height:12px; }
.dc2-wxday__meta .is-warn{ color:var(--dc2-warn); font-weight:700; }
.dc2-wxhour{ flex:0 0 118px; scroll-snap-align:start; display:flex; flex-direction:column; align-items:center; gap:3px; padding:10px 8px 8px; border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-sunken); text-align:center; min-width:0; }
.dc2-wxhour__time{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:13px; font-weight:600; color:var(--dc2-ink); }
.dc2-wxhour__icon{ width:44px; height:44px; }
.dc2-wxhour__temp{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:17px; font-weight:600; }
.dc2-wxhour__desc{ font-size:11px; color:var(--dc2-ink-soft); text-transform:capitalize; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.dc2-wxhour__row{ display:inline-flex; align-items:center; gap:4px; font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-soft); }
.dc2-wxhour__row .dc2-ic{ width:12px; height:12px; }
.dc2-wxhour__row.is-warn{ color:var(--dc2-warn); font-weight:700; }
.dc2-wxhour__bar{ width:100%; height:4px; border-radius:999px; background:var(--dc2-border-soft); overflow:hidden; margin-top:4px; }
.dc2-wxhour__bar span{ display:block; height:100%; background:var(--dc2-accent); border-radius:999px; }
.dc2-ficha .dc-opwizard .dc-opheadtitle__wx{ width:34px; height:34px; vertical-align:middle; }
@media (max-width:900px){ .dc2-wx__hero{ grid-template-columns:1fr; } .dc2-wx__now-icon{ width:72px; height:72px; } .dc2-wx__now-temp{ font-size:30px; } }

/* ---- Ronda 7 (C): Panel de control de la operadora con la gestion dentro (marca, catalogos y sedes) ---- */
.dc2-panelop > .dc2-tabbar--sub{ position:sticky; top:calc(var(--dc2-header-h) + 8px); z-index:5; background:var(--dc2-surface); padding-top:4px; }
.dc2-panelop > div > .dc2-panel, .dc2-panelop > .dc2-panel, .dc2-panelop .dc2-catalogs .dc2-panel{ margin-top:0; }
.dc2-panelop > #marca, .dc2-panelop > #equipo, .dc2-panelop > .dc2-catalogs, .dc2-panelop > .dc2-sedes{ margin-top:18px; }
.dc2-panelop > #marca{ margin-top:0; }
.dc2-catalogs{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:18px; }
.dc2-catalog{ min-width:0; display:flex; flex-direction:column; }
.dc2-catalog .dc2-panel__head{ align-items:flex-start; }
.dc2-catalog .dc2-table-wrap{ flex:1; }
.dc2-catalog__table td{ padding:6px 8px; }
.dc2-catalog__input{ height:34px; font-size:13px; }
.dc2-catalog__table .dc2-table__actions{ justify-content:center; }
.dc2-sedes > .dc2-panel, .dc2-sedes .dc2-panel{ margin-top:0; }
@media (max-width:1100px){ .dc2-catalogs{ grid-template-columns:1fr; } }

/* ---- Ronda 7 (D): visor de logs (tabbar y subtabs v2, tarjetas con piel v2) y simulador con el mapa como escenario ---- */
body.dc-layout .dc-logv{ gap:18px; }
body.dc-layout .dc-logv > .dc-card, body.dc-layout .dc-logv .dc-logv-main > .dc-card, body.dc-layout .dc-logv .dc-logv-main .dc-card{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); padding:20px 22px; }
body.dc-layout .dc-logv .dc-card .dc-card{ box-shadow:none; background:var(--dc2-surface-sunken); border-color:var(--dc2-border-soft); }
body.dc-layout .dc-logv-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:18px; color:var(--dc2-ink); }
body.dc-layout .dc-logv-meta{ color:var(--dc2-ink-soft); font-size:12.5px; margin-top:2px; }
body.dc-layout .dc-logv-head-actions{ gap:8px; flex-wrap:wrap; }
body.dc-layout .dc-logv-head-actions .dc2-iconbtn.is-disabled, body.dc-layout .dc-logv-head-actions .dc2-btn.is-disabled{ opacity:.45; pointer-events:none; }
body.dc-layout .dc-logv-seq{ display:inline-flex; align-items:center; gap:4px; }
body.dc-layout .dc-logv-seq-count{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; color:var(--dc2-ink-soft); padding:0 4px; }
body.dc-layout .dc-logv .dc2-tabbar--ficha.dc-logv-tabs{ margin-bottom:12px; }
body.dc-layout .dc-logv .dc-logv-subtabs2{ margin:-2px 0 16px; }
body.dc-layout .dc-logv .dc-label.dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; color:var(--dc2-ink); }
body.dc-layout .dc-logv .dc-help{ color:var(--dc2-ink-soft); }
body.dc-layout .dc-logv-kpi{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); text-align:left; padding:10px 12px; }
body.dc-layout .dc-logv-kpi .k{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); }
body.dc-layout .dc-logv-kpi .v{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:17px; font-weight:600; color:var(--dc2-ink); }
body.dc-layout .dc-logv-map{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); }
body.dc-layout .dc-logv .dc-empty{ color:var(--dc2-ink-soft); }
body.dc-layout .dc-logv-filter{ border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-pill); background:var(--dc2-surface-card); color:var(--dc2-ink-soft); font-weight:700; font-size:12px; padding:5px 10px; cursor:pointer; }
body.dc-layout .dc-logv-filter span{ font-family:"IBM Plex Mono","Poppins",monospace; color:var(--dc2-ink); margin-left:4px; }
body.dc-layout .dc-logv-filter.is-active, body.dc-layout .dc-logv-filter[aria-pressed="true"]{ background:var(--dc2-accent); border-color:var(--dc2-accent); color:#fff; }
body.dc-layout .dc-logv-filter.is-active span, body.dc-layout .dc-logv-filter[aria-pressed="true"] span{ color:#fff; }
/* Simulador */
.dc2-sim__stage{ position:relative; border-radius:var(--dc2-radius-md); overflow:hidden; border:1px solid var(--dc2-border-soft); background:var(--dc2-surface-sunken); }
.dc2-sim__stage .dc-logv-map{ border:0; border-radius:0; min-height:0; }
.dc2-sim__stage .dc-logv-map > div{ height:min(72vh, 680px); min-height:460px; }
.dc2-sim__hud{ position:absolute; z-index:5; background:color-mix(in srgb, var(--dc2-surface-card) 86%, transparent); backdrop-filter:blur(10px) saturate(1.2); -webkit-backdrop-filter:blur(10px) saturate(1.2); border:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-pop); border-radius:var(--dc2-radius-md); pointer-events:auto; }
.dc2-sim__hud--top{ left:14px; top:14px; right:auto; display:flex; gap:0; padding:4px 6px; max-width:calc(100% - 28px); flex-wrap:wrap; }
.dc2-sim__tele{ display:flex; flex-direction:column; gap:1px; padding:6px 12px; min-width:88px; border-right:1px solid var(--dc2-border-soft); }
.dc2-sim__tele:last-child{ border-right:0; }
.dc2-sim__tele small{ font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); white-space:nowrap; }
.dc2-sim__tele b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:17px; font-weight:600; color:var(--dc2-ink); line-height:1.1; white-space:nowrap; }
.dc2-sim__hud--alerts{ right:14px; top:76px; display:flex; flex-direction:column; gap:4px; padding:6px; }
.dc2-sim__hud--alerts .dc-logv-filter{ display:flex; justify-content:space-between; gap:10px; }
.dc2-sim__hud--sticks{ left:14px; bottom:14px; display:flex; gap:12px; padding:10px 12px 8px; align-items:flex-start; }
.dc2-sim__stickcard{ display:flex; flex-direction:column; align-items:center; gap:4px; }
.dc2-sim__sticktitle{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); white-space:nowrap; }
.dc2-sim__stick{ position:relative; width:104px; height:104px; border-radius:50%; border:2px solid color-mix(in srgb, var(--dc2-accent) 35%, transparent); background:radial-gradient(circle, color-mix(in srgb, var(--dc2-accent) 10%, transparent) 0%, transparent 70%); }
.dc2-sim__stick::before, .dc2-sim__stick::after{ content:""; position:absolute; background:color-mix(in srgb, var(--dc2-accent) 22%, transparent); }
.dc2-sim__stick::before{ left:50%; top:8px; bottom:8px; width:1px; }
.dc2-sim__stick::after{ top:50%; left:8px; right:8px; height:1px; }
.dc2-sim__stickaxis{ position:absolute; inset:8px; border-radius:50%; border:1px dashed color-mix(in srgb, var(--dc2-accent) 25%, transparent); pointer-events:none; }
.dc2-sim__stickdot{ position:absolute; left:50%; top:50%; width:14px; height:14px; margin:-7px 0 0 -7px; border-radius:50%; background:var(--dc2-accent); box-shadow:0 0 0 4px color-mix(in srgb, var(--dc2-accent) 25%, transparent); transition:left .08s linear, top .08s linear; }
.dc2-sim__stickvals{ display:flex; gap:10px; font-family:"IBM Plex Mono","Poppins",monospace; font-size:10.5px; color:var(--dc2-ink-soft); white-space:nowrap; }
.dc2-sim__stickvals strong{ color:var(--dc2-ink); }
.dc2-sim__rcmode{ align-self:flex-end; font-size:10.5px; color:var(--dc2-ink-faint); font-weight:700; padding-bottom:2px; }
.dc2-sim__hud--readout{ right:14px; bottom:14px; display:grid; grid-template-columns:1fr; gap:4px; padding:8px 12px; min-width:220px; }
.dc2-sim__hud--readout > div{ display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.dc2-sim__hud--readout small{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); white-space:nowrap; }
.dc2-sim__hud--readout b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12.5px; font-weight:600; color:var(--dc2-ink); white-space:nowrap; }
.dc2-sim__transport{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:14px; }
.dc2-sim__timeline{ flex:1 1 320px; display:flex; align-items:center; gap:10px; min-width:0; }
.dc2-sim__timeline input[type="range"]{ flex:1; accent-color:var(--dc2-accent); min-width:0; }
.dc2-sim__time{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; color:var(--dc2-ink-soft); min-width:44px; text-align:center; }
.dc2-sim__lbl{ font-size:12px; font-weight:700; color:var(--dc2-ink-soft); }
body.dc-layout .dc2-sim__speed{ height:34px; min-width:0; width:auto; }
.dc2-sim__play{ min-width:96px; }
@media (max-width:900px){
  .dc2-sim__stage .dc-logv-map > div{ height:56vh; min-height:340px; }
  .dc2-sim__hud--top{ position:static; margin:0; border-radius:0; border-width:0 0 1px; box-shadow:none; }
  .dc2-sim__hud--alerts{ top:auto; bottom:14px; right:14px; }
  .dc2-sim__hud--sticks, .dc2-sim__hud--readout{ position:static; margin-top:10px; box-shadow:none; }
  .dc2-sim__hud--readout{ min-width:0; }
}

/* ---- Ronda 7 (E): dashboard general (aside: anuncio > proximas > estado; proximas con 3 visibles y scroll) y zonas de vuelo en tarjetas ---- */
.dc2-dashside{ grid-template-rows:auto auto minmax(0,1fr); }
.dc2-nextlist{ max-height:198px; padding-right:2px; }
.dc2-statuspanel{ display:flex; flex-direction:column; }
.dc2-statuspanel__body{ flex:1; }
.dc2-zonacard .dc2-opcard__row .dc2-mono{ font-size:12px; }

/* ---- Ronda 7 (F): tarjetas con satelite (mapa JS de Google por tarjeta, sin controles; Static Maps no da satelite en el EEE) ---- */
.dc2-opcard__map--live{ background:#0b1a1f; }
.dc2-opcard__map--live .dc2-livemap{ position:absolute; inset:0; }
.dc2-opcard__map--live .dc2-opcard__map-ph{ display:none; }
.dc2-opcard .dc2-opcard__state.dc2-pill, .dc2-opcard__code{ z-index:2; }
.dc2-livemap .gm-style > div:first-child{ pointer-events:none; }

/* ---- Ronda 7 (G): KPIs discretos en las tarjetas, panel de control por pestanas, catalogos con 5 filas y scroll, sedes, cargar logs v2 ---- */
/* Tarjetas: las cifras van sobre una linea fina, sin cajas grises, para que la tarjeta (imagen, titulo) mande. */
.dc2-card .dc2-stats{ gap:0; border-top:1px solid var(--dc2-border-soft); padding-top:10px; }
.dc2-card .dc2-stat{ background:transparent; border-radius:0; padding:0 12px 0 0; gap:1px; }
.dc2-card .dc2-stat + .dc2-stat{ border-left:1px solid var(--dc2-border-soft); padding-left:12px; padding-right:0; }
.dc2-card .dc2-stat__lbl{ font-size:10px; color:var(--dc2-ink-faint); }
.dc2-card .dc2-stat__val{ font-size:14.5px; }
/* Panel de control: pestanas normales (sin sticky), una seccion por pestana; catalogos a ancho de lectura. */
.dc2-panelop > .dc2-tabbar--sub{ position:static; padding-top:0; z-index:auto; }
.dc2-panelop > [data-panelop-section]{ margin-top:0; }
.dc2-panelop .dc2-catalogs{ display:block; max-width:820px; }
.dc2-catalog .dc2-table-wrap{ max-height:272px; overflow:auto; }
.dc2-catalog__table thead th{ position:sticky; top:0; z-index:1; background:var(--dc2-surface-card); }
.dc2-loc__tools{ display:flex; align-items:center; gap:8px; }
/* Cargar logs (modal y pagina): piel v2 sobre el markup e ids de siempre. */
.dc2-ficha .dc-uploader-wrap{ gap:18px; }
.dc2-ficha .dc-upload-top{ grid-template-columns:1fr; gap:14px; }
.dc2-ficha .dc-dropzone{ border:2px dashed var(--dc2-border); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); padding:26px 20px; transition:border-color .15s, background .15s; }
.dc2-ficha .dc-dropzone:hover, .dc2-ficha .dc-dropzone.is-dragover, .dc2-ficha .dc-dropzone.is-over, .dc2-ficha .dc-dropzone.has-files{ border-color:var(--dc2-accent); background:var(--dc2-accent-soft); }
.dc2-ficha .dc-dropzone.is-locked{ opacity:.55; }
.dc2-ficha .dc-dropzone__icon{ width:52px; height:52px; border-radius:16px; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); font-family:"IBM Plex Mono","Poppins",monospace; font-weight:700; font-size:12px; display:flex; align-items:center; justify-content:center; margin:0 auto 12px; }
.dc2-ficha .dc-dropzone__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:16px; color:var(--dc2-ink); }
.dc2-ficha .dc-dropzone__hint{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-file{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-sm); background:var(--dc2-surface-card); color:var(--dc2-ink); }
.dc2-ficha .dc-file__name{ color:var(--dc2-ink); }
.dc2-ficha .dc-file__size{ color:var(--dc2-ink-soft); }
.dc2-ficha .dc-logassign{ margin-top:4px; }
.dc2-ficha .dc-logassign .dc-ptools__left{ display:grid; grid-template-columns:repeat(auto-fit, minmax(220px,1fr)); gap:14px 18px; align-items:end; }
.dc2-ficha .dc-ptools__label{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-soft); }
.dc2-ficha .dc-ptools__select{ height:38px; border:1px solid var(--dc2-border); border-radius:10px; background:var(--dc2-surface-card); color:var(--dc2-ink); padding:0 10px; width:100%; }
.dc2-ficha .dc-logswitch__track{ background:var(--dc2-border); }
.dc2-ficha .dc-logswitch input[type="checkbox"]:checked + .dc-logswitch__track{ background:var(--dc2-accent); }
.dc2-ficha .dc-logswitch__text{ color:var(--dc2-ink); }
.dc2-ficha .dc-upload-side .dc-batch-guide{ border:1px solid var(--dc2-border-soft); border-left:3px solid var(--dc2-accent); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); padding:12px 14px; }
.dc2-ficha .dc-batch-guide__title{ font-weight:800; font-size:13px; color:var(--dc2-ink); margin-bottom:6px; }
.dc2-ficha .dc-batch-guide__list{ margin:0; padding-left:18px; color:var(--dc2-ink-soft); font-size:12.5px; }
.dc2-ficha .dc-logactions{ display:flex; justify-content:flex-end; gap:8px; }
.dc2-ficha .dc-logc-limit-msg{ border-radius:var(--dc2-radius-md); }
.dc2-ficha .dc-logc-results-card{ border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); padding:16px 18px; background:var(--dc2-surface-card); }
.dc2-ficha .dc-ptable--lcres thead th{ font-size:10.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); border-bottom:1px solid var(--dc2-border); }
.dc2-ficha .dc-ptable--lcres tbody td{ border-bottom:1px solid var(--dc2-border-soft); color:var(--dc2-ink); }
body.dc-embed .dc-logc-title-row, body.dc-embed .dc-logactions .dc-logc-back{ display:none; }
body.dc-embed .dc-dash--ops > .dc-card{ border:0; box-shadow:none; padding:0; background:transparent; }
.dc-processing-card{ background:var(--dc2-surface-card); color:var(--dc2-ink); border-radius:var(--dc2-radius-md); border:1px solid var(--dc2-border); }
.dc-progress{ background:var(--dc2-surface-sunken); }
.dc-progress__bar{ background:var(--dc2-accent); }
.dc2-panelop [data-panelop-section][hidden]{ display:none !important; }

/* ---- Ronda 7 (H): simulador con el mapa a la altura de la ventana, HUD ordenado (telemetria arriba, sticks abajo centrados,
   transporte superpuesto, avisos en pestana lateral, perfil de altura) y graficas del visor modernizadas ---- */
.dc2-sim__stage{ height:min(72vh, 720px); min-height:480px; background:#0b1a1f; }
.dc2-sim__stage:fullscreen{ height:100vh !important; border-radius:0; border:0; }
.dc2-sim__stage .dc2-sim__map{ position:absolute; inset:0; }
.dc2-sim__stage .dc-logv-map{ height:100%; min-height:0; }
.dc2-sim__stage .dc-logv-map > div{ height:100%; min-height:0; }
.dc2-sim__hud--top{ left:50%; right:auto; top:14px; transform:translateX(-50%); max-width:calc(100% - 400px); padding:2px 4px; flex-wrap:nowrap; }
.dc2-sim__tele{ padding:6px 12px; min-width:78px; }
.dc2-sim__tele b{ font-size:16px; }
/* Avisos: pestana en el borde derecho que abre un panel dentro del mapa. */
.dc2-sim__alertstab{ position:absolute; z-index:6; right:0; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; padding:12px 8px; border:1px solid var(--dc2-border); border-right:0; border-radius:12px 0 0 12px; background:color-mix(in srgb, var(--dc2-surface-card) 90%, transparent); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); color:var(--dc2-ink); cursor:pointer; box-shadow:var(--dc2-shadow-pop); font:inherit; }
.dc2-sim__alertstab span{ writing-mode:vertical-rl; transform:rotate(180deg); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--dc2-ink-soft); }
.dc2-sim__alertstab b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:11.5px; background:var(--dc2-bad); color:#fff; border-radius:999px; padding:1px 6px; }
.dc2-sim__alertstab .dc2-ic{ width:16px; height:16px; color:var(--dc2-bad); }
.dc2-sim__stage.is-alerts-open .dc2-sim__alertstab{ display:none; }
.dc2-sim__alerts{ position:absolute; z-index:7; top:14px; right:14px; bottom:84px; width:320px; max-width:calc(100% - 28px); display:flex; flex-direction:column; background:color-mix(in srgb, var(--dc2-surface-card) 94%, transparent); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-pop); overflow:hidden; }
.dc2-sim__alerts[hidden]{ display:none; }
.dc2-sim__alerts-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:8px; padding:12px 12px 8px; }
.dc2-sim__alerts-head b{ font-family:"Manrope","Poppins",sans-serif; font-size:14px; color:var(--dc2-ink); }
.dc2-sim__alerts-head small{ display:block; color:var(--dc2-ink-soft); font-size:11.5px; margin-top:2px; }
.dc2-sim__alerts-filters{ display:flex; flex-wrap:wrap; gap:4px; padding:0 12px 8px; }
.dc2-sim__alerts-filters .dc-logv-filter{ font-size:11px; padding:4px 9px; }
.dc2-sim__alerts-map{ margin:0 12px 8px; align-self:flex-start; }
.dc2-sim__alertlist{ list-style:none; margin:0; padding:0 8px 8px; overflow:auto; flex:1; display:flex; flex-direction:column; gap:4px; }
.dc2-sim__alertitem{ width:100%; display:flex; gap:10px; align-items:flex-start; text-align:left; border:1px solid var(--dc2-border-soft); border-left-width:3px; border-radius:10px; background:var(--dc2-surface-card); padding:8px 10px; cursor:pointer; font:inherit; color:var(--dc2-ink); }
.dc2-sim__alertitem:hover, .dc2-sim__alertitem.is-current{ border-color:var(--dc2-accent); background:var(--dc2-accent-soft); }
.dc2-sim__alertitem--critical{ border-left-color:var(--dc2-bad); }
.dc2-sim__alertitem--warning{ border-left-color:var(--dc2-warn); }
.dc2-sim__alertitem--info{ border-left-color:var(--dc2-accent); }
.dc2-sim__alertitem--media{ border-left-color:#0ea5a6; }
.dc2-sim__alerttime{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-soft); flex:none; padding-top:2px; }
.dc2-sim__alertbody{ min-width:0; flex:1; display:flex; flex-direction:column; gap:1px; }
.dc2-sim__alertbody b{ font-size:12.5px; }
.dc2-sim__alertbody small{ font-size:11.5px; color:var(--dc2-ink-soft); overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.dc2-sim__alertcount{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-faint); flex:none; }
.dc2-sim__alertempty{ padding:16px; text-align:center; color:var(--dc2-ink-faint); font-size:12.5px; }
/* Perfil de altura: avanza con el vuelo. */
.dc2-sim__hud--alt{ left:14px; bottom:84px; width:320px; max-width:calc(100% - 28px); padding:8px 10px 6px; }
.dc2-sim__hud--alt[hidden]{ display:none; }
.dc2-sim__alt-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:4px; }
.dc2-sim__alt-head small{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); }
.dc2-sim__alt-head b{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:13px; color:var(--dc2-ink); }
.dc2-sim__altsvg{ display:block; width:100%; height:70px; }
.dc2-sim__altarea{ fill:color-mix(in srgb, var(--dc2-accent) 16%, transparent); }
.dc2-sim__altline{ fill:none; stroke:color-mix(in srgb, var(--dc2-accent) 40%, transparent); stroke-width:1.5; vector-effect:non-scaling-stroke; }
.dc2-sim__altdone{ fill:none; stroke:var(--dc2-accent); stroke-width:2; vector-effect:non-scaling-stroke; }
.dc2-sim__altcursor{ stroke:var(--dc2-ink-faint); stroke-width:1; stroke-dasharray:3 3; vector-effect:non-scaling-stroke; }
.dc2-sim__altdot{ fill:var(--dc2-accent); stroke:#fff; stroke-width:1.5; vector-effect:non-scaling-stroke; }
/* Sticks abajo, centrados: solo los dos circulos y el modo. */
.dc2-sim__hud--sticks{ left:50%; transform:translateX(-50%); bottom:84px; padding:10px 14px; gap:16px; align-items:center; }
.dc2-sim__stick{ width:92px; height:92px; }
.dc2-sim__stickdot{ transition:transform .08s linear; }
.dc2-sim__rcmode{ align-self:center; font-family:"IBM Plex Mono","Poppins",monospace; font-size:11px; color:var(--dc2-ink-soft); padding:0; white-space:nowrap; }
.dc2-sim__hud--readout{ bottom:84px; min-width:200px; padding:8px 12px; }
/* Transporte superpuesto en la base del mapa. */
.dc2-sim__transport{ position:absolute; z-index:6; left:14px; right:14px; bottom:14px; margin:0; display:flex; align-items:center; gap:10px; padding:8px 10px; flex-wrap:nowrap; }
.dc2-sim__play{ display:inline-flex; align-items:center; gap:8px; height:38px; padding:0 16px 0 12px; border:0; border-radius:999px; background:var(--dc2-accent); color:#fff; font:inherit; font-weight:700; font-size:13px; cursor:pointer; min-width:0; flex:none; }
.dc2-sim__play .dc2-ic{ width:16px; height:16px; }
.dc2-sim__transport .dc2-iconbtn{ width:38px; height:38px; border-radius:999px; }
.dc2-sim__timeline{ flex:1 1 160px; }
.dc2-sim__speed{ height:34px; border:1px solid var(--dc2-border); border-radius:10px; background:var(--dc2-surface-card); color:var(--dc2-ink); padding:0 8px; font:inherit; font-size:12.5px; flex:none; }
.dc2-sim__tbtn{ display:inline-flex; align-items:center; gap:6px; height:34px; padding:0 12px; border:1px solid var(--dc2-border); border-radius:999px; background:var(--dc2-surface-card); color:var(--dc2-ink-soft); font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; text-decoration:none; white-space:nowrap; flex:none; }
.dc2-sim__tbtn .dc2-ic{ width:14px; height:14px; }
.dc2-sim__tbtn.is-active, .dc2-sim__tbtn:hover{ color:var(--dc2-accent-ink); border-color:var(--dc2-accent); }
.dc2-sim__flaglbl{ transform:translate(34px, -22px); text-shadow:0 1px 3px rgba(0,0,0,.7); white-space:nowrap; }
.dc2-sim__iw{ min-width:220px; max-width:280px; font-family:"Poppins",sans-serif; color:#1c1f23; }
.dc2-sim__iw-sev{ display:inline-block; padding:2px 8px; border-radius:999px; font-size:10px; font-weight:700; text-transform:uppercase; color:#fff; margin-bottom:6px; }
.dc2-sim__iw b{ display:block; margin-bottom:4px; font-size:13px; }
.dc2-sim__iw p{ margin:0 0 6px; font-size:12.5px; }
.dc2-sim__iw small{ color:#666; font-size:11.5px; }
/* Graficas del visor (Datos de vuelo, Bateria, RC): tarjeta limpia, KPIs sin cajas grises. */
body.dc-layout .dc-logv-chart-card{ border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-card); padding:14px 16px; overflow:visible; }
body.dc-layout .dc-logv-chart-card + .dc-logv-chart-card{ margin-top:18px; }
body.dc-layout .dc-logv-chart-card h3{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; color:var(--dc2-ink); margin:0 0 10px; }
body.dc-layout .dc-logv-chart-wrap{ height:300px; }
body.dc-layout .dc-logv-kpi{ background:transparent; border:0; border-left:2px solid color-mix(in srgb, var(--dc2-accent) 35%, transparent); border-radius:0; padding:4px 0 4px 12px; text-align:left; }
body.dc-layout .dc-logv-kpis{ gap:14px 18px; }
body.dc-layout .dc-logv > .dc-card + .dc-card, body.dc-layout .dc-logv-main > .dc-card + .dc-card, body.dc-layout .dc-logv-main > div + .dc-card{ margin-top:18px; }
/* Movil y tablet: sin sticks, lectura ni perfil; telemetria y transporte fuera del mapa; avisos siguen en su pestana. */
@media (max-width:900px){
  .dc2-sim__stage{ height:auto !important; min-height:0; display:flex; flex-direction:column; background:transparent; border:0; overflow:visible; }
  .dc2-sim__stage .dc2-sim__map{ position:relative; inset:auto; height:62vh; min-height:340px; border-radius:var(--dc2-radius-md); overflow:hidden; order:2; }
  .dc2-sim__hud--top{ position:static; transform:none; max-width:none; order:1; margin:0 0 10px; overflow-x:auto; flex-wrap:nowrap; border-width:1px; border-radius:var(--dc2-radius-md); box-shadow:none; }
  .dc2-sim__tele{ min-width:70px; padding:6px 10px; }
  .dc2-sim__tele b{ font-size:15px; }
  .dc2-sim__hud--sticks, .dc2-sim__hud--readout, .dc2-sim__hud--alt, .dc2-sim__transport [data-sim-desktop]{ display:none !important; }
  .dc2-sim__transport{ position:static; order:3; margin-top:10px; flex-wrap:wrap; box-shadow:none; }
  .dc2-sim__alertstab{ top:calc(50% + 20px); }
  .dc2-sim__alerts{ top:70px; bottom:auto; height:min(62vh, 480px); right:0; width:min(320px, 100%); }
}
/* Simulador en movil: el escenario nunca es mas ancho que la pantalla (la fila de telemetria se desplaza dentro). */
@media (max-width:900px){ .dc2-sim__stage{ width:100%; max-width:100%; min-width:0; } .dc2-sim__hud--top{ width:100%; min-width:0; } .dc-logv--simulador .dc-card{ min-width:0; } }

/* Visor de logs en movil: nada mas ancho que la pantalla (tabs y subtabs con scroll horizontal, cabecera que envuelve). */
@media (max-width:900px){
  body.dc-layout .dc-logv, body.dc-layout .dc-logv-main, body.dc-layout .dc-logv > .dc-card, body.dc-layout .dc-logv-main > .dc-card{ min-width:0; max-width:100%; }
  body.dc-layout .dc-logv-head{ flex-wrap:wrap; gap:10px; }
  body.dc-layout .dc-logv-head-actions{ width:100%; min-width:0; }
  body.dc-layout .dc-logv .dc2-tabbar__tabs{ flex-wrap:nowrap; overflow-x:auto; max-width:100%; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
  body.dc-layout .dc-logv .dc2-tabbar__tabs::-webkit-scrollbar{ display:none; }
  body.dc-layout .dc-logv .dc2-tab{ flex:none; }
}
@media (max-width:900px){ .dc2-sim__tele{ flex:none; } }

/* ---- Ronda 7 (I): correcciones (mapa del simulador a toda la altura, KPIs del visor con tarjeta, catalogos a todo el ancho, sedes en tarjetas) y visor 3D con el mismo HUD ---- */
/* Simulador 2D: el mapa llena el escenario aunque logs-visor.css fije alturas fijas al mapa. */
.dc-logv--simulador .dc2-sim__stage .dc-logv-map, .dc-logv--simulador .dc2-sim__stage .dc-logv-map--full{ height:100%; min-height:0; }
.dc-logv--simulador .dc2-sim__stage .dc-logv-map--full > div, .dc-logv--simulador .dc2-sim__stage .dc-logv-grid--map .dc-logv-map > div{ height:100%; min-height:0; }
/* KPIs del visor: tarjeta ligera con borde, sin cajas grises. */
body.dc-layout .dc-logv-kpi{ border:1px solid var(--dc2-border-soft); border-left:3px solid var(--dc2-accent); border-radius:12px; background:var(--dc2-surface-card); padding:10px 12px; text-align:left; box-shadow:none; }
body.dc-layout .dc-logv-kpi .k{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--dc2-ink-faint); margin-bottom:4px; }
body.dc-layout .dc-logv-kpi .v{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:17px; font-weight:600; color:var(--dc2-ink); }
/* Panel de control: los catalogos ocupan todo el ancho. */
.dc2-panelop .dc2-catalogs{ max-width:none; }
.dc2-catalog .dc2-table-wrap{ max-height:300px; }
/* Visor 3D: mismo escenario que el simulador 2D. */
.dc2-sim--3d .dc-3d-map{ position:absolute; inset:0; width:100%; height:100%; border:0; border-radius:0; }
.dc2-sim__status{ position:absolute; z-index:6; left:14px; top:14px; padding:6px 12px; border-radius:999px; font-size:12px; font-weight:600; color:var(--dc2-ink); background:color-mix(in srgb, var(--dc2-surface-card) 90%, transparent); border:1px solid var(--dc2-border); box-shadow:var(--dc2-shadow-card); display:block; max-width:min(60%, 420px); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dc2-sim__status[hidden]{ display:none; }
.dc2-sim__status[data-kind="error"]{ color:var(--dc2-bad); }
.dc2-sim__status[data-kind="warn"]{ color:var(--dc2-warn); }
.dc2-sim--3d .maplibregl-ctrl-top-right{ top:60px; }
.dc2-sim--3d .dc2-sim__hud--top{ max-width:calc(100% - 120px); }
.dc2-sim__resol{ height:34px; border:1px solid var(--dc2-border); border-radius:10px; background:var(--dc2-surface-card); color:var(--dc2-ink); padding:0 8px; font:inherit; font-size:12.5px; flex:none; }
@media (max-width:900px){
  .dc2-sim--3d .dc-3d-map{ position:relative; inset:auto; height:62vh; min-height:340px; border-radius:var(--dc2-radius-md); order:2; }
  .dc2-sim__status{ top:auto; left:14px; bottom:14px; }
}
/* KPIs del visor: tarjeta limpia sin la barra lateral (decision del usuario). */
body.dc-layout .dc-logv-kpi{ border:1px solid var(--dc2-border-soft); border-left:1px solid var(--dc2-border-soft); border-radius:14px; background:var(--dc2-surface-card); padding:12px 14px; box-shadow:0 1px 2px rgba(0,0,0,.03); }
body.dc-layout .dc-logv-kpi .k{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--dc2-ink-faint); margin-bottom:6px; }
body.dc-layout .dc-logv-kpi .v{ font-family:"IBM Plex Mono","Poppins",monospace; font-size:18px; font-weight:600; color:var(--dc2-ink); line-height:1.15; }

/* ---- Ronda 8 (A): Integraciones (dji/*, emisora/*): resumen por tarjetas, pestanas por integracion, guias con infografia,
        panel lateral propio (sin iframe) para conectar una cuenta DJI en dos pasos, y piel v2 de las tablas legacy del modulo ---- */
.dc2-integ > .dc2-tabbar--ficha{ margin-bottom:14px; }
.dc2-integ > .dc2-tabbar--sub{ margin:0 0 18px; }
.dc2-integ__how{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr); gap:22px; align-items:start; }
.dc2-integ__how .dc2-integ__info{ margin-bottom:0; }
.dc2-integ__zoom{ display:block; width:100%; padding:0; border:0; background:none; cursor:zoom-in; text-align:left; }
.dc2-integ__zoom:focus-visible{ outline:2px solid var(--dc2-accent-ink); outline-offset:3px; border-radius:10px; }
.dc2-lightbox{ position:fixed; inset:0; z-index:1400; background:rgba(8,16,17,.82); display:none; align-items:center; justify-content:center; padding:24px; cursor:zoom-out; }
.dc2-lightbox.is-open{ display:flex; }
.dc2-lightbox img{ max-width:min(1400px, 100%); max-height:100%; border-radius:12px; background:#fff; box-shadow:var(--dc2-shadow-pop); }
.dc2-lightbox__close{ position:absolute; top:16px; right:16px; }
.dc2-integ .dc2-panel + .dc2-panel{ margin-top:18px; }
.dc2-integ__grp{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--dc2-ink-faint); margin:0 0 10px; }
.dc2-integ__grid{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:14px; margin-bottom:22px; }
.dc2-integcard{ display:flex; flex-direction:column; gap:12px; min-width:0; padding:18px 20px; background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); }
.dc2-integcard__head{ display:flex; align-items:flex-start; gap:12px; }
.dc2-integcard__ic{ width:40px; height:40px; border-radius:12px; background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); display:grid; place-items:center; flex:none; }
.dc2-integcard__ic .dc2-ic{ width:19px; height:19px; }
.dc2-integcard__ic--off{ background:var(--dc2-surface-sunken); color:var(--dc2-ink-faint); }
.dc2-integcard__body{ flex:1; min-width:0; }
.dc2-integcard__title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:14px; }
.dc2-integcard__sub{ font-size:12px; color:var(--dc2-ink-soft); margin-top:2px; overflow-wrap:anywhere; white-space:normal; }
.dc2-integcard__meta{ font-size:12.5px; line-height:1.5; color:var(--dc2-ink-soft); }
.dc2-integcard__meta b{ color:var(--dc2-ink); font-family:"IBM Plex Mono","Poppins",monospace; font-weight:600; }
.dc2-integcard__foot{ display:flex; justify-content:flex-end; gap:8px; margin-top:auto; flex-wrap:wrap; }
.dc2-integ__cols{ display:grid; grid-template-columns:minmax(0,1.3fr) minmax(320px,1fr); gap:18px; align-items:start; }
.dc2-integ__cols--wide{ grid-template-columns:minmax(0,1fr) 320px; }
.dc2-integ__cols > .dc2-panel, .dc2-integ__cols > .dc2-integ__stack > .dc2-panel{ margin-top:0; }
.dc2-integ__stack{ display:flex; flex-direction:column; gap:18px; min-width:0; }
.dc2-integ__stack > .dc2-panel + .dc2-panel{ margin-top:0; }
.dc2-integ__info{ width:100%; display:block; border-radius:10px; border:1px solid var(--dc2-border-soft); margin-bottom:16px; background:#fff; }
.dc2-integ__guide{ display:grid; grid-template-columns:minmax(0,1fr) 180px; gap:18px; align-items:start; }
.dc2-integ__qr{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:12px; border:1px solid var(--dc2-border-soft); border-radius:12px; text-align:center; }
.dc2-integ__qr img{ width:120px; height:120px; border-radius:10px; display:block; }
.dc2-integ__qr .dc2-mono{ font-size:10.5px; word-break:break-all; }
.dc2-integ .dc2-steps .dc2-step__title{ margin-top:6px; }
.dc2-integ .dc2-steps .dc2-step__help{ margin-bottom:0; }
.dc2-integ .dc2-steps .dc2-step__help code{ background:var(--dc2-surface-sunken); padding:1px 6px; border-radius:4px; font-family:"IBM Plex Mono","Poppins",monospace; font-size:12px; }
.dc2-integ__health{ display:flex; flex-direction:column; }
.dc2-integ__health-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 0; border-bottom:1px solid var(--dc2-border-soft); font-size:13px; }
.dc2-integ__health-row:last-child{ border-bottom:0; }
.dc2-integ__health-row > span:last-child{ display:flex; align-items:center; gap:8px; }
.dc2-integ__health-row small{ font-size:12px; color:var(--dc2-ink-soft); }
.dc2-integ__facts{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px 24px; }
.dc2-integ__fact .dc2-field__lbl{ display:block; margin-bottom:3px; }
.dc2-integ__fact b{ font-weight:700; font-size:13.5px; overflow-wrap:anywhere; }
.dc2-integ__fact .dc2-mono{ font-size:12px; }
.dc2-integ .dc2-switchrow{ padding:10px 0; border-bottom:1px solid var(--dc2-border-soft); }
.dc2-integ .dc2-switchrow:last-child{ border-bottom:0; }
.dc2-integ .dc2-switchrow .dc2-switchrow__text{ flex:1; }
.dc2-integ .dc2-note + .dc2-note{ margin-top:10px; }
.dc2-integ .dc2-note--warn a, .dc2-integ .dc2-note--bad a{ color:inherit; font-weight:700; }
.dc2-integ .dc2-note .dc2-btn{ margin-left:auto; }
.dc2-integ .dc2-table--fit td{ padding:10px 10px; }
.dc2-integ .dc2-table--fit th{ white-space:nowrap; }
.dc2-integ .dc2-table--fit td:last-child{ white-space:nowrap; }
.dc2-integ .dc2-table__sub{ display:block; font-size:11.5px; color:var(--dc2-ink-soft); margin-top:2px; }
.dc2-integ .dc2-kpi-grid{ margin-bottom:18px; }
.dc2-integ__devlist{ display:flex; flex-direction:column; }
.dc2-integ__dev{ display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--dc2-border-soft); font-size:12.5px; color:var(--dc2-ink-soft); }
.dc2-integ__dev:last-child{ border-bottom:0; }
.dc2-integ__dev b{ color:var(--dc2-ink); }
.dc2-integ__devico{ position:relative; width:30px; height:30px; border-radius:9px; background:var(--dc2-surface-sunken); color:var(--dc2-ink-soft); display:grid; place-items:center; flex:none; }
.dc2-integ__devico .dc2-ic{ width:15px; height:15px; }
.dc2-integ__devico i{ position:absolute; right:-2px; bottom:-2px; width:9px; height:9px; border-radius:50%; border:2px solid var(--dc2-surface-card); background:var(--dc2-neutral); }
.dc2-integ__devico i.is-on{ background:var(--dc2-ok); }
/* Panel lateral propio (contenido inline, no iframe): mismas medidas que dc2-drawer. */
.dc2-drawer--inline{ display:flex; flex-direction:column; }
.dc2-drawer__body{ flex:1; overflow:auto; padding:20px; display:flex; flex-direction:column; gap:16px; }
.dc2-drawer__foot{ display:flex; justify-content:flex-end; gap:10px; padding:14px 20px; border-top:1px solid var(--dc2-border-soft); flex:none; }
.dc2-drawer__foot .dc2-drawer__foot-left{ margin-right:auto; }
.dc2-drawer__sub{ font-size:12px; color:var(--dc2-ink-soft); margin-top:2px; }
.dc2-drawer__steps{ display:flex; gap:8px; flex-wrap:wrap; }
/* Hero de descarga del APK (LogSync). */
.dc2-integ__dl{ display:flex; align-items:center; gap:16px; padding:14px 16px; border:1px solid var(--dc2-border-soft); border-radius:var(--dc2-radius-md); background:var(--dc2-surface-sunken); margin-bottom:16px; flex-wrap:wrap; }
.dc2-integ__dl-ic{ width:48px; height:48px; border-radius:14px; background:var(--dc2-accent); color:#fff; display:grid; place-items:center; flex:none; }
.dc2-integ__dl-ic .dc2-ic{ width:22px; height:22px; }
.dc2-integ__dl-body{ flex:1; min-width:180px; }
.dc2-integ__dl-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; }
.dc2-integ__dl-meta{ font-size:12px; color:var(--dc2-ink-soft); margin-top:2px; }
.dc2-integ__dl-notes{ font-size:12.5px; color:var(--dc2-ink-soft); margin-top:6px; line-height:1.45; }
/* Piel v2 de las tarjetas y tablas legacy (dc-card, dc-ptable, em-table) de las paginas del modulo aun no rediseñadas. */
.dc2-integ .dc-card{ background:var(--dc2-surface-card); border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-md); box-shadow:var(--dc2-shadow-card); color:var(--dc2-ink); padding:22px 24px; margin-bottom:18px; }
.dc2-integ .dc-card .dc-section-title{ font-family:"Manrope","Poppins",sans-serif; font-weight:800; font-size:15px; text-transform:none; letter-spacing:0; color:var(--dc2-ink); }
.dc2-integ .dc-input, .dc2-integ select.dc-input, .dc2-integ textarea.dc-input{ border:1px solid var(--dc2-border); background:var(--dc2-surface-card); color:var(--dc2-ink); border-radius:var(--dc2-radius-sm); }
.dc2-integ .dc-input:focus{ outline:2px solid var(--dc2-accent-ink); outline-offset:-1px; border-color:var(--dc2-accent); }
.dc2-integ .dc-btn--primary{ background:var(--dc2-accent); border-color:transparent; color:#fff; }
.dc2-integ .dc-btn--secondary{ background:var(--dc2-accent-soft); color:var(--dc2-accent-ink); border-color:transparent; }
@media (max-width:1100px){ .dc2-integ__grid{ grid-template-columns:repeat(2, minmax(0,1fr)); } .dc2-integ__cols, .dc2-integ__cols--wide{ grid-template-columns:1fr; } }
@media (max-width:900px){ .dc2-integ__how{ grid-template-columns:1fr; } }
@media (max-width:720px){ .dc2-integ__grid{ grid-template-columns:1fr; } .dc2-integ__guide{ grid-template-columns:1fr; } .dc2-integ__facts{ grid-template-columns:1fr; } .dc2-integ .dc2-kpi-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); } }

/* =========================================================
   M16 Formación · maestros y catálogos (F-01)
   ========================================================= */
.swal2-popup .dc2-form{ text-align:left; }
.dc2-catalog__table .dc2-catalog__input{ width:100%; }
.dc2-table textarea.dc2-input{ height:auto; min-height:50px; padding:6px 10px; resize:vertical; }
.dc2-table__action:disabled{ opacity:.3; cursor:not-allowed; }
.dc2-table tr.dc-ccle-row-saved td{ background:var(--dc2-ok-soft); transition:background .4s; }
.dc2-table tr.dc-ccle-row-error td{ background:var(--dc2-bad-soft); }
.dc2-table tbody tr:has(select.dc-ccle-estilo option[value="titulo"]:checked) td{ background:var(--dc2-accent-soft); }
.dc2-table tbody tr:has(select.dc-ccle-estilo option[value="subtitulo"]:checked) td{ background:var(--dc2-surface-sunken); }

/* M16 Formación · banner del asistente de onboarding (partial formacion-onboarding-wizard.php) */
.dc2-onb{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:16px; }
.dc2-onb__icon{ flex:0 0 auto; width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; background:var(--dc2-accent-soft); color:var(--dc2-accent); }
.dc2-onb__icon .dc2-ic{ width:22px; height:22px; }
.dc2-onb__body{ flex:1 1 300px; min-width:240px; }
.dc2-onb__body .dc2-panel__sub{ margin:2px 0 0; }
.dc2-onb__modal{ text-align:left; font-size:13px; }
.dc2-onb__modal .dc2-note{ margin-bottom:12px; }
.dc2-onb__note{ margin-top:12px; }
.dc2-onb__hint{ display:block; font-size:11px; margin-top:2px; }
.dc2-onb__modal .dc2-table td, .dc2-onb__modal .dc2-table th{ text-align:left; }
.dc2-onb__modal .dc2-table td.dc2-cell-center, .dc2-onb__modal .dc2-table th.dc2-cell-center{ text-align:center; }

/* M16 Formación · proyectos de formación (F-04) */
.dc2-table tr.fila-proyecto{ cursor:pointer; }
.dc2-table tr.fila-activa td{ background:var(--dc2-accent-soft); }
.dc2-table tr.detalle-row > td{ padding:14px 18px; background:var(--dc2-surface-sunken); }
.pa-piloto__header{ cursor:pointer; }
.pa-curso__header{ cursor:pointer; }
.pa-checks{ display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:6px 16px; }
.pa-check{ display:flex; align-items:center; gap:6px; font-size:12.5px; }

/* M16 Formación · alumnos.php (F-02): estados de fila/celda y controles inline que pinta el JS (ajax_alumnos.php) */
.dc2-table tbody tr.fila-alumno{ cursor:pointer; }
.dc2-table tbody tr.fila-activa td{ background:var(--dc2-ok-soft); }
.dc2-table tbody tr.fila-seleccionada td{ background:var(--dc2-warn-soft); }
.dc2-table tbody tr.row-dirty td{ background:var(--dc2-warn-soft); }
.dc2-table td.cell-saving{ background:var(--dc2-warn-soft) !important; }
.dc2-table td.cell-saved{ background:var(--dc2-ok-soft) !important; }
.dc2-table tr.detalle-row > td{ padding:0 0 0 14px; background:var(--dc2-surface-sunken); border-left:4px solid var(--dc2-accent); }
.dc2-table tr.detalle-row .dc2-panel{ border:0; box-shadow:none; border-radius:0; background:transparent; padding:14px 16px; }
.dc2-table tr.detalle-row .dc2-table td, .dc2-table tr.detalle-row .dc2-table th{ font-size:12px; padding:6px 8px; }
.barra-masiva{ display:none; position:sticky; bottom:0; margin-top:14px; padding:12px 16px; background:var(--dc2-surface-card); border-top:3px solid var(--dc2-accent); box-shadow:var(--dc2-shadow-pop); z-index:20; }
.barra-masiva.visible{ display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.chk-alumno, .chk-all-alumnos, .chk-inline{ width:17px; height:17px; cursor:pointer; accent-color:var(--dc2-accent); }
.chk-inline:disabled{ opacity:.5; cursor:wait; }
.chk-col-filter{ display:inline-flex; cursor:pointer; margin-left:3px; color:var(--dc2-ink-faint); vertical-align:middle; }
.chk-col-filter .dc2-ic{ width:12px; height:12px; }
.chk-col-filter:hover{ color:var(--dc2-accent-ink); }
.chk-col-filter.filter-checked{ color:var(--dc2-ok); }
.chk-col-filter.filter-unchecked{ color:var(--dc2-bad); }
.input-inline, .select-inline{ width:100%; box-sizing:border-box; font:inherit; font-size:12px; padding:4px 6px; border:1px solid transparent; border-radius:var(--dc2-radius-sm); background:transparent; color:var(--dc2-ink); }
.input-inline:hover, .select-inline:hover{ border-color:var(--dc2-border); }
.input-inline:focus, .select-inline:focus{ border-color:var(--dc2-accent-ink); background:var(--dc2-surface-card); outline:none; box-shadow:0 0 0 3px var(--dc2-accent-soft); }
#tabla-detallada th{ white-space:nowrap; }
#tabla-detallada .fila-masiva th{ padding:4px 6px; border-bottom:2px solid var(--dc2-accent); }
#tabla-detallada .dc2-sortlink.dc-sort--active{ color:var(--dc2-accent-ink); }
/* M16 Formación · textareas e inputs generados por JS en tablas (libro de progreso, plantillas) */
textarea.dc2-input, .dc2-form textarea.dc2-input{ height:auto; min-height:80px; padding:10px 12px; resize:vertical; }
.dc2-table .dc2-input{ width:100%; }
/* M16 Formación · cabecera de piloto en proyecto_alumnos.php: pills y acciones envuelven en móvil */
.pa-piloto__header{ flex-wrap:wrap; }
.pa-piloto__header .dc2-table__actions{ flex-wrap:wrap; justify-content:flex-end; }

/* Contenedor de mapa embebido en panel v2 (P-01) */
.dc2-mapbox{ height:280px; border-radius:var(--dc2-radius-sm); overflow:hidden; border:1px solid var(--dc2-border); background:var(--dc2-surface-sunken); margin-bottom:12px; }
/* Firma publica de consentimiento (AF-01) */
.dc-access__box--single.dc-access__box--wide{ max-width:760px; }
.dc2-prose--scroll{ max-height:400px; overflow-y:auto; }

/* M16 Lite (L-02): tarjetas seleccionables del asistente de operaciones y miniatura de ruta */
.dc2-selcard.is-selected{ border-color:var(--dc2-accent); box-shadow:0 0 0 2px var(--dc2-accent-soft); }
.dc2-selcard.is-selected .dc2-selcard__mark{ display:inline-flex; }
.dc2-routethumb{ position:relative; display:block; } .dc2-routethumb svg{ position:absolute; inset:0; width:100%; height:100%; }

/* Proyectos (P-02): celdas del zonificador (op-zonificar-grid.js), KPIs FH2 rellenados por JS, dot de estado C-UAS (proyecto_cuas.js) */
#zonCellList .dc-zon-cell-item{ display:inline-flex; align-items:center; gap:6px; padding:4px 8px; border:1px solid var(--dc2-border); border-radius:var(--dc2-radius-sm); font-size:12.5px; cursor:pointer; }
#zonCellList .dc-zon-cell-name{ font-family:"IBM Plex Mono","Poppins",monospace; }
.dc2-stat__val.is-pending{ color:var(--dc2-ink-faint); font-weight:400; } .dc2-stat__val.is-err{ color:var(--dc2-bad); } .dc2-stat__val.is-zero{ color:var(--dc2-ink-soft); }
.dc2-table .dc-usercard__dot{ display:inline-flex; align-items:center; justify-content:center; } .dc2-table .dc-usercard__dottxt{ font-size:10px; font-weight:800; color:#fff; }
