:root {
  color-scheme: light dark;
  --fondo: #f6f5f1; --tinta: #1c1b19; --suave: #6b6861; --linea: #e2dfd7; --tarjeta: #ffffff; --hundido: #f1efea;
  --acento: #2f5d50; --acento-suave: #e4eeea; --sobre-acento: #ffffff;
  --ok: #1e6b47; --ok-fondo: #e3f1e8;
  --aviso: #8a5a00; --aviso-fondo: #fbf0d6;
  --mal: #a3302a; --mal-fondo: #f9e4e2;
  --neutro: #55524c; --neutro-fondo: #eceae4;
  --sombra: 0 1px 2px rgba(28, 27, 25, .04), 0 4px 16px rgba(28, 27, 25, .05);
  --radio: 14px;
}
@media (prefers-color-scheme: dark) {
  :root {
    --fondo: #151412; --tinta: #f1efe9; --suave: #a19d94; --linea: #2f2d29; --tarjeta: #1e1d1a; --hundido: #191816;
    --acento: #8fc7b4; --acento-suave: #1d2b27; --sobre-acento: #10231d;
    --ok: #8fd3ab; --ok-fondo: #17301f;
    --aviso: #f0c66b; --aviso-fondo: #352a10;
    --mal: #f1a39d; --mal-fondo: #3a1b19;
    --neutro: #c2beb5; --neutro-fondo: #2a2925;
    --sombra: 0 1px 2px rgba(0, 0, 0, .3);
  }
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--fondo); color: var(--tinta);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; line-height: 1.55;
  min-height: 100vh; display: flex; flex-direction: column; -webkit-font-smoothing: antialiased;
}
a { color: var(--acento); text-underline-offset: 3px; text-decoration-thickness: 1px; }
h1 { font-size: clamp(1.7rem, 4vw, 2.1rem); line-height: 1.15; letter-spacing: -0.025em; margin: 0 0 .35rem; }
h2 { font-size: 1.15rem; letter-spacing: -0.01em; margin: 2.25rem 0 .7rem; }
h3 { font-size: 1.02rem; margin: 0 0 .15rem; }
p { margin: 0 0 .8rem; }
.icono { width: 1.15em; height: 1.15em; flex: none; }

/* Estructura */
.barra {
  position: sticky; top: 0; z-index: 5; border-bottom: 1px solid var(--linea);
  background: color-mix(in srgb, var(--fondo) 88%, transparent); backdrop-filter: blur(10px);
}
.barra .dentro {
  max-width: 68rem; margin: 0 auto; padding: .7rem 1.25rem;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem 1.5rem;
}
.marca {
  display: inline-flex; align-items: center; gap: .55rem; font-weight: 700; color: var(--tinta);
  text-decoration: none; letter-spacing: -0.01em;
}
.logo {
  display: grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 9px;
  background: var(--acento); color: var(--sobre-acento);
}
.barra nav { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .35rem; font-size: .93rem; }
.barra nav a {
  color: var(--suave); text-decoration: none; padding: .35rem .7rem; border-radius: 99px; transition: background .15s, color .15s;
}
.barra nav a:hover { color: var(--tinta); background: var(--neutro-fondo); }
.barra nav a[aria-current] { color: var(--acento); background: var(--acento-suave); font-weight: 600; }
.barra form { margin: 0 0 0 .4rem; }
main { width: 100%; max-width: 50rem; margin: 0 auto; padding: 2.25rem 1.25rem 4rem; flex: 1; }
main.ancho { max-width: 68rem; }
footer {
  border-top: 1px solid var(--linea); padding: 1.4rem 1.25rem; font-size: .8rem; color: var(--suave); text-align: center;
}
footer p { max-width: 44rem; margin: 0 auto .4rem; }
footer a { color: var(--suave); }

