:root{
  --bg:#f1f0e8; --card:#fff; --line:#e6e4da; --line2:#d3d1c7;
  --text:#1c1b18; --text2:#5d5b54; --text3:#6f6c60;
  --green:#3B6D11; --green-d:#2c5410; --green-bg:#EAF3DE; --green-bd:#C0DD97;
  --amber-bg:#FAEEDA; --amber-tx:#633806; --amber:#BA7517;
  --blue:#185FA5; --blue-bg:#E6F1FB; --red:#A32D2D; --red-bg:#FCEBEB;
  --card2:#fff; --field:#faf9f4; --field2:#ebe8df;
  --shadow:0 1px 2px rgba(28,27,24,.04),0 4px 14px rgba(28,27,24,.05);
  --shadow-lg:0 6px 22px rgba(28,27,24,.10);
  --cv-ref-residual-stroke:#a8a296;
  --cv-ref-residual-tx:#6f6c60;
  --cv-ref-target-stroke:#9a5f12;
  --cv-ref-target-tx:#7a4a0c;
  --cv-wedge-stroke:#7a4a0c;
  --safe-top:calc(env(safe-area-inset-top, 0px) + var(--vv-top, 0px));
  --safe-bottom:calc(env(safe-area-inset-bottom, 0px) + var(--vv-bottom, 0px));
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
.app{max-width:440px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);position:relative}

