@import url("fonts/atkinson.css");

/* ============================================================
   Licitex, por Transportes E'xpress · «Letrero de recorrido»
   Cada oportunidad es un letrero de parabrisas: se lee desde lejos.
   Todo en rem: el control A+ agranda el sitio completo.
   Nada importante bajo 18 px; nada bajo 16 px.
   ============================================================ */

:root {
  --ground: #f6f5f2;
  --placa: #ffffff;
  --panel-2: #f1f0ec;
  --ink: #16181b;
  --ink-2: #33373c;
  --muted: #4f555b;
  --line: #d9d8d2;
  --line-2: #e9e8e3;
  --red: #d7141b;
  --red-press: #b30f15;
  --red-ink: #b8101a;
  --red-soft: #fbe6e6;
  --on-red: #ffffff;
  --ok: #146c43;
  --ok-soft: #e2f3e9;
  --warn: #8a5200;
  --warn-soft: #fdf0d9;
  --wa: #0f7a3d;
  --shadow: 0 1px 2px rgba(22, 24, 27, .08), 0 6px 16px -8px rgba(22, 24, 27, .22);
  --font: "Atkinson Hyperlegible Next", "Atkinson Hyperlegible", ui-sans-serif, system-ui, "Segoe UI", sans-serif;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground: #111315; --placa: #1a1d20; --panel-2: #202427; --ink: #f3f4f5; --ink-2: #d5d8dc; --muted: #aeb4ba;
    --line: #30353a; --line-2: #25292d; --red-ink: #ff6b70; --red-soft: rgba(215, 20, 27, .2);
    --ok: #6fd9a2; --ok-soft: rgba(111, 217, 162, .13); --warn: #f5b454; --warn-soft: rgba(245, 180, 84, .13); --wa: #0f7a3d;
    --shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 6px 16px -8px rgba(0, 0, 0, .7);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --ground: #111315; --placa: #1a1d20; --panel-2: #202427; --ink: #f3f4f5; --ink-2: #d5d8dc; --muted: #aeb4ba;
  --line: #30353a; --line-2: #25292d; --red-ink: #ff6b70; --red-soft: rgba(215, 20, 27, .2);
  --ok: #6fd9a2; --ok-soft: rgba(111, 217, 162, .13); --warn: #f5b454; --warn-soft: rgba(245, 180, 84, .13); --wa: #0f7a3d;
  --shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 6px 16px -8px rgba(0, 0, 0, .7);
  color-scheme: dark;
}

