/* Quórum: estilos según el design system (paleta Sonora, Archivo ancha, retícula de líneas). */
:root {
  --caliche: #f3f2ec;
  --papel: #fbfaf6;
  --tinta: #1f2a22;
  --tinta-suave: #4a5547;
  --linea-suave: #cfcdc2;
  --sahuaro: #23392b;
  --sobre-sahuaro: #f3f2ec;
  --noche: #1c3045;
  --chiltepin: #d9462c;
  --chiltepin-texto: #a8301b;
  --palo-verde: #e8d96b;
  --palo-verde-texto: #6e5f08;
  --cielo: #93c1e6;
  --foco: #1c3045;
  /* colores de socios en la gráfica (no usan los del semáforo) */
  --s1: #23392b; --s2: #1c3045; --s3: #93c1e6; --s4: #7e9a84; --s5: #b9b6a6; --s6: #4e7398;
  --font-display: "Archivo", "Arial Black", system-ui, sans-serif;
  --font-sans: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --e1: 4px; --e2: 8px; --e3: 12px; --e4: 16px; --e5: 24px; --e6: 32px; --e7: 48px; --e8: 64px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --caliche: #121915; --papel: #19221d; --tinta: #ecebe3; --tinta-suave: #a9b1a6; --linea-suave: #34403a;
    --sahuaro: #8cc4a0; --sobre-sahuaro: #0f1a14; --noche: #4e7398; --chiltepin: #f0694f; --chiltepin-texto: #ff8a70;
    --palo-verde-texto: #e8d96b; --foco: #93c1e6;
    --s1: #8cc4a0; --s2: #93c1e6; --s3: #4e7398; --s4: #c9c6b6; --s5: #5f7d68; --s6: #2f5a41;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --caliche: #121915; --papel: #19221d; --tinta: #ecebe3; --tinta-suave: #a9b1a6; --linea-suave: #34403a;
  --sahuaro: #8cc4a0; --sobre-sahuaro: #0f1a14; --noche: #4e7398; --chiltepin: #f0694f; --chiltepin-texto: #ff8a70;
  --palo-verde-texto: #e8d96b; --foco: #93c1e6;
  --s1: #8cc4a0; --s2: #93c1e6; --s3: #4e7398; --s4: #c9c6b6; --s5: #5f7d68; --s6: #2f5a41;
  color-scheme: dark;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--caliche); color: var(--tinta); font: 400 16px/1.5 var(--font-sans); }
a { color: var(--tinta); }
h1, h2, h3, h4 { margin: 0; text-wrap: balance; }
button { font: inherit; }
:focus-visible { outline: 2px solid var(--foco); outline-offset: 2px; }
.mono, time, .num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.mono { font-size: 12px; letter-spacing: 0.02em; color: var(--tinta-suave); }

/* ---------- Barra ---------- */
.barra { background: var(--caliche); border-bottom: 2px solid var(--tinta); position: sticky; top: 0; z-index: 10; }
.barra-in { max-width: 1200px; margin: 0 auto; padding: var(--e3) var(--e5); display: flex; align-items: center; gap: var(--e5); }
.marca { display: flex; align-items: center; gap: var(--e3); color: var(--tinta); text-decoration: none; }
.marca svg { width: 48px; height: 30px; flex: none; }
.marca svg * { stroke: var(--sahuaro); }
.marca svg rect { fill: var(--sahuaro); stroke: none; }
.marca-txt { display: flex; flex-direction: column; line-height: 1.1; }
.marca-txt strong { font: 600 18px/1.1 var(--font-display); font-stretch: 125%; letter-spacing: 0.08em; text-transform: uppercase; }
.marca-txt small { font: 400 11px/1.4 var(--font-mono); color: var(--tinta-suave); letter-spacing: 0.04em; }
.nav { display: flex; margin-left: auto; flex-wrap: wrap; border-left: 1px solid var(--tinta); }
.nav a { color: var(--tinta); text-decoration: none; padding: var(--e2) var(--e4); font: 500 14px/20px var(--font-sans); border-right: 1px solid var(--tinta); display: inline-flex; align-items: center; gap: var(--e2); }
.nav a:hover { background: var(--papel); }
.nav a.activo { background: var(--sahuaro); color: var(--sobre-sahuaro); }
.nav b { font: 500 11px/1 var(--font-mono); background: var(--chiltepin); color: #fff; padding: 3px 6px; }
.nav b:empty { display: none; }
.cliente-info { display: none; margin-left: auto; text-align: right; line-height: 1.3; }
.cliente-info span { display: block; font-weight: 600; }
.cliente-info small { font: 400 11px/1.4 var(--font-mono); color: var(--tinta-suave); }
.modo-cliente .nav { display: none; }
.modo-cliente .cliente-info { display: block; }
.franja-marca { display: flex; height: 6px; }
.franja-marca i { display: block; }
.aviso-demo { text-align: center; font: 400 11px/1.4 var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--tinta-suave); padding: var(--e2) var(--e4); border-bottom: 1px solid var(--tinta); }