/* ---------- topbar ---------- */
.topbar{background:linear-gradient(135deg,#3B6D11,#5a8f22);color:#fff;padding:calc(var(--safe-top) + 16px) 18px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:5;box-shadow:var(--shadow)}
.brand{font-weight:700;font-size:17px;display:flex;align-items:center;gap:8px;letter-spacing:.2px;flex:1;min-width:0}
.brand .brand-tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.logo{font-size:20px;flex-shrink:0}
.role-pill{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.15);border-radius:99px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;color:#fff;backdrop-filter:blur(4px);max-width:8.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-pill.admin{background:var(--card2);color:var(--green-d);border-color:#fff}

/* ---------- screens ---------- */
.screen{display:none;flex:1;padding:16px 16px calc(96px + var(--safe-bottom));overflow-y:auto}
.screen.active{display:block;animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
h2{font-size:20px;margin:4px 0 14px;display:flex;align-items:center;gap:8px}
.h2-ic{font-size:22px}
h3.sec{font-size:12px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin:18px 0 9px;font-weight:700}
.back{background:var(--card);border:1px solid var(--line);color:var(--green);font-size:14px;font-weight:600;cursor:pointer;padding:7px 14px;margin-bottom:12px;border-radius:99px;box-shadow:var(--shadow);white-space:nowrap;width:max-content}
.hint{font-size:13px;color:var(--text2);margin:2px 2px 10px}

/* ---------- greeting ---------- */
.greet{margin:2px 2px 14px}
.greet-hi{font-size:22px;font-weight:700}
.greet-sub{font-size:13px;color:var(--text2);margin-top:2px}
.date-badge{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:700;padding:8px 15px;border-radius:99px;margin-top:8px;line-height:1.2}
.date-badge.today{background:var(--green-bg);color:var(--green-d);border:1px solid var(--green-bd)}
.date-badge.old{background:var(--red);color:#fff;border:1px solid var(--red);font-size:14.5px;box-shadow:0 2px 10px rgba(163,45,45,.35);animation:badgePulse 1.8s ease-in-out infinite}
@keyframes badgePulse{0%,100%{box-shadow:0 2px 10px rgba(163,45,45,.30)}50%{box-shadow:0 2px 16px rgba(163,45,45,.55)}}

/* ---------- resumen de hoy: héroe + desglose + secundarios ---------- */
.hero-kpi{position:relative;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px 18px 15px;box-shadow:var(--shadow-lg);overflow:hidden;margin-bottom:13px}
.hero-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--green)}
.hero-kpi-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px;gap:8px}
.hero-kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:800;display:inline-flex;align-items:center;gap:6px}
.hero-kpi-chip{font-size:11px;font-weight:800;color:var(--green-d);background:var(--green-bg);border:1px solid var(--green-bd);padding:3px 10px;border-radius:99px;white-space:nowrap;flex-shrink:0}
.hero-kpi-chip.warn{color:var(--amber-tx);background:var(--amber-bg);border-color:#efd9b4}
.hero-kpi-val{font-size:46px;font-weight:800;line-height:1;color:var(--green);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.hero-kpi-val .u{font-size:20px;font-weight:700;color:var(--text2);margin-left:5px}
.hero-kpi-sub{font-size:13px;color:var(--text2);margin-top:8px}
.hero-empty{padding:6px 0 2px;text-align:center}
.hero-empty p{font-size:14px;color:var(--text2);margin:0 0 12px;line-height:1.45}
.hero-empty .hero-empty-btn{margin-bottom:2px}

.breakdown-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px 14px 12px;box-shadow:var(--shadow);margin-bottom:10px}
.breakdown-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:800;display:block;margin-bottom:9px}
.breakdown-grid{display:grid;grid-template-columns:1fr 1fr}
.breakdown-col{display:flex;flex-direction:column;gap:2px;padding:0 4px 0 0;min-width:0}
.breakdown-col+.breakdown-col{padding:0 0 0 14px;border-left:1px solid var(--line)}
.breakdown-col b{font-size:16.5px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.breakdown-col span{font-size:11.5px;color:var(--text2)}

.secondary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:13px}
.secondary-cell{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px 13px 12px;box-shadow:var(--shadow);min-width:0}
.secondary-cell.full{grid-column:1/-1}
.secondary-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);font-weight:800}
.secondary-val{font-size:20px;font-weight:800;color:var(--text);margin-top:4px;font-variant-numeric:tabular-nums}
.secondary-cap{font-size:11px;color:var(--text2);margin-top:4px;line-height:1.35}
.secondary-rows{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.secondary-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.secondary-row .l{font-size:11.5px;color:var(--text2)}
.secondary-row .v{font-size:13.5px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- home cards ---------- */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s}
.card[hidden]{display:none!important}
.card:active{transform:scale(.97)}
.card.wide{grid-column:1 / -1;flex-direction:row;align-items:center}
.inv-banner{width:100%;display:flex;align-items:center;gap:11px;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:15px;padding:12px 14px;margin:4px 0 16px;box-shadow:var(--shadow);cursor:pointer;font-family:inherit}
.inv-banner-ic{width:27px;height:27px;display:block;object-fit:contain;flex-shrink:0}
.inv-banner span:nth-child(2){flex:1}
.inv-banner b{display:block;font-size:14px;color:var(--text)}
.inv-banner small{display:block;color:var(--text2);margin-top:2px;font-size:12.5px}
.inv-banner-arrow{color:var(--green);font-size:22px;flex-shrink:0}
.admin-only{display:none}
body.is-admin .admin-only{display:flex}
.card-ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:23px;flex-shrink:0}
.card-ic .ic-ballica,.h2-ic .ic-ballica,.nav .ni .ic-ballica,.card-ic .ic-pastoreo,.h2-ic .ic-pastoreo,.nav .ni .ic-pastoreo,.card-ic .ic-agroapp,.h2-ic .ic-agroapp,.fhead .ic-agroapp,.nav .ni .ic-agroapp,.ic-baston,.card-ic .ic-forrajeo,.h2-ic .ic-forrajeo,.fhead .ic-forrajeo,.nav .ni .ic-forrajeo,.card-ic .ic-cow-card,.h2-ic .ic-cow-card,.nav .ni .ic-cow-card{flex-shrink:0}
.card-ic .ic-ballica{width:26px;height:26px;display:block}
.h2-ic .ic-ballica{width:22px;height:22px;display:inline-block;vertical-align:-4px}
.nav .ni .ic-ballica{width:21px;height:21px;display:block}
.card-ic .ic-pastoreo{width:32px;height:32px;display:block;object-fit:contain;border-radius:8px}
.h2-ic .ic-pastoreo{width:24px;height:24px;display:inline-block;vertical-align:-5px;object-fit:contain;border-radius:6px}
.nav .ni.ni-img{display:grid;place-items:center}
.nav .ni .ic-pastoreo{width:32px;height:32px;display:block;object-fit:contain;border-radius:7px}
.card-ic .ic-forrajeo{width:32px;height:32px;display:block;object-fit:contain}
.h2-ic .ic-forrajeo{width:24px;height:24px;display:inline-block;vertical-align:-5px;object-fit:contain}
.fhead .ic-forrajeo{width:18px;height:18px;display:inline-block;object-fit:contain}
.nav .ni .ic-forrajeo{width:32px;height:32px;display:block;object-fit:contain}
.card-ic .ic-cow-card{width:36px;height:36px;display:block;object-fit:contain}
.h2-ic .ic-cow-card{width:44px;height:44px;display:block;object-fit:contain}
.nav .ni .ic-cow-card{width:48px;height:48px;display:block;object-fit:contain}
.nav .ni .ic-agroapp{width:32px;height:32px;display:block;object-fit:contain}
.card-ic .ic-agroapp{width:30px;height:30px;display:block;object-fit:contain}
.h2-ic .ic-agroapp{width:24px;height:24px;display:inline-block;vertical-align:-5px;object-fit:contain}
.fhead .ic-agroapp{width:18px;height:18px;display:inline-block;vertical-align:-3px;object-fit:contain;margin-right:4px}
.h2-ic .ic-baston{width:26px;height:26px;display:inline-block;vertical-align:-6px;object-fit:contain}
.export-row .ic-baston{width:18px;height:18px;display:inline-block;vertical-align:-4px;object-fit:contain;margin-right:2px}
.apt-diag .ic-baston{width:16px;height:16px;display:inline-block;vertical-align:-3px;object-fit:contain;margin-right:2px}
.card-ic.milk{background:#eef4ff}.card-ic.grass{background:var(--green-bg)}.card-ic.cow{background:#fef3e6;color:#7a4a0c}.card-ic.box{background:#f0eefb}.card-ic.cal{background:#e7f5fb}.card-ic.agroapp{background:var(--card2);border:1px solid var(--line);padding:8px}
.card-tx{display:flex;flex-direction:column;gap:2px}
.card-tx b{font-size:14.5px;font-weight:700}.card-tx span{font-size:12px;color:var(--text2)}

/* ---------- date row ---------- */
.daterow{display:flex;align-items:center;justify-content:space-between;background:var(--card);border:1px solid var(--line);border-radius:13px;padding:11px 15px;font-size:13.5px;font-weight:600;color:var(--text2);margin-bottom:13px;box-shadow:var(--shadow)}

/* ---------- date stepper (datebar) ---------- */
.datebar{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow);margin-bottom:13px}
.datebar button{width:42px;height:42px;border-radius:11px;border:1px solid var(--line2);background:var(--card2);font-size:20px;color:var(--green);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.datebar .dwrap{flex:1;text-align:center}
.datebar .dlabel{font-weight:800;font-size:15.5px;text-transform:capitalize;color:var(--text)}
.datebar .dhoy{font-size:11px;color:var(--text3);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.datebar .calpick{width:42px;height:42px;border-radius:11px;border:1px solid var(--line2);background:var(--card2);font-size:18px;color:var(--green);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;position:relative}
.datebadge-row{display:flex;justify-content:center;margin:-4px 0 12px}
.native-date-leche{position:fixed;width:40px;height:40px;opacity:0;border:0;padding:0;margin:0;z-index:100;pointer-events:auto}

/* ---------- field cards ---------- */
.fcard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:11px;box-shadow:var(--shadow)}
.fhead{padding:12px 15px;font-size:14px;font-weight:700;border-bottom:1px solid var(--line);background:var(--green-bg);color:var(--green-d);display:flex;align-items:center;gap:7px}
.fhead.blue{background:var(--blue-bg);color:#0C447C}.fhead.plain{background:var(--field);color:var(--text2)}
.row{display:flex;align-items:center;justify-content:space-between;padding:11px 15px;border-bottom:1px solid var(--line);gap:8px}
.row:last-child{border-bottom:none}.row .lab{font-size:14.5px}.row .lab.mut{color:var(--text2);font-size:13px}
.row-calc{background:var(--green-bg)}
.num-out{font-size:15px;font-weight:700;color:var(--green-d);min-width:72px;text-align:right}
.subhead{padding:8px 15px;background:var(--field);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);font-weight:700;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* ---------- stepper (touch friendly) ---------- */
.stp{display:flex;align-items:center;gap:8px}
.stp button{width:40px;height:40px;border:1.5px solid var(--green-bd);background:var(--green-bg);color:var(--green-d);border-radius:11px;font-size:22px;font-weight:700;cursor:pointer;display:grid;place-items:center;line-height:1;transition:transform .1s}
.stp button:active{transform:scale(.9)}
.stp input{width:62px;text-align:center;font-size:18px;font-weight:700;padding:8px 4px;border:1px solid var(--line2);border-radius:10px;color:var(--text);font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.stp input::-webkit-outer-spin-button,.stp input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.num-in{font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.num-in::-webkit-outer-spin-button,.num-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* ---------- ordeñadores chips ---------- */
.chips-ord{display:flex;flex-wrap:wrap;gap:7px;padding:0 15px 11px}
.chip-ord{background:var(--green-bg);border:1px solid var(--green-bd);color:var(--green-d);border-radius:99px;padding:6px 8px 6px 14px;font-size:13px;font-weight:600;display:inline-flex;gap:7px;align-items:center}
.chip-ord button{border:none;background:rgba(0,0,0,.06);cursor:pointer;color:var(--text2);width:20px;height:20px;border-radius:50%;font-size:14px;display:grid;place-items:center}
select.sel{width:calc(100% - 30px);margin:0 15px 12px;border:1px solid var(--line2);border-radius:10px;padding:11px;font-size:14px;background:var(--field);font-weight:600;color:var(--green-d)}

/* ---------- leche ordeña parcial ---------- */
.leche-hint{font-size:12.5px;color:var(--text2);line-height:1.45;margin:0 0 10px;padding:0 2px}
.leche-globo{background:var(--card);border:2px solid var(--line);border-radius:20px;margin-bottom:16px;box-shadow:var(--shadow-lg);overflow:hidden}
.leche-globo-pm{border-color:#b8c9e8}
.leche-globo-am{border-color:#b8d4a8}
.leche-globo-head{display:flex;align-items:center;gap:12px;padding:18px 18px 16px}
.leche-globo-pm .leche-globo-head{background:linear-gradient(135deg,#dce6f8,#f2f6fc);color:#0C447C}
.leche-globo-am .leche-globo-head{background:linear-gradient(135deg,#dcecd4,#f0f7eb);color:var(--green-d)}
.leche-globo-ic{font-size:32px;line-height:1;flex-shrink:0}
.leche-globo-head b{display:block;font-size:18px;font-weight:800}
.leche-globo-head small{display:block;font-size:12.5px;opacity:.88;font-weight:600;margin-top:3px}
.leche-globo-body{padding:2px 14px 16px}
.leche-lote-block{background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:2px 0;margin-bottom:10px}
.leche-lote-title{font-size:12px;font-weight:700;color:var(--text2);padding:9px 15px 3px}
.leche-sub-sep{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);padding:10px 15px 2px;border-top:1px solid var(--line);margin-top:2px}
.leche-lote-block .leche-sub-sep:first-of-type{border-top:none;margin-top:4px}
.leche-ord-block{padding:6px 2px 0;border-top:1px dashed var(--line2);margin-top:4px}
.leche-ord-block .lab{font-size:13px;font-weight:700;color:var(--text2);padding:10px 4px 6px}
.leche-ord-block .chips-ord{padding:0 0 8px}
.leche-ord-block .sel{width:100%;margin:0 0 8px}
.leche-ord-block .ord-add-row{padding:0 0 4px}
.leche-lote-save-wrap{display:flex;justify-content:center;padding:12px 14px 14px}
.leche-lote-save{width:auto;min-width:min(100%,240px);max-width:100%;margin:0;padding:14px 28px;font-size:15px;text-align:center}
.leche-ord-save{margin-top:10px;width:100%}
.leche-ord-hint{margin-top:6px;margin-bottom:0}
.leche-ord-jornada .leche-ord-block{padding-top:4px;border-top:none;margin-top:0}
.leche-otros-save{margin-top:10px;width:100%}
.leche-otros-hint{margin-top:6px;margin-bottom:0}
.leche-globo-section{border-top:1px dashed var(--line2);padding:12px 0 4px;margin-top:10px}
.leche-globo-section-head{font-size:12px;font-weight:800;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin:0 2px 8px}
.leche-globo-section .row{background:var(--bg);border-left:1px solid var(--line);border-right:1px solid var(--line)}
.leche-globo-section .row:first-of-type{border-top:1px solid var(--line);border-radius:12px 12px 0 0}
.leche-globo-section .row:last-of-type{border-radius:0 0 12px 12px}
.leche-jornada-save-wrap{padding:14px 0 0}
.leche-jornada-save{margin:0}
.chips.forr-chips{margin-bottom:10px;padding:0 2px}
.chips.leche-chips{margin-bottom:10px;padding:0 2px}
.chips.forr-chips .chip.done:not(.active),
.chips.leche-chips .chip.done:not(.active){
  background:var(--green-bg);border:2px solid var(--green);color:var(--green-d);
  box-shadow:0 1px 4px rgba(59,109,17,.12);
}
.chips.forr-chips .chip.active.done,
.chips.leche-chips .chip.active.done{
  background:var(--green);border-color:var(--green);color:#fff;
  box-shadow:0 2px 10px rgba(59,109,17,.28);
}
.forr-detail{margin-top:4px}

/* ---------- leche asistente: resumen PM en paso AM ---------- */
.leche-pm-resumen-wrap{margin-bottom:4px}
.leche-pm-resumen{background:linear-gradient(135deg,#dce6f8,#f2f6fc);border:2px solid #b8c9e8;border-radius:16px;padding:14px 16px;margin-bottom:14px}
.leche-pm-resumen--empty{opacity:.92}
.leche-pm-resumen-head{font-size:13px;font-weight:800;color:#0C447C;margin-bottom:10px}
.leche-pm-resumen-body{display:flex;flex-direction:column;gap:6px}
.leche-pm-resumen-row{display:flex;justify-content:space-between;align-items:center;font-size:14px;padding:7px 10px;background:rgba(255,255,255,.55);border-radius:10px;border:1px solid transparent}
.leche-pm-resumen-row.done{border-color:var(--green-bd);background:rgba(255,255,255,.72)}
.leche-pm-resumen-lote{font-weight:600;color:var(--text2)}
.leche-pm-resumen-lit{font-weight:700;color:#0C447C}
.leche-pm-check{color:var(--green);font-weight:800}
.leche-pm-resumen-foot{margin-top:10px;padding-top:10px;border-top:1px dashed #b8c9e8;font-size:13px;font-weight:600;color:#0C447C;text-align:right}
.leche-pm-resumen-empty{font-size:13px;color:var(--text2);margin:0;line-height:1.45}

/* ---------- leche pantallas PM / AM ---------- */
.leche-screen-sub{font-size:13px;color:var(--text2);line-height:1.45;margin:-4px 0 14px;padding:0 2px}
.leche-turno-switch{display:flex;gap:8px;margin:-2px 0 14px;padding:0 2px}
.leche-turno-btn{flex:1;border:2px solid var(--line);background:var(--card);border-radius:14px;padding:11px 8px;font-size:13px;font-weight:700;color:var(--text2);cursor:pointer;box-shadow:var(--shadow)}
.leche-turno-btn[data-turno="am"].active{border-color:#b8d4a8;background:linear-gradient(135deg,#dcecd4,#f0f7eb);color:var(--green-d)}
.leche-turno-btn[data-turno="pm"].active{border-color:#b8c9e8;background:linear-gradient(135deg,#dce6f8,#f2f6fc);color:#0C447C}
.leche-screen-sub-pm{color:#0C447C}
.leche-screen-sub-am{color:var(--green-d)}
.leche-entregada-wrap{margin-bottom:14px}
.leche-entregada{background:linear-gradient(135deg,#dcecd4,#f0f7eb);border:2px solid #b8d4a8;border-radius:16px;padding:14px 16px}
.leche-entregada-head{font-size:14px;font-weight:800;color:var(--green-d);margin-bottom:10px}
.leche-entregada-body{display:flex;flex-direction:column;gap:8px}
.leche-entregada-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 10px;background:rgba(255,255,255,.6);border-radius:10px;font-size:13px}
.leche-entregada-lote{font-weight:700;color:var(--text2);min-width:52px}
.leche-entregada-parts{flex:1;color:var(--text2);font-weight:600;font-size:12px}
.leche-entregada-sub{font-weight:800;color:var(--green-d)}
.leche-entregada-foot{margin-top:10px;padding-top:10px;border-top:1px dashed #b8d4a8;font-size:14px;font-weight:600;color:var(--green-d);text-align:right}

/* ---------- total / buttons ---------- */
.total{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#2c5410,#3B6D11);color:#fff;border-radius:14px;padding:16px 18px;margin:12px 0 14px;box-shadow:var(--shadow-lg)}
.total span{font-size:13px;opacity:.9;font-weight:600}
.total b{font-size:26px;font-weight:700}
.save{width:100%;background:var(--green);color:#fff;border:none;border-radius:14px;padding:16px;font-size:16px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-lg);transition:transform .1s}
.save:active{transform:scale(.985)}
.save:disabled{background:#dcdacf;color:var(--text3);box-shadow:none}
.ghost{width:100%;border:1.5px dashed var(--green-bd);background:var(--green-bg);border-radius:13px;padding:13px;color:var(--green-d);font-weight:700;font-size:14px;cursor:pointer;margin-bottom:12px}

/* ---------- lock banners ---------- */
.lock{display:none;align-items:center;gap:9px;font-size:12.5px;border-radius:12px;padding:11px 13px;margin-bottom:12px;line-height:1.4;font-weight:500}
.lock.on{display:flex;background:var(--amber-bg);color:var(--amber-tx);border:1px solid #efd9b4}
.lock.edit{display:flex;background:var(--blue-bg);color:#0C447C;border:1px solid #c7e0f5}
.screen.locked .row .stp button,.screen.locked .row input,.screen.locked select.sel,.screen.locked select.pot-sel,.screen.locked .save,.screen.locked .leche-lote-save,.screen.locked .ghost,.screen.locked .chip,.screen.locked .chips-ord button,.screen.locked .pot-search,.screen.locked .searchsel-in,.screen.locked .searchsel-btn,.screen.locked .corte-inp input,.screen.locked .corte-inp .stp button,.screen.locked .num-in{pointer-events:none;opacity:.45}

/* ---------- lote chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:15px}
.chip{padding:10px 16px;border-radius:99px;border:1.5px solid var(--line2);background:var(--card);font-size:14px;font-weight:700;cursor:pointer;box-shadow:var(--shadow);transition:transform .1s}
.chip:active{transform:scale(.94)}
.chip.active{background:var(--green);border-color:var(--green);color:#fff}
.chip.done{border-color:var(--green-bd);background:var(--green-bg);color:var(--green-d)}
.chip.active.done{background:var(--green);color:#fff}
.chip-check{padding:6px 12px;font-size:13px}
.agro-filtros-grupos{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.agro-filtro-grupo .chips{padding:10px 13px 12px}
.agro-filtros-limpiar{align-self:flex-start;font-size:13px}
.rebano-counts{display:grid;grid-template-columns:repeat(var(--rebano-count-cols,7),minmax(0,1fr));gap:4px;padding:12px 8px}.rebano-count{min-width:0;background:var(--field);border:1px solid transparent;border-radius:10px;padding:7px 1px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font:inherit;text-align:center;color:var(--text);cursor:pointer}.rebano-count b{min-height:2.2em;display:flex;align-items:center;justify-content:center;font-size:clamp(9px,2.5vw,11px);line-height:1.1}.rebano-count:active{transform:scale(.98)}.rebano-count:focus-visible{outline:2px solid var(--green);outline-offset:2px}.rebano-count span{font-size:18px;font-weight:700;line-height:1;color:var(--green-d)}.rebano-alerts{display:flex;flex-wrap:wrap;gap:8px;padding:0 12px 12px}.rebano-alerts .ghost{width:auto;margin:0;padding:8px 10px;font-size:12px}
.forr-resumen-row{flex-wrap:nowrap;gap:6px;min-width:0}.forr-resumen-titulo{flex:0 0 auto;white-space:nowrap}.forr-resumen-detalle{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}

/* ---------- plantel ---------- */
.plantel{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:8px}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:12px 10px;text-align:center;box-shadow:var(--shadow)}
.pl{font-size:11px;color:var(--text2);font-weight:600}.pv{font-size:24px;font-weight:700;margin-top:2px}

/* ---------- movimientos ---------- */
.mov{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px;margin-bottom:9px;box-shadow:var(--shadow)}
.mov .selrow{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.mov select{flex:1;border:1px solid var(--line2);border-radius:10px;padding:10px;font-size:13.5px;font-weight:600;min-width:0;background:var(--field)}
.mov .selrow span{color:var(--green);font-weight:700;font-size:18px}
.mov-rm{flex:0 0 auto;border:none;background:rgba(0,0,0,.06);cursor:pointer;color:var(--text2);width:28px;height:28px;border-radius:50%;font-size:16px;display:grid;place-items:center}

/* ---------- inventario ---------- */
.inv{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 15px;margin-bottom:9px;box-shadow:var(--shadow)}
.inv .it{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px}
.inv .nm{font-weight:700;font-size:15px}
.badge{font-size:11px;padding:4px 11px;border-radius:99px;font-weight:700;white-space:nowrap}
.b-ok{background:var(--green-bg);color:var(--green-d)}.b-low{background:var(--amber-bg);color:#633806}.b-crit{background:var(--red-bg);color:#791F1F}
.bar{height:8px;background:var(--bg);border-radius:99px;overflow:hidden;margin:9px 0 7px}.bar>div{height:100%;border-radius:99px;transition:width .4s}
.inv .meta{display:flex;justify-content:space-between;font-size:12.5px;color:var(--text2);font-weight:600}
.inv-sub{font-size:12px;color:var(--text2);margin:-1px 0 7px}
.inv .an{margin-top:9px;padding-top:9px;border-top:1px solid var(--line);font-size:12px;color:var(--text3)}

/* ---------- comparativo ---------- */
.cmp{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:13px;box-shadow:var(--shadow)}
.cmp .t{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:700}
.cmp .big{font-size:28px;font-weight:700;margin:6px 0 11px}.cmp .big small{font-size:12px;color:var(--text2);font-weight:500;margin-left:6px}
.dl{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--field);border-radius:10px;padding:10px 13px;font-size:13px;margin-bottom:7px}
.dl:last-child{margin-bottom:0}
.dl span:first-child{flex:1;min-width:0}
.dl .v{flex-shrink:0;white-space:nowrap;font-weight:700}.up{color:var(--green)}.down{color:var(--red)}

/* ---------- historial ---------- */
.hist{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 15px;margin-bottom:10px;box-shadow:var(--shadow)}
.hist .h{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.hist .d{font-weight:700;font-size:15px}
.hist .m{font-size:12.5px;color:var(--text2);margin-bottom:11px}.hist .m b{color:var(--text)}
.hist-audit{font-size:11.5px;color:var(--text2);margin:-4px 0 8px;font-weight:600}
.hist-muertes{margin:0 0 8px;display:flex;flex-direction:column;gap:4px}
.hist-muerte{font-size:12px;color:#7a2e2e;background:#fbeaea;border:1px solid #e8c4c4;border-radius:8px;padding:6px 9px}
.mov-baja{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.mov-baja .field label{display:block;font-size:12px;font-weight:700;color:var(--text2);margin-bottom:4px}
.mov-baja input,.mov-baja select,.mov-baja textarea{width:100%;border:1px solid var(--line2);border-radius:10px;padding:10px;font-size:16px;background:var(--card2)}
.mov-baja textarea{resize:none;font-family:inherit}
.hist .a{display:flex;gap:7px;flex-wrap:wrap}
.hist .a button{flex:1;min-width:120px;border:1px solid var(--line2);background:var(--field);border-radius:10px;padding:10px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text)}
.hist .a button:active{background:var(--green-bg)}
.hist-detail{font-size:12.5px;color:var(--text2);display:flex;flex-direction:column;gap:5px;margin:4px 0 10px;line-height:1.45}
.hist-detail b{color:var(--text);font-weight:700}
.hist-detail-total{font-size:13.5px;color:var(--text);margin-top:4px;padding-top:6px;border-top:1px solid var(--line)}

/* ---------- notes ---------- */
.note{font-size:12.5px;padding:11px 13px;border-radius:12px;margin-bottom:13px;line-height:1.45}
.note.admin{background:var(--green-bg);color:var(--green-d);border:1px solid var(--green-bd)}
.note.oper{background:var(--field);color:var(--text2);border:1px solid var(--line)}

/* ---------- bottom nav ---------- */
.nav{position:fixed;left:50%;transform:translateX(-50%);bottom:var(--vv-bottom,0);width:100%;max-width:440px;background:var(--card);border-top:1px solid var(--line);display:flex;padding:8px 4px calc(var(--safe-bottom) + 11px);box-shadow:0 -2px 12px rgba(28,27,24,.05);z-index:30;transition:opacity .15s,visibility .15s}
html.vv-keyboard .nav,html.vv-keyboard #tabbar{visibility:hidden;pointer-events:none;opacity:0}
html.vv-keyboard .screen{padding-bottom:20px}
html.vv-keyboard .toast{bottom:20px}
.nav button{flex:1;border:none;background:none;font-size:11px;color:var(--text3);cursor:pointer;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 0;border-radius:12px;transition:color .15s}
.nav .ni{font-size:21px;filter:grayscale(.45);opacity:.7;transition:.15s;line-height:1;height:46px;display:flex;align-items:center;justify-content:center}
.nav button.active{color:var(--green)}
.nav button.active .ni{filter:none;opacity:1;transform:translateY(-1px)}
.nav .ni.ni-svg{filter:none;opacity:.75}
.nav .ni-svg svg{width:32px;height:32px;display:block}
.nav button.active .ni-svg{opacity:1}

/* ---------- misc ---------- */
.empty{text-align:center;padding:28px;color:var(--text3);font-size:13.5px}
.toast{position:fixed;bottom:calc(90px + var(--safe-bottom));left:50%;transform:translateX(-50%) translateY(10px);background:var(--green-d);color:#fff;padding:12px 24px;border-radius:99px;font-size:14.5px;font-weight:700;opacity:0;transition:.3s;pointer-events:none;box-shadow:var(--shadow-lg);z-index:40}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.registro-popup-ov{position:fixed;inset:0;z-index:90;background:rgba(20,20,16,.48);display:flex;align-items:center;justify-content:center;padding:20px;padding-top:max(20px,var(--safe-top));padding-bottom:max(20px,var(--safe-bottom))}
.registro-popup{width:100%;max-width:340px;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);padding:22px 18px 18px;text-align:center;animation:fade .18s ease}
.registro-popup-mark{width:48px;height:48px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;font-size:27px;font-weight:800}
.registro-popup.ok .registro-popup-mark{background:var(--green-bg);color:var(--green-d);border:1px solid var(--green-bd)}
.registro-popup.bad .registro-popup-mark{background:var(--red-bg);color:var(--red);border:1px solid #e8c4c4}
.registro-popup-title{font-size:20px;font-weight:800;color:var(--text);line-height:1.2}
.registro-popup p{font-size:13px;color:var(--text2);line-height:1.4;margin:9px 0 0}
.registro-popup-btn{margin-top:16px;padding:13px;font-size:15px}

/* ---------- potrero / pastoreo ---------- */
.potrow{flex-direction:column;align-items:stretch;gap:8px}
.pot-sel{width:100%;border:1px solid var(--line2);border-radius:10px;padding:11px;font-size:14px;background:var(--field);font-weight:600}
.past-block{padding:4px 0 8px;border-bottom:1px solid var(--line)}
.past-block:last-of-type{border-bottom:none}
.past-label{font-size:13px;font-weight:700;color:var(--green-d);padding:8px 15px 4px}
.pastrow{flex-direction:column;align-items:stretch;gap:7px;padding:8px 15px 10px;font-size:13px;color:var(--text2)}
.corte-total-ref{font-size:12px;font-style:italic}
.pot-search{width:100%;border:1px solid var(--line2);border-radius:10px;padding:11px;font-size:15px;background:var(--field);font-family:inherit;font-weight:600}
.searchsel{position:relative;width:100%}
.searchsel-row{display:flex;align-items:stretch;width:100%}
.searchsel-in{flex:1;min-width:0;border:1px solid var(--line2);border-right:none;border-radius:10px 0 0 10px;padding:11px 10px;font-size:15px;background:var(--field);font-family:inherit;font-weight:600}
.searchsel-btn{flex:0 0 44px;border:1px solid var(--line2);border-radius:0 10px 10px 0;background:var(--field2);font-size:18px;line-height:1;color:var(--text2);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}
.searchsel-btn:active,.searchsel-open .searchsel-btn{background:var(--green-bg);color:var(--green-d);border-color:var(--green-d)}
.searchsel-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;margin:0;padding:4px 0;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:12px;max-height:min(280px,50vh);overflow-y:auto;box-shadow:var(--shadow-lg)}
.searchsel-opt{padding:10px 13px;font-size:14px;font-weight:600;cursor:pointer;color:var(--text)}
.searchsel-opt:active,.searchsel-opt:hover{background:var(--green-bg);color:var(--green-d)}
.searchsel-empty{padding:10px 13px;font-size:13px;color:var(--text3)}
.corte-inp{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.corte-inp .corte-stp input{width:56px}
.corte-inp .corte-de{font-size:14px;color:var(--text2);font-weight:600}

/* ---------- praderas / plato ---------- */
.num-in{width:120px;text-align:right;font-size:17px;font-weight:700;padding:9px 11px;border:1px solid var(--line2);border-radius:10px;color:var(--text)}
.ms-result{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#2c5410,#5a8f22);color:#fff;border-radius:14px;padding:15px 18px;margin:6px 0 12px;box-shadow:var(--shadow-lg)}
.ms-result span{font-size:13px;opacity:.92;font-weight:600}
.ms-result b{font-size:22px;font-weight:700}
.ms-result input{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);border-radius:9px;color:#fff;font-size:20px;font-weight:700;text-align:right;width:110px;padding:6px 9px;font-family:inherit}
.ms-result input::placeholder{color:rgba(255,255,255,.7)}
.ms-result.warn{background:linear-gradient(135deg,#8f2c2c,#c14b4b)}
.medrow{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:12px 14px;margin-bottom:8px;box-shadow:var(--shadow)}
.medrow-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.med-pot{font-weight:700;font-size:14.5px}
.med-ms{font-weight:700;color:var(--green-d);font-size:14px;white-space:nowrap}
.med-meta{font-size:12px;color:var(--text2);margin-top:4px}
.med-obs{font-size:12.5px;color:var(--text);margin-top:6px;padding:8px 10px;background:var(--field);border-radius:9px;border:1px solid var(--line);line-height:1.35}
.prad-obs{width:100%;border:1px solid var(--line2);border-radius:9px;padding:10px 12px;font-size:14px;font-family:inherit;resize:vertical;min-height:72px}

/* ---------- cuña de pastoreo ---------- */
.cuna-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow);margin-bottom:6px}
.cuna-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:var(--green-d);margin-bottom:8px}
.cuna-date{font-size:12px;color:var(--text2);font-weight:600;text-align:right}
.datebar-modo{display:none;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:99px;margin-top:2px}
.datebar-modo.show{display:inline-block}
.datebar-modo.futuro{background:var(--amber-bg);color:var(--amber-tx)}
.datebar-modo.historico{background:var(--blue-bg);color:var(--blue)}
.datebar .dhoy{border:none;background:transparent;color:var(--green-d);font-size:12px;font-weight:700;cursor:pointer;padding:0}
.datebar .dhoy-chip{display:inline-block;margin-top:5px;padding:5px 14px;border-radius:9px;border:1px solid var(--line2);background:var(--green-bg);color:var(--green-d);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;line-height:1.2}
.datebar .dhoy-chip[hidden]{display:none!important}
.cv-bar-proj{stroke:var(--cv-ref-target-stroke);stroke-width:1;stroke-dasharray:3 2}
.cuna-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.past-bal-chart{display:block;min-height:162px;max-height:180px}
.cuna-foot{font-size:11.5px;color:var(--text3);margin-top:8px;line-height:1.4}
.cv-grid{stroke:#ececE3;stroke-width:1}
.cv-axis{fill:var(--text3);font-size:9px;text-anchor:end}
.cv-val{fill:var(--text2);font-size:9.5px;font-weight:700;text-anchor:middle}
.cv-val-cur{font-size:9.5px;font-weight:700;text-anchor:middle;pointer-events:none}
.cv-val-in-bar{fill:#fff;font-size:9px;font-weight:700;text-anchor:middle;pointer-events:none}
.cv-val-narrow{font-size:8px}
.chart-legend{display:flex;flex-wrap:wrap;gap:12px 18px;font-size:12px;font-weight:700;color:var(--text2);margin:-4px 0 10px;align-items:center}
.chart-legend .lg-line,.chart-legend .lg-bar{display:inline-flex;align-items:center;gap:6px}
.chart-legend .lg-line i{display:inline-block;width:22px;height:0;border-top:1.5px solid;vertical-align:middle}
.chart-legend .lg-bar i{display:inline-block;width:12px;height:12px;border-radius:2px;vertical-align:middle}
.chart-legend .lg-cur i{background:#185FA5;border:none}
.chart-legend .lg-prev i{border-color:rgba(194,65,12,0.55);border-top-style:dashed}
.chart-legend .lg-prev2 i{border-color:rgba(107,114,128,0.55);border-top-style:dashed}
.chart-legend .lg-prev3 i{border-color:rgba(139,92,246,0.50);border-top-style:dashed}
.chart-legend .lg-prev4 i{border-color:rgba(75,85,99,0.50);border-top-style:dashed}
.chart-legend button.lg-line,.chart-legend button.lg-bar{cursor:pointer;background:none;border:none;padding:2px;font:inherit;color:inherit}
.chart-legend button.lg-line:active,.chart-legend button.lg-bar:active{transform:scale(.95)}
.chart-legend .lg-off{opacity:.35}
.chart-note{font-size:12px;color:var(--text2);margin:-2px 0 10px;padding:8px 12px;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px}
#leche-trend,#vacas-trend,#leche-mensual{position:relative}
.yoy-chart-tip{position:fixed;left:0;top:0;z-index:60;background:#1f2937;color:#fff;padding:7px 11px;border-radius:9px;font-size:12.5px;font-weight:700;pointer-events:none;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.18);transform:translate(-50%,calc(-100% - 10px));opacity:0;visibility:hidden;transition:opacity .12s}
.yoy-chart-tip.on{opacity:1;visibility:visible}
.yoy-chart-tip.multi{white-space:pre-line;text-align:center;line-height:1.35;max-width:min(300px,calc(100vw - 20px))}
.yoy-tip-hit{cursor:pointer;outline:none;touch-action:manipulation}
.yoy-tip-hit.tip-on .yoy-dot,.yoy-tip-hit:focus-visible .yoy-dot{r:5.5;stroke-width:3}
.yoy-tip-hit.tip-on .cv-bar,.yoy-tip-hit:focus-visible .cv-bar{opacity:.72}
.yoy-tip-hit .yoy-hit{stroke:transparent;stroke-width:0}
.cv-lab{fill:var(--text2);font-size:10px;text-anchor:start}
.cv-lab-yoy{font-size:9px;text-anchor:middle}
.cv-prom{stroke:var(--blue);stroke-width:1.5;stroke-dasharray:5 4}
.cv-prom-tx{fill:var(--blue);font-size:9.5px;font-weight:700;text-anchor:end}
.cv-wedge{stroke:var(--cv-wedge-stroke);stroke-width:2.5;stroke-dasharray:6 4;fill:none;stroke-linecap:round}
.cv-wedge-dot{fill:var(--cv-wedge-stroke)}
.cv-ref-residual{stroke:var(--cv-ref-residual-stroke);stroke-width:1;stroke-dasharray:4 3}
.cv-ref-target{stroke:var(--cv-ref-target-stroke);stroke-width:1.5;stroke-dasharray:6 4}
.cv-ref-tx{fill:var(--text3);font-size:9px;text-anchor:end}
.cv-ref-tx-target{fill:var(--cv-ref-target-tx);font-size:9px;font-weight:700;text-anchor:end}
.cv-ref-tx-residual{fill:var(--cv-ref-residual-tx);font-size:9px;text-anchor:end}
.cv-ref{stroke:var(--cv-ref-residual-stroke);stroke-width:1}
.cv-zero{stroke:#c9b3b3;stroke-width:1.2;stroke-dasharray:3 3}

/* ---------- pastoreo (KPIs oferta/demanda) ---------- */
.past-kpis{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:8px}
.past-rot-table{font-size:12.5px}
.past-rot-tr{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1.4fr) 2.75rem minmax(0,1.15fr) 4.25rem;gap:8px;padding:8px 14px;border-bottom:1px solid var(--line);align-items:center}
.past-rot-tr:last-child{border-bottom:none}
.past-rot-head{font-weight:700;color:var(--text2);font-size:11px;text-transform:uppercase;letter-spacing:.02em;background:var(--bg);padding-top:10px;padding-bottom:6px}
.past-rot-td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.past-rot-td.usos{text-align:center;font-variant-numeric:tabular-nums}
.past-rot-td.num{text-align:right;font-variant-numeric:tabular-nums}
.past-rot-head .past-rot-td.usos{text-align:center}
.past-rot-head .past-rot-td.num{text-align:right}
.past-rot-td.name{font-weight:600}
.past-rot-warn{color:var(--red);font-weight:700}

/* ---------- histórico por potrero ---------- */
.hp-kpis{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:6px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:12px 8px;text-align:center;box-shadow:var(--shadow)}
.kl{font-size:11px;color:var(--text3);font-weight:600}
.kv{font-size:21px;font-weight:700;line-height:1.1;margin-top:2px}
.kv.neg{color:var(--red)}
.kv.sm{font-size:15px}
.ku{font-size:11px;color:var(--text2);margin-top:1px}
.reg-list{margin-top:4px}
.med-ms.neg{color:var(--red)}
.neg{color:var(--red);font-weight:700}
.row .lab.mut.neg{color:var(--red);font-weight:700}

/* ---------- login ---------- */
.login-overlay{display:none;position:fixed;inset:0;z-index:100;background:linear-gradient(160deg,#2c5410,#5a8f22);align-items:center;justify-content:center;padding:22px;padding-top:max(22px,calc(var(--safe-top) + 12px));padding-bottom:max(22px,calc(var(--safe-bottom) + 12px))}
.login-overlay.show{display:flex}
#app-selector.login-overlay.show,#hub-usuarios.login-overlay.show,#hub-cuenta.login-overlay.show{display:block;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.login-card{width:100%;max-width:360px;background:var(--card);border-radius:20px;padding:26px 22px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:11px;animation:fade .3s ease}
.login-logo{font-size:46px;text-align:center}
.login-card h1{font-size:23px;text-align:center;margin:0}
.login-sub{font-size:13px;color:var(--text2);text-align:center;margin:-4px 0 8px}
.login-card label{font-size:12px;color:var(--text2);font-weight:600;display:flex;flex-direction:column;gap:5px}
.login-card input{border:1px solid var(--line2);border-radius:11px;padding:13px;font-size:16px;font-family:inherit}
.login-card input.pin-input{font-variant-numeric:tabular-nums;letter-spacing:.12em;text-align:center}
.pin-banner{font-size:13px;font-weight:700;color:var(--amber-tx);background:var(--amber-bg);border:1px solid #efd9b4;border-radius:12px;padding:10px 12px;margin-bottom:10px;line-height:1.4}
.login-err{color:var(--red);font-size:13px;font-weight:600;min-height:18px;text-align:center}
.login-remember{flex-direction:row!important;align-items:center;gap:8px;font-size:13px!important;color:var(--text)!important;font-weight:600!important;cursor:pointer;margin-top:2px}
.login-remember input{width:18px;height:18px;margin:0;flex-shrink:0}
.login-remember-note{font-size:11.5px;color:var(--text3);text-align:center;margin:-4px 0 0;line-height:1.4}
.login-biometric{width:100%;margin-top:2px}
.passkey-offer{background:var(--green-bg);border:1px solid #b8d4a8;border-radius:14px;padding:12px 14px;margin:0 0 8px;text-align:center}
.passkey-offer p{font-size:13px;color:var(--green-d);font-weight:600;margin:0 0 10px;line-height:1.4}
.passkey-offer .ghost{margin-top:8px;width:100%}

/* ---------- selector de app ---------- */
.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.app-selector-card{max-width:380px;margin:0 auto;flex-shrink:0}
.hub-cuenta-card{max-width:420px;max-height:90vh;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:left;width:100%;flex-shrink:1}
#hub-usuarios .hub-cuenta-card,#hub-cuenta .hub-cuenta-card{max-height:none;overflow-y:visible;margin:0 auto;flex-shrink:0}
.hub-cuenta-card h1{text-align:center}
.hub-back{margin-bottom:14px}
.app-choices{display:flex;flex-direction:column;gap:12px;margin:6px 0 14px}
.app-choice{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;border:1.5px solid var(--line2);background:var(--card);border-radius:16px;padding:20px 16px;cursor:pointer;font-size:13px;color:var(--text2);transition:transform .1s,border-color .15s,box-shadow .15s}
.app-choice b{font-size:17px;color:var(--text)}
.app-choice-ic{font-size:38px;line-height:1}
.app-choice-ic-img{width:38px;height:38px;display:block;object-fit:contain;flex-shrink:0}
.app-choice:active{transform:scale(.97)}
.app-choice:hover{border-color:var(--green);box-shadow:var(--shadow)}
.app-choice-potreros{border-color:#A8CDB8;background:linear-gradient(180deg,#F2F8F4,var(--card))}
.app-choice-potreros:hover{border-color:#2E7A47;box-shadow:var(--shadow)}

/* ---------- offline ---------- */
.offline-banner{display:none;background:var(--amber-bg);color:var(--amber-tx);font-size:12.5px;font-weight:600;text-align:center;padding:9px 12px;line-height:1.35;border-bottom:1px solid #efd9b4}
.offline-banner.show{display:block}
.offline-pend{background:#fff7ec;border:1px dashed #e0b878;color:#7a4a08;font-size:12.5px;font-weight:600;border-radius:11px;padding:10px 12px;margin-bottom:9px;text-align:center}

/* ---------- pendientes (chips reutilizados en alertas de inicio) ---------- */
.pend-chip{background:var(--amber-bg);color:var(--amber-tx);border-radius:99px;padding:6px 11px;font-size:12px;font-weight:700}
.pend-ok{background:var(--green-bg);color:var(--green-d);border-radius:99px;padding:6px 12px;font-size:12.5px;font-weight:700}

/* ---------- inicio: alertas / producción por lote / rebaño ---------- */
.alertbox{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px;margin-bottom:13px;box-shadow:var(--shadow)}
.alertbox .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:700;margin-bottom:8px}
.arow{display:flex;align-items:center;gap:8px;border-radius:10px;padding:8px 10px;font-size:12.5px;font-weight:600;margin-bottom:6px}
.arow:last-child{margin-bottom:0}
.arow.warn{background:var(--amber-bg);color:var(--amber-tx)}
.arow.bad{background:var(--red-bg);color:var(--red)}
.arow.ok{background:var(--green-bg);color:var(--green-d)}
.reb-line{display:flex;justify-content:space-between;align-items:center;background:var(--field);border-radius:10px;padding:9px 12px;font-size:12.5px;margin-top:8px}
.reb-line b{font-weight:700}
.reb-line.warn b{color:var(--amber-tx)}
.reb-hint{font-size:11px;font-weight:600;color:var(--amber-tx)}
.past-kpis-inicio{grid-template-columns:repeat(3,1fr);margin:8px 0}
@media(max-width:520px){.past-kpis-inicio{grid-template-columns:1fr 1fr}.past-kpis-inicio .kpi:last-child{grid-column:1/-1}}
.mv-row{font-size:12px;background:var(--field);border-radius:9px;padding:7px 10px;margin-top:6px}
.mv-row.bad{background:var(--red-bg);color:var(--red);font-weight:700}

/* ---------- días de rotación ---------- */
.rot-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow);margin-bottom:6px}
.rot-kpis{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:12px}
.rk{background:var(--green-bg);border:1px solid var(--green-bd);border-radius:12px;padding:11px 6px;text-align:center}
.rk-warn{background:var(--amber-bg);border-color:#efd9b4}
.rk-warn .rk-v{color:var(--amber-tx)}
.rk-v{font-size:20px;font-weight:700;color:var(--green-d);line-height:1.05}
.rk-l{font-size:9.5px;color:var(--text2);font-weight:600;margin-top:3px}
.rot-head{display:grid;grid-template-columns:1.4fr 1fr .7fr;gap:6px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);font-weight:700;padding:0 4px 6px;border-bottom:1px solid var(--line)}
.rot-row{display:grid;grid-template-columns:1.4fr 1fr .7fr;gap:6px;font-size:13px;padding:9px 4px;border-bottom:1px solid var(--line);align-items:center}
.rot-row:last-of-type{border-bottom:none}
.rot-cola-row{opacity:.88}
.rot-cola{font-size:11px;font-weight:800;color:#9CA3AF;text-transform:uppercase;letter-spacing:.04em}
.cv-lab-cola{fill:#9CA3AF}
.rr-pot{font-weight:700}.rr-kg{color:var(--text2);font-weight:600}.rr-dias{text-align:right;font-weight:700;color:var(--green-d)}
.rr-kg small{display:block;font-size:10px;color:var(--text3);font-weight:600;margin-top:1px}
.pot-link{border:none;background:none;padding:0;margin:0;cursor:pointer;color:var(--green-d);font:inherit;font-weight:700;text-align:left}
.pot-link:active{opacity:.7}
.rot-row .pot-link{display:inline}
.cv-lab.pot-link-txt{cursor:pointer}
.cv-lab.pot-link-txt:hover,.cv-lab.pot-link-txt:active{fill:var(--green-d)}
.medrow-focus{box-shadow:0 0 0 2px var(--green-d);border-radius:10px}
.medrow-landed{box-shadow:0 0 0 2px var(--green-d);border-radius:10px}
.med-landed-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;padding:8px 10px;background:var(--green-bg);border:1px solid #b8dcc4;border-radius:10px;font-size:12.5px;font-weight:700}
.med-landed-bar span{flex:1 1 140px;color:var(--green-d)}
.med-landed-bar button{font-size:12px;padding:6px 10px}
.med-landed-bar .ghost{background:transparent;border:1px solid var(--line);color:var(--text2)}
.rot-foot{font-size:11px;color:var(--text3);margin-top:9px;line-height:1.4}
.rk-pot{font-size:13px;display:flex;flex-direction:column;gap:2px;align-items:center}
.rk-pot small{font-size:10px;color:var(--text2);font-weight:700}
.rr-dias small{display:block;font-size:10px;color:var(--text3);font-weight:600;margin-top:1px}
.rot-sim-state{font-size:12.5px;font-weight:700;color:var(--text);background:var(--field);border:1px solid var(--line);border-radius:10px;padding:9px 10px;margin:2px 0 8px}
.rot-warn{font-size:12px;font-weight:700;color:var(--red);background:var(--red-bg);border:1px solid #e8c4c4;border-radius:10px;padding:9px 10px;margin-bottom:8px}
.rot-flex-note{font-size:12px;font-weight:700;color:var(--amber-tx);background:var(--amber-bg);border:1px solid #efd9b4;border-radius:10px;padding:9px 10px;margin-bottom:8px}
.plan-head{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);font-weight:800;margin:10px 4px 5px}
.plan-list{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:10px}
.plan-row{display:grid;grid-template-columns:46px 1fr;gap:8px;font-size:12.5px;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--field)}
.plan-row:last-child{border-bottom:none}
.plan-row>span:first-child{font-weight:800;color:var(--green-d)}
.plan-row2{display:grid;grid-template-columns:72px 1fr;gap:9px;font-size:12.5px;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--field)}
.plan-row2:last-child{border-bottom:none}
.plan-row-bad{background:var(--amber-bg)}
.plan-day b{display:block;color:var(--green-d);font-size:12.5px}
.plan-day span{display:block;color:var(--text3);font-size:10.5px;font-weight:700;margin-top:2px}
.plan-body{display:flex;flex-direction:column;gap:6px;min-width:0}
.plan-pot{display:grid;grid-template-columns:minmax(80px,1fr) auto;gap:4px 8px;align-items:center}
.plan-pot b{font-size:12.5px;color:var(--text)}
.plan-pot span{font-size:11.5px;color:var(--text2);font-weight:600}
.plan-pot.muted b,.plan-pot.muted span{color:var(--text3)}
.plan-tag{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:99px;padding:3px 6px;justify-self:end}
.plan-tag.ok{background:var(--green-bg);color:var(--green-d)}
.plan-tag.warn{background:var(--amber-bg);color:var(--amber-tx)}
.plan-totals{display:flex;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:6px;font-size:11.5px;color:var(--text2);font-weight:700}
.plan-totals b{color:var(--green-d);white-space:nowrap}
.plan-row-bad .plan-totals b{color:var(--amber-tx)}
@media(max-width:420px){.rot-kpis{grid-template-columns:1fr}.rk-v{font-size:18px}.rot-head,.rot-row{grid-template-columns:1.2fr .9fr .75fr}.plan-row2{grid-template-columns:1fr}.plan-day{display:flex;justify-content:space-between}.plan-pot{grid-template-columns:1fr}.plan-tag{justify-self:start}.plan-totals{flex-direction:column;gap:3px}}

/* ---------- medición acciones ---------- */
.med-actions{display:flex;gap:7px;margin-top:9px}
.med-actions button{flex:1;border:1px solid var(--line2);background:var(--field);border-radius:9px;padding:8px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text)}
.med-actions button.danger{color:var(--red);border-color:#e8c4c4;background:var(--red-bg)}

/* ---------- plan vs entregado (concentrado) ---------- */
.pvr-card{display:flex;flex-direction:column}
.pvr-row{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;align-items:center;
  padding:9px 2px;border-top:1px solid var(--line);font-size:12px}
.pvr-row:first-child{border-top:none}
.pvr-row b{font-variant-numeric:tabular-nums}
.pvr-total{font-weight:700;background:var(--field);border-radius:9px;padding:9px 8px;margin-bottom:2px}
.pvr-date{font-weight:800;grid-column:1/-1}
.pvr-date em{padding:2px 5px;border-radius:5px;background:#FFF3CD;color:#805A00;
  font-size:10px;font-style:normal;font-weight:700}
.pvr-delta.pos{color:#1F6B3A}
.pvr-delta.neg{color:#A04725}
.pvr-hint{font-size:11px;color:var(--text2);line-height:1.35;padding:8px 2px 2px}
@media (min-width:520px){
  .pvr-row{grid-template-columns:minmax(120px,1.4fr) repeat(3,minmax(70px,1fr))}
  .pvr-date{grid-column:auto}
}
@media (prefers-color-scheme:dark){
  .pvr-date em{background:#4A3C12;color:#F2D98B}
  .pvr-delta.pos{color:#7FD6A0}
  .pvr-delta.neg{color:#F0A98A}
}

/* ---------- histórico por fecha / carpeta año-mes ---------- */
.histtree{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.histgrp{background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden;box-shadow:var(--shadow)}
.histgrp-year{border-color:#d4dcc8}
.histgrp-month{margin:6px 8px 8px;border-radius:11px;background:var(--field)}
.histgrp-day{margin:4px 6px 6px;border-radius:10px;background:var(--card2)}
.histgrp-head{width:100%;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;gap:2px 10px;padding:11px 13px;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;align-items:center}
.histgrp-year>.histgrp-head{padding:12px 14px}
.histgrp-ic{font-size:17px;grid-column:1;grid-row:1/span 2;line-height:1}
.histgrp-title{font-weight:700;font-size:14.5px;grid-column:2;grid-row:1}
.histgrp-year>.histgrp-head .histgrp-title{font-size:15.5px}
.histgrp-meta{font-size:12px;color:var(--text2);grid-column:2;grid-row:2}
.histgrp-chev{font-size:11px;color:var(--text3);grid-column:3;grid-row:1/span 2;transition:transform .15s}
.histgrp.open>.histgrp-head .histgrp-chev{transform:rotate(180deg)}
.histgrp-body{display:none;padding:0 0 4px}
.histgrp.open>.histgrp-body{display:block}
.histgrp-day>.histgrp-body{padding:4px 6px 8px}
.histgrp-day .hist,.histgrp-day .medrow{margin-bottom:6px}
.medhist-day{background:var(--card);border:1px solid var(--line);border-radius:13px;margin-bottom:8px;overflow:hidden;box-shadow:var(--shadow)}
.medhist-head{width:100%;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:2px 8px;padding:12px 14px;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;align-items:center}
.medhist-date{font-weight:700;font-size:14.5px;grid-column:1;grid-row:1}
.medhist-meta{font-size:12px;color:var(--text2);grid-column:1;grid-row:2}
.medhist-chev{font-size:11px;color:var(--text3);grid-column:2;grid-row:1/span 2;transition:transform .15s}
.medhist-day.open .medhist-chev{transform:rotate(180deg)}
.medhist-body{display:none;padding:4px 8px 10px;border-top:1px solid var(--line)}
.medhist-day.open .medhist-body{display:block}

/* ---------- exportaciones ---------- */
.export-row{display:flex;gap:8px;margin-bottom:6px}
.export-row .ghost{margin-bottom:0;padding:11px 6px;font-size:13px}

/* ---------- configuración admin ---------- */
.config-save{border-radius:0 0 16px 16px;box-shadow:none}
.agroapp-sync-banner{margin:0 0 12px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:14px}
.agroapp-sync-banner[hidden]{display:none}
.agroapp-sync-banner-text{font-size:13.5px;font-weight:700;color:var(--text);line-height:1.35}
.agroapp-sync-progress{height:8px;margin-top:9px;overflow:hidden;background:var(--line);border-radius:99px}
.agroapp-sync-progress-bar{width:0;height:100%;background:var(--green);border-radius:inherit;transition:width .2s ease}
.ord-row{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:9px;box-shadow:var(--shadow);display:flex;justify-content:space-between;gap:10px;align-items:center}
.ord-row.off{opacity:.62;background:var(--field)}
.ord-name{font-weight:700;font-size:14.5px}
.agro-animal-row{align-items:center}
.ord-row[hidden]{display:none!important} /* .ord-row display:flex le gana al atributo hidden */
.agro-sel-wrap{flex-shrink:0;display:flex;align-items:center;padding:0 4px 0 0}
.agro-sel-wrap input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--green-d)}
.agro-sel-spacer{width:18px;display:inline-block}
.agro-animal-main{flex:1;min-width:0}
.agro-filtros-estado{display:flex;flex-wrap:wrap;gap:8px}
.agro-filtros-estado .agro-estado-sel{flex:1;min-width:9rem;font-size:13px;padding:8px 10px}
.agro-bulk-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;background:var(--field);border-radius:12px;margin-bottom:10px;border:1px solid var(--line)}
.agro-bulk-count{font-size:13px;font-weight:600;color:var(--text2);margin:0 4px}
.agro-bulk-lote-sel{flex:1;min-width:8rem;max-width:11rem;font-size:13px;padding:8px 10px}
.agro-bulk-apply{border:none;background:var(--green-d);color:#fff;border-radius:10px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.agro-bulk-apply:disabled{opacity:.45;cursor:not-allowed}
.agro-bulk-bar .ghost{width:auto;margin-bottom:0;padding:8px 12px;font-size:13px;flex:0 1 auto}
.agro-cuadre{padding:10px 12px;border-radius:12px;margin-bottom:10px;font-size:13px;line-height:1.45;border:1px solid var(--line)}
.agro-cuadre.ok{background:var(--green-bg);border-color:var(--green-bd);color:var(--green-d)}
.agro-cuadre.warn{background:var(--red-bg);border-color:#e8c4c4;color:var(--red)}
.agro-lote-cell{flex-shrink:0;min-width:9.5rem;display:flex;justify-content:center;align-items:center}
.agro-lote-cell select.pot-search{width:100%;font-size:13px;padding:8px 10px}
.agro-lote-read{display:flex;flex-direction:column;align-items:center;text-align:center;line-height:1.3;font-size:13px;font-weight:700;color:var(--green-d)}
.agro-lote-read .agro-lote-auto{font-size:11px;font-weight:600;color:var(--text2);margin-top:2px}
.chip.chip-lote-auto{padding:8px 14px;height:auto;border-radius:14px;line-height:1.25}
.chip.chip-lote-auto .agro-lote-read--chip{font-size:13px}
.chip.active.chip-lote-auto .agro-lote-auto{color:rgba(255,255,255,.88)}
.ord-name.mono{font-variant-numeric:tabular-nums;letter-spacing:.04em}
.agro-animal-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.agro-animal-raza{font-size:11px;color:var(--text3);font-weight:600;line-height:1.25;flex-shrink:1;min-width:0}
.agro-animal-head .ord-name{line-height:1.2;flex-shrink:0}
.agro-diio-link{border:none;background:none;padding:0;margin:0;cursor:pointer;color:var(--green-d);text-align:left;font:inherit;font-weight:700}
.agro-diio-link:active{opacity:.7}
.agro-salud-row{align-items:flex-start}
.agro-salud-main{flex:1;min-width:0}
.agro-resguardo{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:99px;background:var(--red-bg);border:1px solid #e8c4c4;color:var(--red);font-size:11.5px;font-weight:700;line-height:1.25}
.agro-resguardo.vencido{background:var(--field);border-color:var(--red);color:var(--red)}
.agro-salud-lote{flex-shrink:0;padding:5px 8px;border-radius:99px;background:var(--green-bg);border:1px solid var(--green-bd);color:var(--green-d);font-size:11.5px;font-weight:700;text-align:center}
.agro-cria-raza{color:var(--muted);font-weight:500}
.agro-ficha-title{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:4px 0 6px;font-size:20px}
.agro-ficha-meta{margin:0 0 14px}
.agro-ficha-body{padding:12px 15px 14px}
.agro-ficha-grid{display:flex;flex-direction:column;gap:9px}
.agro-ficha-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.agro-ficha-lbl{font-size:11.5px;color:var(--text2);flex:1;min-width:0;line-height:1.35}
.agro-ficha-val{font-size:13.5px;font-weight:700;color:var(--text);text-align:right;max-width:58%;line-height:1.35}
.agro-hist-row{align-items:flex-start}
.agro-hist-fecha{font-size:12px;font-weight:700;color:var(--text2);white-space:nowrap;flex-shrink:0;padding-top:2px}
.agro-hist-fuente{font-size:11px;color:var(--text3);margin-top:4px;text-transform:uppercase;letter-spacing:.04em;font-weight:700}
.agro-hist-baja .ord-name{color:#A83321}
.agro-baja-banner{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 12px;padding:10px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;font-size:13px;color:var(--text2)}
.agro-baja-banner b{color:#A83321}
.agro-lact-bloque + .agro-lact-bloque{margin-top:14px}
.agro-lact-label{font-size:11px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px}
.agro-lact-mas{margin-top:10px;padding:11px}
.ord-state{font-size:12px;color:var(--text2);margin-top:4px;line-height:1.35}
.ord-actions{display:flex;gap:7px;flex-shrink:0}
.pw-admin-row{display:flex;gap:7px;align-items:center;flex-shrink:0}
.pw-admin-row input{min-width:110px;max-width:140px}
.pw-admin-row button{border:1px solid var(--line2);background:var(--field);border-radius:9px;padding:8px 11px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text);white-space:nowrap}
#cuenta-claves .fcard,#hub-usuarios .fcard{margin-bottom:12px}
#cuenta-claves .hint,#hub-usuarios .hint{margin:-4px 0 10px;font-size:12.5px;color:var(--text2)}
#hub-usuarios .sec{margin-top:4px}
#hub-usuarios .note{margin-bottom:12px}
#hub-usuarios h1{text-align:center}
.us-apps{display:flex;gap:14px;align-items:center}
.us-apps label{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--text2);font-weight:600}
.us-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--green-bg);color:var(--green-d);border-radius:99px;padding:2px 8px;margin-left:4px}
.us-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.us-actions button.active{background:var(--green-bg);border-color:var(--green-d);color:var(--green-d)}
.us-row{display:block}
.us-menus{margin:10px 0 4px}
.us-menu-title,.us-perms-apps{font-size:12px;font-weight:700;color:var(--text2);margin:8px 0 6px}
.us-menu-group{margin:0 0 10px;border:1px solid var(--line2);border-radius:10px;padding:8px 10px;background:var(--field)}
.us-menu-app{font-size:12px;font-weight:700;color:var(--text);margin-bottom:6px}
.us-menu-items{display:flex;flex-direction:column;gap:8px}
.us-menu-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.us-menu-lv{flex:0 0 auto;min-width:148px;font-size:12.5px;padding:7px 8px}
.us-sw{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text2);font-weight:600}
.us-perms{margin-top:10px;border-top:1px dashed var(--line2);padding-top:10px}
.us-edit-box{margin-top:10px;border-top:1px dashed var(--line2);padding-top:10px}
.perm-hint{font-size:12px;color:var(--text2);margin:4px 0 10px;line-height:1.4}
.chk-inline{display:inline-flex;align-items:center;gap:6px;margin-right:14px;font-size:13px;cursor:pointer}
.ord-add-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}
.ord-add-row .sel{flex:1;min-width:120px}
.ord-new-inp{flex:1;min-width:100px;max-width:160px}
.ord-add-btn{flex-shrink:0;padding:8px 10px;font-size:12px}
.us-flags{margin:12px 0;padding:10px 12px;background:var(--bg2);border-radius:10px}
.perm-summary{font-size:12px;color:var(--text2);margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}
.perm-chip{font-size:11px;font-weight:700;padding:3px 8px;border-radius:99px;background:#f0ede4;color:var(--text2)}
.perm-chip.edit{background:var(--green-bg);color:var(--green-d)}
.perm-chip.read{background:#eef4fb;color:#185FA5}
.perm-matrix{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card)}
.perm-matrix-head{display:grid;grid-template-columns:1fr 72px 72px;gap:0;padding:8px 10px;background:var(--field);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text2)}
.perm-matrix-head span:not(:first-child){text-align:center}
.perm-appbar{padding:8px 12px;font-size:12px;font-weight:800;color:var(--green-d);background:var(--green-bg);border-top:1px solid var(--line)}
.perm-appbar:first-child{border-top:none}
.perm-row{display:grid;grid-template-columns:1fr 72px 72px;align-items:center;gap:0;padding:8px 10px;border-top:1px solid var(--line)}
.perm-name{font-size:13.5px;font-weight:600;color:var(--text)}
.perm-cell{display:flex;justify-content:center;align-items:center}
.perm-toggle{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}
.perm-toggle input{position:absolute;opacity:0;width:0;height:0}
.perm-sw{display:block;width:46px;height:28px;border-radius:99px;background:#d8d4c8;border:1px solid #c5c0b4;position:relative;transition:.2s}
.perm-sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--card2);box-shadow:0 1px 3px rgba(0,0,0,.18);transition:.2s}
.perm-toggle.on .perm-sw{background:#b8c9e8;border-color:#185FA5}
.perm-toggle.on .perm-sw::after{transform:translateX(18px)}
.perm-toggle.edit.on .perm-sw{background:var(--green-d);border-color:var(--green-d)}
.perm-toggle.edit.on .perm-sw::after{background:var(--card2)}
.perm-tglbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text2)}
.perm-toggle.on .perm-tglbl{color:var(--text)}
.perm-presets{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}
.perm-presets-lab{font-size:12px;font-weight:700;color:var(--text2);margin-right:4px}
.perm-presets button{font-size:11.5px;padding:6px 10px;border-radius:8px;border:1px solid var(--line2);background:var(--card);font-weight:700;cursor:pointer}
.perm-presets button:active{background:var(--green-bg)}
.perm-admin-note{font-size:13px;color:var(--text2);padding:10px 12px;background:var(--field);border-radius:10px}
.push-matrix{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card)}
.push-matrix-head,.push-matrix-row{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(var(--push-cols,1),minmax(0,1fr));gap:0;padding:8px 10px;align-items:center}
.push-matrix-head{background:var(--field);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text2)}
.push-matrix-head span:not(:first-child),.push-cell{text-align:center}
.push-matrix-row{border-top:1px solid var(--line)}
.push-user{font-size:13.5px;font-weight:600;color:var(--text);display:flex;flex-direction:column;gap:2px}
.push-user small{font-size:11px;font-weight:500;color:var(--text2)}
.push-device-toggle{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:14px;font-weight:600}
.push-device-toggle[hidden]{display:none!important} /* display:flex le gana al atributo hidden */
@media (max-width:400px){
  .perm-matrix-head,.perm-row{grid-template-columns:1fr 58px 58px}
  .perm-sw{width:40px;height:26px}
  .perm-sw::after{width:18px;height:18px}
  .perm-toggle.on .perm-sw::after{transform:translateX(14px)}
}
.ord-actions button{border:1px solid var(--line2);background:var(--field);border-radius:9px;padding:8px 9px;font-size:12px;font-weight:700;cursor:pointer;color:var(--text)}
.ord-actions button.danger{color:var(--red);background:var(--red-bg);border-color:#e8c4c4}

/* ---------- inventario form (admin) ---------- */
.inv-edit{margin-top:11px;padding:10px;font-size:13px}
.inv-form{background:var(--field);border:1px solid var(--line);border-radius:13px;padding:14px;margin-top:11px;display:flex;flex-direction:column;gap:10px}
.inv-form label{font-size:12px;color:var(--text2);font-weight:600;display:flex;flex-direction:column;gap:5px}
.inv-form input,.inv-form textarea{border:1px solid var(--line2);border-radius:9px;padding:10px;font-size:14px;font-family:inherit}
.inv-form .save{margin-top:4px}
.medidor-fijo{font-weight:600;color:var(--text);padding:4px 0}
.medidor-row{align-items:center}

/* ---------- modo oscuro (sigue el ajuste del sistema) ---------- */
@media (prefers-color-scheme: dark){
  :root{
    --bg:#161613; --card:#1f1f1a; --line:#33322a; --line2:#413f34;
    --text:#eceade; --text2:#b8b5a6; --text3:#918e7f;
    --green:#5f9c2c; --green-d:#bfe39a; --green-bg:#243a15; --green-bd:#3f5c26;
    --amber-bg:#3a2c14; --amber-tx:#e8c98e; --amber:#d99a3f;
    --blue:#6ba7dd; --blue-bg:#1c2f42; --red:#d66a5e; --red-bg:#3d1d1a;
    --card2:#26261f; --field:#24241e; --field2:#2e2e26;
    --shadow:0 1px 2px rgba(0,0,0,.25),0 4px 14px rgba(0,0,0,.28);
    --shadow-lg:0 6px 22px rgba(0,0,0,.45);
    --cv-ref-residual-stroke:#6f6b60;
    --cv-ref-residual-tx:#918e7f;
    --cv-ref-target-stroke:#e8c98e;
    --cv-ref-target-tx:#f0d9a8;
    --cv-wedge-stroke:#f0d9a8;
  }
  :root{color-scheme:dark}
  input,select,textarea{background:var(--card2);color:var(--text)}
  input::placeholder,textarea::placeholder{color:var(--text3)}
  .save{background:#3f7217}
  .toast{background:#2f5212}
  .chip.active{background:#3f7217;border-color:#3f7217}
  .chips.forr-chips .chip.active.done,.chips.leche-chips .chip.active.done{background:#3f7217;border-color:#3f7217}
  .role-pill.admin{background:var(--card2);color:var(--green-d);border-color:rgba(255,255,255,.35)}
  .card-ic.milk{background:#22303f}.card-ic.cow{background:#3a2c1c;color:#e8c98e}.card-ic.box{background:#2d2a3c}.card-ic.cal{background:#1d3340}.card-ic.agroapp{background:var(--card2)}
  .hist-muerte{color:#e8a9a0;background:#3d1d1a;border-color:#5c2f2a}
  .chart-note{background:#3a2c14;border-color:#5c4522}
  .offline-pend{background:#3a2c14;border-color:#6b5322;color:#e8c98e}
  .lock.on{border-color:#5c4522}
  .lock.edit{color:#a9cdf0;border-color:#2c4763}
  .pin-banner{border-color:#5c4522}
  .fhead.blue{color:#a9cdf0}
  .b-low{color:#e8c98e}.b-crit{color:#e8a9a0}
  .leche-globo-pm{border-color:#2c4763}
  .leche-globo-am{border-color:#3f5c26}
  .leche-globo-pm .leche-globo-head{background:linear-gradient(135deg,#22304a,#1c2736);color:#a9cdf0}
  .leche-globo-am .leche-globo-head{background:linear-gradient(135deg,#26361b,#1e2a15);color:#cfe8b0}
  .leche-pm-resumen{background:linear-gradient(135deg,#22304a,#1c2736);border-color:#2c4763}
  .leche-pm-resumen-head,.leche-pm-resumen-lit,.leche-pm-resumen-foot{color:#a9cdf0}
  .leche-pm-resumen-foot{border-top-color:#2c4763}
  .leche-pm-resumen-row{background:rgba(255,255,255,.06)}
  .leche-pm-resumen-row.done{background:rgba(255,255,255,.09)}
  .leche-entregada{background:linear-gradient(135deg,#26361b,#1e2a15);border-color:#3f5c26}
  .leche-entregada-row{background:rgba(255,255,255,.06)}
  .leche-turno-btn[data-turno="am"].active{background:linear-gradient(135deg,#26361b,#1e2a15);border-color:#3f5c26;color:#cfe8b0}
  .leche-turno-btn[data-turno="pm"].active{background:linear-gradient(135deg,#22304a,#1c2736);border-color:#2c4763;color:#a9cdf0}
  .leche-screen-sub-pm{color:#a9cdf0}
  .cv-grid{stroke:#33322a}
  .cv-ref{stroke:var(--cv-ref-residual-stroke)}
  .cv-zero{stroke:#5c3f3a}
  .histgrp-year{border-color:#3a4530}
  .app-choice-potreros{background:linear-gradient(180deg,#1d2a20,var(--card));border-color:#3a5c46}
  .stp input{background:var(--card2)}
  .datebar button,.datebar .calpick{background:var(--card2)}
  .searchsel-btn:active,.searchsel-open .searchsel-btn{border-color:var(--green)}
}

/* ---------- modo horizontal: pantalla del vehículo / tablet en soporte ----------
   Solo se activa en horizontal con poca altura y ancho suficiente (TASK-2026-076).
   En vertical ninguna de estas reglas existe, así que la captura en terreno queda
   idéntica. Lo que hace: recupera altura llevando el menú inferior a un riel
   lateral, comprime la barra superior y deja que el contenido use el ancho.
   Potreros queda fuera: tiene su propio riel en App potreros/style.css. */
@media (orientation:landscape) and (max-height:640px) and (min-width:640px){
  :root{--lp-rail-w:78px}

  body:not(.app-potreros) .app{max-width:none;padding-left:var(--lp-rail-w)}
  body:not(.app-potreros) .topbar{padding:calc(var(--safe-top) + 9px) 16px 9px}
  body:not(.app-potreros) .brand{font-size:15.5px}
  body:not(.app-potreros) .screen{padding:12px 18px 18px;max-width:1180px}

  body:not(.app-potreros) .nav{
    left:0;transform:none;top:0;bottom:auto;
    height:100dvh;width:var(--lp-rail-w);max-width:none;
    flex-direction:column;justify-content:flex-start;gap:2px;
    border-top:0;border-right:1px solid var(--line);
    padding:calc(var(--safe-top) + 10px) 5px calc(var(--safe-bottom) + 10px);
    overflow-y:auto;box-shadow:1px 0 10px rgba(28,27,24,.05);
  }
  body:not(.app-potreros) .nav button{flex:0 0 auto;min-height:54px;padding:5px 2px;gap:2px;font-size:10px;line-height:1.15}
  body:not(.app-potreros) .nav button.active{background:var(--green-bg);border-radius:12px}
  body:not(.app-potreros) .nav .ni{height:30px;font-size:20px}
  body:not(.app-potreros) .nav .ni-svg svg{width:26px;height:26px}
  body:not(.app-potreros) .nav .ni .ic-cow-card{width:34px;height:34px}
  body:not(.app-potreros) .nav .ni .ic-pastoreo,
  body:not(.app-potreros) .nav .ni .ic-forrajeo,
  body:not(.app-potreros) .nav .ni .ic-agroapp,
  body:not(.app-potreros) .nav .ni .ic-ballica{width:26px;height:26px}
  body:not(.app-potreros) .toast{bottom:16px;left:calc(50% + var(--lp-rail-w)/2)}

  /* Tarjetas centradas: a 480 px de alto se cortan si no pueden desplazarse. */
  .login-overlay{align-items:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch;
    padding-top:max(14px,var(--safe-top));padding-bottom:max(14px,var(--safe-bottom))}
  .login-card{margin:0 auto;padding:18px 20px;gap:9px}
  .login-logo{font-size:32px}
  .login-card h1{font-size:20px}
  .app-selector-card{max-width:560px}
  .hub-cuenta-card{max-width:640px;max-height:none;overflow-y:visible}
  .app-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .app-choice{padding:14px 12px}
  .app-choice-ic{font-size:30px}
  .app-choice-ic-img{width:30px;height:30px}
  .registro-popup-ov,.past-modal-ov{align-items:flex-start;overflow-y:auto}
  .past-modal{max-height:none}

  /* Dos columnas donde el móvil apila: el ancho sobra y la altura no. */
  .grid{grid-template-columns:repeat(3,1fr)}
  .secondary-grid{grid-template-columns:repeat(4,1fr)}
}

/* ---------- Apartado con bastón (App leche / App crianza) ---------- */
.apt-transporte{margin-bottom:12px}
.apt-card-wrap{margin:14px 0}
.apt-lote{border-radius:16px;padding:26px 12px;text-align:center;font-size:56px;line-height:1.05;font-weight:800;letter-spacing:.5px;color:#fff;box-shadow:var(--shadow-lg);text-shadow:0 1px 3px rgba(0,0,0,.25)}
/* Colores por lote: distinguibles a 2 metros, texto blanco sobre fondo sólido */
.apt-lote.l1{background:#2e7d32}
.apt-lote.l2{background:#1565c0}
.apt-lote.sec{background:#e65100}
.apt-lote.pre{background:#6a1b9a}
.apt-lote.vaq{background:#00838f}
.apt-lote.sin{background:#616161;font-size:40px}
.apt-lote.nf{background:#b71c1c;font-size:34px}
.apt-lote.is-dup{opacity:.55;filter:grayscale(.4)}
.apt-dup{background:var(--amber-bg);color:var(--amber-tx);border-radius:10px;padding:8px 12px;font-weight:700;text-align:center;margin-bottom:8px}
.apt-card-info{display:flex;flex-direction:column;gap:4px;align-items:center;margin-top:10px;text-align:center}
.apt-diio{font-size:24px;font-weight:700}
.apt-meta{color:var(--text2);font-size:14px}
.apt-reasignar{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text2);margin-top:6px}
.apt-conteos{margin:10px 0;display:flex;flex-wrap:wrap;gap:6px}
.apt-chip-nf{background:var(--red-bg);color:var(--red)}
.apt-row-no_encontrado .ord-name{color:var(--red)}
.apt-row-duplicada{opacity:.6}
.apt-sesion-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}
.apt-diag{margin-top:16px}
.apt-diag summary{cursor:pointer}
.apt-diag textarea{width:100%;font-family:ui-monospace,monospace;font-size:12px}
.apt-diag-log{background:var(--field);border:1px solid var(--line);border-radius:8px;padding:8px;font-size:11px;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-all;margin-top:8px}

/* ---------- Pastoreo: consumo por lote, balance por lote, cultivos ---------- */
.past-cons-card .fhead{display:flex;justify-content:space-between;align-items:center}
.past-cons-cab{font-size:12px;font-weight:700;color:var(--text2);background:var(--field);border:1px solid var(--line);border-radius:99px;padding:3px 10px}
.past-cult-val{display:inline-flex;align-items:center;gap:8px}
.past-cult-btn{padding:5px 12px;font-size:12px;margin:0}
.past-dem-line{font-size:13px;color:var(--text2);padding:8px 15px 10px;border-top:1px dashed var(--line);margin-top:4px}
.past-dem-line b{color:var(--green-d);font-variant-numeric:tabular-nums}
.past-kpis-lotes{margin-bottom:10px}
.past-kpi-lote .past-kpi-det{font-size:11px;color:var(--text2);margin-top:6px;line-height:1.45}
.past-comun{margin:2px 2px 12px}
/* Modal cultivo suplementario */
.past-modal-ov{position:fixed;inset:0;z-index:80;background:rgba(20,20,16,.5);display:flex;align-items:center;justify-content:center;padding:20px;padding-top:max(20px,var(--safe-top));padding-bottom:max(20px,var(--safe-bottom))}
.past-modal{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);width:100%;max-width:420px;max-height:82vh;overflow-y:auto;padding:14px 16px 16px;animation:fade .18s ease}
.past-modal .fhead{padding:0 0 8px}
.past-modal-actions{margin-top:12px}
.past-modal-save{margin:0;flex:1}
/* Config de grupos de potreros y cultivos */
.past-cfg summary{cursor:pointer;list-style:none}
.past-cfg summary::-webkit-details-marker{display:none}
.past-cfg-list{margin-top:6px}
.past-cfg-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid var(--line)}
.past-cfg-row:last-child{border-bottom:none}
.past-cfg-row.is-cultivo .past-cfg-name{color:var(--amber-tx)}
.past-cfg-name{font-size:13.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.past-cfg-chips{display:flex;gap:5px;flex-shrink:0}
.past-cfg-chip{padding:6px 11px;font-size:12px;box-shadow:none;margin:0}
.past-cfg-chip.active{background:var(--green-bg);border-color:var(--green);color:var(--green-d)}
.past-cfg-chip.past-cfg-cult.active{background:var(--amber-bg);border-color:var(--amber);color:var(--amber-tx)}
.past-cfg-chip:disabled{opacity:.5;cursor:default}