/* Texto auxiliar */
.meta, .nota, small, .opcional { color: var(--suave); font-size: .9rem; }
small { display: block; margin-top: .35rem; font-weight: 400; line-height: 1.45; }
.sobre { font-size: .78rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--acento); margin-bottom: .5rem; }
.miga { font-size: .9rem; margin-bottom: 1.1rem; }
.miga a { text-decoration: none; color: var(--suave); }
.miga a:hover { color: var(--acento); }
.vacio, .guia { color: var(--suave); }
.guia { margin: 1.5rem 0 0; font-size: .95rem; }
.cabecera { margin-bottom: 1.5rem; }
.cabecera .meta { margin-bottom: .6rem; }

/* Tarjetas */
.tarjeta {
  background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio);
  padding: 1.4rem; margin: 1.25rem 0; box-shadow: var(--sombra);
}
.tarjeta > h2:first-child, .tarjeta > h1:first-child { margin-top: 0; }
.tarjeta > :last-child, .tarjeta form > :last-child { margin-bottom: 0; }
.angosta { max-width: 27rem; margin-left: auto; margin-right: auto; }

/* Portada de ingreso */
.entrada { display: grid; grid-template-columns: 1.15fr .85fr; gap: 3rem; align-items: center; padding: 2rem 0; }
.portada h1 { font-size: clamp(2.1rem, 5vw, 3.1rem); line-height: 1.05; letter-spacing: -0.035em; margin-bottom: 1rem; }
.bajada { font-size: 1.12rem; color: var(--suave); max-width: 34rem; margin-bottom: 1.75rem; }
.pasos { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.pasos li { display: flex; gap: .9rem; align-items: flex-start; }
.pasos .n {
  flex: none; width: 1.9rem; height: 1.9rem; display: grid; place-items: center; border-radius: 50%;
  background: var(--acento-suave); color: var(--acento); font-weight: 700; font-size: .9rem;
}
.pasos div { color: var(--suave); font-size: .95rem; }
.pasos strong { display: block; color: var(--tinta); font-size: 1rem; }
.acceso { margin: 0; }
@media (max-width: 52rem) { .entrada { grid-template-columns: 1fr; gap: 2rem; padding: .5rem 0; } }

/* Formularios */
label { display: block; font-weight: 600; font-size: .92rem; margin-bottom: 1.05rem; }
input, select, textarea {
  display: block; width: 100%; margin-top: .35rem; padding: .65rem .8rem; font: inherit; font-weight: 400;
  color: var(--tinta); background: var(--hundido); border: 1px solid var(--linea); border-radius: 10px;
  transition: border-color .15s, box-shadow .15s;
}
textarea { resize: vertical; line-height: 1.5; }
::placeholder { color: var(--suave); opacity: .75; }
input:focus, select:focus, textarea:focus {
  outline: none; border-color: var(--acento); box-shadow: 0 0 0 3px var(--acento-suave);
}
button:focus-visible, a:focus-visible, .elegir:focus-within, summary:focus-visible {
  outline: 2px solid var(--acento); outline-offset: 2px;
}
.dos { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
@media (max-width: 40rem) { .dos { grid-template-columns: 1fr; } }
.boton {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .62rem 1.15rem; font: inherit; font-weight: 600; font-size: .95rem; cursor: pointer; white-space: nowrap;
  color: var(--sobre-acento); background: var(--acento); border: 1px solid var(--acento); border-radius: 10px;
  transition: filter .15s, background .15s, transform .05s;
}
.boton:hover { filter: brightness(1.1); }
.boton:active { transform: translateY(1px); }
.boton.secundario { color: var(--acento); background: transparent; border-color: var(--linea); }
.boton.secundario:hover { background: var(--acento-suave); filter: none; }
.boton.lleno { width: 100%; }
.boton[disabled], .ocupado .boton { opacity: .6; pointer-events: none; }
.enlace {
  padding: 0; font: inherit; color: var(--acento); background: none; border: 0; cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px;
}
.barra .enlace { color: var(--suave); text-decoration: none; padding: .35rem .7rem; }
.barra .enlace:hover { color: var(--tinta); }
.peligro { color: var(--mal); }
.en-linea { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; }
.en-linea label { flex: 1 1 14rem; margin-bottom: 0; }
.acciones { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.acciones select { width: auto; margin-top: 0; }
.separado { margin-top: 1.5rem; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
details { margin-top: .9rem; font-size: .95rem; }
details summary { cursor: pointer; color: var(--acento); font-weight: 600; width: fit-content; border-radius: 4px; }
details form { margin-top: 1rem; }

/* Subida de documentos */
.subida { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; }
.subida .elegir { margin: 0; position: relative; }
.subida input[type="file"] { font-size: .85rem; padding: .3rem; margin: 0; width: 13rem; background: transparent; border: 0; }
.js .subida input[type="file"] {
  position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; padding: 0;
}
.js .subida .enviar { display: none; }
.subida .elegir .icono { display: none; }
.js .subida .elegir .icono { display: block; }
html:not(.js) .subida .elegir { background: transparent; border: 0; padding: 0; color: var(--tinta); display: block; }
html:not(.js) .subida .elegir .texto { display: none; }

/* Mensajes e insignias */
.mensaje { padding: .8rem 1rem; border-radius: 10px; margin-bottom: 1.25rem; font-weight: 500; font-size: .95rem; }
.mensaje.ok { background: var(--ok-fondo); color: var(--ok); }
.mensaje.mal { background: var(--mal-fondo); color: var(--mal); }
.mensaje.info { background: var(--aviso-fondo); color: var(--aviso); }
.mensaje a { color: inherit; font-weight: 700; }
.insignia {
  display: inline-block; padding: .14rem .65rem; border-radius: 99px; font-size: .8rem; font-weight: 600;
  white-space: nowrap; background: var(--neutro-fondo); color: var(--neutro); vertical-align: middle;
}
.insignia.ok { background: var(--ok-fondo); color: var(--ok); }
.insignia.aviso { background: var(--aviso-fondo); color: var(--aviso); }
.insignia.mal { background: var(--mal-fondo); color: var(--mal); }
.insignia.vacia { background: transparent; border: 1px dashed var(--linea); color: var(--suave); }
.sello {
  flex: none; display: grid; place-items: center; width: 2.3rem; height: 2.3rem; border-radius: 50%;
  background: var(--neutro-fondo); color: var(--neutro);
}
.sello.ok { background: var(--ok-fondo); color: var(--ok); }
.sello.aviso { background: var(--aviso-fondo); color: var(--aviso); }
.sello.mal { background: var(--mal-fondo); color: var(--mal); }
.sello.vacio { background: transparent; border: 1.5px dashed var(--linea); color: var(--suave); }

/* Progreso */
.progreso { display: flex; align-items: center; gap: .75rem; font-size: .88rem; color: var(--suave); }
progress { flex: 1; max-width: 14rem; height: .45rem; border: 0; border-radius: 99px; overflow: hidden; background: var(--neutro-fondo); appearance: none; }
progress::-webkit-progress-bar { background: var(--neutro-fondo); }
progress::-webkit-progress-value { background: var(--acento); border-radius: 99px; }
progress::-moz-progress-bar { background: var(--acento); border-radius: 99px; }

/* Contratos */
.rejilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.ficha {
  display: flex; flex-direction: column; gap: .35rem; padding: 1.2rem; color: inherit; text-decoration: none;
  background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra);
  transition: border-color .15s, transform .15s;
}
.ficha:hover { border-color: var(--acento); transform: translateY(-2px); }
.ficha .titulo { font-weight: 700; font-size: 1.08rem; line-height: 1.25; }
.ficha .extracto {
  color: var(--suave); font-size: .9rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ficha .progreso { margin-top: auto; padding-top: .7rem; }
.texto-alcance { white-space: normal; }
.alcance h2 { font-size: .78rem; letter-spacing: .09em; text-transform: uppercase; color: var(--suave); margin-bottom: .5rem; }

/* Documentos de un contrato */
.area {
  font-size: .78rem; letter-spacing: .09em; text-transform: uppercase; color: var(--suave); margin: 2rem 0 .6rem;
}
.documento {
  display: flex; align-items: center; gap: 1rem; padding: 1rem 1.2rem; margin-bottom: .6rem;
  background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio);
  transition: border-color .15s, background .15s;
}
.documento .cuerpo { flex: 1; min-width: 0; }
.documento .meta { margin: 0; }
.documento .estado { margin: .5rem 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .7rem; font-size: .92rem; }
.documento.soltar { border-color: var(--acento); border-style: dashed; background: var(--acento-suave); }
@media (max-width: 40rem) {
  .documento { flex-wrap: wrap; }
  .documento .subida { width: 100%; padding-left: 3.3rem; }
}

/* Resultado de una revisión */
.veredicto { display: flex; gap: 1.1rem; align-items: flex-start; border-left-width: 5px; }
.veredicto .sello { width: 2.8rem; height: 2.8rem; }
.veredicto .sello .icono { width: 1.4em; height: 1.4em; }
.veredicto h2 { margin: .2rem 0 .5rem; font-size: 1.3rem; }
.veredicto.ok { border-left-color: var(--ok); }
.veredicto.aviso { border-left-color: var(--aviso); }
.veredicto.mal { border-left-color: var(--mal); }
.veredicto .resumen { font-size: 1.04rem; }
.conteo { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; margin: 0 0 .8rem; padding: 0; font-size: .92rem; color: var(--suave); }
.conteo strong { font-size: 1.05rem; }
.conteo .ok strong { color: var(--ok); }
.conteo .aviso strong { color: var(--aviso); }
.conteo .mal strong { color: var(--mal); }
.criterios { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.criterios li {
  display: flex; gap: 1rem; padding: 1.05rem 1.2rem; background: var(--tarjeta);
  border: 1px solid var(--linea); border-radius: var(--radio);
}
.criterios .sello { width: 1.9rem; height: 1.9rem; margin-top: .1rem; }
.criterios p { margin-bottom: .5rem; }
.criterios div > :last-child { margin-bottom: 0; }
.criterio { font-weight: 600; }
.etiquetas { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.tipo { font-size: .78rem; color: var(--suave); border: 1px solid var(--linea); border-radius: 99px; padding: .08rem .55rem; }
.siguiente { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; }
.siguiente h2 { margin: 0 0 .2rem; }
.siguiente p { margin: 0; }
.criterio-editable { padding: 1rem 0; border-top: 1px solid var(--linea); }
.criterio-editable label { margin-bottom: .6rem; }

/* Espera */
.espera { display: flex; align-items: center; gap: 1.25rem; }
.espera h2 { margin: 0 0 .3rem; }
.espera p { margin: 0; color: var(--suave); }
.giro {
  flex: none; width: 2.4rem; height: 2.4rem; border-radius: 50%;
  border: 3px solid var(--acento-suave); border-top-color: var(--acento); animation: giro .9s linear infinite;
}
@keyframes giro { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .giro { animation-duration: 4s; } .ficha:hover { transform: none; } }

/* Listas simples */
.lista { list-style: none; margin: 0 0 1rem; padding: 0; }
.lista li + li { border-top: 1px solid var(--linea); }
.lista a {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .9rem; padding: .7rem .25rem;
  color: inherit; text-decoration: none;
}
.lista a:hover .titulo, .lista a[aria-current] .titulo { color: var(--acento); }
.lista .titulo { font-weight: 600; }

/* Administrador */
.cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 1rem; margin: 1.25rem 0; }
.cifras div {
  background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio); padding: 1.1rem 1.3rem; box-shadow: var(--sombra);
}
.cifras dt { color: var(--suave); font-size: .88rem; }
.cifras dd { margin: 0; font-size: 2.1rem; font-weight: 700; letter-spacing: -0.03em; line-height: 1.2; }
.tabla { overflow-x: auto; background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio); padding: .3rem 1.2rem; }
table { width: 100%; border-collapse: collapse; font-size: .93rem; }
th, td { text-align: left; padding: .7rem .8rem .7rem 0; border-bottom: 1px solid var(--linea); vertical-align: top; }
tr:last-child td { border-bottom: 0; }
th { font-size: .76rem; letter-spacing: .07em; text-transform: uppercase; color: var(--suave); font-weight: 600; }
td:first-child { white-space: nowrap; color: var(--suave); }
td a { text-decoration: none; }
td a:hover { text-decoration: underline; }

.proveedores { display: grid; gap: .6rem; margin-top: 1rem; }
.proveedor { border: 1px solid var(--linea); border-radius: 12px; transition: border-color .15s, background .15s; }
.proveedor:has(input[type="radio"]:checked) { border-color: var(--acento); background: var(--acento-suave); }
.opcion { display: flex; gap: .8rem; align-items: flex-start; padding: .9rem 1rem; margin: 0; cursor: pointer; font-weight: 400; }
.opcion input { width: 1.1rem; height: 1.1rem; margin: .2rem 0 0; flex: none; accent-color: var(--acento); }
.opcion .nombre { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-weight: 700; font-size: 1rem; }
.opcion .meta { display: block; }
.campos { display: none; padding: .2rem 1rem 1rem 2.9rem; }
.proveedor:has(input[type="radio"]:checked) .campos { display: block; }
.campos input { background: var(--tarjeta); }
.campos label:last-child { margin-bottom: 0; }
@media (max-width: 40rem) { .campos { padding-left: 1rem; } }

/* Ejemplos */
.crece { flex: 1; min-width: 0; }
.criterios li > .boton { align-self: center; }
.simple { margin: 0 0 1rem; padding-left: 1.2rem; display: grid; gap: .6rem; }
blockquote {
  margin: .5rem 0 0; padding: .7rem .9rem; background: var(--hundido); border-left: 3px solid var(--acento);
  border-radius: 0 8px 8px 0; font-size: .93rem; color: var(--suave);
}
@media (max-width: 40rem) { .criterios li { flex-wrap: wrap; } .criterios li > .boton { margin-left: 2.9rem; } }

/* Semáforo */
.luz { display: inline-block; flex: none; width: .8rem; height: .8rem; border-radius: 50%; background: var(--neutro); opacity: .45; }
.luz.ok { background: #2e9e63; opacity: 1; }
.luz.aviso { background: #e0a100; opacity: 1; }
.luz.mal { background: #d1453b; opacity: 1; }
.luz.vacio { background: transparent; border: 1.5px dashed var(--suave); opacity: .7; }
.luces { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: auto; padding-top: .8rem; }
.semaforo { padding-bottom: 1rem; }
.leyenda { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; margin: 0 0 1.1rem; padding: 0 0 1rem;
           border-bottom: 1px solid var(--linea); font-size: .9rem; color: var(--suave); }
.leyenda li { display: flex; align-items: center; gap: .45rem; }
.leyenda strong { color: var(--tinta); font-size: 1.05rem; }
.fila-area { display: grid; grid-template-columns: 11rem 1fr; gap: .5rem 1rem; align-items: start; padding: .45rem 0; }
.fila-area h2 { margin: .55rem 0 0; font-size: .78rem; letter-spacing: .09em; text-transform: uppercase; color: var(--suave); }
.fichas-doc { display: grid; grid-template-columns: repeat(auto-fill, minmax(11.5rem, 1fr)); gap: .5rem; }
.ficha-doc {
  display: grid; grid-template-columns: auto 1fr; gap: .05rem .55rem; align-items: center; padding: .6rem .75rem;
  color: inherit; text-decoration: none; border: 1px solid var(--linea); border-radius: 10px; background: var(--hundido);
  transition: border-color .15s, transform .15s;
}
.ficha-doc:hover { border-color: var(--acento); transform: translateY(-1px); }
.ficha-doc .nombre { font-weight: 600; font-size: .92rem; line-height: 1.25; }
.ficha-doc .meta { grid-column: 2; font-size: .8rem; }
.ficha-doc.ok { background: var(--ok-fondo); border-color: transparent; }
.ficha-doc.aviso { background: var(--aviso-fondo); border-color: transparent; }
.ficha-doc.mal { background: var(--mal-fondo); border-color: transparent; }
.ficha-doc.ok:hover, .ficha-doc.aviso:hover, .ficha-doc.mal:hover { border-color: var(--acento); }
.documento { border-left-width: 4px; scroll-margin-top: 5rem; }
.documento.borde-ok { border-left-color: #2e9e63; }
.documento.borde-aviso { border-left-color: #e0a100; }
.documento.borde-mal { border-left-color: #d1453b; }
.documento:target { border-color: var(--acento); box-shadow: 0 0 0 3px var(--acento-suave); }
@media (max-width: 40rem) { .fila-area { grid-template-columns: 1fr; } .fila-area h2 { margin-top: .3rem; } }

/* Registro técnico */
.tecnico { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .8rem; overflow-wrap: anywhere; }
h2 .tipo { font-weight: 500; letter-spacing: 0; vertical-align: middle; margin-left: .4rem; }

/* Tabla de contratos */
.cabecera.con-accion { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.cabecera.con-accion .meta { margin-bottom: 0; }
a.boton { text-decoration: none; }
.inicio-vacio { text-align: center; padding: 2.5rem 1.5rem; }
.inicio-vacio .sello { margin: 0 auto .8rem; width: 3rem; height: 3rem; }
.inicio-vacio h2 { margin: 0 0 .4rem; }
.inicio-vacio .meta { max-width: 26rem; margin: 0 auto 1.2rem; }
.tablero { background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra); overflow: hidden; margin: 1rem 0 2rem; }
.tablero .encabezado, .fila-contrato > summary {
  display: grid; gap: .75rem; align-items: center; padding: .9rem 1.2rem;
  grid-template-columns: minmax(11rem, 2.2fr) 7.5rem 5.5rem 1.4rem;
}
.cols-1 .encabezado, .cols-1 .fila-contrato > summary { grid-template-columns: minmax(11rem, 2.2fr) repeat(1, minmax(5rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.cols-2 .encabezado, .cols-2 .fila-contrato > summary { grid-template-columns: minmax(11rem, 2.2fr) repeat(2, minmax(5rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.cols-3 .encabezado, .cols-3 .fila-contrato > summary { grid-template-columns: minmax(11rem, 2.2fr) repeat(3, minmax(5rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.cols-4 .encabezado, .cols-4 .fila-contrato > summary { grid-template-columns: minmax(11rem, 2.2fr) repeat(4, minmax(5rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.cols-5 .encabezado, .cols-5 .fila-contrato > summary { grid-template-columns: minmax(11rem, 2.2fr) repeat(5, minmax(4.5rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.cols-6 .encabezado, .cols-6 .fila-contrato > summary { grid-template-columns: minmax(10rem, 2fr) repeat(6, minmax(4.2rem, 1fr)) 7.5rem 5.5rem 1.4rem; }
.tablero .encabezado {
  font-size: .72rem; letter-spacing: .07em; text-transform: uppercase; color: var(--suave); font-weight: 600;
  background: var(--hundido); border-bottom: 1px solid var(--linea); padding-top: .7rem; padding-bottom: .7rem;
}
.fila-contrato { margin: 0; font-size: 1rem; }
.fila-contrato + .fila-contrato { border-top: 1px solid var(--linea); }
.fila-contrato > summary { cursor: pointer; list-style: none; color: inherit; font-weight: 400; width: auto; border-radius: 0; }
.fila-contrato > summary::-webkit-details-marker { display: none; }
.fila-contrato > summary:hover { background: var(--hundido); }
.fila-contrato .quien { display: flex; flex-direction: column; min-width: 0; }
.fila-contrato .titulo { font-weight: 700; }
.fila-contrato .abrir { color: var(--suave); display: grid; place-items: center; transition: transform .15s; }
.fila-contrato[open] .abrir { transform: rotate(90deg); }
.fila-contrato[open] > summary { background: var(--hundido); }
.avance { display: flex; flex-direction: column; line-height: 1.25; }
.avance strong { font-size: 1.05rem; }
.avance .meta { font-size: .78rem; }
.avance.ok strong { color: var(--ok); }
.avance.aviso strong { color: var(--aviso); }
.avance.vacio strong { color: var(--suave); }
.fila-contrato .detalle { padding: .2rem 1.2rem 1.1rem; }
.fila-contrato .detalle .area { margin: 1.1rem 0 .3rem; font-weight: 600; }
.docs { list-style: none; margin: 0; padding: 0; }
.docs li { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; padding: .55rem 0; border-top: 1px solid var(--linea); }
.docs .nombre { font-weight: 600; flex: 1 1 12rem; }
.docs .subida { margin-left: auto; }
.docs .boton { padding: .4rem .8rem; font-size: .88rem; }
.detalle .pie { margin: 1rem 0 0; font-size: .92rem; }
.barra nav a.aparte { margin-left: .6rem; border: 1px solid var(--linea); }
@media (max-width: 52rem) {
  .tablero .col-area { display: none; }
  .tablero .encabezado, .tablero .fila-contrato > summary { grid-template-columns: 1fr 6.5rem 4.5rem 1.4rem; }
}

/* Asistente de dudas */
.asistente { position: fixed; right: 1.1rem; bottom: 1.1rem; z-index: 20; display: flex; flex-direction: column; align-items: flex-end; gap: .6rem; }
.burbuja {
  font: inherit; font-weight: 700; cursor: pointer; padding: .7rem 1.15rem; border-radius: 99px; border: 0;
  background: var(--acento); color: var(--sobre-acento); box-shadow: 0 6px 20px rgba(28, 27, 25, .22);
}
.burbuja:hover { filter: brightness(1.1); }
.asistente .panel {
  order: -1; width: min(22.5rem, calc(100vw - 2.2rem)); max-height: min(32rem, calc(100vh - 6rem));
  display: flex; flex-direction: column; background: var(--tarjeta); border: 1px solid var(--linea);
  border-radius: var(--radio); box-shadow: 0 12px 40px rgba(28, 27, 25, .22); overflow: hidden;
}
.asistente .panel[hidden] { display: none; }
.asistente header { display: flex; justify-content: space-between; align-items: center; padding: .75rem 1rem; border-bottom: 1px solid var(--linea); }
.asistente .cerrar { font-size: .88rem; color: var(--suave); text-decoration: none; }
.asistente .mensajes { flex: 1; overflow-y: auto; padding: .9rem 1rem; display: flex; flex-direction: column; gap: .55rem; min-height: 9rem; }
.asistente .mensajes p { margin: 0; padding: .55rem .8rem; border-radius: 12px; font-size: .92rem; max-width: 88%; white-space: pre-wrap; overflow-wrap: anywhere; }
.asistente .bot { background: var(--hundido); align-self: flex-start; border-bottom-left-radius: 4px; }
.asistente .yo { background: var(--acento); color: var(--sobre-acento); align-self: flex-end; border-bottom-right-radius: 4px; }
.asistente .espera { color: var(--suave); font-style: italic; }
.asistente form { display: flex; gap: .5rem; padding: .7rem 1rem; border-top: 1px solid var(--linea); margin: 0; }
.asistente form input { margin: 0; }
.asistente .boton { padding: .55rem .9rem; }
.asistente .pie { margin: 0; padding: 0 1rem .8rem; font-size: .76rem; color: var(--suave); }
main { padding-bottom: 5.5rem; }

/* Coherencia entre documentos */
.coherencia > ul { list-style: none; margin: 1rem 0 0; padding: 0; }
.coherencia > ul > li { display: flex; gap: 1rem; padding: .9rem 0; border-top: 1px solid var(--linea); }
.coherencia > ul > li:last-child { padding-bottom: 0; }
.coherencia .sello { width: 1.9rem; height: 1.9rem; }
.coherencia p { margin-bottom: .4rem; }
.coherencia .criterio { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.hallazgos { margin: .3rem 0 0; padding-left: 1.1rem; font-size: .95rem; display: grid; gap: .25rem; }

/* Cambios entre versiones */
.cambios h2 { margin-bottom: .6rem; }
.antes-despues { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.cambio { display: flex; gap: .8rem; align-items: flex-start; margin: .6rem 0 0; padding-top: .6rem; border-top: 1px solid var(--linea); }
.cambio .sello { width: 1.7rem; height: 1.7rem; }

/* Ejemplos: pruebas guiadas */
.prueba > h2 { margin-top: 0; }
.prueba .tabla { margin: .8rem 0; padding: .2rem 1rem; box-shadow: none; }
.prueba td:first-child { white-space: normal; color: inherit; }
.descarga {
  display: inline-flex; align-items: center; gap: .5rem; padding: .45rem .8rem; border: 1px solid var(--linea);
  border-radius: 10px; background: var(--hundido); color: var(--tinta); text-decoration: none; font-weight: 600; font-size: .92rem;
}
.descarga:hover { border-color: var(--acento); color: var(--acento); }
.pasos-prueba { gap: 1rem; margin-top: 1rem; }
.archivos { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-top: .5rem; }
.espera-resultado { font-size: .9rem; color: var(--suave); }

/* Estado general del contrato */
.general { border-left: 5px solid var(--linea); }
.general.ok { border-left-color: #2e9e63; }
.general > h2 { margin: 0 0 .2rem; font-size: 1.25rem; }
.requisitos { list-style: none; margin: .9rem 0 0; padding: 0; }
.requisitos li { display: flex; align-items: center; gap: .9rem; padding: .75rem 0; border-top: 1px solid var(--linea); }
.requisitos li:last-child { padding-bottom: 0; }
.requisitos div { flex: 1; display: flex; flex-direction: column; }
.requisitos .sello { width: 2rem; height: 2rem; }
.requisitos a { font-size: .9rem; white-space: nowrap; }
.titulo-seccion { margin-bottom: 0; scroll-margin-top: 5rem; }
.coherencia { scroll-margin-top: 5rem; }
.avance strong .luz { vertical-align: baseline; margin-right: .15rem; width: .65rem; height: .65rem; }
.avance.mal strong { color: var(--mal); }
.tablero .avance strong { font-size: .95rem; }
.tablero .avance.ok strong, .tablero .avance.aviso strong, .tablero .avance.vacio strong { font-size: 1.05rem; }
.tablero span.avance strong { font-size: .88rem; }
.fila-contrato .titulo .insignia { margin-left: .3rem; }

/* Plantillas */
.plantillas { list-style: none; margin: 0 0 .5rem; padding: 0; }
.plantillas li { display: flex; align-items: center; gap: .8rem; padding: .8rem 1rem; margin-bottom: .45rem;
                 background: var(--tarjeta); border: 1px solid var(--linea); border-radius: 12px; color: var(--suave); }
.plantillas .nombre { flex: 1; color: var(--tinta); font-weight: 600; }

/* Guía de prueba */
.prueba h3 { margin: 1.4rem 0 .4rem; font-size: 1rem; }
.descarga .codigo { background: var(--acento); color: var(--sobre-acento); border-radius: 6px; padding: 0 .4rem; font-size: .8rem; }
.destino { font-weight: 600; }
.conjunto { margin: .2rem 0 0; padding: .7rem 1rem; background: var(--hundido); border-radius: 10px; font-weight: 600; }
.datos { margin: .8rem 0 1rem; display: grid; gap: .5rem; }
.datos div { display: grid; grid-template-columns: 10rem 1fr; gap: .2rem 1rem; padding: .6rem .9rem; background: var(--hundido); border-radius: 10px; }
.datos dt { color: var(--suave); font-size: .9rem; }
.datos dd { margin: 0; font-weight: 600; user-select: all; }
@media (max-width: 40rem) { .datos div { grid-template-columns: 1fr; } }
