/* ========================================
   BALEXUS — Agricultura de precisión con drones (/agro)

   La página es a la vez la landing de la línea de agroindustria y
   una demo abierta. El chat reutiliza las clases de demo.css
   (.demo-layout, .demo-chat, .demo-caps…) para no duplicar una
   interfaz que ya existe; lo propio de aquí es el visor del vuelo.
   ======================================== */

/* ── Hero ─────────────────────────────────────────────────────── */
.ag-hero { padding-bottom: 56px; }
.ag-hero-grid { display: grid; grid-template-columns: 1.08fr 0.92fr; gap: 52px; align-items: center; }
.ag-hero-foto { aspect-ratio: 4/3.2; }
.ag-hero .px-lede { max-width: 54ch; margin-bottom: 26px; }

.ag-cifras {
    display: flex;
    flex-wrap: wrap;
    gap: 26px 34px;
    margin: 0 0 30px;
    padding: 20px 0 0;
    border-top: 1px solid var(--px-line);
}
.ag-cifra { min-width: 128px; }
.ag-cifra[hidden] { display: none; }
.ag-cifra dt {
    font-family: var(--px-mono);
    font-size: 26px;
    font-weight: 600;
    color: var(--accent-primary);
    line-height: 1.1;
    margin-bottom: 5px;
}
.ag-cifra dd { font-size: 12.5px; color: var(--text-secondary); margin: 0; max-width: 23ch; line-height: 1.45; }
.ag-cifra--plata dt { color: var(--accent-secondary); }
.ag-cifra--uso dt { color: var(--accent-secondary); }
.ag-cifras--demo { border-top: none; padding-top: 0; margin-bottom: 34px; }

/* ── Visor ────────────────────────────────────────────────────── */
.ag-visor-sec .px-section-head { max-width: 700px; }

.ag-visor {
    border: 1px solid var(--px-line-strong);
    border-radius: 16px;
    background: var(--bg-card);
    overflow: hidden;
}

.ag-barra {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px;
    border-bottom: 1px solid var(--px-line);
}
.ag-capas { display: flex; flex-wrap: wrap; gap: 6px; }
.ag-capa {
    background: transparent;
    border: 1px solid var(--px-line-strong);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 12.5px;
    font-family: inherit;
    padding: 7px 14px;
    cursor: pointer;
    transition: border-color .18s ease, color .18s ease, background .18s ease;
}
.ag-capa:hover { border-color: var(--accent-primary); color: var(--text-primary); }
.ag-capa.is-activa { background: var(--accent-primary); border-color: var(--accent-primary); color: #041210; font-weight: 600; }
.ag-vuelo-meta { font-family: var(--px-mono); font-size: 11.5px; color: var(--px-faint); letter-spacing: .04em; }
.ag-vuelo-meta b { color: var(--accent-primary); }

.ag-cuerpo { display: grid; grid-template-columns: 1.6fr 1fr; gap: 0; align-items: start; }

.ag-lienzo { margin: 0; padding: 16px; min-width: 0; }

/* Lienzo y vectores comparten una caja propia, sin relleno y con la relación
   de aspecto exacta de la malla. Encajar el SVG a mano contra el padding de la
   figura dejaba los bordes de lote corridos respecto de las celdas pintadas —
   en un mapa, medio centímetro de desfase es un error de datos a la vista. */
.ag-mapa { position: relative; aspect-ratio: 56 / 36; }
.ag-mapa canvas {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 8px;
    cursor: crosshair;
    /* El mosaico es dato, no fotografía: el suavizado del navegador al
       escalarlo inventaría tonos intermedios entre celdas que sí tienen un
       valor medido cada una. */
    image-rendering: -webkit-optimize-contrast;
}
.ag-mapa svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }

.ag-lote { fill: none; stroke: rgba(234, 251, 248, .34); stroke-width: 0.12; }
.ag-lote.is-sel { stroke: var(--accent-primary); stroke-width: 0.3; }
.ag-lote-rotulo {
    font-family: var(--px-mono);
    font-size: 1.35px;
    font-weight: 600;
    fill: rgba(234, 251, 248, .92);
    paint-order: stroke;
    stroke: rgba(10, 14, 23, .75);
    stroke-width: 0.35px;
}
.ag-reservorio { fill: rgba(43, 111, 212, .55); stroke: rgba(143, 200, 230, .5); stroke-width: 0.1; }
.ag-anom { fill: none; stroke-width: 0.22; stroke-dasharray: 0.7 0.5; }
.ag-anom--alta { stroke: #ff6b4a; }
.ag-anom--media { stroke: #ffc65c; }
.ag-anom--baja { stroke: #9fe7d8; }

.ag-pie {
    margin-top: 10px;
    font-size: 11.5px;
    color: var(--px-faint);
    line-height: 1.5;
}

.ag-tip {
    position: absolute;
    z-index: 3;
    pointer-events: none;
    background: rgba(10, 14, 23, .95);
    border: 1px solid var(--px-line-strong);
    border-radius: 8px;
    padding: 8px 11px;
    font-size: 12px;
    line-height: 1.45;
    white-space: nowrap;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .4);
}
.ag-tip[hidden] { display: none; }
.ag-tip b { display: block; color: var(--text-primary); }
.ag-tip span { color: var(--text-secondary); font-size: 11.5px; }

/* ── Panel lateral del visor ──────────────────────────────────── */
.ag-panel {
    border-left: 1px solid var(--px-line);
    padding: 20px 20px 22px;
    display: flex;
    flex-direction: column;
    gap: 22px;
    min-width: 0;
}
.ag-panel-titulo {
    font-family: var(--px-mono);
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--accent-primary);
    margin: 0 0 12px;
}
.ag-rampa { height: 12px; border-radius: 999px; }
.ag-rampa-pies {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    color: var(--px-faint);
    margin-top: 6px;
}
.ag-leyenda-nota { font-size: 11.5px; color: var(--px-faint); line-height: 1.5; margin: 10px 0 0; }
.ag-leyenda-zonas { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.ag-leyenda-zonas li { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--text-secondary); }
.ag-leyenda-zonas i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }

.ag-ficha-datos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; margin: 0; }
.ag-ficha-datos dt {
    font-family: var(--px-mono);
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--px-faint);
    margin-bottom: 3px;
}
.ag-ficha-datos dd { margin: 0; font-size: 14px; color: var(--text-primary); line-height: 1.35; }
.ag-ficha-nota { font-size: 12px; color: var(--text-secondary); line-height: 1.5; margin: 14px 0 0; }
.ag-volver {
    margin-top: 12px;
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-size: 12.5px;
    color: var(--accent-primary);
    cursor: pointer;
}
.ag-volver:hover { text-decoration: underline; }