/* ---------- Estructura ---------- */
.contenido { max-width: 1200px; margin: 0 auto; padding: var(--e7) var(--e5) var(--e8); }
.encabezado { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--e4); margin-bottom: var(--e6); flex-wrap: wrap; padding-bottom: var(--e5); border-bottom: 1px solid var(--tinta); }
.sobretitulo { margin: 0 0 var(--e2); font: 500 11px/14px var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--tinta-suave); }
h1 { font: 600 44px/1.05 var(--font-display); font-stretch: 125%; text-transform: uppercase; letter-spacing: 0.01em; color: var(--tinta); }
.sub { margin: var(--e3) 0 0; color: var(--tinta-suave); max-width: 60ch; }
.panel { background: var(--papel); border: 1px solid var(--tinta); padding: var(--e5); margin-bottom: var(--e5); min-width: 0; }
.panel h2 { font: 600 20px/1.2 var(--font-display); font-stretch: 125%; text-transform: uppercase; letter-spacing: 0.02em; margin-bottom: var(--e4); display: flex; align-items: center; gap: var(--e3); }
.panel-ok h2::before { content: ""; width: 12px; height: 12px; border: 1px solid var(--tinta); background: var(--sahuaro); }
.panel-ok p { margin: 0; color: var(--tinta-suave); }
.ayuda { color: var(--tinta-suave); font-size: 14px; margin: calc(var(--e2) * -1) 0 var(--e4); }
.vacio { color: var(--tinta-suave); }

