/* ESTILOS.CSS — hoja común de la vitrina, el detalle y el panel.
   Paleta tomada de la pantalla de acceso del middleware (papel, tinta, ladrillo) para que
   todo el sitio se vea como una sola pieza. Fuentes del sistema: carga instantánea en obra. */

:root {
  --papel: #F1F2F3;
  --hoja: #FFFFFF;
  --tinta: #191D21;
  --grafito: #5C6570;
  --hair: #D8DBDE;
  --ladrillo: #B44B38;
  --ladrillo-suave: #F4E3DF;
  --verde: #2F7A4F;
  --verde-suave: #E1F0E6;
  --pista: #E4E6E8;
  --radio: 6px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --papel: #15181B;
    --hoja: #1E2226;
    --tinta: #E8EAEC;
    --grafito: #9AA3AC;
    --hair: #2E343A;
    --ladrillo: #E0866F;
    --ladrillo-suave: #3A2622;
    --verde: #6CC08E;
    --verde-suave: #1F3328;
    --pista: #2A3036;
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--papel);
  color: var(--tinta);
  font: 15px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
a { color: var(--ladrillo); }
h1, h2, h3 { line-height: 1.15; letter-spacing: -.01em; margin: 0; }

.envoltura { max-width: 1080px; margin: 0 auto; padding: 0 16px; }

/* ---------- Barra superior ---------- */
.barra {
  background: var(--hoja);
  border-bottom: 1px solid var(--hair);
}
.barra .envoltura {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 56px;
}
.marca { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--tinta); }
.marca-cuadro {
  width: 26px; height: 26px; border-radius: 4px; background: var(--tinta);
  display: grid; place-items: center; flex: none;
}
.marca-cuadro span { width: 12px; height: 12px; border: 2.5px solid var(--hoja); border-top-color: var(--ladrillo); }
.marca-texto { font-weight: 700; font-size: 15px; }
.enlace-discreto {
  font-size: 13px; color: var(--grafito); text-decoration: none;
  padding: 8px 12px; border: 1px solid var(--hair); border-radius: var(--radio);
}
.enlace-discreto:hover { color: var(--tinta); border-color: var(--grafito); }

/* ---------- Encabezados de página ---------- */
.rotulo {
  font-size: 11.5px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: var(--grafito); margin: 0;
}
.cabecera { padding: 28px 0 18px; }
.cabecera h1 { font-size: clamp(1.6rem, 5vw, 2.3rem); font-weight: 800; margin-top: 6px; }
.cabecera p.bajada { color: var(--grafito); margin: 8px 0 0; max-width: 60ch; }

/* ---------- Buscador ---------- */
.buscador { display: flex; gap: 10px; align-items: center; margin: 4px 0 18px; flex-wrap: wrap; }
.buscador input {
  flex: 1 1 240px; min-width: 0;
}
.contador { font-size: 13px; color: var(--grafito); }

/* ---------- Tarjetas de la vitrina ---------- */
.rejilla { display: grid; gap: 14px; grid-template-columns: 1fr; padding-bottom: 32px; }
@media (min-width: 680px) { .rejilla { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .rejilla { grid-template-columns: repeat(3, 1fr); } }

.tarjeta {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--hoja); border: 1px solid var(--hair); border-radius: var(--radio);
  padding: 16px; text-decoration: none; color: inherit;
  transition: border-color .15s;
}
.tarjeta:hover { border-color: var(--grafito); }
.tarjeta:focus-visible { outline: 2px solid var(--ladrillo); outline-offset: 2px; }
.tarjeta h2 { font-size: 1.12rem; font-weight: 700; overflow-wrap: anywhere; }
.tarjeta .lugar { font-size: 13.5px; color: var(--grafito); margin: 4px 0 0; }
.etiqueta {
  display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: .04em;
  padding: 2px 8px; border-radius: 99px; background: var(--papel); color: var(--grafito);
  border: 1px solid var(--hair); align-self: flex-start;
}
.pie-tarjeta {
  display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap;
  font-size: 12.5px; color: var(--grafito); border-top: 1px solid var(--hair); padding-top: 10px;
  margin-top: auto;
}

