:root{
  --verde:#14382a; --verde2:#1f5240; --oro:#c9a227; --oro-claro:#f3e3a6;
  --fondo:#f4f1ea; --tarjeta:#ffffff; --texto:#1c1c1a; --suave:#6b6a64; --borde:#d9d4c7;
  --rojo:#b3261e; --ok:#2e7d32;
  --n1:#c0392b; --n2:#d4a017; --n3:#2e7d32;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--fondo);color:var(--texto);
  font:16px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
.pantalla{min-height:100vh;display:flex;flex-direction:column}
.contenido{padding:16px;display:flex;flex-direction:column;gap:14px;max-width:640px;width:100%;margin:0 auto}
.barra{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--verde);color:#fff;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top))}
.btn{border:0;border-radius:12px;padding:16px;font-size:18px;font-weight:700;width:100%;cursor:pointer}
.btn:active{transform:scale(.98)}
.btn-oro{background:var(--oro);color:var(--verde)}
.btn-sec{background:var(--verde2);color:#fff}
.btn-mini{width:auto;padding:12px 16px;font-size:16px}
.btn-txt{background:none;border:0;color:inherit;font-size:16px;padding:8px;cursor:pointer}
.pildora{background:var(--oro);color:var(--verde);border:0;border-radius:999px;padding:8px 14px;font-weight:700;font-size:15px}
.pildora.cero{background:rgba(255,255,255,.15);color:#fff}
input,select,textarea{width:100%;font:inherit;font-size:18px;padding:12px;border:2px solid var(--borde);border-radius:10px;background:#fff;color:var(--texto)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--oro)}
label{display:flex;flex-direction:column;gap:6px;font-weight:600}
label.grande select{font-size:22px;font-weight:700}
.nota,.sub{color:var(--suave);font-size:14px;margin:0}
.error{color:var(--rojo);font-weight:600;min-height:1.4em;margin:0}
.tarjeta{background:var(--tarjeta);border-radius:12px;padding:14px;border:1px solid var(--borde)}
.tarjeta.aviso{border:2px solid var(--oro);background:#fffbea}
.mono{font-family:ui-monospace,Consolas,monospace;font-size:18px;margin:6px 0}

/* Login */
#p-login{background:var(--verde);justify-content:center}
.login-caja{background:#fff;margin:24px 16px;padding:24px 20px;border-radius:16px;display:flex;flex-direction:column;gap:14px;max-width:420px;align-self:center;width:calc(100% - 32px)}
.login-logo{width:84px;height:84px;object-fit:contain;align-self:center}
.login-caja h1{margin:0;text-align:center;color:var(--verde);font-size:28px}
.login-caja h1 span{color:var(--oro)}
.login-caja .sub{text-align:center}
.avanzado summary{color:var(--suave);font-size:14px;cursor:pointer;margin-bottom:6px}

/* Lector */
.lector{background:var(--tarjeta);border:2px dashed var(--verde2);border-radius:16px;padding:20px 14px;text-align:center;display:flex;flex-direction:column;gap:12px}
.lector-icono{font-size:40px;color:var(--verde2);font-weight:800;animation:pulso 1.6s infinite}
.lector-txt{font-size:20px;font-weight:700;color:var(--verde)}
@keyframes pulso{50%{opacity:.35}}
.buscar{display:flex;gap:8px}
.resultados{display:flex;flex-direction:column;gap:6px;text-align:left}
.resultados button{background:#fff;border:1px solid var(--borde);border-radius:10px;padding:12px;font-size:17px;text-align:left;cursor:pointer}
.resultados button b{font-size:18px}
.resultados small{color:var(--suave);display:block}

/* Ficha */
.ficha{background:var(--verde);color:#fff;border-radius:14px;padding:14px}
.ficha-sup{display:flex;justify-content:space-between;align-items:center}
.ficha-sigla{font-size:30px;font-weight:800;letter-spacing:.5px;color:var(--oro-claro)}
.ficha-datos{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:12px}
.ficha-aviso{margin-top:10px;background:var(--oro);color:var(--verde);border-radius:8px;padding:8px 10px;font-weight:700;font-size:14px}

fieldset{border:0;background:var(--tarjeta);border-radius:12px;padding:12px;margin:0;display:flex;flex-direction:column;gap:10px;border:1px solid var(--borde)}
legend{font-weight:800;color:var(--verde);font-size:15px;text-transform:uppercase;letter-spacing:.5px;padding:0;float:left;width:100%;margin-bottom:4px}
.rasgo{display:flex;flex-direction:column;gap:6px}
.rasgo>span{font-weight:600}
.notas{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.notas button{border:2px solid var(--borde);background:#fff;border-radius:10px;padding:12px 4px;font-size:17px;font-weight:700;cursor:pointer;color:var(--texto)}
.notas button small{display:block;font-size:12px;font-weight:600;color:var(--suave)}
.notas button[aria-pressed="true"][data-v="1"]{background:var(--n1);border-color:var(--n1);color:#fff}
.notas button[aria-pressed="true"][data-v="2"]{background:var(--n2);border-color:var(--n2);color:#fff}
.notas button[aria-pressed="true"][data-v="3"]{background:var(--n3);border-color:var(--n3);color:#fff}
.notas button[aria-pressed="true"] small{color:#fff}
.fila{flex-direction:row;align-items:center;justify-content:space-between}
.fila input{width:120px;text-align:center;font-size:22px;font-weight:700}
.alertas{display:flex;flex-wrap:wrap;gap:8px}
.alertas button{border:2px solid var(--borde);background:#fff;border-radius:999px;padding:10px 16px;font-size:16px;font-weight:600;cursor:pointer;color:var(--texto)}
.alertas button[aria-pressed="true"]{background:var(--rojo);border-color:var(--rojo);color:#fff}
.btn-guardar{position:sticky;bottom:10px;font-size:22px;padding:18px;box-shadow:0 4px 14px rgba(0,0,0,.2)}

/* Registros */
.reg{background:#fff;border:1px solid var(--borde);border-radius:10px;padding:10px 12px;display:flex;justify-content:space-between;gap:8px;align-items:center;cursor:pointer}
.reg b{font-size:17px}.reg small{color:var(--suave);display:block}
.estado{font-size:13px;font-weight:700;border-radius:999px;padding:4px 10px;white-space:nowrap}
.estado.pend{background:var(--oro-claro);color:#6b5200}.estado.ok{background:#dcefdc;color:var(--ok)}

.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--texto);color:#fff;padding:12px 18px;border-radius:10px;font-weight:600;z-index:20;max-width:90vw;text-align:center}
.toast.ok{background:var(--ok)}.toast.mal{background:var(--rojo)}

/* Modo de trabajo */
.opcion{display:flex;flex-direction:column;gap:6px;text-align:left;background:#fff;border:2px solid var(--borde);border-radius:14px;padding:16px;font:inherit;color:var(--texto);cursor:pointer}
.opcion b{font-size:20px;color:var(--verde)}
.opcion small{color:var(--suave);font-size:15px}
button.opcion:active{border-color:var(--oro)}
.opcion-tandas{cursor:default}
.etq{font-weight:700;margin-top:6px}
.tamanos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tamanos button{border:0;border-radius:10px;padding:16px 0;font-size:22px;font-weight:800;background:var(--oro);color:var(--verde);cursor:pointer}

/* Tanda */
.tanda{background:var(--tarjeta);border:1px solid var(--borde);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px}
.tanda-sup{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.tanda-sup b{font-size:18px;color:var(--verde);display:block}
.tanda-sup small{color:var(--suave);font-size:14px}
.tanda-sup .btn-txt{color:var(--verde2);font-size:14px;text-decoration:underline;white-space:nowrap}
.plazas{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.plazas button{border:2px solid var(--borde);background:#fff;border-radius:8px;padding:6px 2px;cursor:pointer;color:var(--texto);min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:inherit}
.plazas button b{font-size:17px;line-height:1}
.plazas button small{font-size:10px;line-height:1.1;margin-top:3px;word-break:break-all;color:var(--suave)}
.plazas .leido{background:#e8f1ec;border-color:#9cc3ad}
.plazas .hecha{background:var(--ok);border-color:var(--ok);color:#fff}
.plazas .hecha small{color:#fff}
.plazas .desconocido{background:#fff3cd;border-color:var(--oro)}
.plazas .saltada{background:#eee;color:#999;border-style:dashed}
.plazas .actual{outline:3px solid var(--oro);outline-offset:1px;border-color:var(--verde)}
.tanda-acciones{display:flex;gap:8px;flex-wrap:wrap}
.tanda-acciones .btn{flex:1;font-size:15px;padding:12px 6px}
.plaza-etq{display:inline-block;background:var(--oro);color:var(--verde);font-weight:800;border-radius:6px;padding:2px 8px;font-size:14px;margin-bottom:4px}
.fin{text-align:center;display:flex;flex-direction:column;gap:12px;align-items:stretch}
.fin-icono{font-size:44px;color:var(--ok);font-weight:800}
.fin b{font-size:18px}

/* Evolución del animal */
.hist{margin-top:10px;background:rgba(255,255,255,.08);border-radius:8px;padding:8px 10px}
.hist summary{cursor:pointer;font-weight:700;font-size:14px;color:var(--oro-claro)}
.hist table{width:100%;border-collapse:collapse;margin-top:8px;font-size:14px}
.hist th{text-align:left;font-weight:600;opacity:.7;font-size:12px;padding:2px 4px}
.hist td{padding:4px;border-top:1px solid rgba(255,255,255,.12)}
.hist td small{opacity:.7}
.hist i{font-style:normal;font-weight:800;display:inline-block;min-width:20px;text-align:center;border-radius:4px}
.hist i.n1{background:var(--n1)}.hist i.n2{background:var(--n2)}.hist i.n3{background:var(--n3)}
.hist .h-alerta td{border-top:0;padding-top:0;color:#ffd2cc;font-size:13px}

/* Ficha: datos en baldosas */
.ficha-ide{font-family:ui-monospace,Consolas,monospace;font-size:15px;letter-spacing:1px;opacity:.85;margin-top:2px}
.dato{background:rgba(255,255,255,.08);border-radius:8px;padding:7px 8px;min-width:0;grid-column:span 2}
.dato.medio{grid-column:span 3}
.dato small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.6px;opacity:.65}
.dato b{display:block;font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}
.dato b em{font-style:normal;font-size:12px;font-weight:600;opacity:.7}
.prov-etq{display:inline-block;background:#e67e22;color:#fff;font-weight:800;border-radius:6px;padding:2px 8px;font-size:12px;margin-bottom:4px}
/* Mediciones anteriores */
.previas{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.previas .tit{font-weight:700;font-size:14px;color:var(--oro-claro)}
.previas .tipos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tipo{border-radius:8px;padding:6px 8px;background:rgba(255,255,255,.08);border-left:4px solid rgba(255,255,255,.25)}
.tipo small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.6px;opacity:.7}
.tipo b{font-size:14px;white-space:nowrap}
.tipo b em{font-style:normal;font-size:12px;opacity:.75}
.tipo.si{border-left-color:var(--oro)}
.tipo.no b{opacity:.55;font-weight:600}
.nueva-vez{background:var(--oro);color:var(--verde);border-radius:8px;padding:7px 10px;font-weight:800;font-size:14px}
.resultados small .med{color:var(--ok);font-weight:700}

/* Velocidad de ordeño (cronómetros por plataforma) */
.pestanas{display:flex;gap:6px;overflow-x:auto}
.pestanas:empty{display:none}
.pestanas button{flex:0 0 auto;border:2px solid var(--borde);background:#fff;border-radius:10px;padding:8px 12px;font:inherit;cursor:pointer;color:var(--texto);text-align:left}
.pestanas button b{display:block;font-size:16px;color:var(--verde)}
.pestanas button small{color:var(--suave);font-size:12px}
.pestanas button.sel{border-color:var(--oro);background:var(--oro-claro)}
.pestanas .mas{font-weight:800;color:var(--verde2);border-style:dashed}
.lados{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.lados button{border:2px solid var(--borde);background:#fff;border-radius:10px;padding:14px 0;font-size:22px;font-weight:800;color:var(--verde);cursor:pointer}
.lados button.sel{background:var(--oro);border-color:var(--oro)}
.lados button:disabled{opacity:.3}
#o-nueva{display:flex;flex-direction:column;gap:10px}
.plazas .nocontrol{background:#eee;color:#999;border-style:dashed}
.plazas.crono{grid-template-columns:repeat(4,1fr);gap:8px}
.plazas.crono button{min-height:86px}
.plazas.crono em{font-style:normal;font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:2px}
.plazas .lista{background:#fff;border-color:var(--verde2)}
.plazas .lista em{color:var(--verde2)}
.plazas .marcha{background:var(--oro);border-color:var(--oro);color:var(--verde)}
.plazas .marcha small{color:var(--verde)}
.plazas .parada{background:var(--ok);border-color:var(--ok);color:#fff}
.plazas .parada small{color:#fff}

/* Pestañas Morfología / Velocidad de ordeño */
.pestanas-modo{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#e6e1d4;border-radius:14px;padding:5px}
.pestanas-modo button{border:0;background:none;border-radius:10px;padding:10px 6px;font:inherit;font-size:18px;font-weight:800;color:var(--suave);cursor:pointer}
.pestanas-modo button small{display:block;font-size:13px;font-weight:600}
.pestanas-modo button.sel{background:var(--verde);color:#fff}
.m-panel{display:flex;flex-direction:column;gap:14px}
.previas .tipos{grid-template-columns:repeat(2,1fr)}
/* Teclado numérico en pantalla */
#o-teclado{display:flex;flex-direction:column;gap:10px}
.tec-pantalla{background:#fff;border:2px solid var(--verde2);border-radius:10px;padding:10px 14px;font-size:30px;font-weight:800;letter-spacing:1px;color:var(--verde);min-height:62px;font-family:ui-monospace,Consolas,monospace}
.tec-pantalla span{opacity:.55}
.teclado{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.teclado button{border:2px solid var(--borde);background:#fff;border-radius:12px;padding:16px 0;font-size:26px;font-weight:800;color:var(--texto);cursor:pointer}
.teclado button:active{background:var(--oro-claro)}
.teclado .borrar{background:#eee}
.teclado .ok{background:var(--oro);border-color:var(--oro);color:var(--verde)}

/* ── Fichas de los animales (2026-10-19) ── */
.gen-fila{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.gen-linea{flex:1;min-width:180px;border-radius:8px;padding:8px 10px;font-weight:800;font-size:15px;background:rgba(255,255,255,.12);color:#fff}
.gen-linea.si{background:#2e7d32;color:#fff}
.gen-linea.parcial{background:var(--oro);color:var(--verde)}
.gen-linea.no{background:#fff;color:var(--rojo)}
.gen-fila .btn-mini{padding:8px 12px;font-size:15px;background:var(--oro-claro);color:var(--verde)}
.tipo .sub{display:block;font-style:normal;font-size:12px;opacity:.85}
.o-info{margin:4px 0 0;padding:8px 10px;border-radius:8px;background:var(--oro-claro);color:var(--verde);font-weight:700;font-size:15px}
.g-si{color:var(--ok);font-weight:700}.g-parcial{color:#9a7400;font-weight:700}.g-no{color:var(--rojo);font-weight:700}
/* Ficha del animal (consulta) — verde y oro AMURVAL */
#p-ficha{background:linear-gradient(180deg,#e9efe9 0,var(--fondo) 260px)}
.fv{display:flex;flex-direction:column;gap:12px}
.fv-cab{background:linear-gradient(140deg,var(--verde) 0%,var(--verde2) 100%);color:#fff;border-radius:18px;padding:16px;
  box-shadow:0 8px 22px rgba(20,56,42,.25);border-bottom:4px solid var(--oro);position:relative;overflow:hidden}
.fv-cab::after{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;background:rgba(201,162,39,.12)}
.fv-cab-sup{display:flex;align-items:center;gap:14px;position:relative;z-index:1}
.fv-logo{flex:none;width:64px;height:76px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:4px;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.fv-logo img{max-width:100%;max-height:100%}
.fv-tipo{display:inline-block;background:var(--oro);color:var(--verde);font-weight:800;font-size:12px;letter-spacing:.08em;border-radius:999px;padding:3px 10px}
.fv-sigla{font-size:32px;font-weight:900;color:var(--oro-claro);letter-spacing:.5px;line-height:1.1;margin-top:4px}
.fv-crotal{font-family:ui-monospace,Consolas,monospace;font-size:14px;opacity:.85}
.fv-cab-datos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:14px;position:relative;z-index:1}
.fv-cab-datos div{background:rgba(255,255,255,.1);border-radius:10px;padding:7px 4px;text-align:center}
.fv-cab-datos small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;opacity:.75}
.fv-cab-datos b{font-size:17px}
.fv-gen{margin-top:12px;border-radius:10px;padding:10px 12px;font-weight:800;text-align:center;position:relative;z-index:1}
.fv-gen.si{background:#2e7d32;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.fv-gen.parcial{background:var(--oro);color:var(--verde)}
.fv-gen.no{background:#fff;color:var(--rojo)}
.fv-gen.nd{background:rgba(255,255,255,.15)}
.fv-sec{display:flex;align-items:center;gap:8px;margin-top:6px;font-weight:900;color:var(--verde);font-size:15px;text-transform:uppercase;letter-spacing:.06em}
.fv-sec span{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--oro);font-size:16px;flex:none}
.fv-sec::after{content:"";flex:1;height:2px;background:linear-gradient(90deg,var(--oro),transparent)}
.fv-crits{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fv-crit{background:linear-gradient(180deg,#f6faf7,#fff);border:1.5px solid #d6e2d9;border-top:4px solid var(--verde2);border-radius:14px;
  padding:10px 6px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;box-shadow:0 2px 6px rgba(20,56,42,.06)}
.fv-crit-tit{font-size:11px;font-weight:800;color:var(--verde2);text-transform:uppercase;letter-spacing:.03em;line-height:1.25;min-height:28px}
.fv-crit-val{font-size:34px;font-weight:900;color:var(--verde);line-height:1.05;font-variant-numeric:tabular-nums}
.fv-crit-niv{font-size:11px;font-weight:700;color:var(--suave)}
.fv-crit.alto{border-top-color:#2e7d32}.fv-crit.alto .fv-crit-val,.fv-crit.alto .fv-crit-niv{color:#2e7d32}
.fv-crit.bajo{border-top-color:var(--rojo)}.fv-crit.bajo .fv-crit-val,.fv-crit.bajo .fv-crit-niv{color:var(--rojo)}
.fv-crit.medio{border-top-color:var(--oro)}
.fv-crit.neutro{border-top-color:var(--oro);background:linear-gradient(180deg,#fdf8e6,#fff)}
.fv-crit-vacio{color:var(--suave);font-style:italic;font-size:14px;padding:8px 0}
.fv-crit-lin{font-size:12px;color:var(--suave);line-height:1.3}
.fv-ley{margin:-4px 0 0;text-align:center;font-size:12px;color:var(--suave)}
.fv-campos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fv-campo{background:#fff;border:1.5px solid #d6e2d9;border-radius:14px;padding:12px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px}
.fv-campo-ico{font-size:22px}
.fv-campo-tit{font-size:12px;font-weight:800;color:var(--verde2);text-transform:uppercase}
.fv-campo-val{font-size:30px;font-weight:900;color:var(--verde)}.fv-campo-val small{font-size:13px;color:var(--suave);margin-left:3px}
.fv-ascs{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fv-asc{background:#fff;border-radius:14px;overflow:hidden;border:1.5px solid #d6e2d9;display:flex;flex-direction:column}
.fv-asc-tit{background:var(--verde);color:var(--oro-claro);font-weight:800;text-align:center;padding:6px;font-size:14px;letter-spacing:.04em}
.fv-asc-cuerpo{padding:10px 8px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.fv-asc-sigla{font-size:20px;font-weight:900;color:var(--verde)}
.fv-asc-crotal{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--suave)}
.fv-asc-ico{display:flex;align-items:baseline;gap:6px;background:var(--oro-claro);border:1.5px solid var(--oro);border-radius:12px;padding:4px 14px;margin-top:2px}
.fv-asc-ico small{font-size:12px;font-weight:800;color:var(--verde2)}
.fv-asc-ico b{font-size:26px;font-weight:900;color:var(--verde)}
.fv-asc-ico.alto b{color:#2e7d32}.fv-asc-ico.bajo b{color:var(--rojo)}
.fv-asc-sinico{font-size:12px;color:var(--suave);font-style:italic}
.fv-asc-hijas{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--suave)}
.fv-asc-hijas b{color:var(--verde)}.fv-asc-hijas i{font-style:normal;opacity:.8}
.fv-adn{font-size:12px;font-weight:800;border-radius:999px;padding:3px 10px}
.fv-adn.mini{font-size:11px;padding:2px 8px}
.fv-adn.ok{background:#e3f2e5;color:#2e7d32;border:1px solid #a5d6a7}.fv-adn.no{background:#fff3e0;color:#b25e00;border:1px solid #ffcc80}
.fv-abus{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fv-abu{background:#f6faf7;border:1px solid #d6e2d9;border-left:4px solid var(--oro);border-radius:10px;padding:8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px}
.fv-abu-tit{font-size:11px;font-weight:800;color:var(--suave);text-transform:uppercase}
.fv-abu-sigla{font-size:16px;font-weight:800;color:var(--verde)}
.fv-lact{background:#fff;border:1.5px solid #d6e2d9;border-radius:14px;overflow:hidden}
.fv-lact-tit{display:flex;justify-content:space-between;align-items:center;gap:8px;background:linear-gradient(135deg,var(--verde),var(--verde2));color:#fff;padding:8px 12px;font-weight:800}
.fv-lact-tit b{font-family:ui-monospace,Consolas,monospace;color:var(--oro-claro)}
.fv-lact-vacio{padding:12px;text-align:center;color:var(--suave);font-style:italic}
.fv-tabla{overflow-x:auto}
.fv-lact table{width:100%;border-collapse:collapse;font-size:14px;text-align:center}
.fv-lact th{background:#eef3ef;color:var(--verde2);font-size:11px;text-transform:uppercase;padding:6px 4px}
.fv-lact td{padding:6px 4px;border-bottom:1px solid #eef0ea;font-variant-numeric:tabular-nums}
.fv-lact tbody tr:nth-child(even){background:#fafbf8}
.fv-lact td.kg{font-weight:800;color:var(--verde)}
.fv-media{background:var(--oro-claro);border-top:2px solid var(--oro);padding:8px}
.fv-media-tit{text-align:center;font-size:11px;font-weight:800;color:var(--verde2);text-transform:uppercase;margin-bottom:6px}
.fv-media-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.fv-media-grid div{background:#fff;border-radius:8px;padding:5px 2px;text-align:center}
.fv-media-grid b{display:block;font-size:16px;color:var(--verde)}
.fv-media-grid small{font-size:10px;color:var(--suave);text-transform:uppercase}
.fv-lact-campo{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;padding:7px;font-size:13px;color:var(--suave);background:#f6faf7}
.fv-lact-campo b{color:var(--verde)}.fv-lact-campo i{font-style:normal}
.fv-pie{display:flex;align-items:center;gap:10px;margin-top:6px;padding:10px;border-top:2px solid var(--oro);font-size:12px;color:var(--suave)}
.fv-pie img{width:34px;flex:none}.fv-pie b{color:var(--verde)}.fv-pie span{font-size:11px}
#v-pdf{box-shadow:0 6px 16px rgba(201,162,39,.35)}
/* Carta genealógica dentro de la app (2026-10-19) */
#carta-capa{position:fixed;inset:0;z-index:50;background:#e9efe9;overflow:auto;-webkit-overflow-scrolling:touch}
.carta-barra{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--verde);color:#fff;padding:8px 10px;padding-top:max(8px,env(safe-area-inset-top))}
.carta-barra .btn-mini{padding:10px 14px;font-size:15px}
.carta-lupa{display:flex;align-items:center;gap:6px}
.carta-lupa button{width:36px;height:36px;border-radius:50%;border:0;background:var(--oro-claro);color:var(--verde);font-size:20px;font-weight:800}
.carta-lupa b{min-width:48px;text-align:center;font-size:14px}
.carta-hoja{background:#fff;margin:8px auto;box-shadow:0 2px 10px rgba(0,0,0,.15);width:max-content;max-width:none}
@media print{
  body{background:#fff!important}
  body>*:not(#carta-capa){display:none!important}
  #carta-capa{position:static;overflow:visible;background:#fff}
  .carta-barra{display:none!important}
  .carta-hoja{margin:0;box-shadow:none}
}
.carta-acc{display:flex;gap:6px}
.btn-txt.enlace{color:var(--verde2);text-decoration:underline;font-size:15px;align-self:center}

/* Ayuda para instalar la app (instalar.js) */
#instalar-caja{position:fixed;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));z-index:900;
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;background:var(--verde);color:#fff;
  border:2px solid var(--oro);border-radius:14px;padding:10px 12px;box-shadow:0 6px 20px rgba(0,0,0,.3)}
#instalar-caja img{width:40px;height:40px;border-radius:9px;flex:none}
#instalar-caja .inst-txt{flex:1;min-width:180px;display:flex;flex-direction:column;gap:3px}
#instalar-caja .inst-txt b{color:var(--oro-claro)}
#instalar-caja small{font-size:13px;line-height:1.35;color:#e8efe9}
#instalar-caja .inst-btn{margin-top:6px;width:100%}
#instalar-caja .inst-cerrar{background:none;border:0;color:#cfd9d2;font-size:13px;text-decoration:underline;padding:4px;align-self:flex-start}
#instalar-caja .inst-ico{display:inline-block;border:1px solid #cfd9d2;border-radius:4px;padding:0 4px}
body.con-instalar{padding-bottom:150px}