/* ---------- Botones y etiquetas ---------- */
.btn { display: inline-flex; align-items: center; gap: var(--e2); padding: 10px var(--e4); border: 1px solid var(--tinta); background: transparent; color: var(--tinta); font: 500 14px/20px var(--font-sans); cursor: pointer; text-decoration: none; white-space: nowrap; }
.btn:hover { background: var(--tinta); color: var(--caliche); }
.btn-primario { background: var(--sahuaro); border-color: var(--sahuaro); color: var(--sobre-sahuaro); }
.btn-primario::after { content: "\2197"; }
.btn-primario:hover { background: var(--tinta); border-color: var(--tinta); color: var(--caliche); }
.btn-texto { border-color: transparent; text-decoration: underline; text-underline-offset: 3px; }
.btn-texto:hover { background: transparent; color: var(--tinta); border-color: var(--tinta); }
.chip { border: 1px solid var(--tinta); background: transparent; padding: 6px var(--e3); font-size: 13px; color: var(--tinta); cursor: pointer; text-align: left; }
.chip:hover { background: var(--tinta); color: var(--caliche); }
.tag, .badge { display: inline-flex; align-items: center; padding: 2px var(--e2); border: 1px solid var(--tinta); font: 500 11px/14px var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; color: var(--tinta); background: transparent; }
.badge-rojo { border-color: var(--chiltepin-texto); color: var(--chiltepin-texto); }
.badge-amarillo { color: var(--palo-verde-texto); border-color: var(--palo-verde-texto); }
.badge-verde, .badge-neutro { color: var(--tinta-suave); border-color: var(--tinta-suave); }
.badge-ia { background: var(--cielo); color: #1c3045; border-color: var(--cielo); font-family: var(--font-mono); }

/* ---------- Estado (semáforo) ---------- */
.pill { display: inline-flex; align-items: center; gap: var(--e2); font: 500 13px/18px var(--font-sans); color: var(--tinta); }
.pill i { width: 10px; height: 10px; border: 1px solid var(--tinta); border-radius: 1px; flex: none; }
.pill-rojo i { background: var(--chiltepin); }
.pill-amarillo i { background: var(--palo-verde); }
.pill-verde i { background: var(--sahuaro); }

/* ---------- Cartera ---------- */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--tinta); border-bottom: 0; }
.kpi { padding: var(--e4) var(--e5); }
.kpi + .kpi { border-left: 1px solid var(--tinta); }
.kpi span { display: block; font: 500 11px/14px var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--tinta-suave); }
.kpi strong { display: block; margin-top: var(--e2); font: 500 36px/1 var(--font-mono); font-variant-numeric: tabular-nums; }
.kpi-rojo strong { color: var(--chiltepin-texto); }
.franja { display: flex; height: 8px; border: 1px solid var(--tinta); border-top: 0; margin-bottom: var(--e2); }
.franja i { display: block; }
.franja .rojo { background: var(--chiltepin); } .franja .amarillo { background: var(--palo-verde); } .franja .verde { background: var(--sahuaro); }
.franja-leyenda { margin: 0 0 var(--e6); }
.grid-empresas { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--e5); }
.sociedad { display: flex; flex-direction: column; background: var(--papel); border: 1px solid var(--tinta); color: inherit; text-decoration: none; }
.sociedad:hover { outline: 2px solid var(--tinta); outline-offset: -1px; }
.sociedad-cabeza { display: flex; justify-content: space-between; align-items: center; gap: var(--e3); padding: var(--e3) var(--e4); border-bottom: 1px solid var(--tinta); }
.sociedad-cuerpo { padding: var(--e4); display: flex; flex-direction: column; gap: var(--e3); flex: 1; }
.sociedad-cuerpo h3 { font: 600 21px/1.25 var(--font-sans); }
.etiquetas { display: flex; gap: var(--e2); flex-wrap: wrap; }
.resumen-alerta { margin: auto 0 0; font-size: 14px; color: var(--tinta-suave); }
.resumen-alerta strong { color: var(--tinta); font-weight: 600; }
.sociedad-datos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--tinta); }
.sociedad-datos div { padding: var(--e3) var(--e4); min-width: 0; }
.sociedad-datos div + div { border-left: 1px solid var(--tinta); }
.sociedad-datos strong { display: block; font: 500 20px/24px var(--font-mono); font-variant-numeric: tabular-nums; }
.sociedad-datos span { font: 500 10px/13px var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--tinta-suave); }

/* ---------- Alertas ---------- */
.seccion-titulo { display: flex; align-items: center; gap: var(--e2); font: 500 12px/16px var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; margin: var(--e2) 0 var(--e3); }
.seccion-titulo::before { content: ""; width: 10px; height: 10px; border: 1px solid var(--tinta); }
.seccion-titulo.rojo::before { background: var(--chiltepin); }
.seccion-titulo.amarillo { margin-top: var(--e6); }
.seccion-titulo.amarillo::before { background: var(--palo-verde); }
.lista-alertas { display: grid; gap: var(--e3); }
.alerta { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--e3); border: 1px solid var(--tinta); padding: var(--e4) var(--e5); background: var(--papel); }
.alerta::before { content: ""; width: 12px; height: 12px; margin-top: 6px; border: 1px solid var(--tinta); }
.alerta-alta::before { background: var(--chiltepin); }
.alerta-media::before { background: var(--palo-verde); }
.alerta h4 { font: 600 16px/24px var(--font-sans); }
.alerta-alta h4 { color: var(--chiltepin-texto); }
.alerta p { margin: 2px 0; font-size: 14px; line-height: 20px; color: var(--tinta-suave); }
.alerta-accion { color: var(--tinta) !important; margin-top: var(--e2) !important; }
.alerta-accion strong { font: 500 11px/14px var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; margin-right: var(--e2); }
.alerta-empresa { display: inline-block; margin-bottom: var(--e1); font: 500 11px/14px var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--tinta-suave); }

