/* ===========================================================================
   Variables Críticas — capa de aplicación
   Extiende css/ternium.css (Manual de Sistemas TERNIUM). Aquí sólo va lo
   específico del sistema: shell de navegación, semáforo de riesgo/prioridad,
   tabs de la variable, matriz y gráficos.
   =========================================================================== */

/* --- Shell --------------------------------------------------------------- */
.vc-shell { display: flex; min-height: 100vh; }

.vc-side {
  width: 220px; flex: 0 0 220px;
  background: #22262b;                       /* lateral oscuro del mockup */
  color: #fff;
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
}
.vc-side__brand { display: flex; align-items: center; gap: 10px; padding: 16px 14px; }
.vc-side__logo {
  width: 32px; height: 32px; flex: 0 0 32px;
  border-radius: var(--radius); background: var(--color-brand-orange);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; letter-spacing: .04em; color: #fff;
}
.vc-side__brand b { display: block; font-size: 13px; font-weight: 700; }
.vc-side__brand b + span { display: block; font-size: 10px; font-weight: 300; color: rgba(255,255,255,.6); }

.vc-side__group { padding: 14px 14px 4px; font-size: 10px; font-weight: 600;
                  letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.38); }

.vc-nav {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; margin: 0 8px;
  border: 0; background: none; width: calc(100% - 16px);
  border-radius: var(--radius);
  font: inherit; font-size: 13px; font-weight: 600; color: rgba(255,255,255,.82);
  text-align: left; cursor: pointer;
}
.vc-nav:hover { background: rgba(255,255,255,.07); text-decoration: none; color: #fff; }
.vc-nav[aria-current="page"] { background: var(--color-brand-orange); color: #fff; }
.vc-nav i { font-size: 15px; width: 16px; text-align: center; }

.vc-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }

.vc-topbar {
  height: 42px; flex: 0 0 42px;
  background: var(--color-bg-panel); border-bottom: 1px solid var(--color-border);
  display: flex; align-items: center; gap: 10px; padding: 0 20px;
  position: sticky; top: 0; z-index: 20;
}
.vc-crumb { font-size: 12px; color: var(--color-text-light); }
.vc-crumb b { font-weight: 400; color: var(--color-text-main); }
.vc-topbar .spacer { flex: 1; }
.vc-user {
  width: 26px; height: 26px; border-radius: 50%; background: var(--color-action-primary);
  color: #fff; font-size: 10px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

.vc-page { padding: 20px; }
.vc-pagehead { display: flex; align-items: flex-start; gap: 15px; margin-bottom: 15px; }
.vc-pagehead h1 { font-size: 22px; font-weight: 700; color: #3d3f42; }
.vc-pagehead p  { margin: 4px 0 0; font-size: 12px; color: var(--color-text-light); max-width: 900px; }
.vc-pagehead .spacer { flex: 1; }

/* --- Tiles de encabezado (Manual §3.6, ancho fluido) --------------------- */
.vc-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: var(--tile-gap); margin-bottom: 15px; }
.vc-kpi { background: var(--color-bg-panel); border: 1px solid var(--color-border); padding: 12px 15px; }
.vc-kpi .k { font-size: 11px; font-weight: 600; text-transform: uppercase; color: var(--color-text-light); }
.vc-kpi .v { font-size: 40px; font-weight: 600; line-height: 1.05; color: var(--color-brand-orange-2); }
.vc-kpi .s { font-size: 10px; font-weight: 300; }
.vc-kpi--sm .v { font-size: 22px; font-weight: 700; color: var(--color-text-main); }

/* --- Semáforo de riesgo, riesgo global y prioridad ----------------------- */
.vc-badge {
  display: inline-block; padding: 2px 7px; border-radius: var(--radius);
  font-size: 11px; font-weight: 700; white-space: nowrap; letter-spacing: .02em;
}
.vc-badge.r1,  .vc-badge.rg1 { background: #e8f7e2; color: #2f7d16; }
.vc-badge.r2,  .vc-badge.rg2 { background: #fff4d1; color: #8a6a00; }
.vc-badge.r3,  .vc-badge.rg3 { background: #fde3df; color: #b93222; }
.vc-badge.rg4                { background: var(--color-status-danger); color: #fff; }

.vc-badge.p1 { background: var(--color-status-danger); color: #fff; }
.vc-badge.p2 { background: #ffe8c2; color: #9a5b00; }
.vc-badge.p3 { background: #fff8cc; color: #7a6a00; }
.vc-badge.p4 { background: #e8f7e2; color: #2f7d16; }

.vc-badge.e-borrador  { background: #eceef0; color: #5b5e62; }
.vc-badge.e-asignada  { background: #e3eefb; color: #1f5fa8; }
.vc-badge.e-proceso   { background: #fff4d1; color: #8a6a00; }
.vc-badge.e-pendiente { background: #ede4f7; color: #6b3fa0; }
.vc-badge.e-rechazada { background: #fde3df; color: #b93222; }
.vc-badge.e-cerrada   { background: #e8f7e2; color: #2f7d16; }

/* --- Leyenda de origen del dato (administrable vs calculado) ------------- */
.vc-leyenda { display: flex; align-items: center; gap: 15px; font-size: 11px; color: var(--color-text-light); }
.vc-leyenda .li { display: inline-flex; align-items: center; gap: 6px; }
.vc-dot-admin { width: 7px; height: 7px; border-radius: 50%; background: var(--color-purple); display: inline-block; }
.vc-dot-calc  { width: 7px; height: 7px; border-radius: 50%; background: var(--color-status-neutral-dark); display: inline-block; }

.vc-field-admin > .tx-label::before {
  content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: var(--color-purple); margin-right: 6px; vertical-align: middle;
}
.vc-field-admin .tx-input,
.vc-field-admin .tx-select,
.vc-field-admin textarea.tx-input { border-left: 2px solid var(--color-purple); }

.vc-calc {
  background: var(--color-bg-alt); border: 1px solid var(--color-border);
  border-radius: var(--radius); padding: 6px 10px;
}
.vc-calc .k { font-size: 10px; font-weight: 300; color: var(--color-text-light); display: block; }
.vc-calc .v { font-size: 13px; font-weight: 600; }

/* --- Formularios --------------------------------------------------------- */
/* El manual §3.3 separa 20px los controles consecutivos. Dentro de una grilla
   ese margen desalinea la primera columna: se anula en los contenedores que
   ya gobiernan la separación con `gap`. */
.vc-form .tx-field + .tx-field,
.vc-filtros .tx-field + .tx-field,
.vc-dim__in .tx-field + .tx-field,
.vc-cap .tx-field + .tx-field { margin-top: 0; }

.vc-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.vc-form .col-2 { grid-column: span 2; }
.vc-form .col-3 { grid-column: span 3; }
textarea.tx-input { height: auto; min-height: 68px; padding: 8px 10px; resize: vertical; line-height: 1.45; }

.vc-hint {
  background: #f4f8fb; border: 1px solid #dde7ef; border-radius: var(--radius);
  padding: 8px 12px; font-size: 12px; color: #4a5a68; margin-bottom: 15px;
}
.vc-hint b { font-weight: 600; }

/* --- Filtros ------------------------------------------------------------- */
.vc-filtros { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: 15px; align-items: end; }
@media (max-width: 1100px) { .vc-filtros { grid-template-columns: 1fr 1fr; } }

/* --- Tabs de la variable ------------------------------------------------- */
.vc-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--color-border); padding: 0 20px; overflow-x: auto; }
.vc-tab {
  position: relative; border: 0; background: none; cursor: pointer;
  padding: 14px 12px; font: inherit; font-size: 13px; color: var(--color-text-main);
  white-space: nowrap;
}
.vc-tab[aria-selected="true"] { color: var(--color-brand-orange-2); font-weight: 600; }
.vc-tab[aria-selected="true"]::after {
  content: ""; position: absolute; left: 2px; right: 2px; bottom: -1px;
  height: 3px; background: var(--color-brand-orange-2);
}

/* --- Tarjeta de dimensión de riesgo -------------------------------------- */
.vc-dims { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; align-items: start; }
@media (max-width: 1200px) { .vc-dims { grid-template-columns: 1fr; } }

.vc-dim {
  display: flex; flex-direction: column;
  border: 1px solid var(--color-border); border-top: 3px solid var(--dim);
  background: var(--color-bg-panel);
}
.vc-dim__head {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 15px; border-bottom: 1px solid var(--color-border);
}
.vc-dim__head .t { flex: 1; font-size: 15px; font-weight: 600; color: #3d3f42; }
.vc-dim__in { padding: 15px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }

/* Franja de resultados: no son campos, son lecturas. Sin caja, con divisores. */
.vc-out {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--color-border); background: var(--color-bg-alt); margin-top: auto;
}
.vc-out > div { padding: 9px 15px; min-width: 0; }
.vc-out > div + div { border-left: 1px solid var(--color-border); }
.vc-out .k {
  display: block; font-size: 10px; font-weight: 600; letter-spacing: .06em;
  text-transform: uppercase; color: var(--color-text-light);
}
.vc-out .v { font-size: 15px; font-weight: 600; color: #3d3f42; }
.vc-out .v.on { color: var(--color-status-danger); }

/* --- Tarjeta de capacidad tecnológica ------------------------------------ */
.vc-caps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 15px; align-items: start; }
@media (max-width: 1200px) { .vc-caps { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px)  { .vc-caps { grid-template-columns: 1fr; } }

.vc-cap {
  display: flex; flex-direction: column;
  border: 1px solid var(--color-border); border-top: 3px solid var(--cap, var(--color-status-neutral));
  background: var(--color-bg-panel);
}
.vc-cap__head {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 15px; border-bottom: 1px solid var(--color-border);
}
.vc-cap__head .t { flex: 1; font-size: 15px; font-weight: 600; color: #3d3f42; }
.vc-cap__head .p { font-size: 22px; font-weight: 700; color: var(--cap); line-height: 1; }
.vc-cap__in { padding: 15px; }
.vc-cap__bar { margin-top: 12px; }
.vc-cap__bar .lbl { display: flex; justify-content: space-between; font-size: 10px;
                    text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-light); margin-bottom: 5px; }

/* --- Resumen de matriz "Planta - Proceso" -------------------------------- */
.vc-matriz { max-height: 560px; overflow: auto; border: 1px solid var(--color-border); }
.vc-matriz table { width: 100%; border-collapse: collapse; }
.vc-matriz th.blk {
  text-align: left; padding: 6px 10px; font-size: 12px; font-weight: 700;
  color: #fff; position: sticky; top: 0; z-index: 2;
}
.vc-matriz tr.sub th {
  text-align: left; padding: 5px 10px; font-size: 11px; font-weight: 700;
  background: #ffe800; color: #3d3f42; text-transform: uppercase;
}
.vc-matriz td { padding: 6px 10px; border-bottom: 1px solid var(--color-border); font-size: 12px; }
.vc-matriz td.k { width: 38%; color: var(--color-text-main); }
.vc-matriz td.v { font-weight: 600; color: #3d3f42; }
.vc-matriz tbody tr:nth-child(odd) td { background: var(--color-bg-alt); }

/* --- Reportes ------------------------------------------------------------ */
.vc-rep { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 15px; align-items: start; }
@media (max-width: 900px) { .vc-rep { grid-template-columns: 1fr; } }
.vc-replist { background: var(--color-bg-panel); border: 1px solid var(--color-border); padding: 10px; }
.vc-replist button {
  display: block; width: 100%; text-align: left; border: 1px solid var(--color-border);
  background: var(--color-bg-panel); border-radius: var(--radius);
  padding: 8px 10px; font: inherit; font-size: 13px; font-weight: 600;
  color: var(--color-text-main); cursor: pointer; margin-bottom: 6px;
}
.vc-replist button:hover { background: var(--color-bg-alt); }
.vc-replist button[aria-current="true"] { border-color: var(--color-brand-orange); color: var(--color-brand-orange-2); }
.vc-replist .g { font-size: 10px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
                 color: var(--color-text-light); padding: 8px 4px 4px; }

/* Matriz de priorización — heat map del reporte */
.vc-heat { border-collapse: collapse; width: 100%; }
.vc-heat th, .vc-heat td { border: 1px solid #fff; padding: 6px 8px; text-align: center; font-size: 12px; }
.vc-heat th.rowh { background: #2e5f8a; color: #fff; text-align: left; font-weight: 700; }
.vc-heat th.rowlbl { background: var(--color-bg-panel); color: #3d3f42; text-align: left; font-weight: 700;
                     border: 1px solid var(--color-border); }
.vc-heat td.n { font-weight: 700; }
.vc-heat td.kpirange { background: var(--color-bg-panel); color: var(--color-text-main);
                       border: 1px solid var(--color-border); font-weight: 400; font-size: 11px; }
.vc-heat tfoot td { background: var(--color-bg-panel); border: 1px solid var(--color-border); font-weight: 700; }

.vc-chart { width: 100%; height: auto; display: block; }
.vc-chart text { font-family: "Open Sans", sans-serif; fill: var(--color-text-main); }
.vc-chart .gl { stroke: var(--color-border); stroke-width: 1; }
.vc-chart .vl { font-size: 11px; font-weight: 600; }
.vc-chart .cl { font-size: 11px; }

.vc-legend { display: flex; flex-wrap: wrap; gap: 15px; padding: 10px 0 0; font-size: 11px; }
.vc-legend .li { display: inline-flex; align-items: center; gap: 6px; }

/* --- Catálogos ----------------------------------------------------------- */
.vc-cat { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 15px; align-items: start; }
@media (max-width: 900px) { .vc-cat { grid-template-columns: 1fr; } }

/* --- Impresión ----------------------------------------------------------- */
@media print {
  .vc-side, .vc-topbar, .tx-btn, .vc-replist { display: none !important; }
  .vc-page { padding: 0; }
  body { background: #fff; }
}