/* Tamaño de letra elegido por el usuario (A / A+ / A++) */
html { font-size: 100%; -webkit-text-size-adjust: 100%; }
html[data-size="2"] { font-size: 112.5%; }
html[data-size="3"] { font-size: 125%; }

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font: 400 1.125rem/1.55 var(--font); color: var(--ink); background: var(--ground); -webkit-font-smoothing: antialiased; }
h1, h2, h3 { margin: 0; line-height: 1.2; font-weight: 800; letter-spacing: -.01em; text-wrap: balance; }
p { margin: 0; }
a { color: inherit; text-underline-offset: .2em; text-decoration-thickness: 2px; }
a:hover { color: var(--red-ink); }
img { display: block; max-width: 100%; }
svg { display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
::selection { background: var(--red); color: #fff; }
:focus-visible { outline: 4px solid var(--red); outline-offset: 3px; border-radius: 6px; }
.num { font-variant-numeric: tabular-nums; }
.muted { color: var(--muted); }
.i { flex: none; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
html { scrollbar-color: var(--line) transparent; }
.wrap { width: min(72rem, 100% - 2rem); margin-inline: auto; }

/* ---------- Franja de librea (rueda y líneas de velocidad del logo TEX) ---------- */
.livery {
  height: .75rem;
  background:
    linear-gradient(var(--red), var(--red)) 0 0 / 100% .5rem no-repeat,
    linear-gradient(var(--red), var(--red)) 0 .625rem / 58% .1875rem no-repeat;
}

/* ---------- Marca ---------- */
.brand { display: inline-flex; flex-direction: column; flex: none; text-decoration: none; color: var(--ink); line-height: 1; gap: .25rem; }
.brand:hover { color: var(--ink); }
.brand-word { font-size: 1.75rem; font-weight: 800; letter-spacing: -.02em; }
.brand-word b { color: var(--red); }
.brand-by { display: inline-flex; align-items: center; gap: .375rem; font-size: 1rem; color: var(--muted); font-weight: 600; white-space: nowrap; }
.brand-by img { height: 1.5rem; width: auto; }

/* ---------- Barra superior ---------- */
.bar { background: var(--placa); border-bottom: 2px solid var(--line); position: sticky; top: 0; z-index: 40; }
.bar .wrap { width: min(80rem, 100% - 2rem); } /* la barra usa un poco más de ancho: logo + 5 secciones + herramientas sin apretarse */
.bar-in { display: flex; align-items: center; gap: 1.75rem; min-height: 5rem; }
.nav { display: flex; gap: .125rem; align-self: stretch; }
.nav a { display: inline-flex; align-items: center; padding: 0 .75rem; font-weight: 700; font-size: 1.0625rem; text-decoration: none; color: var(--ink-2); position: relative; }
.nav a:hover { color: var(--ink); background: var(--panel-2); }
.nav a[aria-current="page"] { color: var(--ink); }
.nav a[aria-current="page"]::after { content: ""; position: absolute; left: .75rem; right: .75rem; bottom: -2px; height: .375rem; background: var(--red); border-radius: .25rem .25rem 0 0; }
.bar-tools { display: flex; align-items: center; gap: .5rem; margin-left: auto; }
.tool {
  display: inline-flex; align-items: center; gap: .5rem; min-height: 3rem; padding: 0 .875rem; border-radius: .625rem;
  border: 2px solid var(--line); background: var(--placa); cursor: pointer; font-weight: 700; font-size: 1rem; text-decoration: none; color: var(--ink);
}
.tool:hover { border-color: var(--ink); color: var(--ink); }
.tool .aa { font-weight: 800; letter-spacing: -.02em; }
.theme-toggle .sun, :root[data-theme="dark"] .theme-toggle .moon { display: none; }
:root[data-theme="dark"] .theme-toggle .sun { display: inline; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .theme-toggle .sun { display: inline; }
  :root:not([data-theme="light"]) .theme-toggle .moon { display: none; }
}
.avatar { width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; background: var(--ink); color: var(--ground); font-weight: 800; font-size: 1rem; }
.menu { position: relative; }
.menu > button { border: 0; background: none; padding: 0; border-radius: 50%; cursor: pointer; }
.menu-pop { position: absolute; right: 0; top: calc(100% + .5rem); min-width: 18rem; padding: .5rem; background: var(--placa); border: 2px solid var(--line); border-radius: .75rem; box-shadow: var(--shadow); }
.menu-pop .who { padding: .75rem; border-bottom: 2px solid var(--line-2); margin-bottom: .25rem; }
.menu-pop .who strong { display: block; }
.menu-pop a, .menu-pop button { display: flex; width: 100%; gap: .75rem; align-items: center; padding: .875rem .75rem; border-radius: .5rem; border: 0; background: none; text-decoration: none; cursor: pointer; font-weight: 600; color: var(--ink-2); text-align: left; }
.menu-pop a:hover, .menu-pop button:hover { background: var(--panel-2); color: var(--ink); }
.tabbar { display: none; }

/* ---------- Botones: siempre ícono + palabra, mínimo 52 px ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .625rem; min-height: 3.25rem; padding: .5rem 1.375rem;
  border-radius: .625rem; border: 2px solid transparent; font-weight: 700; font-size: 1.0625rem; line-height: 1.2; text-decoration: none; cursor: pointer; text-align: center;
  transition: background-color .15s, color .15s, border-color .15s;
}
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn-red { background: var(--red); color: var(--on-red); }
.btn-red:hover { background: var(--red-press); color: #fff; }
.btn-line { background: var(--placa); border-color: var(--ink); color: var(--ink); }
.btn-line:hover { background: var(--ink); color: var(--placa); }
.btn-ghost { background: transparent; color: var(--ink); text-decoration: underline; text-underline-offset: .2em; }
.btn-ghost:hover { background: var(--panel-2); }
.btn-wa { background: var(--wa); color: #fff; }
.btn-wa:hover { background: #0b6231; color: #fff; }
.btn-sm { min-height: 2.75rem; padding: .375rem 1rem; font-size: 1rem; }
.btn-lg { min-height: 3.75rem; padding: .625rem 1.75rem; font-size: 1.1875rem; }
.btn.is-loading { position: relative; color: transparent !important; pointer-events: none; }
.btn.is-loading::after { content: ""; position: absolute; width: 1.25rem; height: 1.25rem; border-radius: 50%; border: 3px solid #fff; border-right-color: transparent; animation: spin .7s linear infinite; }
.btn-line.is-loading::after { border-color: var(--ink); border-right-color: transparent; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- El letrero (oportunidad) ---------- */
.placas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.placa { position: relative; background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; overflow: hidden; transition: border-color .15s; }
.placa:hover { border-color: var(--ink); }
.placa-in { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .75rem 2rem; padding: 1.25rem 1.5rem 1.375rem; }
.placa-tipo { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; font-size: 1rem; color: var(--muted); font-weight: 600; }
.tipo { display: inline-flex; align-items: center; gap: .375rem; padding: .25rem .625rem; border-radius: .375rem; background: var(--ink); color: var(--placa); font-weight: 700; font-size: .9375rem; }
.tipo-ca { background: transparent; color: var(--red-ink); box-shadow: inset 0 0 0 2px var(--red); }
.placa-titulo { display: block; margin: .5rem 0 .5rem; font-size: 1.5rem; font-weight: 800; line-height: 1.3; color: var(--ink); text-decoration: none; text-wrap: pretty; }
.placa-titulo::after { content: ""; position: absolute; inset: 0; }
.placa-titulo:hover { color: var(--ink); text-decoration: underline; text-decoration-color: var(--red); }
.placa-quien { font-size: 1.0625rem; color: var(--ink-2); }
.placa-quien b { font-weight: 700; color: var(--ink); }
.placa-extra { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin-top: .75rem; font-size: 1rem; color: var(--ink-2); }
.placa-extra span { display: inline-flex; align-items: center; gap: .375rem; }
.placa-lado { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; gap: .75rem; text-align: right; min-width: 10.5rem; }
.cierre-lbl { font-size: 1rem; color: var(--muted); font-weight: 600; }
.cierre-fecha { font-size: 1.75rem; font-weight: 800; line-height: 1.1; }
.cierre-hora { font-size: 1.0625rem; color: var(--ink-2); font-weight: 600; }
.placa-acciones { position: relative; z-index: 1; display: flex; gap: .5rem; }

/* Fase de cierre: texto + forma */
.fase { display: inline-flex; align-items: center; gap: .5rem; padding: .375rem .75rem; border-radius: .5rem; font-weight: 700; font-size: 1rem; white-space: nowrap; }
.fase .i { width: 1.125rem; height: 1.125rem; }
.fase-hoy { background: var(--red); color: #fff; }
.fase-pronto { color: var(--red-ink); box-shadow: inset 0 0 0 2px var(--red); }
.fase-abierta { color: var(--ink); background: var(--panel-2); }
.fase-cerrada { color: var(--muted); background: var(--panel-2); text-decoration: line-through; }
.fase-sin { color: var(--muted); }

/* Relevancia: barras + palabras (nunca solo número) */
.relev { display: inline-flex; align-items: center; gap: .5rem; font-weight: 700; color: var(--ink); font-size: 1rem; }
.relev .barras { display: inline-flex; gap: 3px; align-items: flex-end; }
.relev .barras i { width: .375rem; border-radius: 2px; background: var(--line); }
.relev .barras i:nth-child(1) { height: .5rem; }
.relev .barras i:nth-child(2) { height: .75rem; }
.relev .barras i:nth-child(3) { height: 1rem; }
.relev[data-n="1"] .barras i:nth-child(-n+1), .relev[data-n="2"] .barras i:nth-child(-n+2), .relev[data-n="3"] .barras i { background: var(--red); }

.guardar[aria-pressed="true"] { background: var(--ink); color: var(--placa); border-color: var(--ink); }
.guardar[aria-pressed="true"] svg { fill: currentColor; }

/* ---------- Encabezados de página ---------- */
.saludo { padding: 2.5rem 0 1.5rem; }
.saludo h1 { font-size: 2.25rem; }
.saludo p { margin-top: .75rem; font-size: 1.25rem; color: var(--ink-2); max-width: 46rem; }
.saludo p b { color: var(--ink); }
.section { margin-top: 2.5rem; }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.section-head h2 { font-size: 1.625rem; }
.buscamos { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-top: 1.25rem; }
.buscamos .lbl { font-weight: 700; margin-right: .25rem; }
.chip { display: inline-flex; align-items: center; min-height: 2.75rem; padding: .25rem 1rem; border-radius: 999px; border: 2px solid var(--line); background: var(--placa); font-weight: 600; font-size: 1rem; text-decoration: none; color: var(--ink); }
.chip:hover { border-color: var(--ink); color: var(--ink); }
.chip-edit { border-style: dashed; color: var(--ink-2); }

.seg { display: inline-flex; gap: .25rem; padding: .25rem; background: var(--panel-2); border-radius: .75rem; flex-wrap: wrap; }
.seg a, .seg button { display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 1rem; border-radius: .5rem; font-weight: 700; font-size: 1rem; color: var(--ink-2); text-decoration: none; border: 0; background: none; cursor: pointer; }
.seg a[aria-current="true"] { background: var(--placa); color: var(--ink); box-shadow: 0 0 0 2px var(--ink); }

/* ---------- Banda TEX ---------- */
.tex-banda { display: grid; grid-template-columns: 11rem minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; overflow: hidden; }
.tex-banda img { width: 100%; height: 100%; min-height: 7.5rem; object-fit: cover; }
.tex-banda p { font-size: 1.0625rem; color: var(--ink-2); }
.tex-banda strong { display: block; font-size: 1.25rem; color: var(--ink); margin-bottom: .25rem; }
.tex-banda .btn { margin-right: 1.5rem; }

/* ---------- Búsqueda y filtros ---------- */
.bigsearch { display: flex; gap: .75rem; flex-wrap: wrap; }
.bigsearch label { flex: 1 1 22rem; position: relative; }
.bigsearch label .i { position: absolute; left: 1rem; top: 50%; translate: 0 -50%; color: var(--muted); }
.bigsearch input { width: 100%; min-height: 3.75rem; padding: 0 1rem 0 3.25rem; font-size: 1.25rem; border: 2px solid var(--ink); border-radius: .75rem; background: var(--placa); }
.bigsearch input:focus { outline: none; box-shadow: 0 0 0 4px var(--red-soft); border-color: var(--red); }
.filtros { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin-top: 1.25rem; padding: 1.25rem; background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; }
.filtros label, .filtros .campo-lbl { display: block; font-weight: 700; font-size: 1rem; margin-bottom: .375rem; }
.select, select.input {
  width: 100%; min-height: 3.25rem; padding: 0 2.5rem 0 .875rem; border-radius: .625rem; border: 2px solid var(--line); background-color: var(--placa);
  font-size: 1.0625rem; font-weight: 600; appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%234f555b' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right .875rem center;
}
.select:hover { border-color: var(--ink); }
.check-big { display: flex; align-items: center; gap: .75rem; min-height: 3.25rem; font-weight: 700; cursor: pointer; }
.check-big input { width: 1.5rem; height: 1.5rem; accent-color: var(--red); flex: none; }
.resultado { margin: 1.5rem 0 1rem; font-size: 1.125rem; color: var(--ink-2); }
.resultado b { color: var(--ink); }

.chip-check { position: relative; }
.chip-check input { position: absolute; opacity: 0; pointer-events: none; }
.chip-check span { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.75rem; padding: 0 1rem; border-radius: 999px; border: 2px solid var(--line); font-weight: 600; font-size: 1rem; cursor: pointer; background: var(--placa); }
.chip-check span:hover { border-color: var(--ink); }
.chip-check input:checked + span { background: var(--ink); color: var(--placa); border-color: var(--ink); }
.chip-check input:checked + span::before { content: "✓"; font-weight: 800; }
.chip-check input:focus-visible + span { outline: 4px solid var(--red); outline-offset: 2px; }
.chips-wrap { display: flex; flex-wrap: wrap; gap: .5rem; }

/* ---------- En vivo (Compra Ágil / IA) ---------- */
.live { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.25rem; border-radius: .75rem; background: var(--placa); border: 2px dashed var(--line); }
.live-inline { border: 0; padding: .25rem 0; background: none; }
.live-track { position: relative; width: 5.5rem; height: .375rem; background: var(--line); border-radius: 1rem; flex: none; }
.live-track::after { content: ""; position: absolute; top: -.3125rem; left: 0; width: 1rem; height: 1rem; border-radius: 50%; background: var(--red); animation: go 1.6s cubic-bezier(.6, 0, .4, 1) infinite alternate; }
@keyframes go { to { left: calc(100% - 1rem); } }
.live p { font-size: 1.0625rem; }
.sk { background: linear-gradient(90deg, var(--panel-2) 0 40%, var(--line-2) 50%, var(--panel-2) 60% 100%); background-size: 300% 100%; animation: sk 1.4s ease infinite; border-radius: .375rem; }
@keyframes sk { from { background-position: 100% 0; } to { background-position: 0 0; } }

/* ---------- Vacíos y avisos ---------- */
.empty { text-align: center; padding: 3rem 1.5rem; max-width: 36rem; margin: 0 auto; }
.empty img { width: 12rem; margin: 0 auto 1.25rem; border-radius: .75rem; }
.empty h2 { font-size: 1.5rem; margin-bottom: .5rem; }
.empty p { color: var(--ink-2); }
.empty .btn { margin-top: 1.25rem; }
.note { display: flex; gap: .75rem; padding: 1rem 1.125rem; border-radius: .75rem; background: var(--panel-2); color: var(--ink); font-size: 1.0625rem; }
.note .i { margin-top: .125rem; color: var(--ink-2); }
.note-warn { background: var(--warn-soft); }
.note-warn .i { color: var(--warn); }
.flash { display: flex; gap: .75rem; align-items: center; padding: 1rem 1.25rem; border-radius: .75rem; margin-top: 1.25rem; font-weight: 600; }
.flash-ok { background: var(--ok-soft); }
.flash-ok .i { color: var(--ok); }
.flash-error, .err { background: var(--red-soft); color: var(--red-ink); padding: 1rem 1.25rem; border-radius: .75rem; font-weight: 600; }

/* ---------- Palabras explicadas (glosario al lado) ---------- */
.termino { display: inline-block; vertical-align: top; }
.terminos { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; align-items: flex-start; margin-top: 1rem; }
.terminos .lbl { font-weight: 700; }
.terminos .termino[open] { flex-basis: 100%; }
.termino summary { display: inline-flex; align-items: center; gap: .25rem; cursor: pointer; list-style: none; text-decoration: underline dotted 2px; text-underline-offset: .25em; }
.termino summary::-webkit-details-marker { display: none; }
.termino summary .q { display: inline-grid; place-items: center; width: 1.375rem; height: 1.375rem; border-radius: 50%; background: var(--ink); color: var(--placa); font-size: .875rem; font-weight: 800; text-decoration: none; }
.termino[open] .explica { display: block; }
.explica { display: block; margin: .5rem 0; padding: .75rem 1rem; border-left: 4px solid var(--red); background: var(--panel-2); border-radius: 0 .5rem .5rem 0; font-size: 1rem; font-weight: 400; color: var(--ink); text-align: left; }

/* ---------- Ficha ---------- */
.volver { display: inline-flex; align-items: center; gap: .5rem; margin-top: 1.5rem; font-weight: 700; text-decoration: none; }
.ficha-cartel { margin-top: 1rem; background: var(--placa); border: 2px solid var(--line); border-radius: 1rem; overflow: hidden; }
.ficha-cartel-in { padding: 1.5rem 1.75rem 1.75rem; }
.ficha-cartel h1 { font-size: 2.125rem; margin: .75rem 0 1.25rem; max-width: 34ch; line-height: 1.2; }
.respuestas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 2px solid var(--line-2); }
.respuestas > div { padding: 1.125rem 1.25rem 0 0; }
.respuestas > div + div { padding-left: 1.25rem; border-left: 2px solid var(--line-2); }
.respuestas dt { font-size: 1rem; color: var(--muted); font-weight: 700; margin-bottom: .25rem; }
.respuestas dd { margin: 0; font-size: 1.25rem; font-weight: 800; line-height: 1.3; }
.respuestas dd small { display: block; font-size: 1rem; font-weight: 500; color: var(--ink-2); margin-top: .25rem; }
.ficha-acciones { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }

.ficha-grid { display: grid; grid-template-columns: minmax(0, 1fr) 21rem; gap: 2rem; margin-top: 2rem; align-items: start; }
.ficha-lado { display: flex; flex-direction: column; gap: 1rem; }
.bloque { background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; padding: 1.5rem; }
.bloque + .bloque { margin-top: 1.25rem; }
.bloque > h2 { font-size: 1.5rem; margin-bottom: 1rem; display: flex; align-items: center; gap: .625rem; }
.prose { font-size: 1.125rem; line-height: 1.65; color: var(--ink); max-width: 68ch; white-space: pre-line; }

/* El recorrido: paradas de arriba hacia abajo */
.recorrido { list-style: none; margin: 0; padding: 0; }
.recorrido li { position: relative; display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) auto; gap: 1rem; align-items: center; padding: .75rem 0; }
.recorrido li::before { content: ""; position: absolute; left: 1.125rem; top: 50%; height: 100%; border-left: .25rem dashed var(--line); }
.recorrido li:last-child::before { display: none; }
.recorrido li.paso::before { border-left-style: solid; border-left-color: var(--red); }
.recorrido .parada { position: relative; z-index: 1; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--placa); border: .25rem solid var(--line); display: grid; place-items: center; color: #fff; }
.recorrido li.paso .parada { background: var(--red); border-color: var(--red); }
.recorrido li.aqui .parada { background: var(--placa); border-color: var(--red); box-shadow: 0 0 0 .375rem var(--red-soft); }
.recorrido li.aqui .parada::after { content: ""; width: .875rem; height: .875rem; border-radius: 50%; background: var(--red); }
.recorrido .nombre { font-weight: 700; font-size: 1.125rem; }
.recorrido .aqui-tag { display: inline-block; margin-left: .5rem; padding: .125rem .5rem; border-radius: .375rem; background: var(--red); color: #fff; font-size: .9375rem; font-weight: 700; vertical-align: middle; }
.recorrido time { font-weight: 700; font-size: 1.0625rem; text-align: right; }
.recorrido li:not(.paso):not(.aqui) .nombre, .recorrido li:not(.paso):not(.aqui) time { color: var(--ink-2); font-weight: 600; }

.kv { display: grid; grid-template-columns: minmax(8rem, 40%) 1fr; margin: 0; }
.kv dt, .kv dd { margin: 0; padding: .75rem 0; border-bottom: 2px solid var(--line-2); font-size: 1.0625rem; }
.kv dt { color: var(--muted); font-weight: 600; padding-right: .75rem; }
.kv dd { font-weight: 600; overflow-wrap: anywhere; }
.kv > :nth-last-child(-n+2) { border-bottom: 0; }
.items { width: 100%; border-collapse: collapse; font-size: 1.0625rem; }
.items th { text-align: left; font-size: 1rem; color: var(--muted); padding: .5rem .75rem .5rem 0; border-bottom: 3px solid var(--ink); }
.items td { padding: .875rem .75rem .875rem 0; border-bottom: 2px solid var(--line-2); vertical-align: top; }
.items td.q { text-align: right; white-space: nowrap; font-weight: 700; }
.weights { display: flex; flex-direction: column; gap: 1rem; }
.weight { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .375rem 1rem; }
.weight .n { font-weight: 700; }
.weight b { font-size: 1.25rem; }
.weight .bar-w { grid-column: 1 / -1; height: .75rem; border-radius: 1rem; background: var(--line-2); overflow: hidden; }
.weight .bar-w span { display: block; height: 100%; background: var(--ink); border-radius: 1rem; }
.weight:first-child .bar-w span { background: var(--red); }
.weight small { grid-column: 1 / -1; color: var(--muted); font-size: 1rem; }
.docs { list-style: none; margin: 0; padding: 0; }
.docs li { display: flex; gap: .75rem; align-items: center; padding: .75rem 0; border-bottom: 2px solid var(--line-2); font-weight: 600; }
.docs li:last-child { border-bottom: 0; }
.steps { list-style: none; margin: 0; padding: 0; counter-reset: s; display: flex; flex-direction: column; gap: 1rem; }
.steps li { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: 1rem; align-items: start; }
.steps .n { width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; background: var(--red); color: #fff; font-weight: 800; font-size: 1.375rem; }
.steps strong { display: block; font-size: 1.1875rem; }
.steps span:not(.n) { display: block; color: var(--ink-2); }
.embed { margin-top: 1rem; border: 2px solid var(--line); border-radius: .75rem; overflow: hidden; background: #fff; }
.embed-bar { display: flex; justify-content: space-between; gap: 1rem; padding: .75rem 1rem; background: var(--panel-2); font-size: 1rem; flex-wrap: wrap; }
.embed iframe { display: block; width: 100%; height: 52rem; border: 0; }

/* Socio logístico TEX */
.socio { background: var(--placa); border: 2px solid var(--red); border-radius: 1rem; overflow: hidden; }
.socio img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.socio-in { padding: 1.25rem 1.5rem 1.5rem; }
.socio h2 { font-size: 1.375rem; margin-bottom: .5rem; }
.socio p { color: var(--ink-2); font-size: 1.0625rem; margin-bottom: 1rem; }
.socio .btn { width: 100%; }
.socio .firma { display: flex; align-items: center; gap: .5rem; margin-top: .875rem; font-size: 1rem; color: var(--muted); }
.socio .firma img { width: auto; height: 1.5rem; aspect-ratio: auto; }

/* ---------- IA ---------- */
.ai { background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; overflow: hidden; }
.ai + .ai, .bloque + .ai, .ai + .bloque { margin-top: 1.25rem; }
.ai-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.125rem 1.5rem; border-bottom: 2px solid var(--line-2); flex-wrap: wrap; }
.ai-head h2 { font-size: 1.375rem; display: flex; align-items: center; gap: .625rem; }
.ai-tag { font-size: .875rem; font-weight: 800; padding: .25rem .5rem; border-radius: .375rem; background: var(--ink); color: var(--placa); letter-spacing: .04em; }
.ai-body { padding: 1.5rem; }
.ai-body > * + * { margin-top: 1.5rem; }
.ai h3 { font-size: 1.1875rem; margin-bottom: .5rem; }
.ai ul, .ai ol { margin: 0; padding-left: 1.5rem; }
.ai li + li { margin-top: .375rem; }
.ai .check { list-style: none; padding: 0; }
.ai .check li { display: flex; gap: .75rem; align-items: flex-start; }
.ai .check input { width: 1.375rem; height: 1.375rem; margin-top: .1875rem; accent-color: var(--red); flex: none; }
.ai-verdict { display: flex; gap: .875rem; padding: 1.125rem 1.25rem; border-radius: .75rem; align-items: flex-start; }
.ai-verdict strong { display: block; font-size: 1.375rem; }
.ai-verdict.v-si { background: var(--ok-soft); }
.ai-verdict.v-si .i { color: var(--ok); }
.ai-verdict.v-rev { background: var(--warn-soft); }
.ai-verdict.v-rev .i { color: var(--warn); }
.ai-verdict.v-no { background: var(--red-soft); }
.ai-verdict.v-no .i { color: var(--red-ink); }
.ai-foot { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; align-items: center; padding: 1rem 1.5rem; border-top: 2px solid var(--line-2); color: var(--muted); font-size: 1rem; }
.ai-cta { display: flex; gap: 1.25rem; align-items: center; flex-wrap: wrap; padding: 1.5rem; }
.ai-cta p { flex: 1 1 18rem; font-size: 1.125rem; }
.ai-wait { display: flex; flex-direction: column; gap: .75rem; padding: 1.5rem; }
.row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.chat { display: flex; flex-direction: column; gap: .75rem; max-height: 28rem; overflow-y: auto; padding: 1.5rem; }
.msg { max-width: 88%; padding: .875rem 1.125rem; border-radius: 1rem; white-space: pre-line; font-size: 1.0625rem; }
.msg-user { align-self: flex-end; background: var(--ink); color: var(--placa); border-bottom-right-radius: .25rem; }
.msg-model { align-self: flex-start; background: var(--panel-2); border-bottom-left-radius: .25rem; }
.suggest { display: flex; flex-wrap: wrap; gap: .5rem; padding: 0 1.5rem 1.25rem; }
.suggest button { min-height: 2.75rem; padding: .25rem 1rem; border: 2px solid var(--line); border-radius: 999px; background: var(--placa); cursor: pointer; font-weight: 600; font-size: 1rem; }
.suggest button:hover { border-color: var(--ink); }
.chat-form { display: flex; gap: .5rem; padding: 1rem; border-top: 2px solid var(--line-2); }
.chat-form input { flex: 1; min-height: 3.25rem; padding: 0 1rem; border: 2px solid var(--line); border-radius: .625rem; background: var(--placa); font-size: 1.0625rem; }
.chat-form input:focus { outline: none; border-color: var(--red); box-shadow: 0 0 0 4px var(--red-soft); }
.drop { display: flex; flex-direction: column; align-items: center; gap: .5rem; text-align: center; padding: 2rem 1.5rem; border: 3px dashed var(--line); border-radius: .875rem; cursor: pointer; }
.drop:hover, .drop.over { border-color: var(--red); background: var(--red-soft); }
.drop input { display: none; }
.drop strong { font-size: 1.25rem; }

/* ---------- Formularios ---------- */
.form { display: flex; flex-direction: column; gap: 1.5rem; }
.field label, .label { display: block; font-weight: 700; font-size: 1.125rem; margin-bottom: .5rem; }
.field .help { color: var(--ink-2); font-size: 1rem; margin-top: .5rem; }
.input, textarea.input { width: 100%; min-height: 3.5rem; padding: .75rem 1rem; border-radius: .625rem; border: 2px solid var(--muted); background: var(--placa); font-size: 1.125rem; }
textarea.input { line-height: 1.5; resize: vertical; }
.input:focus { outline: none; border-color: var(--red); box-shadow: 0 0 0 4px var(--red-soft); }
.tags { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; min-height: 3.5rem; padding: .5rem; border: 2px solid var(--muted); border-radius: .625rem; background: var(--placa); cursor: text; }
.tags:focus-within { border-color: var(--red); box-shadow: 0 0 0 4px var(--red-soft); }
.tags .chip { min-height: 2.5rem; padding: 0 .375rem 0 1rem; background: var(--ink); color: var(--placa); border-color: var(--ink); gap: .375rem; }
.tags.tags-x .chip { background: var(--panel-2); color: var(--ink); border-color: var(--line); }
.tags .chip button { border: 0; background: none; color: inherit; font-size: 1.5rem; line-height: 1; cursor: pointer; padding: 0 .375rem; }
.tags input { flex: 1; min-width: 12rem; border: 0; outline: 0; background: transparent; padding: .375rem; font-size: 1.125rem; }
.switch { display: flex; align-items: center; gap: .75rem; font-weight: 700; cursor: pointer; min-height: 3rem; }
.switch input { appearance: none; width: 3.25rem; height: 1.875rem; border-radius: 999px; background: var(--line); position: relative; margin: 0; cursor: pointer; flex: none; }
.switch input::after { content: ""; position: absolute; top: .25rem; left: .25rem; width: 1.375rem; height: 1.375rem; border-radius: 50%; background: #fff; transition: left .15s; box-shadow: 0 1px 2px rgba(0, 0, 0, .3); }
.switch input:checked { background: var(--red); }
.switch input:checked::after { left: 1.625rem; }
.range-row { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.range-row input { flex: 1 1 12rem; accent-color: var(--red); height: 2rem; }
.range-row output { font-size: 1.5rem; font-weight: 800; min-width: 2.5rem; }
/* Contraseña con botón «Mostrar» (siempre ícono + palabra) */
.clave { display: flex; gap: .5rem; }
.clave .input { flex: 1 1 auto; min-width: 0; }
.clave .btn { flex: none; min-height: 3.5rem; border: 2px solid var(--line); text-decoration: none; }
.clave .btn[aria-pressed="true"] { border-color: var(--ink); }
.field-link { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.75rem; margin-top: .5rem; font-weight: 700; color: var(--red-ink); }
.field-link:hover { color: var(--ink); }
.note-ok { background: var(--ok-soft); }
.note-ok .i { color: var(--ok); }

/* ---------- Extensión «Enviar a Licitex»: puente.js marca <html data-licitex-ext> ---------- */
html:not([data-licitex-ext]) .con-ext { display: none !important; }
html[data-licitex-ext] .sin-ext { display: none !important; }
.recibidos { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; margin: 0 1.5rem 1.5rem; padding: 1.25rem 1.5rem; border: 2px solid var(--red); border-radius: .875rem; background: var(--placa); }
.recibidos > div, .recibidos > p { flex: 1 1 18rem; }
.recibidos strong { font-size: 1.25rem; }
.recibidos .docs li { padding: .5rem 0; }
.recibidos .docs .i { color: var(--red-ink); }
.docs-bajar li { display: block; }
.docs-fila { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.docs-fila > .i { color: var(--red-ink); }
.docs-bajar .docs-n { flex: 1 1 14rem; min-width: 0; display: flex; flex-direction: column; }
.docs-bajar .docs-n b { overflow-wrap: anywhere; }
.docs-bajar .docs-n small { font-size: 1rem; font-weight: 400; color: var(--muted); }
.docs-acciones { display: flex; flex-wrap: wrap; gap: .5rem; }
.docs-acciones .btn { flex: none; text-decoration: none; }

/* Formulario llenado: qué se escribió, qué falta y la descarga */
.llenado { margin: .75rem 0 .25rem 2.25rem; padding: 1rem 1.25rem; border: 2px solid var(--line); border-radius: .75rem; background: var(--panel-2); font-weight: 400; display: flex; flex-direction: column; gap: .75rem; }
.ai .docs, .ai .llenado-lista { padding-left: 0; }
.ai .docs li + li, .ai .llenado-lista li + li { margin-top: 0; }
.llenado-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.llenado-lista li { display: inline-flex; align-items: center; min-height: 2.25rem; padding: .125rem .875rem; border-radius: 999px; background: var(--placa); border: 2px solid var(--line); font-weight: 600; font-size: 1rem; }
.llenado-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; }
.llenado-acciones .btn { text-decoration: none; }
.llenado .note a { font-weight: 700; }

/* ---------- Precios históricos ---------- */
.hist-intro { color: var(--ink-2); margin-top: .5rem; max-width: 62ch; }
.hist-resumen { margin-top: 1.25rem; font-size: 1.1875rem; line-height: 1.5; max-width: 62ch; }
.hist-resumen b { font-variant-numeric: tabular-nums; }
.hist-vacio { margin-top: 1rem; color: var(--ink-2); }
.hist { list-style: none; margin: 1.25rem 0 0; padding: 0; border-top: 2px solid var(--line-2); }
.hist > li { border-bottom: 2px solid var(--line-2); }
.hist-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(12rem, 16rem); gap: 1rem 1.5rem; padding: 1.125rem 0; }
.hist-que, .hist-quien { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.hist-que strong { font-size: 1.1875rem; line-height: 1.3; }
.hist-que > span { color: var(--ink-2); }
.hist-tags { display: flex; flex-wrap: wrap; gap: .375rem; margin-bottom: .25rem; }
.tag-rojo, .tag-linea { display: inline-flex; align-items: center; min-height: 1.875rem; padding: .125rem .625rem; border-radius: .375rem; font-weight: 700; font-size: 1rem; }
.tag-rojo { background: var(--red); color: #fff; }
.tag-linea { color: var(--red-ink); box-shadow: inset 0 0 0 2px var(--red); }
.hist-unit { margin-top: .25rem; color: var(--ink) !important; }
.hist-quien { text-align: right; align-items: flex-end; }
.hist-lbl { font-weight: 700; color: var(--muted); }
.hist-quien b { font-size: 1.0625rem; line-height: 1.3; overflow-wrap: anywhere; }
.hist-monto { font-size: 1.625rem; font-weight: 800; letter-spacing: -.01em; line-height: 1.15; }
.hist-quien > span:not(.hist-lbl):not(.hist-monto):not(.hist-links) { color: var(--ink-2); }
.hist-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .25rem 1rem; margin-top: .25rem; }
.hist-links a { display: inline-flex; align-items: center; gap: .25rem; min-height: 2.75rem; font-weight: 700; }
.hist .live { margin-top: 1rem; }
.hist-nota { display: flex; gap: .625rem; margin-top: 1.25rem; color: var(--ink-2); }
.hist-nota .i { margin-top: .1875rem; }

/* ---------- Cotizador de Compra Ágil ---------- */
.cotizar { margin-top: 1.25rem; }
.cot-form { display: flex; flex-direction: column; gap: 1.5rem; margin-top: 1.25rem; }
.cot-items { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-2); }
.cot-item { display: grid; grid-template-columns: minmax(0, 1fr) 15rem; gap: .75rem 1.5rem; padding: 1.25rem 0; border-bottom: 2px solid var(--line-2); }
.cot-que { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.cot-que strong { font-size: 1.1875rem; line-height: 1.3; }
.cot-que > span { color: var(--ink-2); }
.cot-cant { color: var(--ink) !important; }
.cot-precio label { display: block; font-weight: 700; margin-bottom: .375rem; }
.cot-peso { position: relative; }
.cot-peso span { position: absolute; left: 1rem; top: 50%; translate: 0 -50%; font-weight: 700; font-size: 1.25rem; color: var(--muted); }
.cot-peso .input { padding-left: 2.125rem; font-size: 1.375rem; font-weight: 800; text-align: right; }
.cot-sub { display: block; margin-top: .375rem; text-align: right; color: var(--ink-2); min-height: 1.5em; }
.cot-oferta { grid-column: 1 / -1; }
.cot-opciones { display: grid; grid-template-columns: repeat(2, minmax(0, 12rem)) minmax(0, 1fr); gap: 1rem 1.5rem; align-items: end; }
.cot-exento { display: grid !important; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .25rem .75rem; }
.cot-exento .help { grid-column: 2; font-weight: 400; color: var(--ink-2); font-size: 1rem; }
.cot-totales { padding: 1.25rem 1.5rem; border-radius: .875rem; background: var(--panel-2); border: 2px solid var(--line); }
.cot-totales dl { margin: 0; display: flex; flex-direction: column; gap: .5rem; max-width: 26rem; margin-left: auto; }
.cot-totales dl > div { display: flex; justify-content: space-between; gap: 1rem; }
.cot-totales dt { color: var(--ink-2); }
.cot-totales dd { margin: 0; font-weight: 700; }
.cot-total { padding-top: .5rem; border-top: 2px solid var(--line); }
.cot-total dt { color: var(--ink) !important; font-weight: 800; }
.cot-total dd { font-size: 1.625rem; font-weight: 800; }
.cot-presu { margin-top: 1rem; padding-top: 1rem; border-top: 2px solid var(--line); }
.cot-presu.cot-sobre { color: var(--red-ink); }
.cot-presu.cot-bajo b { color: var(--ok); }
.cot-acciones { display: flex; flex-wrap: wrap; gap: .75rem; }
.cot-acciones .btn { text-decoration: none; }
.cot-enviar { margin-top: 1.75rem; padding-top: 1.5rem; border-top: 2px solid var(--line-2); }
.cot-enviar h3 { font-size: 1.25rem; margin-bottom: 1rem; }
.cot-copiar { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.cot-copiar li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; }
.cot-copiar li > span:first-child { color: var(--ink) !important; font-weight: 600; }

/* ---------- «No me sirve» y lo que Licitex aprendió ---------- */
.descarte { grid-column: 1 / -1; margin-top: .25rem; padding: 1rem 1.125rem; border-radius: .75rem; background: var(--panel-2); border: 2px solid var(--line); }
.ficha-acciones .descarte { flex-basis: 100%; }
.descarte p { margin-bottom: .75rem; }
.descarte-motivos { display: flex; flex-wrap: wrap; gap: .5rem; }
.descarte-motivos .chip { cursor: pointer; }
.descarte-motivos .chip:hover { border-color: var(--ink); }
.placa-oculta { border-style: dashed; }
.placa-oculta-in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: 1rem 1.5rem; color: var(--ink-2); }
.landing .descartar { display: none; }
.aprendio { margin-top: 1.25rem; padding: 1.25rem 1.5rem; border-radius: .875rem; background: var(--placa); border: 2px solid var(--red); }
.aprendio h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.375rem; }
.aprendio h2 .i { color: var(--red-ink); }
.aprendio > p { margin-top: .5rem; color: var(--ink-2); }
.sugerencias { list-style: none; margin: 1rem 0 .5rem; padding: 0; border-top: 2px solid var(--line-2); }
.sugerencias li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .875rem 0; border-bottom: 2px solid var(--line-2); }
.sugerencia-acciones { display: flex; flex-wrap: wrap; gap: .5rem; }
.apr-sub { font-size: 1.125rem; margin: 1.25rem 0 .625rem; }
.apr-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.apr-chips li { display: inline-flex; align-items: center; gap: .375rem; min-height: 2.5rem; padding: .25rem .875rem; border-radius: 999px; font-weight: 700; border: 2px solid var(--line); background: var(--placa); }
.apr-si .i { color: var(--ok); }
.apr-no .i { color: var(--red-ink); }
.apr-linea { display: flex; gap: .625rem; margin-top: 1rem; }
.apr-linea .i { margin-top: .1875rem; color: var(--ink-2); }
.apr-memoria { margin: 1rem 0 0; padding-left: 1.25rem; display: flex; flex-direction: column; gap: .5rem; }
.apr-descartes { list-style: none; margin: 1rem 0 0; padding: 0; border-top: 2px solid var(--line-2); }
.apr-descartes li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .75rem 0; border-bottom: 2px solid var(--line-2); }
.apr-descartes li > span { display: flex; flex-direction: column; min-width: 0; }
.apr-descartes a { font-weight: 700; }
.apr-descartes small { font-size: 1rem; color: var(--ink-2); }
.apr-olvidar { display: flex; flex-direction: column; gap: 1rem; }
.apr-olvidar h2 { font-size: 1.25rem; }

/* ---------- Cómo te evalúan y qué pesa cada anexo ---------- */
.eval h3 { margin-bottom: .75rem; }
.ai .eval-lista, .ai .pesos, .ai .sugerencias, .ai .cot-copiar { padding-left: 0; }
.ai .eval-lista li + li, .ai .pesos li + li { margin-top: 0; }
.eval-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1.125rem; }
.eval-cab { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; }
.eval-cab b { font-size: 1.375rem; font-weight: 800; }
.eval-lista .bar-w { margin: .375rem 0 .5rem; height: .75rem; border-radius: 1rem; background: var(--line-2); overflow: hidden; }
.eval-lista .bar-w span { display: block; height: 100%; background: var(--ink); border-radius: 1rem; }
.eval-lista li:first-child .bar-w span { background: var(--red); }
.eval-lista p { color: var(--ink-2); }
.eval-lista p + p { margin-top: .25rem; }
.eval-lbl { font-weight: 700; color: var(--ink); }
.pesos { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-2); }
.pesos li { padding: .875rem 0; border-bottom: 2px solid var(--line-2); }
.pesos-cab { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.pesos-cab strong { margin-right: auto; }
.pesos p { margin-top: .375rem; color: var(--ink-2); }
.pesos-falta { display: flex; gap: .5rem; color: var(--red-ink) !important; }
.pesos-falta .i { margin-top: .1875rem; }
.tag-gris { display: inline-flex; align-items: center; min-height: 1.875rem; padding: .125rem .625rem; border-radius: .375rem; font-weight: 700; font-size: 1rem; background: var(--panel-2); color: var(--ink-2); }
.llenado-nuevos { display: flex; flex-direction: column; gap: .75rem; padding-top: .75rem; border-top: 2px solid var(--line); }
.llenado-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1rem; }