/* ---------- Ficha ---------- */
.volver { display: inline-block; margin-bottom: var(--e4); font: 500 12px/16px var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--tinta-suave); text-decoration: none; }
.volver:hover { color: var(--tinta); }
.ficha-encabezado { display: flex; justify-content: space-between; gap: var(--e5); align-items: flex-end; flex-wrap: wrap; margin-bottom: var(--e6); padding-bottom: var(--e5); border-bottom: 1px solid var(--tinta); }
.ficha-encabezado h1 { font-size: 36px; }
.tipo-h1 { display: block; margin-top: var(--e2); font: 500 14px/20px var(--font-mono); text-transform: uppercase; letter-spacing: 0.06em; color: var(--tinta-suave); font-stretch: 100%; }
.ficha-meta { display: flex; gap: var(--e4); flex-wrap: wrap; align-items: center; margin-top: var(--e4); font: 400 12px/16px var(--font-mono); color: var(--tinta-suave); }
.acciones { display: flex; gap: var(--e2); flex-wrap: wrap; }
.grid-ficha { display: grid; grid-template-columns: 1.35fr 1fr; gap: var(--e5); }
.grid-ficha > .panel { margin-bottom: 0; }
.grid-ficha > .panel:first-child { grid-row: span 2; }
.grid-ficha + .panel { margin-top: var(--e5); }
.nota-ia { background: var(--cielo); color: #1c3045; border: 1px solid var(--tinta); padding: var(--e3) var(--e4); margin-bottom: var(--e5); font-size: 14px; }

.capital { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: var(--e5); align-items: center; }
.dona { width: 180px; height: 180px; }
.dona-etq { font: 500 9px var(--font-mono); letter-spacing: 0.08em; fill: var(--tinta-suave); text-transform: uppercase; }
.dona-val { font: 500 17px var(--font-mono); fill: var(--tinta); }
.punto { display: inline-block; width: 10px; height: 10px; margin-right: var(--e2); vertical-align: -1px; border: 1px solid var(--tinta); }
.tabla { width: 100%; border-collapse: collapse; font-size: 14px; }
.tabla th { text-align: left; font: 500 11px/14px var(--font-sans); text-transform: uppercase; letter-spacing: 0.08em; color: var(--tinta-suave); padding: var(--e2); border-bottom: 1px solid var(--tinta); }
.tabla td { padding: var(--e2); border-bottom: 1px solid var(--linea-suave); vertical-align: top; }
.num { text-align: right; white-space: nowrap; }
.datos { display: grid; gap: 0; margin: 0; }
.datos div { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: var(--e3); padding: var(--e2) 0; border-bottom: 1px solid var(--linea-suave); }
.datos div:last-child { border-bottom: 0; }
.datos dt { font: 500 11px/20px var(--font-sans); text-transform: uppercase; letter-spacing: 0.08em; color: var(--tinta-suave); }
.datos dd { margin: 0; font-size: 14px; }
.datos-capital { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--e5); border-top: 1px solid var(--tinta); }
.datos-capital div { grid-template-columns: 1fr; gap: 0; border-bottom: 0; padding: var(--e3) var(--e3) 0 0; }
.datos-capital dd { font: 500 15px/20px var(--font-mono); }