/* ---------- Barra de avance ---------- */
.avance { display: flex; flex-direction: column; gap: 6px; }
.avance-cifras { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: var(--grafito); }
.avance-cifras strong { font-size: 1.35rem; color: var(--tinta); font-variant-numeric: tabular-nums; }
.pista { height: 10px; background: var(--pista); border-radius: 99px; overflow: hidden; }
.relleno { height: 100%; background: var(--ladrillo); border-radius: 99px; }
.relleno.completo { background: var(--verde); }
.pista.fina { height: 6px; }

/* ---------- Estados ---------- */
.estado {
  background: var(--hoja); border: 1px dashed var(--hair); border-radius: var(--radio);
  padding: 36px 20px; text-align: center; color: var(--grafito); margin-bottom: 32px;
}
.estado h2 { color: var(--tinta); font-size: 1.15rem; margin-bottom: 6px; }
.estado p { margin: 0 auto; max-width: 42ch; }

/* ---------- Detalle ---------- */
.volver { display: inline-block; font-size: 13.5px; margin-top: 18px; text-decoration: none; }
.detalle-cabeza {
  display: grid; gap: 16px; grid-template-columns: 1fr; margin: 12px 0 18px;
}
@media (min-width: 820px) { .detalle-cabeza { grid-template-columns: 1.4fr 1fr; } }
.panel-blanco {
  background: var(--hoja); border: 1px solid var(--hair); border-radius: var(--radio); padding: 18px;
}
.avance-grande .numero {
  font-size: clamp(3rem, 14vw, 4.6rem); font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums;
}
.avance-grande .numero small { font-size: .45em; font-weight: 700; color: var(--grafito); }
.avance-grande .pista { height: 14px; margin: 14px 0 8px; }
.datos { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; margin: 14px 0 0; }
.datos div { min-width: 0; }
.datos dt { font-size: 11.5px; text-transform: uppercase; letter-spacing: .08em; color: var(--grafito); }
.datos dd { margin: 2px 0 0; font-weight: 600; overflow-wrap: anywhere; }
.seccion-titulo { font-size: 1.1rem; font-weight: 700; margin: 26px 0 12px; }
.items { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.items li .fila { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; margin-bottom: 5px; }
.items li .fila span:last-child { font-weight: 700; font-variant-numeric: tabular-nums; }

.historial { list-style: none; margin: 0 0 36px; padding: 0; display: grid; gap: 12px; }
.reporte-cabeza { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.reporte-cabeza h3 { font-size: 1.02rem; }
.reporte-cabeza .porcentaje { font-weight: 800; font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.reporte-meta { font-size: 13px; color: var(--grafito); margin: 2px 0 10px; }
.reporte-bloque { margin-top: 10px; }
.reporte-bloque h4 {
  margin: 0 0 4px; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--grafito);
}
.reporte-bloque ul { margin: 0; padding-left: 18px; }
.reporte-bloque p { margin: 0; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.chip { font-size: 12.5px; padding: 3px 10px; border-radius: 99px; background: var(--papel); border: 1px solid var(--hair); }
.nuevo { color: var(--hoja); background: var(--tinta); border-color: var(--tinta); }

/* ---------- Formularios (panel) ---------- */
label.campo { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--grafito); font-weight: 600; }
input, select, textarea {
  font: inherit; font-size: 16px; /* 16px evita el zoom automático en iPhone */
  color: var(--tinta); background: var(--papel);
  border: 1px solid var(--hair); border-radius: var(--radio);
  padding: 10px 11px; width: 100%; min-width: 0;
}
textarea { resize: vertical; min-height: 88px; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--ladrillo); outline-offset: 1px; border-color: transparent; }
.ayuda { font-weight: 400; font-size: 12px; color: var(--grafito); }

.boton {
  font: inherit; font-weight: 600; font-size: 15px; cursor: pointer;
  padding: 11px 16px; border-radius: var(--radio); border: 1px solid var(--tinta);
  background: var(--tinta); color: var(--hoja); min-height: 44px;
}
.boton:disabled { opacity: .55; cursor: progress; }
.boton.secundario { background: transparent; color: var(--tinta); border-color: var(--hair); }
.boton.secundario:hover { border-color: var(--grafito); }
.boton.peligro { background: transparent; color: var(--ladrillo); border-color: var(--hair); padding: 8px 12px; min-height: 44px; }

.pestanas { display: flex; gap: 6px; margin: 4px 0 16px; border-bottom: 1px solid var(--hair); }
.pestana {
  font: inherit; font-weight: 600; font-size: 14.5px; background: none; border: none; cursor: pointer;
  padding: 12px 10px; color: var(--grafito); border-bottom: 3px solid transparent; margin-bottom: -1px;
}
.pestana[aria-selected="true"] { color: var(--tinta); border-bottom-color: var(--ladrillo); }

.formulario { display: grid; gap: 14px; background: var(--hoja); border: 1px solid var(--hair); border-radius: var(--radio); padding: 16px; margin-bottom: 36px; }
.dos-col { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 620px) { .dos-col { grid-template-columns: 1fr 1fr; } }
.tres-col { display: grid; gap: 14px; grid-template-columns: 1fr 1fr; }
@media (min-width: 620px) { .tres-col { grid-template-columns: 1fr 1fr 1fr; } }
fieldset { border: 1px solid var(--hair); border-radius: var(--radio); padding: 12px; margin: 0; min-width: 0; }
legend { font-size: 13px; font-weight: 700; padding: 0 6px; }

.lista-alcance { display: grid; gap: 8px; margin: 0 0 10px; padding: 0; list-style: none; }
.lista-alcance li { display: flex; gap: 8px; align-items: center; }
.lista-alcance .num { font-size: 12.5px; color: var(--grafito); width: 20px; text-align: right; flex: none; }

.alcance-reporte { display: grid; gap: 10px; }
.item-porcentaje {
  display: grid; grid-template-columns: 1fr 92px; gap: 6px 10px; align-items: center;
  padding-bottom: 10px; border-bottom: 1px solid var(--hair);
}
.item-porcentaje:last-child { border-bottom: none; padding-bottom: 0; }
.item-porcentaje .desc { font-size: 14px; overflow-wrap: anywhere; }
.item-porcentaje .antes { font-size: 12px; color: var(--grafito); }
.item-porcentaje input[type="range"] { grid-column: 1 / -1; padding: 0; accent-color: var(--ladrillo); background: none; border: none; }
.item-porcentaje input[type="range"]:focus { outline-offset: 4px; }
.caja-num { position: relative; }
.caja-num input { padding-right: 26px; text-align: right; font-variant-numeric: tabular-nums; }
.caja-num::after { content: "%"; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: var(--grafito); font-size: 14px; pointer-events: none; }

.total-sugerido { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; }
.total-sugerido .caja-num { width: 120px; }
.total-sugerido .caja-num input { font-size: 20px; font-weight: 700; }

.aviso { border-radius: var(--radio); padding: 12px 14px; font-size: 14.5px; margin: 0; }
.aviso[hidden] { display: none; }
.aviso.ok { background: var(--verde-suave); color: var(--verde); border: 1px solid var(--verde); }
.aviso.error { background: var(--ladrillo-suave); color: var(--ladrillo); border: 1px solid var(--ladrillo); }

.acciones { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }

/* ---------- Pie ---------- */
.pie { border-top: 1px solid var(--hair); padding: 18px 0 26px; font-size: 12.5px; color: var(--grafito); }
.pie .envoltura { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; }

.oculto-visual { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