/* ---------- Mi equipo ---------- */
.menu-aviso { display: flex; gap: .5rem; margin: .25rem .25rem 0; padding: .75rem; border-top: 2px solid var(--line-2); font-size: 1rem; color: var(--ink-2); }
.menu-aviso .i { margin-top: .1875rem; }
.menu-pop .menu-aviso a { display: inline; min-height: 0; padding: 0; font-weight: 700; text-decoration: underline; }
.eq-h2 { display: flex; align-items: center; gap: .625rem; font-size: 1.5rem; }
.section > .eq-h2 { margin-bottom: 1rem; }
.bloque > .eq-h2 { margin-bottom: 1rem; }
.punto-vivo { width: .875rem; height: .875rem; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 4px var(--ok-soft); flex: none; }
.eq-ahora, .eq-personas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.eq-ahora li, .eq-personas li { display: flex; align-items: center; gap: .875rem; flex-wrap: wrap; padding: .875rem 1.125rem; border: 2px solid var(--line); border-radius: .875rem; background: var(--placa); }
.eq-ahora li > div, .eq-quien { flex: 1 1 16rem; min-width: 0; display: flex; flex-direction: column; }
.eq-ahora li > div > span, .eq-quien span { color: var(--ink-2); overflow-wrap: anywhere; }
.eq-ahora a { font-weight: 700; }
.eq-ahora .avatar, .eq-personas .avatar { flex: none; }
.avatar-vacio { background: var(--panel-2) !important; color: var(--ink-2) !important; display: inline-grid; place-items: center; }
.eq-rol .select { min-width: 9rem; }
.tabla-scroll { overflow-x: auto; border: 2px solid var(--line); border-radius: .875rem; background: var(--placa); }
.eq-tabla { width: 100%; border-collapse: collapse; min-width: 52rem; }
.eq-tabla th, .eq-tabla td { padding: .875rem 1rem; border-bottom: 2px solid var(--line-2); text-align: left; vertical-align: top; }
.eq-tabla thead th { font-size: 1rem; color: var(--ink-2); border-bottom: 3px solid var(--ink); white-space: nowrap; }
.eq-tabla tbody tr:last-child > * { border-bottom: 0; }
.eq-tabla thead th:first-child, .eq-tabla tbody th { min-width: 13rem; }
.eq-tabla tbody th a { font-weight: 800; white-space: nowrap; }
.eq-tabla tbody th small { display: block; font-size: 1rem; font-weight: 400; color: var(--ink-2); }
.eq-tabla .n { text-align: right; }
.eq-tabla td.n { font-size: 1.25rem; font-weight: 800; }
.eq-dias { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .375rem; }
.eq-dias li { display: grid; grid-template-columns: 5rem minmax(0, 1fr) 6rem; gap: .75rem; align-items: center; }
.eq-dias .bar-w { height: .75rem; border-radius: 1rem; background: var(--line-2); overflow: hidden; }
.eq-dias .bar-w span { display: block; height: 100%; background: var(--red); border-radius: 1rem; }
.eq-dias .num { text-align: right; }
.eq-asignadas, .eq-linea { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-2); }
.eq-asignadas li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .875rem 0; border-bottom: 2px solid var(--line-2); }
.eq-asignadas li > div { display: flex; flex-direction: column; min-width: 0; flex: 1 1 18rem; }
.eq-asignadas a { font-weight: 700; }
.eq-asignadas small { font-size: 1rem; color: var(--ink-2); }
.eq-asignadas .atrasada small b { color: var(--red-ink); }
.eq-linea li { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 1rem; padding: .75rem 0; border-bottom: 2px solid var(--line-2); }
.eq-linea time { color: var(--ink-2); }
.eq-linea a { font-weight: 700; }
.eq-invitar { display: flex; flex-direction: column; gap: 1rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 2px solid var(--line-2); }
.eq-invitar .apr-sub { margin: 0; }
.eq-invitar-campos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.responsable { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-top: 1rem; padding-top: 1rem; border-top: 2px solid var(--line-2); }
.responsable label, .responsable > span { display: inline-flex; align-items: center; gap: .5rem; font-weight: 700; }
.responsable .select { width: auto; min-width: 14rem; }
.responsable-chip { display: inline-flex; align-items: center; gap: .375rem; min-height: 2.25rem; padding: 0 .75rem; border-radius: 999px; background: var(--panel-2); font-weight: 700; font-size: 1rem; }
.chip-on { background: var(--ink); color: var(--placa); border-color: var(--ink); }
.adm-mon { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }

/* ---------- Competencia ---------- */
.comp-resumen { margin-top: 1rem; font-size: 1.1875rem; line-height: 1.55; max-width: 64ch; }
.comp-resumen b { font-variant-numeric: tabular-nums; }
.comp-filtros { grid-template-columns: repeat(2, minmax(0, 18rem)); }
.comp-lista { list-style: none; margin: 1.25rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .625rem; }
.comp-lista > li { display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto; gap: .75rem 1.25rem; align-items: center; padding: 1rem 1.25rem; background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; }
.comp-lista > li.comp-propia { border-color: var(--red); }
.comp-n { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--panel-2); font-weight: 800; font-size: 1.125rem; }
.comp-lista > li:nth-child(-n+3) .comp-n { background: var(--ink); color: var(--placa); }
.comp-quien { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.comp-nombre { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .625rem; }
.comp-nombre a { font-size: 1.1875rem; font-weight: 800; line-height: 1.25; overflow-wrap: anywhere; }
.comp-quien > span:not(.bar-w):not(.comp-nombre) { color: var(--ink-2); font-size: 1rem; }
.comp-donde > .bloque { margin: 0; }
.nav a { white-space: nowrap; }
.comp-quien .bar-w { display: block; height: .5rem; margin-top: .25rem; border-radius: 1rem; background: var(--line-2); overflow: hidden; max-width: 28rem; }
.comp-quien .bar-w span { display: block; height: 100%; background: var(--red); border-radius: 1rem; }
.comp-num { display: flex; gap: 1.5rem; margin: 0; }
.comp-num > div { display: flex; flex-direction: column; align-items: flex-end; min-width: 5.5rem; }
.comp-num dt { font-size: 1rem; color: var(--ink-2); }
.comp-num dd { margin: 0; font-size: 1.375rem; font-weight: 800; }
.comp-donde { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin-top: 1.25rem; }
.comp-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.comp-chips li { display: inline-flex; align-items: center; gap: .375rem; min-height: 2.5rem; padding: .25rem .875rem; border-radius: 999px; border: 2px solid var(--line); font-weight: 600; }
.comp-chips b { margin-left: .25rem; padding: 0 .5rem; border-radius: 999px; background: var(--panel-2); }
.hist-quien b a { text-decoration: underline; }

/* ---------- Ofertas ganadoras ---------- */
.of-lista { list-style: none; margin: 1rem 0 0; padding: 0; border-top: 2px solid var(--line-2); }
.of-lista > li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .75rem 1.5rem; align-items: start; padding: 1rem 0; border-bottom: 2px solid var(--line-2); }
.of-lista > li.of-gano { margin: .5rem -1rem 0; padding: 1rem; border: 2px solid var(--red); border-radius: .875rem; }
.of-quien { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.of-quien .comp-nombre a, .of-quien .comp-nombre b { font-size: 1.1875rem; font-weight: 800; }
.of-quien > span.num { color: var(--ink-2); font-size: 1rem; }
.of-monto { display: flex; flex-direction: column; align-items: flex-end; text-align: right; gap: .125rem; }
.of-monto > span:not(.hist-monto) { color: var(--ink-2); font-size: 1rem; }
.of-items summary { cursor: pointer; font-weight: 700; color: var(--ink-2); min-height: 2.25rem; display: inline-flex; align-items: center; }
.of-items ul { list-style: none; margin: .25rem 0 0; padding: 0; }
.of-items li { display: flex; justify-content: space-between; gap: 1rem; padding: .375rem 0; border-bottom: 1px solid var(--line-2); font-size: 1rem; }
.of-resumen { gap: .25rem !important; }
.of-resumen b { font-size: 1.0625rem; }

/* ---------- Datos de mi empresa ---------- */
.datos-avance { display: flex; gap: .625rem; align-items: center; margin-top: 1rem !important; }
.datos-avance .i { color: var(--ok); }
.datos-grupo { margin: 0; min-width: 0; }
.datos-grupo legend { float: left; width: 100%; padding: 0; font-size: 1.375rem; font-weight: 800; }
.datos-grupo legend + .help { clear: both; color: var(--ink-2); padding-top: .375rem; }
.datos-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 1.5rem; margin-top: 1.25rem; }
.field-error .input { border-color: var(--red); }
.err-campo { margin-top: .5rem; color: var(--red-ink); font-weight: 600; font-size: 1rem; }
.datos-guardar { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; }
.datos-guardar span { color: var(--ink-2); max-width: 30rem; }
.docs-guardados { margin-top: 1.25rem; }
.docs-guardados > strong { display: block; font-size: 1.125rem; margin-bottom: .25rem; }