.organo { font: 500 11px/14px var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; color: var(--tinta-suave); margin: 0 0 var(--e2); }
.miembros { list-style: none; padding: 0; margin: 0 0 var(--e5); display: grid; }
.miembros li { display: flex; gap: var(--e3); align-items: center; padding: var(--e2) 0; border-bottom: 1px solid var(--linea-suave); }
.miembros small { display: block; color: var(--tinta-suave); font-size: 13px; }
.avatar { width: 36px; height: 36px; border-radius: 9999px; border: 1px solid var(--tinta); display: grid; place-items: center; font: 500 12px var(--font-mono); flex: none; }
.avatar-oro { background: var(--cielo); color: #1c3045; }
.aviso-txt { color: var(--chiltepin-texto) !important; font-weight: 600; }

.tabla-scroll { overflow-x: auto; }
.poderes { min-width: 880px; }
.poderes th:first-child, .poderes td:first-child { width: 260px; min-width: 220px; }
.poderes td small { display: block; color: var(--tinta-suave); font-size: 12px; }
.poderes td small.limite { color: var(--tinta); margin-top: 2px; font-style: italic; }
.poderes th.fac { text-align: center; font-size: 10px; line-height: 1.2; width: 76px; }
.poderes td.fac { text-align: center; }
.poderes td.si::before { content: ""; display: inline-block; width: 12px; height: 12px; background: var(--sahuaro); }
.poderes td.si { font-size: 0; }
.poderes td.no { color: var(--linea-suave); }
.poderes tr.vencido td { background: color-mix(in srgb, var(--chiltepin) 8%, transparent); }
.poderes tr.vencido td.si::before { background: transparent; border: 1px solid var(--tinta-suave); }

.panel-ia { border-width: 2px; }
.sugerencias { display: flex; gap: var(--e2); flex-wrap: wrap; margin-bottom: var(--e3); }
.pregunta { display: flex; gap: var(--e2); }
.pregunta input { flex: 1; min-width: 0; padding: 10px var(--e3); border: 1px solid var(--tinta); background: var(--caliche); color: var(--tinta); font: inherit; border-radius: 0; }
.respuesta:not(:empty) { margin-top: var(--e4); }
.burbuja { border-top: 1px solid var(--tinta); padding-top: var(--e4); }
.burbuja p { margin: 0 0 var(--e2); }
.burbuja p:last-child { margin: 0; }
.burbuja .q { font: 500 12px/16px var(--font-mono); text-transform: uppercase; letter-spacing: 0.06em; color: var(--tinta-suave); }

.timeline { list-style: none; padding: 0; margin: 0; }
.timeline li { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: var(--e4); padding: var(--e3) 0; border-bottom: 1px solid var(--linea-suave); }
.timeline li:last-child { border-bottom: 0; }
.timeline time { font-size: 12px; color: var(--tinta-suave); padding-top: 2px; }
.timeline p { margin: 2px 0 0; color: var(--tinta-suave); font-size: 14px; }

/* ---------- Importar ---------- */
.dropzone { display: flex; flex-direction: column; align-items: center; gap: var(--e2); padding: var(--e7) var(--e5); border: 1px dashed var(--tinta); cursor: pointer; text-align: center; background: var(--caliche); }
.dropzone:hover, .dropzone.encima { background: color-mix(in srgb, var(--cielo) 25%, var(--caliche)); }
.drop-icono { font: 500 12px/1 var(--font-mono); letter-spacing: 0.1em; border: 1px solid var(--tinta); padding: 10px 8px; }
.dropzone small { color: var(--tinta-suave); }
.importar-acciones { display: flex; gap: var(--e2); margin-top: var(--e4); flex-wrap: wrap; }
#progreso:not(:empty) { margin-top: var(--e4); }
.cargando { display: flex; gap: var(--e3); align-items: center; }
.spinner { width: 14px; height: 14px; background: var(--sahuaro); animation: gira 1s steps(4) infinite; flex: none; }
@keyframes gira { to { transform: rotate(360deg); } }
.ok { color: var(--tinta); font-weight: 600; margin: 0; }
.ok::before { content: ""; display: inline-block; width: 10px; height: 10px; margin-right: var(--e2); background: var(--sahuaro); border: 1px solid var(--tinta); }
.error { color: var(--chiltepin-texto); margin: 0; }
.barra-resultado { scroll-margin-top: 90px; display: flex; justify-content: space-between; align-items: center; background: var(--sahuaro); color: var(--sobre-sahuaro); padding: var(--e3) var(--e4); margin-bottom: var(--e5); font: 500 12px/16px var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; }
.barra-resultado .btn-primario { background: var(--caliche); color: var(--tinta); border-color: var(--caliche); }

/* ---------- Modal ---------- */
.modal { position: fixed; inset: 0; background: rgba(16, 24, 20, .6); display: grid; place-items: center; z-index: 50; padding: var(--e4); }
.modal[hidden] { display: none; }
.modal-caja { background: var(--papel); border: 1px solid var(--tinta); width: min(860px, 100%); max-height: calc(100vh - 32px); display: flex; flex-direction: column; }
.modal-caja header { display: flex; justify-content: space-between; align-items: center; padding: var(--e3) var(--e5); border-bottom: 1px solid var(--tinta); }
.modal-caja header h3 { font: 600 16px/1.2 var(--font-display); font-stretch: 125%; text-transform: uppercase; letter-spacing: 0.04em; }
.cerrar { border: 1px solid var(--tinta); background: none; width: 32px; height: 32px; font-size: 20px; cursor: pointer; color: var(--tinta); line-height: 1; }
.modal-cuerpo { overflow-y: auto; padding: var(--e5) var(--e6); }
.modal-caja footer { display: flex; justify-content: flex-end; gap: var(--e2); padding: var(--e3) var(--e5); border-top: 1px solid var(--tinta); flex-wrap: wrap; }
.correo { white-space: pre-wrap; font: 400 14px/1.6 var(--font-sans); background: var(--caliche); border: 1px solid var(--linea-suave); padding: var(--e4); margin: 0; }

.acta { font: 400 15px/1.7 var(--font-sans); text-align: justify; color: var(--tinta); }
.acta h2 { font-size: 15px; text-align: center; margin: var(--e2) 0 var(--e4); line-height: 1.4; }
.acta h3 { font: 500 12px/16px var(--font-mono); text-align: center; letter-spacing: 0.1em; margin: var(--e4) 0 var(--e3); }
.acta h4 { font-size: 14.5px; margin: var(--e4) 0 var(--e2); }
.acta .aviso-borrador { text-align: center; font: 500 11px/1.4 var(--font-mono); letter-spacing: 0.08em; background: var(--palo-verde); color: #1f2a22; padding: 6px; }
.tabla-acta { width: 100%; border-collapse: collapse; font-size: 13.5px; margin: var(--e2) 0 var(--e4); }
.tabla-acta th, .tabla-acta td { border: 1px solid var(--tinta); padding: 5px var(--e2); }
.tabla-acta tfoot td { font-weight: 700; }
.orden li { margin-bottom: var(--e1); }
.resolucion { border: 1px solid var(--linea-suave); padding: var(--e2) var(--e3); }
.firmas { display: flex; justify-content: space-around; gap: var(--e5); flex-wrap: wrap; margin-top: 40px; text-align: center; font-size: 14px; }
.firmas span { display: block; width: 200px; border-top: 1px solid var(--tinta); margin: 40px auto 6px; }

/* ---------- Responsivo ---------- */
@media (max-width: 900px) {
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kpi:nth-child(3) { border-left: 0; }
  .kpi:nth-child(n+3) { border-top: 1px solid var(--tinta); }
  .grid-ficha { grid-template-columns: 1fr; }
  .grid-ficha > .panel:first-child { grid-row: auto; }
}
@media (max-width: 640px) {
  .barra-in { flex-wrap: wrap; gap: var(--e3); padding: var(--e3) var(--e4); }
  .nav { margin-left: 0; width: 100%; border-left: 1px solid var(--tinta); }
  .nav a { padding: 6px 10px; font-size: 13px; }
  .contenido { padding: var(--e5) var(--e4) var(--e7); }
  h1 { font-size: 28px; }
  .ficha-encabezado h1 { font-size: 26px; }
  .capital { grid-template-columns: 1fr; justify-items: center; }
  .datos div { grid-template-columns: 1fr; gap: 0; }
  .datos-capital { grid-template-columns: 1fr; }
  .panel { padding: var(--e4); }
  .modal-cuerpo { padding: var(--e4); }
  .timeline li { grid-template-columns: 1fr; gap: var(--e1); }
  .cliente-info { margin-left: 0; text-align: left; }
}
@media (prefers-reduced-motion: reduce) { .spinner { animation: none; } }
@media print { .barra, .aviso-demo, .acciones, .panel-ia, .volver { display: none; } }