.ag-hallazgos-fila { border-top: 1px solid var(--px-line); padding: 20px 20px 22px; }
.ag-hallazgos {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
}
.ag-hallazgo {
    width: 100%;
    text-align: left;
    background: transparent;
    border: 1px solid var(--px-line);
    border-radius: 10px;
    padding: 10px 12px;
    font: inherit;
    cursor: pointer;
    display: grid;
    gap: 4px;
    transition: border-color .18s ease, background .18s ease;
}
.ag-hallazgo:hover { border-color: var(--accent-primary); background: rgba(56, 214, 196, .05); }
.ag-hallazgo.is-sel { border-color: var(--accent-primary); background: rgba(56, 214, 196, .08); }
.ag-hallazgo b { font-size: 13.5px; color: var(--text-primary); font-weight: 600; line-height: 1.3; }
.ag-hallazgo-meta { font-family: var(--px-mono); font-size: 11px; color: var(--px-faint); }
.ag-hallazgo-plata { font-family: var(--px-mono); font-size: 11.5px; color: var(--accent-secondary); }
.ag-sev {
    justify-self: start;
    font-family: var(--px-mono);
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: .09em;
    padding: 2px 7px;
    border-radius: 999px;
}
.ag-sev--alta { background: rgba(255, 107, 74, .16); color: #ff9b83; }
.ag-sev--media { background: rgba(255, 198, 92, .16); color: #ffd18c; }
.ag-sev--baja { background: rgba(159, 231, 216, .14); color: #9fe7d8; }

.ag-aviso {
    margin: 22px 0 0;
    font-size: 13px;
    line-height: 1.6;
    color: var(--text-secondary);
    border-left: 2px solid var(--accent-secondary);
    padding-left: 16px;
    max-width: 82ch;
}

/* ── El proceso ───────────────────────────────────────────────── */
.ag-pasos {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}
.ag-pasos li {
    border-top: 2px solid var(--px-line-strong);
    padding-top: 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.ag-paso-num { font-family: var(--px-mono); font-size: 11.5px; color: var(--accent-primary); letter-spacing: .1em; }
.ag-pasos b { font-size: 17px; color: var(--text-primary); }
.ag-pasos p { margin: 0; font-size: 13.5px; color: var(--text-secondary); line-height: 1.6; flex: 1; }
.ag-paso-t {
    align-self: flex-start;
    font-family: var(--px-mono);
    font-size: 11.5px;
    color: var(--accent-secondary);
    border: 1px solid var(--px-line-strong);
    border-radius: 999px;
    padding: 4px 11px;
}

/* ── El chat ──────────────────────────────────────────────────── */
.ag-chat-sec .demo-switch { margin-top: 28px; }

/* ── Entregables y límites ────────────────────────────────────── */
.ag-entregables { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.ag-entregables article {
    border: 1px solid var(--px-line);
    border-radius: 14px;
    background: var(--bg-card);
    padding: 22px 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.ag-entregables svg { width: 20px; height: 20px; color: var(--accent-primary); }
.ag-entregables b { font-size: 16px; color: var(--text-primary); }
.ag-entregables > article > span {
    font-family: var(--px-mono);
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--px-faint);
}
.ag-entregables p { margin: 4px 0 0; font-size: 13.5px; color: var(--text-secondary); line-height: 1.6; }

.ag-limites {
    margin-top: 40px;
    border: 1px solid var(--px-line-strong);
    border-radius: 14px;
    padding: 28px 30px;
}
.ag-limites h3 {
    font-size: 18px;
    color: var(--text-primary);
    margin: 0 0 16px;
}
.ag-limites ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px 30px; }
.ag-limites li { font-size: 13.5px; color: var(--text-secondary); line-height: 1.62; padding-left: 16px; border-left: 2px solid var(--px-line); }
.ag-limites b { color: var(--text-primary); }

/* ── Adaptación ───────────────────────────────────────────────── */
@media (max-width: 1040px) {
    .ag-hero-grid { grid-template-columns: 1fr; gap: 34px; }
    .ag-hero-foto { max-width: 560px; }
    .ag-cuerpo { grid-template-columns: 1fr; }
    .ag-panel { border-left: none; border-top: 1px solid var(--px-line); }
    .ag-pasos { grid-template-columns: repeat(2, 1fr); }
    .ag-entregables { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 720px) {
    .ag-cifra dt { font-size: 22px; }
    .ag-pasos, .ag-entregables { grid-template-columns: 1fr; }
    .ag-limites ul { grid-template-columns: 1fr; }
    .ag-limites { padding: 22px 20px; }
    .ag-lienzo { padding: 12px; }
    .ag-hallazgos-fila { padding: 16px 14px 18px; }
    .ag-ficha-datos { grid-template-columns: 1fr 1fr; }
    /* En pantalla táctil no hay cursor que pasear: el tooltip sobra y el clic
       para aislar el lote sigue funcionando igual. */
    .ag-tip { display: none; }
}