.ext-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 3rem; align-items: center; padding: 2rem 0 2.5rem; }
.ext-hero h1 { font-size: 3.25rem; line-height: 1.05; letter-spacing: -.025em; }
.ext-hero-copy > p { font-size: 1.3125rem; color: var(--ink-2); margin-top: 1.125rem; max-width: 34rem; }
.ext-hero-copy > p b { color: var(--ink); }
.ext-hero .note { margin-top: 1.75rem; }
.ext-demo { margin: 0; }
.ext-demo-ventana { background: var(--placa); border: 2px solid var(--line); border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow); }
.ext-demo-url { display: flex; align-items: center; gap: .5rem; padding: .625rem 1rem; background: var(--panel-2); color: var(--muted); font-size: 1rem; font-weight: 600; border-bottom: 2px solid var(--line-2); }
.ext-demo-in { padding: 1rem 1.25rem 1.25rem; }
.ext-demo-top { display: flex; align-items: center; gap: .5rem 1rem; flex-wrap: wrap; padding-bottom: .875rem; border-bottom: 2px solid var(--line-2); }
.ext-demo-top .brand-word { font-size: 1.375rem; padding-right: 1rem; border-right: 2px solid var(--line-2); }
.ext-demo-top strong { font-size: 1.125rem; line-height: 1.25; }
.ext-demo ul { list-style: none; margin: 0 0 1rem; padding: 0; }
.ext-demo li { display: flex; align-items: center; gap: .75rem; padding: .625rem 0; border-bottom: 2px solid var(--line-2); }
.ext-demo li > span:last-child { display: flex; flex-direction: column; min-width: 0; }
.ext-demo li small { font-size: 1rem; color: var(--muted); }
.ext-demo li.off { color: var(--muted); }
.caja { width: 1.5rem; height: 1.5rem; flex: none; display: grid; place-items: center; border: 2px solid var(--muted); border-radius: .3125rem; }
.caja.on { background: var(--red); border-color: var(--red); color: #fff; }
.ext-demo .btn { pointer-events: none; }
.ext-demo figcaption { margin-top: .75rem; font-size: 1rem; color: var(--muted); }
.ext-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.ext-grid > .bloque:only-child, html[data-licitex-ext] .ext-grid > .bloque:last-child { grid-column: 1 / -1; }
.copiar { display: flex !important; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: .75rem; }
.copiar code { padding: .5rem .875rem; border-radius: .5rem; background: var(--panel-2); border: 2px solid var(--line); font-size: 1.0625rem; color: var(--ink); }
.sino { list-style: none; margin: 1.25rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .875rem; }
.sino li { display: flex; gap: .75rem; align-items: flex-start; }
.sino .i { margin-top: .125rem; padding: .1875rem; width: 1.75rem; height: 1.75rem; border-radius: 50%; }
.sino .si .i { background: var(--ok-soft); color: var(--ok); }
.sino .no .i { background: var(--red-soft); color: var(--red-ink); }

/* ---------- Acceso ---------- */
.auth { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.auth-foto { position: relative; background: #111 center / cover no-repeat; color: #fff; display: flex; flex-direction: column; justify-content: space-between; padding: 2.5rem; }
.auth-foto::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .55), rgba(0, 0, 0, .15) 40%, rgba(0, 0, 0, .75)); }
.auth-foto > * { position: relative; }
.auth-foto .brand, .auth-foto .brand:hover { color: #fff; }
.auth-foto .brand-by { color: #e5e5e5; }
.auth-foto h2 { font-size: 2.25rem; max-width: 18ch; }
.auth-foto p { margin-top: .75rem; font-size: 1.1875rem; max-width: 34rem; color: #eee; }
.auth-form { display: flex; align-items: center; justify-content: center; padding: 3rem 1.5rem; }
.auth-card { width: min(28rem, 100%); }
.auth-card h1 { font-size: 2rem; margin-bottom: .5rem; }
.auth-card > p { color: var(--ink-2); margin-bottom: 1.75rem; }
.auth-alt { margin-top: 1.5rem; font-size: 1.125rem; }
.auth-alt a { color: var(--red-ink); font-weight: 700; }
.auth-top { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 2rem; }
.auth-top .brand { visibility: hidden; }

/* ---------- Bienvenida ---------- */
.onb { max-width: 46rem; margin: 0 auto; padding: 2.5rem 0 5rem; }
.pasos-onb { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; padding: 0; margin: 0 0 1.75rem; font-weight: 700; color: var(--muted); }
.pasos-onb li { display: flex; align-items: center; gap: .5rem; }
.pasos-onb .d { width: 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; border: 3px solid var(--line); font-size: 1rem; }
.pasos-onb li.now, .pasos-onb li.done { color: var(--ink); }
.pasos-onb li.now .d { background: var(--red); border-color: var(--red); color: #fff; }
.pasos-onb li.done .d { border-color: var(--red); color: var(--red-ink); }
.onb h1 { font-size: 2.25rem; }
.onb .intro { font-size: 1.25rem; color: var(--ink-2); margin: .75rem 0 1.75rem; }
.examples { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .875rem; }
.examples .lbl { width: 100%; font-weight: 700; font-size: 1rem; }
.examples button { min-height: 2.75rem; padding: .25rem 1rem; border: 2px dashed var(--line); background: var(--placa); border-radius: 999px; font-size: 1rem; cursor: pointer; }
.examples button:hover { border-style: solid; border-color: var(--ink); }

/* ---------- Portada ---------- */
/* ---------- Tu camino para postular (ficha) ---------- */
.camino h2 { display: flex; align-items: center; gap: .625rem; }
.camino-fin { display: flex; gap: .75rem; align-items: flex-start; margin-top: 1rem; padding: 1rem 1.25rem; border-radius: .875rem; background: var(--ok-soft); color: var(--ink); }
.camino-fin .i { color: var(--ok); }
.camino-lista { list-style: none; margin: 1.25rem 0 0; padding: 0; }
.camino-lista > li { position: relative; display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; padding-bottom: 1.25rem; }
.camino-lista > li:last-child { padding-bottom: 0; }
.camino-lista > li::before { content: ""; position: absolute; left: 1.125rem; top: 2.5rem; bottom: 0; border-left: .25rem dashed var(--line); }
.camino-lista > li:last-child::before { display: none; }
.camino-lista > li.paso::before { border-left-style: solid; border-left-color: var(--red); }
.camino-lista .parada { position: relative; z-index: 1; display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; border: .25rem solid var(--line); background: var(--placa); color: #fff; }
.camino-lista li.paso .parada { background: var(--red); border-color: var(--red); }
.camino-lista li.aqui .parada { border-color: var(--red); box-shadow: 0 0 0 .375rem var(--red-soft); }
.camino-lista li.aqui .parada::after { content: ""; width: .875rem; height: .875rem; border-radius: 50%; background: var(--red); }
.camino-lista strong { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; min-height: 2.5rem; font-size: 1.1875rem; }
.camino-lista li.paso strong { color: var(--ink-2); font-weight: 700; }
.camino-lista li:not(.paso):not(.aqui) strong { color: var(--ink-2); }
.camino-lista p { color: var(--ink-2); max-width: 60ch; }
.camino-lista .aqui-tag { padding: .125rem .5rem; border-radius: .375rem; background: var(--red); color: #fff; font-size: .9375rem; font-weight: 700; }
.camino-acciones { display: flex; flex-wrap: wrap; gap: .625rem; margin-top: .875rem; }
.revision { margin-top: 1.5rem; padding: 1.25rem 1.5rem; border: 2px solid var(--line); border-radius: .875rem; background: var(--panel-2); }
.revision-ok { border-color: var(--ok); }
.revision-falta { border-color: var(--warn); }
.revision-veredicto { display: flex; gap: .75rem; align-items: flex-start; font-size: 1.125rem; }
.revision-ok .revision-veredicto .i { color: var(--ok); }
.revision-falta .revision-veredicto .i { color: var(--warn); }
.revision h4 { margin: 1.125rem 0 .5rem; font-size: 1.125rem; }
.rev-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.rev-lista li { display: flex; gap: .625rem; align-items: flex-start; }
.rev-lista .i { margin-top: .1875rem; }
.rev-falta .i { color: var(--red-ink); }
.rev-riesgo .i { color: var(--warn); }
.rev-pasos { margin: 0; padding-left: 1.5rem; display: flex; flex-direction: column; gap: .375rem; }
.revision-pie { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; margin-top: 1.125rem; padding-top: .875rem; border-top: 2px solid var(--line); color: var(--ink-2); font-size: 1rem; }
.lista-postular-cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; }
.lista-postular > p { margin: .25rem 0 .75rem; }
.lista-postular { scroll-margin-top: 7rem; }
.camino, #ia, #ia-bases, #historial, #cotizar { scroll-margin-top: 6rem; }
/* Modo experto: tabla densa (se desplaza de lado en el celular, nunca se aprieta) */
.tabla-exp { width: 100%; min-width: 62rem; border-collapse: collapse; font-size: 1rem; }
.tabla-exp th, .tabla-exp td { padding: .75rem .875rem; border-bottom: 2px solid var(--line-2); text-align: left; vertical-align: top; }
.tabla-exp thead th { position: sticky; top: 0; background: var(--placa); border-bottom: 3px solid var(--ink); white-space: nowrap; font-size: 1rem; }
.tabla-exp tbody th { font-weight: 400; min-width: 18rem; }
.tabla-exp tbody th a { display: block; font-weight: 700; font-size: 1.0625rem; }
.tabla-exp tbody th span, .fase-txt { display: block; color: var(--ink-2); font-size: .9375rem; }
.tabla-exp .fase-hoy, .tabla-exp .fase-pronto { color: var(--red-ink); font-weight: 700; }
.tabla-exp tbody tr:hover { background: var(--panel-2); }
.num-col { text-align: right !important; white-space: nowrap; }
.select-sm { min-height: 2.75rem; font-size: 1rem; }
.tabla-exp .select-sm { min-width: 13rem; }
.tabla-exp td.num { white-space: nowrap; }
.tabla-exp .fase-txt { background: none; padding: 0; min-height: 0; }
.section .tabla-scroll, .exportar + .tabla-scroll { margin-top: 1.25rem; }
.exportar { margin-top: 1rem; display: flex; justify-content: flex-end; }
.section-head .btn-ghost { margin-left: auto; }
/* Notas del equipo y etiquetas */
.notas-lista { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.notas-lista > li { display: flex; gap: .875rem; align-items: flex-start; }
.notas-lista > li > div { min-width: 0; flex: 1; }
.notas-quien { color: var(--ink-2); font-size: 1rem; }
.notas-quien b { color: var(--ink); }
.notas-txt { margin-top: .125rem; overflow-wrap: anywhere; }
.notas-lista .btn { margin-top: .25rem; margin-left: -.75rem; }
.avatar-sm { width: 2.5rem; height: 2.5rem; font-size: .9375rem; flex: none; }
.notas-form { display: flex; flex-direction: column; gap: .75rem; align-items: flex-start; margin-top: 1.25rem; }
.notas-form textarea { width: 100%; }
.etiquetas-ficha { display: grid; grid-template-columns: auto minmax(0, 26rem); justify-content: start; align-items: center; gap: .5rem 1rem; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 2px solid var(--line-2); }
.etiquetas-ficha label { display: flex; align-items: center; gap: .5rem; font-weight: 700; }
.etiquetas-ficha .help { grid-column: 2; color: var(--ink-2); font-size: 1rem; }
.placa-acciones .tag-gris { min-height: 2.25rem; }
/* Catálogo de productos */
.prod-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 2rem; margin-top: 2rem; align-items: start; }
.prod-lista-t { font-size: 1.5rem; }
.prod-lista { list-style: none; margin: 1rem 0 0; padding: 0; border-top: 2px solid var(--line-2); }
.prod-lista > li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem 1.25rem; align-items: center; padding: 1rem 0; border-bottom: 2px solid var(--line-2); }
.prod-lista strong { display: block; font-size: 1.125rem; }
.prod-lista > li > div:first-child span { color: var(--ink-2); font-size: 1rem; }
.prod-precio { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.prod-precio b { font-size: 1.25rem; }
.prod-precio span { color: var(--ink-2); font-size: 1rem; }
.prod-acc { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .5rem; }
.prod-sug > li { grid-template-columns: minmax(0, 1fr) auto auto; }
.prod-sug .prod-acc { grid-column: auto; }
.cot-cat { margin-top: .5rem; width: 100%; }
.cot-catalogo { display: flex; gap: .625rem; align-items: flex-start; margin-top: .75rem; color: var(--ink-2); }
.cot-catalogo a { font-weight: 700; }
@media (max-width: 64rem) { .prod-grid { grid-template-columns: minmax(0, 1fr); } }

/* Agenda */
.agenda-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-top: 1.25rem; }
.agenda-grupo { margin-top: 2.5rem; }
.agenda-grupo > h2 { font-size: 1.5rem; }
.agenda { list-style: none; margin: 1rem 0 0; padding: 0; background: var(--placa); border: 2px solid var(--line); border-radius: .875rem; overflow: hidden; }
.agenda > li { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 1.25rem; padding: 1rem 1.25rem; border-top: 2px solid var(--line-2); }
.agenda > li:first-child { border-top: 0; }
.agenda-fecha { display: flex; flex-direction: column; }
.agenda-fecha b { font-size: 1.625rem; font-weight: 800; line-height: 1.1; }
.agenda-fecha span { color: var(--ink-2); }
.agenda-cierre .agenda-fecha b { color: var(--red-ink); }
.agenda-que { display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; min-width: 0; }
.agenda-que a { font-weight: 700; font-size: 1.1875rem; line-height: 1.3; }
.primeros { margin-top: 1.5rem; border-color: var(--red); }
.primeros-cab { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; }
.primeros-pie { margin-top: 1.25rem; color: var(--ink-2); }
.primeros-pie a { font-weight: 700; }

/* Botones de la guía de la extensión (extension.php) */
.hero-cta { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }

/* «Un día con Licitex»: la portada sigue una jornada de trabajo, parada por parada. */
.portada { background: var(--placa); border-bottom: 2px solid var(--line); }
.portada-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 3.5rem; align-items: start; padding: 3.5rem 0 4.5rem; }
.portada-copy { padding-top: 2.5rem; }
.portada h1 { font-size: 3.75rem; line-height: 1.04; letter-spacing: -.03em; max-width: 15ch; }
.portada-sub { font-size: 1.3125rem; color: var(--ink-2); margin-top: 1.5rem; max-width: 34rem; }
.portada-cta { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.portada-promesa { list-style: none; margin: 1.75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; font-weight: 700; }
.portada-promesa li { display: flex; align-items: center; gap: .625rem; }
.portada-promesa .i { color: var(--red-ink); }
.manana { background: var(--ground); border: 2px solid var(--line); border-radius: 1.25rem; overflow: hidden; box-shadow: var(--shadow); }
.manana-in { padding: 1.5rem 1.5rem 1.25rem; }
.manana-hora { display: flex; align-items: center; gap: 1.25rem; }
.manana-hora time, .parada h2 time, .ruta-reloj { font-weight: 800; letter-spacing: -.04em; line-height: 1; color: var(--red-ink); }
.manana-hora time { font-size: 4.5rem; }
.manana-hora span { font-size: 1.375rem; font-weight: 800; line-height: 1.2; max-width: 15ch; }
.manana-dato { margin: 1rem 0 1.25rem; color: var(--ink-2); }
.manana-dato b { color: var(--ink); }
.manana .placas { gap: .75rem; }
.manana .placa-titulo { font-size: 1.25rem; }
.manana .placa-in { padding: 1rem 1.25rem 1.125rem; }
.pantalla-nota { display: flex; gap: .5rem; align-items: center; margin-top: 1rem; color: var(--ink-2); font-size: 1rem; }

.dia { display: grid; grid-template-columns: 16rem minmax(0, 1fr); gap: 4rem; padding-top: 5.5rem; }
.ruta { position: sticky; top: 7.5rem; align-self: start; }
.ruta-reloj { font-size: 5.5rem; }
.ruta-reloj.cambia { animation: reloj .35s cubic-bezier(.16, 1, .3, 1); }
@keyframes reloj { from { transform: translateY(.5rem); opacity: .25; filter: blur(2px); } }
.ruta ol { list-style: none; margin: 1.75rem 0 0; padding: 0; }
.ruta li { position: relative; }
.ruta li::before { content: ""; position: absolute; left: .6875rem; top: 2.125rem; bottom: -.375rem; border-left: .25rem dashed var(--line); }
.ruta li:last-child::before { display: none; }
.ruta li.paso::before { border-left-style: solid; border-left-color: var(--red); }
.ruta a { display: flex; gap: .875rem; align-items: flex-start; min-height: 3.5rem; padding: .375rem 0; text-decoration: none; color: var(--ink-2); font-weight: 600; line-height: 1.25; }
.ruta a > span:last-child { display: flex; flex-direction: column; }
.ruta time { font-weight: 800; color: var(--ink); }
.ruta a:hover { color: var(--red-ink); }
.ruta-punto { position: relative; z-index: 1; flex: none; display: grid; place-items: center; width: 1.625rem; height: 1.625rem; margin-top: .0625rem; border-radius: 50%; border: .25rem solid var(--line); background: var(--placa); transition: background-color .15s, border-color .15s; }
.ruta li.paso .ruta-punto { background: var(--red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 70% no-repeat; border-color: var(--red); }
.ruta li.aqui .ruta-punto { border-color: var(--red); box-shadow: 0 0 0 .3125rem var(--red-soft); }
.ruta li.aqui .ruta-punto::after { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: var(--red); }
.ruta li.aqui a { color: var(--ink); font-weight: 800; }

.dia-paradas { display: flex; flex-direction: column; gap: 6.5rem; min-width: 0; }
.parada { scroll-margin-top: 7.5rem; }
.parada h2 { display: flex; flex-direction: column; gap: .5rem; }
.parada h2 span { font-size: 2.5rem; letter-spacing: -.02em; line-height: 1.1; max-width: 20ch; }
.parada > p { font-size: 1.25rem; color: var(--ink-2); margin-top: 1rem; max-width: 40rem; }
.parada > p b { color: var(--ink); }
.pantalla { margin-top: 2rem; max-width: 46rem; background: var(--placa); border: 2px solid var(--line); border-radius: 1.25rem; overflow: hidden; box-shadow: var(--shadow); }
.pantalla-in { padding: 1.5rem 1.75rem 1.375rem; }
.pantalla h3 { font-size: 1.375rem; margin-bottom: 1rem; }
.pantalla .hist { margin-top: 0; }
.pantalla .hist-quien b { font-size: 1rem; }
.pantalla-doc { display: flex; gap: .875rem; align-items: center; }
.pantalla-doc strong { display: block; font-size: 1.125rem; }
.pantalla-doc span { color: var(--ink-2); font-size: 1rem; }
.pantalla-doc .i { color: var(--red-ink); }
.pantalla .llenado { margin: 1rem 0 0; }
.pantalla .llenado-acciones .btn { pointer-events: none; }
.coti { list-style: none; margin: 0 0 1rem; padding: 0; border-top: 2px solid var(--line-2); }
.coti li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .875rem 0; border-bottom: 2px solid var(--line-2); font-weight: 700; }
.coti small { display: block; font-size: 1rem; font-weight: 400; color: var(--ink-2); }
.coti b { font-size: 1.25rem; white-space: nowrap; }
.coti-ok { display: flex; gap: .5rem; align-items: center; margin-top: 1rem; color: var(--ok); font-weight: 700; }
.pantalla .of-lista { margin-top: 0; }
.por-que { margin-top: 1.25rem; padding: 1rem 1.25rem; border-radius: .875rem; background: var(--panel-2); }
.por-que h4 { display: flex; gap: .5rem; align-items: center; margin: 0 0 .375rem; font-size: 1.125rem; }
.por-que .i { color: var(--red-ink); }

.para-quien { padding-top: 7rem; }
.para-quien > h2, .versus > h2 { font-size: 2.5rem; letter-spacing: -.02em; line-height: 1.1; max-width: 24ch; }
.para-quien-in { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem; margin-top: 2.25rem; padding-top: 2rem; border-top: 2px solid var(--line); }
.para-quien h3 { font-size: 1.5rem; }
.lista-check { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .875rem; }
.lista-check li { display: flex; gap: .75rem; align-items: flex-start; font-size: 1.1875rem; }
.lista-check .i { color: var(--red-ink); margin-top: .1875rem; }

.versus { padding-top: 6.5rem; }
.versus-tabla { margin-top: 2rem; background: var(--placa); border: 2px solid var(--line); border-radius: 1.25rem; overflow: hidden; }
.versus-fila { display: grid; grid-template-columns: 13rem minmax(0, 1fr) minmax(0, 1fr); }
.versus-fila > span { padding: 1.25rem 1.5rem; border-top: 2px solid var(--line-2); }
.versus-cab > span { border-top: 0; padding-block: 1rem; font-weight: 800; font-size: 1.1875rem; }
.versus-fila > [role="rowheader"] { font-weight: 800; }
.versus-fila > [role="cell"]:not(.versus-lx) { color: var(--ink-2); }
.versus-lx { display: flex; gap: .625rem; align-items: flex-start; background: var(--red-soft); font-weight: 700; }
.versus-lx .i { color: var(--red-ink); margin-top: .1875rem; }
.versus-cab .versus-lx { background: var(--red); color: #fff; }

.hecho-por { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); margin-top: 7rem; background: #16181b; color: #fff; border-radius: 1.25rem; overflow: hidden; }
.hecho-por img { width: 100%; height: 100%; min-height: 24rem; object-fit: cover; }
.hecho-por-in { display: flex; flex-direction: column; justify-content: center; gap: 1rem; padding: 2.75rem; }
.hecho-por .livery { width: 8rem; margin-bottom: .5rem; }
.hecho-por h2 { font-size: 2.5rem; letter-spacing: -.02em; line-height: 1.1; }
.hecho-por p { font-size: 1.1875rem; color: #e4e4e4; max-width: 36rem; }
.hecho-por-cta { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: .5rem; }
.btn-line-claro { background: transparent; border-color: #fff; color: #fff; }
.btn-line-claro:hover { background: #fff; color: #16181b; }

.cierre { padding: 7rem 0 1rem; text-align: center; }
.cierre h2 { max-width: 18ch; margin: 0 auto; font-size: 3rem; letter-spacing: -.025em; line-height: 1.08; }
.cierre p { max-width: 38rem; margin: 1.25rem auto 2rem; font-size: 1.25rem; color: var(--ink-2); }

/* En escritorio la hora de cada parada la marca el reloj de la ruta. */
@media (min-width: 64.0625rem) {
  .parada h2 time { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (max-width: 64rem) {
  .portada-in { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; padding: 2.75rem 0 3rem; }
  .portada h1 { font-size: 3rem; max-width: 16ch; }
  .dia { grid-template-columns: minmax(0, 1fr); padding-top: 4rem; }
  .ruta { display: none; }
  .dia-paradas { gap: 5rem; }
  .parada h2 time { font-size: 3.25rem; }
  .hecho-por, .para-quien-in { grid-template-columns: minmax(0, 1fr); }
  .hecho-por img { min-height: 14rem; max-height: 20rem; }
  .para-quien-in { gap: 2rem; }
}
@media (max-width: 48rem) {
  .portada h1 { font-size: 2.375rem; }
  .portada-sub { font-size: 1.1875rem; }
  .portada-cta .btn { flex: 1 1 100%; }
  .manana-in { padding: 1.25rem 1rem 1rem; }
  .manana-hora { gap: 1rem; }
  .manana-hora time { font-size: 3.25rem; }
  .manana-hora span { font-size: 1.1875rem; }
  .parada h2 span, .para-quien > h2, .versus > h2, .hecho-por h2 { font-size: 1.875rem; }
  .parada > p { font-size: 1.125rem; }
  .pantalla-in { padding: 1.25rem 1.125rem; }
  .pantalla .of-lista > li.of-gano { margin-inline: -.5rem; padding: .875rem .5rem; }
  .versus-fila { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .versus-fila > [role="rowheader"] { grid-column: 1 / -1; padding-bottom: 0; }
  .versus-fila > [role="cell"] { border-top: 0; }
  .versus-cab > span:first-child { display: none; }
  .versus-fila > span { padding: 1rem 1.125rem; }
  .hecho-por-in { padding: 1.75rem 1.25rem; }
  .cierre { padding-top: 5rem; }
  .cierre h2 { font-size: 2.25rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ruta-reloj.cambia { animation: none; }
  .ruta-punto { transition: none; }
}
.contacto { display: flex; flex-wrap: wrap; gap: .75rem; }

.landing .guardar { display: none; }

/* ---------- Ayuda ---------- */
.faq details { background: var(--placa); border: 2px solid var(--line); border-radius: .75rem; }
.faq details + details { margin-top: .75rem; }
.faq summary { cursor: pointer; padding: 1.125rem 1.25rem; font-weight: 700; font-size: 1.1875rem; list-style: none; display: flex; justify-content: space-between; gap: 1rem; }
.faq summary::after { content: "+"; font-size: 1.5rem; line-height: 1; }
.faq details[open] summary::after { content: "−"; }
.faq summary::-webkit-details-marker { display: none; }
.faq details > div { padding: 0 1.25rem 1.25rem; font-size: 1.125rem; color: var(--ink-2); }

/* ---------- Ayuda flotante (WhatsApp) ---------- */
.ayuda-flot {
  position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 60; display: inline-flex; align-items: center; gap: .625rem;
  min-height: 3.5rem; padding: .5rem 1.25rem .5rem .875rem; border-radius: 999px; background: var(--wa); color: #fff; font-weight: 700;
  text-decoration: none; box-shadow: 0 2px 4px rgba(0, 0, 0, .15), 0 8px 20px -8px rgba(0, 0, 0, .45); font-size: 1.0625rem;
}
.ayuda-flot:hover { background: #0b6231; color: #fff; }
.ayuda-flot svg { width: 1.75rem; height: 1.75rem; }

/* ---------- Pie ---------- */
.foot { margin-top: 5rem; background: var(--placa); border-top: 2px solid var(--line); padding: 2.5rem 0 6rem; font-size: 1rem; color: var(--ink-2); }
.foot-in { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 2rem; }
.foot strong { display: block; color: var(--ink); font-size: 1.0625rem; margin-bottom: .5rem; }
.foot a { font-weight: 600; }
.foot img { height: 3rem; width: auto; margin-bottom: .75rem; }
.foot p + p { margin-top: .375rem; }

#toasts { position: fixed; left: 50%; bottom: 6rem; translate: -50% 0; z-index: 90; display: flex; flex-direction: column; gap: .5rem; align-items: center; }
.toast { background: var(--ink); color: var(--placa); padding: 1rem 1.25rem; border-radius: .75rem; font-weight: 700; font-size: 1.0625rem; box-shadow: var(--shadow); max-width: min(34rem, 92vw); animation: up .2s ease-out; }
.toast.error { background: var(--red); color: #fff; }
@keyframes up { from { transform: translateY(.5rem); opacity: 0; } }

/* ============ Responsive ============ */
/* Escritorio mediano: «Letra» y «Modo» quedan con su ícono (A+ y luna/sol) para que el logo no se apriete. */
@media (max-width: 82rem) {
  .bar-in > .bar-tools .tool .t { display: none; }
}
@media (max-width: 64rem) {
  .ficha-grid { grid-template-columns: minmax(0, 1fr); }
  .respuestas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .respuestas > div:nth-child(3) { padding-left: 0; border-left: 0; }
  .ext-hero, .ext-grid { grid-template-columns: minmax(0, 1fr); }
  .ext-hero h1 { font-size: 2.5rem; }
  .respuestas > div:nth-child(n+3) { margin-top: 1rem; }
  .filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hero-in { grid-template-columns: minmax(0, 1fr); padding: 2.5rem 0; }
  .flota, .pasos-home { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .socio-home { grid-template-columns: minmax(0, 1fr); }
  .socio-home img { min-height: 14rem; max-height: 18rem; }
  .nav a { padding: 0 .5rem; }
  .tool .t { display: none; }
}
@media (max-width: 48rem) {
  body { padding-bottom: 5.5rem; }
  .nav { display: none; }
  .bar-in { min-height: 4.25rem; gap: .75rem; }
  .brand-word { font-size: 1.5rem; }
  .tabbar { display: grid; grid-template-columns: repeat(5, 1fr); position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; background: var(--placa); border-top: 2px solid var(--line); padding: .25rem .25rem calc(.25rem + env(safe-area-inset-bottom)); }
  .tabbar a { display: flex; flex-direction: column; align-items: center; gap: .125rem; padding: .375rem 0; min-height: 3.75rem; justify-content: center; font-size: .9375rem; font-weight: 700; color: var(--ink-2); text-decoration: none; position: relative; }
  .tabbar a[aria-current="page"] { color: var(--ink); }
  .tabbar a[aria-current="page"]::before { content: ""; position: absolute; top: -.3125rem; left: 25%; right: 25%; height: .3125rem; background: var(--red); border-radius: 0 0 .25rem .25rem; }
  .ayuda-flot { bottom: 5.5rem; right: .75rem; padding: .5rem; min-height: 3.5rem; min-width: 3.5rem; justify-content: center; }
  .ayuda-flot .t { display: none; }
  .seg { display: flex; width: 100%; }
  .seg a { flex: 1 1 auto; justify-content: center; text-align: center; }
  .brand-by { font-size: .875rem; white-space: normal; line-height: 1.15; }
  .brand-by img { height: 1.25rem; }
  .brand { min-width: 0; flex: 1 1 auto; }
  .bar-tools { flex: none; }
  .bar-in { flex-wrap: wrap; padding: .5rem 0; }
  .landing .bar-tools .btn-red { display: none; }
  .landing .bar-tools .btn { min-height: 3rem; }
  .saludo h1, .onb h1 { font-size: 1.875rem; }
  .placa-in { grid-template-columns: minmax(0, 1fr); padding: 1rem 1.125rem 1.25rem; }
  .placa-lado { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; text-align: left; min-width: 0; }
  .placa-titulo { font-size: 1.3125rem; }
  .ficha-cartel h1 { font-size: 1.625rem; }
  .ficha-cartel-in { padding: 1.25rem; }
  .respuestas { grid-template-columns: minmax(0, 1fr); }
  .respuestas > div, .respuestas > div + div { padding: 1rem 0 0; border-left: 0; }
  .respuestas > div:nth-child(n+2) { margin-top: 0; }
  .filtros { grid-template-columns: minmax(0, 1fr); }
  .row-2 { grid-template-columns: minmax(0, 1fr); }
  .tex-banda { grid-template-columns: minmax(0, 1fr); }
  .tex-banda img { max-height: 10rem; }
  .tex-banda > div, .tex-banda .btn { margin: 0 1.25rem 1.25rem; }
  .hist-in { grid-template-columns: minmax(0, 1fr); }
  .cot-item { grid-template-columns: minmax(0, 1fr); }
  .comp-lista > li { grid-template-columns: 2.5rem minmax(0, 1fr); }
  .of-lista > li { grid-template-columns: minmax(0, 1fr); }
  .of-monto { align-items: flex-start; text-align: left; }
  .comp-num { grid-column: 1 / -1; justify-content: space-between; gap: .75rem; }
  .comp-num > div { align-items: flex-start; min-width: 0; }
  .comp-donde, .comp-filtros { grid-template-columns: minmax(0, 1fr); }
  .eq-invitar-campos { grid-template-columns: minmax(0, 1fr); }
  .eq-linea li { grid-template-columns: minmax(0, 1fr); gap: .125rem; }
  .eq-dias li { grid-template-columns: 4rem minmax(0, 1fr) 5rem; }
  .responsable .select { min-width: 0; width: 100%; }
  .cot-opciones, .llenado-campos { grid-template-columns: minmax(0, 1fr); }
  .cot-totales dl { margin-left: 0; max-width: none; }
  .hist-quien { text-align: left; align-items: flex-start; }
  .hist-links { justify-content: flex-start; }
  .datos-campos { grid-template-columns: minmax(0, 1fr); }
  .llenado { margin-left: 0; }
  .auth { grid-template-columns: minmax(0, 1fr); }
  .auth-foto { display: none; }
  .auth-top .brand { visibility: visible; }
  .hero h1 { font-size: 2.25rem; }
  .flota, .pasos-home { grid-template-columns: minmax(0, 1fr); }
  .foot-in { grid-template-columns: minmax(0, 1fr); }
  .recorrido li { grid-template-columns: 2.5rem minmax(0, 1fr); }
  .recorrido time { grid-column: 2; text-align: left; margin-top: -.5rem; }
  .embed iframe { height: 40rem; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
