/* Estilos de la app. Los colores salen de los tokens de :root; hay tema claro y oscuro. */
:root{color-scheme:light}
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
img{max-width:100%}
[hidden]{display:none!important}

/* Concepto: etiqueta de caja de limón. Una columna, números grandes, códigos en monoespaciada. El lima es el único acento. */
:root{
  /* v8.28: una sola familia (Figtree) para texto, títulos y cifras; la monoespaciada queda solo para códigos (.mono) */
  --font-display:'Figtree',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-body:'Figtree',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-mono:'Figtree',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-code:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --bg:#eef2ec; --surface:#fafcf8; --ink:#14221b; --muted:#566a5d; --line:#cdd8cf;
  --accent:#b4d334; --accent-ink:#1a2705; --accent-text:#4f6b0a;
  --good:#2b7a3b; --warn:#9a5f00; --info:#245aa5; --crit:#b3261e;
  --good-bg:#dff0e1; --warn-bg:#f8ebcf; --info-bg:#dce8f7; --crit-bg:#f8dcd9;
  --orange:#c24e00; --orange-bg:#fde3cc;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0f1a14; --surface:#16231c; --ink:#e6efe8; --muted:#97a99d; --line:#2a3b31;
    --accent:#c4e24a; --accent-ink:#141f04; --accent-text:#c4e24a;
    --good:#6fcf7e; --warn:#e0a63a; --info:#8bb8f2; --crit:#ff8a80;
    --good-bg:#183a22; --warn-bg:#3d2f10; --info-bg:#16294a; --crit-bg:#451d1a;
    --orange:#ff9a4d; --orange-bg:#40230d;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0f1a14; --surface:#16231c; --ink:#e6efe8; --muted:#97a99d; --line:#2a3b31;
  --accent:#c4e24a; --accent-ink:#141f04; --accent-text:#c4e24a;
  --good:#6fcf7e; --warn:#e0a63a; --info:#8bb8f2; --crit:#ff8a80;
  --good-bg:#183a22; --warn-bg:#3d2f10; --info-bg:#16294a; --crit-bg:#451d1a;
  --orange:#ff9a4d; --orange-bg:#40230d;
  color-scheme:dark;
}

/* Tema por empresa: el interruptor cambia estos tokens (verde y azul marino de Vera Limes; naranja y verde de Citrilar). */
:root[data-emp="VL"]{--bg:#edf1f1;--surface:#f9fbfb;--ink:#14243a;--muted:#546478;--line:#cbd5dd;--accent:#98c858;--accent-ink:#10203a;--accent-text:#3d6c10;--brand:#1b2c46}
:root[data-emp="EC"]{--bg:#f4efe6;--surface:#fcfaf5;--ink:#26301a;--muted:#6a6550;--line:#ddd3bd;--accent:#f08030;--accent-ink:#2a1304;--accent-text:#a84e08;--brand:#38582a}
@media (prefers-color-scheme: dark){
  :root[data-emp="VL"]:not([data-theme="light"]){--bg:#0e1928;--surface:#152336;--ink:#e6ecf4;--muted:#9aabbe;--line:#2a3b50;--accent:#98c858;--accent-ink:#0e1a2c;--accent-text:#a9d96a;--brand:#98c858}
  :root[data-emp="EC"]:not([data-theme="light"]){--bg:#18150e;--surface:#221e14;--ink:#f1ebe0;--muted:#b0a690;--line:#3a3324;--accent:#f08030;--accent-ink:#241004;--accent-text:#f59a55;--brand:#f08030}
}
:root[data-emp="VL"][data-theme="dark"]{--bg:#0e1928;--surface:#152336;--ink:#e6ecf4;--muted:#9aabbe;--line:#2a3b50;--accent:#98c858;--accent-ink:#0e1a2c;--accent-text:#a9d96a;--brand:#98c858;color-scheme:dark}
:root[data-emp="EC"][data-theme="dark"]{--bg:#18150e;--surface:#221e14;--ink:#f1ebe0;--muted:#b0a690;--line:#3a3324;--accent:#f08030;--accent-ink:#241004;--accent-text:#f59a55;--brand:#f08030;color-scheme:dark}
.empchip{flex:none;font:700 13px var(--font-mono);letter-spacing:.06em;padding:4px 8px;border-radius:6px;background:var(--accent);color:var(--accent-ink)}
.hero{margin-top:16px;border:1.5px solid var(--ink);border-radius:10px;background:var(--surface);padding:16px}
.hero .logo{display:block;width:min(260px,70%);height:auto;margin:0 auto 12px;background:#fff;border-radius:10px;padding:8px}
.hero h1{margin:0;font:700 34px/1 var(--font-display);text-transform:uppercase;letter-spacing:.02em}
.hero .sub{margin-top:4px;color:var(--muted);font-size:14px}
.seg{display:flex;margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{flex:1;min-height:48px;border:0;background:transparent;font:600 15px var(--font-body);color:var(--muted);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.seg button+button{border-left:1px solid var(--line)}
.mbtn{display:flex;align-items:center;gap:14px;width:100%;text-align:left;margin-top:12px;padding:16px;border:1.5px solid var(--ink);border-radius:10px;background:var(--surface);cursor:pointer;min-height:84px}
.mbtn .mgo{margin-left:auto;font:700 30px/1 var(--font-display);color:var(--accent-text)}
.mbtn{justify-content:space-between;border-left:8px solid var(--accent)}
.mbtn strong{display:block;font:700 26px/1.05 var(--font-display);text-transform:uppercase;letter-spacing:.02em}
.mbtn small{display:block;margin-top:3px;color:var(--muted);font-size:14px}
.filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
.filters .fld select{width:100%;min-height:46px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:500 15px var(--font-body)}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.tile{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px}
.tile b{display:block;font:700 30px/1.05 var(--font-display)}
.srt{display:flex;gap:8px;margin-top:12px}
.srt .btn[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.prd{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-top:8px;padding:10px 12px}
.prd .r1{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.prd .pnm{font:600 17px/1.15 var(--font-body);overflow-wrap:anywhere}
.prd .pnm small{display:block;font:400 12px var(--font-mono);color:var(--muted);margin-top:2px}
.prd .rend{font:700 28px var(--font-display);white-space:nowrap}
.prd .r2{margin-top:6px;font:400 12px/1.5 var(--font-mono);color:var(--muted)}
.ro [data-edit]{display:none!important}
.ro .in{opacity:.85}
.rolebadge{margin-top:12px;padding:8px 12px;border-radius:8px;background:var(--info-bg);color:var(--info);font-size:14px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.4 var(--font-body);padding-inline:16px;padding-block:0 120px;-webkit-text-size-adjust:100%}
.wrap{max-width:720px;margin-inline:auto}
button{font:inherit;color:inherit}
h2,h3{margin:0;text-wrap:balance}
p{margin:0}
.mono{font-family:var(--font-code)}

.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);margin-inline:-16px;padding-inline:16px;border-bottom:1px solid var(--line)}
.topin{max-width:720px;margin-inline:auto;display:flex;align-items:center;gap:10px;min-height:56px}
.ttl{flex:1;min-width:0;font:700 24px/1 var(--font-display);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pill{font:500 12px var(--font-mono);min-height:36px;padding:0 12px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--muted);white-space:nowrap;cursor:pointer}
.pill[data-s="syncing"]{color:var(--info);border-color:var(--info)}
.pill[disabled]{opacity:.8;cursor:default}
.pill[data-s="synced"]{color:var(--good);border-color:var(--good)}
.pill[data-s="pending"]{color:var(--warn);border-color:var(--warn)}
.icon{flex:none;width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font-size:20px;line-height:1;cursor:pointer}

.btn{min-height:44px;padding:0 16px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font-weight:600;cursor:pointer}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.btn.sm{min-height:36px;padding:0 12px;font-size:14px}
.btn.danger{color:var(--crit);border-color:var(--crit)}
.btn[disabled]{opacity:.5;cursor:default}
.link{background:none;border:0;padding:8px 0;color:var(--accent-text);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
:is(.btn,.icon,.in,.prow,.tab,.link,.ocard,.res,.chipbtn):focus-visible{outline:3px solid var(--accent-text);outline-offset:2px}

.k{font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.sec{font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px}

.label{margin-top:16px;border:1.5px solid var(--ink);border-radius:6px;background:var(--surface);padding:14px 16px}
.lrow{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;flex-wrap:wrap}
.big{font:700 40px/1 var(--font-display);letter-spacing:.01em}
.jc{font-size:20px;font-weight:600}
.label hr{border:0;border-top:1.5px dashed var(--line);margin:12px 0}
.meta{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.badge{display:inline-block;font:600 11px var(--font-mono);padding:2px 7px;border-radius:5px;background:var(--accent);color:var(--accent-ink);margin-left:6px;vertical-align:middle}
.sib{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.sib .btn[aria-pressed="true"]{background:var(--ink);color:var(--bg)}

.tabs{display:flex;margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}
.tab{flex:1;min-height:44px;border:0;background:transparent;font:600 15px var(--font-body);color:var(--muted);cursor:pointer}
.tab[aria-selected="true"]{background:var(--ink);color:var(--bg)}

.pc{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-top:10px;overflow:hidden;scroll-margin-top:72px}
.prow{display:grid;grid-template-columns:24px minmax(0,1fr) auto auto;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;background:transparent;border:0;cursor:pointer;min-height:58px}
.idx{font:600 13px var(--font-mono);color:var(--muted)}
.pn{font:600 17px/1.15 var(--font-body);overflow-wrap:anywhere}
.pn small{display:block;margin-top:2px;font:400 12px var(--font-mono);color:var(--muted)}
.pt{font:700 20px var(--font-display);white-space:nowrap}
.chip{font:600 12px var(--font-mono);padding:4px 8px;border-radius:6px;white-space:nowrap;background:var(--bg);color:var(--muted)}
.chip.good{background:var(--good-bg);color:var(--good)}
.chip.warn{background:var(--warn-bg);color:var(--warn)}
.chip.info{background:var(--info-bg);color:var(--info)}
.chip.crit{background:var(--crit-bg);color:var(--crit)}
.pf{padding:4px 12px 14px;border-top:1px dashed var(--line)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.fld>span{font-size:13px;color:var(--muted)}
.in{width:100%;min-width:0;min-height:46px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:500 18px var(--font-mono)}
.in.txt{font-family:var(--font-body);font-size:16px}
.in::placeholder{color:var(--muted);opacity:.7}
.calhead,.calrow{display:grid;grid-template-columns:56px 44px minmax(0,1fr) 52px;gap:8px;align-items:center}
.calhead{font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.calhead span:nth-child(n+2){text-align:right}
.calrow{margin-bottom:6px}
.cl{font:700 22px var(--font-display)}
.bef{text-align:right;font:400 14px var(--font-mono);color:var(--muted)}
.dlt{text-align:right;font:600 18px var(--font-mono)}
.dlt.neg{color:var(--crit)}
.dlt.zero{color:var(--muted)}
.totline{display:flex;justify-content:space-between;align-items:baseline;border-top:1.5px solid var(--ink);padding-top:8px;margin-top:6px}
.totline b{font:700 30px var(--font-display)}
.note{font-size:13px;color:var(--muted)}
.pact{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.pact .btn{flex:1 1 auto}

.dock{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--bg);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px))}
.dockin{max-width:720px;margin-inline:auto;display:flex;gap:10px}
.dockin .btn{flex:1}

.srow,.shead{display:grid;grid-template-columns:64px minmax(0,1fr) 56px minmax(0,1.1fr);gap:8px;align-items:center}
.shead{font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.srow{margin-bottom:6px}
.srow .mono{text-align:right;font-weight:600}
.srow .chip{text-align:center}
.kv{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.kv b{font-family:var(--font-mono)}
.panel{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:12px;margin-top:10px}

.blk{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:12px;margin-top:10px}
.bh{display:flex;gap:10px;justify-content:space-between;align-items:flex-start}
.bh strong{display:block}
.bh small{display:block;color:var(--muted);font-size:13px;margin-top:2px}
pre.pv{margin:8px 0 0;padding:8px;background:var(--bg);border-radius:6px;font:400 12px/1.4 var(--font-mono);overflow-x:auto;max-height:104px;color:var(--muted)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.chipbtn{min-height:40px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font:500 14px var(--font-mono);cursor:pointer;max-width:100%;overflow-wrap:anywhere}
.chipbtn small{display:block;font:500 10px var(--font-mono);color:var(--muted);letter-spacing:.08em;text-transform:uppercase}

.ocard{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:12px 14px;margin-top:10px;cursor:pointer}
.ocard .orow{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.ocard .oec{font:700 28px/1 var(--font-display)}
.empty{margin-top:24px;border:1.5px dashed var(--line);border-radius:10px;padding:22px 18px;display:flex;flex-direction:column;gap:12px}
.empty h2{font:700 28px/1.05 var(--font-display);text-transform:uppercase;letter-spacing:.02em}
.empty p{color:var(--muted)}

.scrim{position:fixed;inset:0;z-index:20;background:rgb(8 18 12 / .55);display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:560px;max-height:92%;overflow:auto;background:var(--surface);color:var(--ink);border-radius:16px 16px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px))}
.sheet h3{font:700 26px/1 var(--font-display);text-transform:uppercase;letter-spacing:.02em;margin-bottom:12px}
.sheet .grid2{margin-bottom:10px}
.sheet .fld{margin-bottom:10px}
.res{display:flex;justify-content:space-between;gap:10px;align-items:center;width:100%;text-align:left;min-height:48px;padding:8px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer}
.res .mono{color:var(--muted);font-size:13px;white-space:nowrap}
.sheet img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:8px}
.sheet textarea{width:100%;min-height:140px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:400 13px/1.4 var(--font-mono);padding:10px}
.srow2{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.srow2 .btn{flex:1 1 auto}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:30;max-width:calc(100% - 32px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:99px;font-weight:600;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.on{opacity:1}
@media (prefers-reduced-motion:reduce){.toast{transition:none}}
@media (min-width:560px){.scrim{align-items:center}.sheet{border-radius:16px}}

/* v3: estados, avisos, trazabilidad y estadísticas */
.panel.okp{border-color:var(--good);background:var(--good-bg)}
.panel.info{border-color:var(--info);background:var(--info-bg)}
.pnote{display:block;margin-top:3px;font:400 13px/1.3 var(--font-body);color:var(--muted);overflow-wrap:anywhere}
.ta{min-height:64px;padding:10px 12px;resize:vertical;font:400 16px/1.35 var(--font-body)}
.ocard.sub{margin-left:18px;width:calc(100% - 18px);border-style:dashed}
.ocard.sub .oec{font-size:22px}
.more{margin-top:14px}.more summary{cursor:pointer;font-weight:600;color:var(--accent-text);min-height:40px;display:flex;align-items:center}
.dockin{flex-wrap:wrap}
.dockin .btn{flex:1 1 140px}
.sel{appearance:auto;padding-right:6px;font:500 16px var(--font-body)}
.pal{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-top:10px;padding:12px}
.palh{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.pn2{font:700 26px/1 var(--font-display);text-transform:uppercase;white-space:nowrap}
.palh .sel{flex:1}
.plh,.pln{display:grid;grid-template-columns:minmax(78px,.9fr) minmax(70px,.8fr) minmax(0,1.6fr) 38px;gap:6px;align-items:center}
.plh{font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.pln{margin-bottom:6px}
.pln .in{min-height:44px;padding:0 8px}
.pln .c2{text-align:right}
.icon.sm{width:36px;height:36px;font-size:20px;color:var(--crit)}
.palf{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.tot{display:flex;align-items:center;gap:8px}
.qt{font:700 30px/1 var(--font-display);min-width:48px;text-align:right}
.vhead,.vrow{display:grid;grid-template-columns:74px 1fr 1fr 1.1fr;gap:8px;align-items:center}
.vhead{font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.vrow{padding:6px 0;border-top:1px solid var(--line)}
.vrow .mono{text-align:right;font-weight:600}
.warnbox{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--crit-bg);color:var(--crit);font-size:14px}
.warnbox strong{display:block;margin-bottom:4px}
.dbpanel{margin-top:14px;border:1.5px solid var(--ink);border-radius:10px;background:var(--surface);padding:14px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.dbpanel small{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.dbbtn{min-height:52px;font-size:17px;flex:1 1 220px}
.dbopts{display:grid;gap:8px}
.perrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.perbox{margin-top:8px}
.rchip{min-height:36px;padding:0 12px;border-radius:99px;border:1px solid var(--accent-text);background:var(--surface);color:var(--accent-text);font:600 13px var(--font-body);cursor:pointer}
.statline{margin-top:12px;font:500 13px/1.4 var(--font-mono);color:var(--muted)}
.filters{grid-template-columns:repeat(2,minmax(0,1fr))}
.filters .fld select:disabled{opacity:.5}
.tile small{display:block;margin-top:2px;font:400 12px/1.3 var(--font-mono);color:var(--muted)}
.tile .tv{margin-top:6px}
.prd .rend{text-align:right}
.prd .rend small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.prd .r3{margin-top:6px;display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap;font:500 13px var(--font-body)}
.cacc{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-top:8px;overflow:hidden}
.chead{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;background:transparent;border:0;cursor:pointer;min-height:58px}
.cbar{height:12px;border-radius:6px;background:var(--bg);overflow:hidden;border:1px solid var(--line)}
.cbar i{display:block;height:100%;background:var(--accent)}
.cn2{text-align:right;font:400 14px var(--font-body)}
.cn2 small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.calbody{padding:4px 12px 12px;border-top:1px dashed var(--line)}
.crow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:8px 0;border-bottom:1px solid var(--line)}
.crow .cn{font-weight:600;overflow-wrap:anywhere}.crow .cn small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.crow .cv{font:700 18px var(--font-display);text-align:right}
.crow .cp{grid-column:1/-1;display:flex;flex-direction:column;font-size:13px;color:var(--muted)}
.crow .cd{grid-column:1/-1}
@media (min-width:560px){.filters{grid-template-columns:repeat(4,minmax(0,1fr))}}

.hdrgrid .wide{grid-column:1/-1}

/* v3.1 · buscador de productor en tarimas y editor de productores */
.pln{margin-bottom:10px}
.pcell{position:relative;min-width:0}
.pcell .in{width:100%}
.pdd{position:absolute;left:-120px;right:-44px;top:calc(100% + 4px);z-index:15;max-height:260px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px rgb(8 18 12 / .28);padding:4px}
.pdd[hidden]{display:none}
.pdi{display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:8px;align-items:center;width:100%;min-height:44px;padding:6px 8px;border:0;border-radius:8px;background:transparent;color:var(--ink);text-align:left;cursor:pointer;font:inherit}
.pdi:hover,.pdi:focus-visible{background:var(--bg)}
.pdi .pk{font:600 13px var(--font-mono)}
.pdi .pn{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pav{font:700 13px var(--font-mono);color:var(--good);background:var(--good-bg);border-radius:999px;padding:3px 9px}
.pav.z{color:var(--muted);background:var(--bg)}
.pdn{padding:10px;font-size:13px;color:var(--muted)}
.pavl{grid-column:1 / -1;font-size:12px;line-height:1.3;margin-top:-2px;min-height:0}
.pavl:empty{display:none}
.pavl.ok{color:var(--good);font-weight:600}
.pavl.bad{color:var(--crit);font-weight:600}
.cprow{display:grid;grid-template-columns:64px minmax(0,1fr) auto auto;gap:6px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.cprow.vac .pnm{color:var(--muted);font-style:italic}
.cprow.edit{grid-template-columns:64px minmax(0,1fr) auto auto}
.cprow .pnm{overflow:hidden;text-overflow:ellipsis;font-size:14px;min-width:0}
.cprow .mono{font-size:12px}
.padd{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:6px}
.plist{max-height:44vh;overflow:auto;margin-bottom:12px}
@media (max-width:420px){.pdd{left:-80px;right:-40px}.cprow{grid-template-columns:54px minmax(0,1fr) auto auto;gap:4px}}
.cprow .btn.sm{min-height:36px;padding:0 10px}

.seg3 button{font-size:12px;padding:0 4px}
.radd{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:6px}
.rrow{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}
.rrow.edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}
.rrow.edit .rbt{grid-column:1 / -1;justify-content:flex-end}
.rtx{min-width:0;display:flex;flex-direction:column}
.rtx strong{font-size:14px;overflow:hidden;text-overflow:ellipsis}
.rtx small{color:var(--muted);font-size:12px}
.rbt{display:flex;gap:4px;flex-shrink:0}
.rrow .btn.sm{min-height:36px;padding:0 10px}
@media (max-width:420px){.radd{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.radd .btn{grid-column:1 / -1}}
.seg4 button{font-size:11px;padding:0 2px}

.lgw{max-width:440px;margin:0 auto}
.urow{display:grid;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}
.ubt{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ubt small{color:var(--muted);width:100%}
.urow .btn.sm{min-height:36px;padding:0 10px}
.urow select{min-height:36px;max-width:190px}

/* actualización oct-2026: sumas en acumulado, eliminar hoja */
.accw{display:flex;gap:4px;align-items:center;min-width:0}
.accw .in{flex:1;min-width:0}
.plus{flex:none;width:36px;height:44px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;font:700 24px/1 var(--font-display);cursor:pointer}
.plus:active{background:var(--accent-soft,var(--line))}
.ocw{position:relative}
.ocw.sub{margin-left:0}
.ocdel{display:block;margin:4px 0 0 auto;background:none;border:0;color:var(--crit,#b3261e);font:600 13px var(--font-body);padding:6px 4px;cursor:pointer;text-decoration:underline}
.ocw.sub .ocdel{margin-right:0}

/* botón circular de sincronización (S) */
.sbtn{position:relative;flex:none;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;display:grid;place-items:center}
.sbtn .sring{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:2px solid transparent;font:700 17px/1 var(--font-display)}
.sbtn .sring b{font-weight:700}
.sbtn[data-s="syncing"] .sring{border-color:var(--line);border-top-color:var(--info,#2a6fdb);animation:sspin .9s linear infinite}
@keyframes sspin{to{transform:rotate(360deg)}}
.sbtn .sdot{position:absolute;top:-2px;right:-2px;width:14px;height:14px;box-sizing:border-box;border-radius:50%;border:2px solid var(--bg,#fff);background:#f2b705}
.sbtn[data-s="synced"] .sdot{background:#22a559}
.sbtn[disabled]{cursor:default}
/* botón verde de WhatsApp */
.btn.wa{background:#16883f;border-color:#16883f;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600}
.btn.wa svg{width:20px;height:20px;fill:#fff;flex:none}
.btn.wa:active{filter:brightness(.9)}
/* tipo de empaque de la tarima */
.palh.pale{margin-top:-2px}
.palh.pale .k{font:500 12px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}

/* v5 · varios tipos de empaque por productor, cada uno con su conteo en un carrusel */
.tsels{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tsels .tsel{flex:0 1 auto;width:auto;min-width:84px;min-height:44px;padding:0 6px 0 12px;font:600 16px var(--font-body)}
.tsels .tsel.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.tadd{flex:none;width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:700 22px/1 var(--font-display);cursor:pointer}
.tadd:focus-visible,.tsel:focus-visible{outline:3px solid var(--accent-text);outline-offset:2px}
.cscroll{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.cscroll::-webkit-scrollbar{display:none}
.cpage{flex:0 0 100%;min-width:0;scroll-snap-align:start}
.calbox{border:1.5px solid var(--ink);border-radius:10px;padding:8px 8px 2px}
.calbox .calrow{grid-template-columns:44px 30px minmax(0,1fr) 44px}
.cpage .calhead{grid-template-columns:44px 30px minmax(0,1fr) 44px;padding:0 9px}
.ptt{display:flex;justify-content:space-between;align-items:baseline;padding:6px 4px 0}
.ptt b{font:700 20px var(--font-display)}
.cdots{display:flex;justify-content:center;gap:6px;margin:8px auto 0;padding:5px 10px;width:max-content;border-radius:99px;background:var(--line)}
.cdots i{display:block;width:6px;height:6px;border-radius:99px;background:var(--muted);opacity:.6;transition:width .2s}
.cdots i.on{width:18px;opacity:1;background:var(--ink)}
@media (prefers-reduced-motion:reduce){.cdots i{transition:none}}

/* ---------- v6: manifiesto por calidad y tipo de empaque, documentos ---------- */
.qsw{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.qsw .k{font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:2px}
.qsw .btn[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.tchips{display:flex;flex-wrap:wrap;gap:8px}
.tchip{min-height:44px;padding:4px 14px;border-radius:99px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:600 14px var(--font-body);cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.tchip small{font:600 11px var(--font-mono);color:var(--muted)}
.tchip small:empty{display:none}
.tchip[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.tchip[aria-pressed="true"] small{color:var(--accent-ink);opacity:.8}
.tchip:disabled{opacity:.6;cursor:default}
.lpill{display:inline-block;font:700 12px var(--font-mono);padding:3px 8px;border-radius:6px;background:var(--info-bg);color:var(--info);white-space:nowrap}
.lpill.q2{background:var(--warn-bg);color:var(--warn)}
.mlhead,.mlrow{display:grid;grid-template-columns:32px minmax(0,1fr) 46px 46px auto;gap:6px;align-items:center}
.mlhead{font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.mlhead span:nth-child(3),.mlhead span:nth-child(4){text-align:right}
.mlrow{width:100%;min-height:46px;padding:6px 4px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);font:500 14px var(--font-body);text-align:left;cursor:pointer;border-radius:6px}
.mlrow[aria-current="true"]{background:var(--bg);box-shadow:inset 3px 0 0 var(--accent)}
.mlrow .mono{text-align:right;font-weight:600}
.mlrow .mln{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.mlrow .chip{justify-self:end;font-size:11px;padding:3px 6px}
.mlrow .mono{font-size:13px}
#manov .totline b{font-size:22px;white-space:nowrap}
#manov .totline .k{font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.vline{border-top:1.5px solid var(--line);padding-top:8px;margin-top:8px}
.vline:first-of-type{border-top:0;margin-top:0}
.vlh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.vlh .mono{margin-left:auto;font-weight:600;font-size:13px}
.qtyb+.qtyb{margin-top:16px;padding-top:12px;border-top:1.5px solid var(--line)}
.qth{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.qth b{font:700 20px var(--font-display)}
.panel.warn{border-color:var(--warn);background:var(--warn-bg)}
.oline{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.oline .ol{display:flex;flex-direction:column;min-width:0}
.oline .ol small{color:var(--muted);font:12px var(--font-mono);overflow-wrap:anywhere}
.oline .oa{display:flex;gap:8px}
.oline .btn.wa svg{width:16px;height:16px}

/* ---------- v6.1: tarimas con disponibles, Entrada de Fruta ---------- */
.palg{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 4px}
.palg .fld{margin:0}
.pdisp{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 10px}
.pdisp .k{font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);width:100%}
.dchip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 10px;border-radius:99px;border:1.5px solid var(--good);background:var(--good-bg);color:var(--good);font:600 13px var(--font-mono);cursor:pointer}
.dchip i{width:8px;height:8px;border-radius:50%;background:var(--good);display:inline-block}
.dchip b{font-weight:700}
.dchip:disabled{cursor:default}
.dnone{font:12px var(--font-mono);color:var(--muted)}
.invnote{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px;padding:8px 10px;border-radius:8px;background:var(--info-bg);color:var(--info);font-size:13px}
.invnote span:empty{display:none}
.invtag{display:block;font:11px var(--font-mono);color:var(--good);margin-top:2px}
.invc{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:12px;margin-bottom:10px}
.invc.off{opacity:.7}
.invc .ih{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.invc .ih small{display:block;color:var(--muted);font:12px var(--font-mono);margin-top:2px}
.ig{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px}
.ig div{display:flex;flex-direction:column;gap:2px;min-width:0}
.ig span{font:500 9px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ig b{font:700 20px var(--font-display)}
.ig b.pos{color:var(--good)}
.ig b.neg{color:var(--crit)}
.ig small{font:10px var(--font-mono);color:var(--muted)}
.ig.tot b{font-size:24px}
.pesobox{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding:8px 10px;border:1px dashed var(--line);border-radius:8px}
.pesobox .note{margin:0;flex:1 1 180px}
.pwrow{display:flex;gap:8px}
.pwrow .in{flex:1}
.pwlist{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.pwc{min-height:36px;padding:0 10px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 13px var(--font-mono);cursor:pointer}
.pwc span{color:var(--crit);margin-left:4px}
@media (max-width:420px){.ig{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* v6.2 · escritorio: columnas más anchas y secciones lado a lado */
.dsk,.dcol,.g-a,.g-b,.g-c,.pfa,.pfb,.pfc,.ogrp{min-width:0}
@media (min-width:1000px){
  body{padding-inline:24px}
  .top{margin-inline:-24px;padding-inline:24px}
  .wrap:not(.lgw),.topin,.dockin{max-width:1240px}
  .dockin{justify-content:flex-end}
  .dockin .btn{flex:0 1 300px}
  .dsk{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:24px;align-items:start}
  .dcol>:first-child{margin-top:16px}
  .dmenu{grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-areas:"a b" "c c"}
  .g-a{grid-area:a}
  .g-b{grid-area:b;display:flex;flex-direction:column;margin-top:4px}
  .g-b .mbtn{flex:1}
  .g-c{grid-area:c;display:grid;grid-auto-flow:column;grid-template-rows:auto 1fr;grid-auto-columns:minmax(0,1fr);column-gap:24px;margin-top:8px}
  .g-c>.panel{margin-top:0}
  .dtraz{grid-template-columns:minmax(0,1fr) 400px}
  .dside{display:flex;flex-direction:column}
  .dside>#zval{order:9}
  .dside{position:sticky;top:72px;max-height:calc(100vh - 150px);overflow:auto;padding:0 4px 8px}
  .wrap>.panel>.hdrgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wrap>.panel>.hdrgrid .wide{grid-column:span 2}
  .ogrid,.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px;align-items:start}
  .pgrid>.pc.open{grid-column:1/-1}
  .pf2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:auto 1fr auto;grid-template-areas:"a b" "c b" "d d";column-gap:32px;align-content:start}
  .pfa{grid-area:a}.pfb{grid-area:b}.pfc{grid-area:c}.pfd{grid-area:d}
  .cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:12px;align-items:start}
  .cgrid>.invc,.cgrid>.prd{margin:0}
  .tiles{grid-template-columns:repeat(4,minmax(0,1fr))}
  .hero .logo{width:min(240px,70%)}
  .dbbtn{flex:0 0 320px}
  #manov .mlhead,#manov .mlrow{grid-template-columns:56px minmax(0,1fr) 72px 72px 110px;gap:8px}
}
@media (min-width:1000px) and (hover:hover){
  .mbtn,.ocard,.prow,.tchip,.dchip,.btn,.tab{transition:background-color .12s,border-color .12s}
  .mbtn:hover,.ocard:hover{border-color:var(--accent-text)}
  .prow:hover{background:var(--bg)}
  .btn:not(.primary):not([disabled]):hover,.tab:not([aria-selected="true"]):hover{background:var(--bg)}
  .btn.primary:not([disabled]):hover{filter:brightness(.95)}
}
@media (min-width:1000px) and (prefers-reduced-motion:reduce){.mbtn,.ocard,.prow,.tchip,.dchip,.btn,.tab{transition:none}}

/* v6.4 · logotipos como icono y segunda 1.5 */
.empchip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px 2px 2px}
.empchip img{width:30px;height:30px;border-radius:5px;background:#fff;object-fit:contain;display:block}
.segico{width:26px;height:26px;border-radius:5px;background:#fff;object-fit:contain;vertical-align:middle;margin-right:8px;border:1px solid var(--line)}
.hero .logo{width:min(300px,78%);aspect-ratio:16/10;object-fit:contain}
.t15{display:inline-block;font:700 11px var(--font-mono);padding:2px 6px;border-radius:5px;background:var(--warn-bg);color:var(--warn);margin-right:6px;vertical-align:middle}
.invc.s15{border-color:var(--warn)}

/* v6.5 · registro de cambios y selector de empresa en las listas */
.icon.hist{display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}
.segtop{margin-top:14px}
.lgr{border-top:1px solid var(--line);padding:10px 0;display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.lgr .chip{font-size:11px;padding:2px 6px}
.lgl{font-weight:600;overflow-wrap:anywhere}
.lgv{font:500 15px var(--font-mono);overflow-wrap:anywhere}
.lgv span{color:var(--muted);text-decoration:line-through}
.lgm{color:var(--muted);font-size:12px;line-height:1.4}
.lgrb{font-size:12px;color:var(--info)}
.lgr .warnbox{width:100%}
.lgr .btn.sm{margin-top:2px}
@media (max-width:420px){.empchip .ect{display:none}.empchip{padding:2px}}

/* v6.6 · menú principal con los dos logotipos */
.hero2{display:flex;align-items:center;justify-content:center}
.logos2{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%;align-items:center}
.logos2 figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0}
.logos2 img{width:100%;max-width:300px;aspect-ratio:16/10;object-fit:contain;background:#fff;border-radius:10px;padding:10px}
.logos2 figcaption{font-size:13px;color:var(--muted);text-align:center;line-height:1.3}
@media (min-width:1000px){.g-a .hero2{height:100%;margin-top:16px}.logos2{grid-template-columns:1fr;gap:14px}.logos2 img{max-width:250px}}
.segll{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.segll small{color:var(--muted);font-size:12px;flex:1 1 180px}
.segll.on .fld{flex:0 1 220px;margin:0}
.more{display:flex;justify-content:center;margin:16px 0 4px}
.more .btn{min-width:260px}
.pvbtn{width:100%;margin:2px 0 10px}
.pvw{display:flex;flex-direction:column;align-items:center;gap:14px;max-height:62vh;overflow:auto;padding:12px;background:#d9dee3;border-radius:10px}
.pvp{margin:0;width:100%;max-width:640px;display:flex;flex-direction:column;align-items:center;gap:4px}
.pvp.land{max-width:900px}
.pvp img{width:100%;height:auto;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.25)}
.pvp figcaption{font-size:12px;color:#4a5562}
.pvact{flex-wrap:wrap;gap:8px}
.pvact .btn{flex:1 1 140px}
@media (min-width:1000px){.pvw{max-height:70vh}}
/* ---------- finanzas ---------- */
.stabs{margin-top:12px}
.finbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.finbar .note{flex:1 1 260px}
.finwarn{margin-top:12px}
.ktiles .ktile{text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px;transition:border-color .15s,box-shadow .15s}
.ktile:hover{border-color:var(--muted)}
.ktile.on{border-color:var(--brand,var(--ink));box-shadow:inset 0 0 0 1px var(--brand,var(--ink))}
.ktile b{font-size:26px;overflow-wrap:anywhere}
.ktile.neg b,.negv{color:var(--crit)}
.chartp{padding:10px 8px 6px}
.chart{position:relative}
.chart svg{width:100%;height:auto;display:block;overflow:visible}
.chart .gl{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}
.chart .zl{stroke:var(--muted);stroke-width:1}
.chart .ax{fill:var(--muted);font:500 11px var(--font-mono)}
.chart .bar path{fill:var(--brand,var(--good))}
.chart .bar.neg path{fill:var(--crit)}
.chart .bar .hit{fill:transparent}
.chart .bar:hover path,.chart .bar:focus path{opacity:.8}
.chart .bar:focus{outline:none}
.chart .bar:focus .hit{stroke:var(--ink);stroke-width:1;stroke-dasharray:3 3}
.ctip{position:absolute;transform:translate(-50%,-100%);background:var(--ink);color:var(--surface);font:600 12px var(--font-body);padding:5px 8px;border-radius:6px;white-space:nowrap;pointer-events:none;z-index:2}
.chart .ctip{white-space:normal;width:max-content;line-height:1.35}
.ctbl{margin-top:6px;font-size:13px}
.ctbl summary{cursor:pointer;color:var(--muted)}
.ctbl table{width:100%;border-collapse:collapse;margin-top:6px}
.ctbl th,.ctbl td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line)}
.ctbl td:last-child,.ctbl th:last-child{text-align:right;font-family:var(--font-mono)}
.plr,.tfr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(50px,1fr) 8.6em;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}
.plr:last-child,.tfr:last-child{border-bottom:0}
.plr.tot{font-weight:700}
.plr .pl1 small,.tf1 small{display:block;font:400 12px var(--font-mono);color:var(--muted)}
.plr b,.tfr b{font:700 16px var(--font-mono);text-align:right;white-space:nowrap}
.tfr b small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.plb{height:10px;background:color-mix(in srgb,var(--line) 55%,transparent);border-radius:4px;overflow:hidden}
.plb i{display:block;height:100%;border-radius:4px;background:var(--brand,var(--good))}
.plb i.out{background:var(--muted)}
.plb i.ut{background:var(--good)}
.plb i.neg{background:var(--crit)}
.simf{margin-top:8px}
.simf span{display:flex;justify-content:space-between}
.simf input[type=range]{width:100%;accent-color:var(--brand,var(--good));min-height:32px}
.simres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.simres div{border:1px solid var(--line);border-radius:8px;padding:8px}
.simres span{display:block;font:500 11px var(--font-mono);color:var(--muted);text-transform:uppercase}
.simres b{font:700 18px var(--font-mono);overflow-wrap:anywhere}
.pfin .rend{font-size:22px;text-align:right}
.pfin .rend small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.dvb{display:grid;grid-template-columns:1fr 1fr;height:8px;margin:8px 0 4px;border-radius:4px;overflow:hidden;background:color-mix(in srgb,var(--line) 55%,transparent)}
.dvb .dvl{display:flex;justify-content:flex-end;border-right:1px solid var(--muted)}
.dvb .dvl i{background:var(--crit);height:100%}
.dvb .dvr i{display:block;background:var(--good);height:100%}
.pfin .r3{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px;font-size:13px}
.fingrid{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px 10px;align-items:end}
.fingrid .fh{font:500 12px var(--font-mono);color:var(--muted)}
.fingrid .fl{font-weight:700;padding-bottom:12px}
.fingrid .fld>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.fingrid .fld{position:relative;margin:0}
@media (min-width:1000px){
  .ktiles{grid-template-columns:repeat(4,minmax(0,1fr))}
  .fin2{grid-template-columns:1fr 1fr}
}
.ktile .chip{white-space:normal}
@media (max-width:480px){.simres b{font-size:15px}.plr b,.tfr b{font-size:14px}.plr,.tfr{grid-template-columns:minmax(0,1.2fr) minmax(40px,.8fr) 7.6em;gap:8px}}
em.cur{font:500 12px var(--font-mono);font-style:normal;color:var(--muted);margin-left:5px;letter-spacing:.02em}
.pfin .rend em.cur{font-size:11px}
.tcs{display:flex;gap:10px;flex-wrap:wrap;flex:1 1 260px}
.tcf{display:flex;flex-direction:column;gap:4px}
.tcf>span:first-child{font:500 12px var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.tcin{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:4px 8px}
.tcin em{font:600 13px var(--font-mono);font-style:normal;color:var(--muted);white-space:nowrap}
.tcin .in{width:88px;min-height:36px;padding:4px 8px;text-align:center;font-weight:700}
.plcur{margin:0 0 4px}
/* v7.3 segundas por productor y entrega (hoja 1.5) */
.s2list{max-height:56vh;overflow:auto;margin-top:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.s2g{padding:10px 12px;border-bottom:1px solid var(--line)}
.s2g:last-child{border-bottom:0}
.s2h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.s2h small{display:block;color:var(--muted);font:12px var(--font-mono);margin-top:2px}
.s2r{display:grid;grid-template-columns:1fr auto 5.5em;align-items:center;gap:10px;padding:6px 0;border-top:1px dashed var(--line)}
.s2d b{display:block;font-size:14px}
.s2d small,.s2a small{display:block;color:var(--muted);font-size:12px}
.s2a{text-align:right;font-family:var(--font-mono)}
.s2r .in{text-align:right}
.s2tot{margin-top:10px;font:600 14px var(--font-mono)}
/* v7.4 interruptor de empresa dentro del pedido */
.esw{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.esw .k{flex:none}
.eswb{position:relative;display:grid;grid-template-columns:1fr 1fr;flex:1 1 260px;max-width:420px;min-height:46px;padding:3px;border:1.5px solid var(--ink);border-radius:999px;background:var(--bg);cursor:pointer;font:600 14px var(--font-body);color:var(--muted)}
.eswb:disabled{cursor:default;opacity:.85}
.eswk{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .22s ease}
.eswb.ec .eswk{transform:translateX(100%)}
.eswo{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 10px;border-radius:999px;transition:color .2s}
.eswo.on{color:var(--accent-ink)}
.eswo img{width:28px;height:28px;border-radius:50%;background:#fff;object-fit:contain;border:1px solid var(--line);flex:none}
.eswb:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.oico{width:20px;height:20px;border-radius:4px;background:#fff;object-fit:contain;border:1px solid var(--line);vertical-align:-4px;margin-right:6px}
@media (prefers-reduced-motion:reduce){.eswk,.eswo{transition:none}}
/* v7.5 juguera y renglón 023 CITRILAR SEGUNDAS */
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
@media (max-width:520px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.apbox{margin-top:12px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg)}
.apbox .sec{margin-top:0}
.apr{display:grid;grid-template-columns:1fr 5.5em auto;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line)}
.apn b{display:block;font-size:14px}
.apn small{display:block;color:var(--muted);font-size:12px}
.apr .in{text-align:right}
/* v7.6 inventario: entregas y segundas resultantes */
.entl,.seglots{margin-top:8px;border-top:1px dashed var(--line)}
.entl>div,.seglots>div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:13px;border-bottom:1px dashed var(--line)}
.entl b,.seglots b{font-family:var(--font-mono);text-align:right}
.seglots small{font-weight:400;color:var(--muted)}
.segbox{margin-top:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.segbox .kv{padding:5px 0}
.segbox .kv.tot{border-bottom:0;font-weight:700}
.segbox .kv.tot b{color:var(--accent-text)}
.pord{display:flex;gap:6px;align-items:center;margin-left:auto}
.pord .btn{min-width:40px}
.pord .sel{width:auto;min-width:7.5em}

/* v7.7 · periodos, semanas y BI */
.lockp{border-color:var(--crit);background:var(--crit-bg)}
.lockp strong{display:flex;align-items:center;gap:6px;color:var(--crit)}
.wkbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:12px}
.wkbar .wksel{flex:1 1 260px}
.wkbar .chip{display:inline-flex;align-items:center;gap:4px;margin-bottom:10px}
.wkbar .btn{margin-bottom:4px}
.wkhd{grid-column:1/-1;font:700 15px var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-top:10px}
.wkpanel{border-color:var(--line);border-width:1px}
.tblx{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:6px}
.ptbl,.ctab{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}
.ptbl th,.ptbl td,.ctab th,.ctab td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;white-space:nowrap}
.ptbl thead th,.ctab thead th{font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--bg)}
.ptbl tbody th small{display:block;font:400 11px var(--font-mono);color:var(--muted)}
.ptbl .m,.ctab td{font-family:var(--font-mono)}
.ptbl .r,.ctab td{text-align:right}
.ptbl .c{text-align:center}
.ptbl tr.wcl th b{color:var(--crit)}
.ptbl tr.tot th,.ptbl tr.tot td{font-weight:700;border-bottom:0}
.ptbl.pay,.ptbl.pay td{min-width:0}
.pbox{display:inline-grid;place-items:center;width:20px;height:20px;border:1.5px solid var(--muted);border-radius:4px;font-weight:700}
.pbox.on{background:var(--crit);border-color:var(--crit);color:#fff}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.wkg{grid-template-columns:repeat(2,minmax(0,1fr));margin:10px 0}
.wkg b.neg,.beg b.neg{color:var(--crit)}
.jugp p{margin:0 0 6px}
.jugnote{border-radius:10px;padding:14px;background:var(--good-bg);color:var(--good);display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.jugnote b{font:700 22px/1.15 var(--font-display)}
.jugnote span{color:var(--ink);font-size:14px}
.jugnote.none{background:var(--bg);color:var(--muted)}
.acuerdo{margin-top:8px;border:1px dashed var(--line);border-radius:8px;padding:6px 10px}
.acuerdo summary{cursor:pointer;font-weight:600;color:var(--accent-text);min-height:32px;display:flex;align-items:center}
.bipanel .pact{flex-wrap:wrap}
.bestar{border:2px solid var(--brand,var(--ink));border-radius:12px;background:var(--surface);padding:14px}
.bestar .k{font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.beh{font:700 26px/1.15 var(--font-display);margin:6px 0 10px}
.beh b{color:var(--accent-text);font-size:34px}
.beprog .plb{display:block;height:14px}
.beprog .plb i{height:14px}
.beg{grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0 4px}
.beg small{font:400 11px var(--font-mono);color:var(--muted);white-space:normal}
.beinp{margin-top:10px}
.alrs{display:flex;flex-direction:column;gap:2px}
.alr{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}
.alr:last-child{border-bottom:0}
.alr strong{display:block;font-size:14px}
.alr small{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.ctab td.gv{color:var(--good);font-weight:600}
.ctab td.bv{color:var(--crit);font-weight:600}
.ctab.iq td .chip{font-size:12px}
.chart .rl{stroke:var(--crit);stroke-width:1;stroke-dasharray:5 4}
.chart .cum{fill:none;stroke:var(--ink);stroke-width:2}
.chart .cumd{fill:var(--ink);stroke:var(--surface);stroke-width:2}
.chart .bar.dim path{opacity:.45}
.chart .bar.proj path{fill:transparent;stroke:var(--brand,var(--good));stroke-width:2;stroke-dasharray:4 3}
.chart .qz{fill:transparent}
.chart .qz.star{fill:var(--good-bg)}
.chart .qz.dog{fill:var(--crit-bg);opacity:.6}
.chart .ql{fill:var(--muted);font:600 11px var(--font-mono);text-transform:uppercase}
.chart .dot .hit{fill:transparent}
.chart .dot .pt{fill:var(--brand,var(--good));stroke:var(--surface);stroke-width:2}
.chart .dot:focus{outline:none}.chart .dot:focus .pt,.chart .dot:hover .pt{stroke:var(--ink)}
.cli .rk{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:6px;background:var(--bg);font:700 12px var(--font-mono);margin-right:6px}
.mix{display:flex;height:12px;border-radius:6px;overflow:hidden;margin-top:8px;gap:2px}
.mix i,.mixl i{display:block;height:100%}
.mixl{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;font:400 11px var(--font-mono);color:var(--muted)}
.mixl span{display:inline-flex;align-items:center;gap:4px}
.mixl i{width:9px;height:9px;border-radius:2px}
.m0{background:#2a78d6}.m1{background:#eb6834}.m2{background:#1baf7a}.m3{background:#eda100}.m4{background:#e87ba4}.m5{background:#008300}
.qgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.qcard{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface)}
.qcard b{display:block;font:700 17px var(--font-display)}
.qcard small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.qcard span{display:block;font-size:12px;margin-top:6px}
.qcard.star{border-color:var(--good)}.qcard.dog{border-color:var(--crit)}
@media (max-width:560px){.beg{grid-template-columns:1fr}.qgrid{grid-template-columns:1fr}.beh{font-size:22px}.beh b{font-size:28px}}

.sheet.wide{max-width:980px}
@media (max-width:560px){.ctab{min-width:0;font-size:12px}.ctab th,.ctab td{padding:6px 4px;white-space:normal}}
.ctab.iq td:last-child{text-align:left}

/* v7.8 · separación entre empaques, número de viaje y orden en Entrada de Fruta */
.ogrp{position:relative;padding:14px 0 16px;border-bottom:2px solid var(--line)}
.ogrid .ogrp:last-child{border-bottom:0}
.ogrp .ocard{margin-top:6px}
.vjn{display:inline-flex;align-items:baseline;gap:4px;padding:3px 9px;border-radius:999px;background:var(--brand,var(--ink));color:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.vjn b{font:700 15px/1 var(--font-mono)}
.vjn small{font:600 10px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.05em;opacity:.85}
@media (min-width:1000px){
  .ogrid{row-gap:16px}
  .ogrp{border:1.5px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 70%,var(--bg));padding:12px 14px 14px}
  .ogrid .ogrp:last-child{border-bottom:1.5px solid var(--line)}
  .ogrid .wkhd{margin-top:14px}
}
.srtbar{display:flex;align-items:flex-end;gap:8px;margin:10px 0 4px;flex-wrap:wrap}
.srtbar .srtsel{flex:0 1 200px}
.srtbar .srtdir{margin-bottom:2px;white-space:nowrap}
.pchip{margin-top:4px;align-self:flex-start}
.tab .tcnt{font:600 11px var(--font-mono);background:var(--bg);color:var(--muted);border-radius:999px;padding:1px 6px;margin-left:4px}
/* v7.9: botón Generar con opciones y vista en vivo del manifiesto */
.gmenu{position:relative;display:inline-block}
.gmlist{position:absolute;left:0;top:calc(100% + 6px);z-index:30;min-width:220px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);overflow:hidden}
.gmlist button{all:unset;cursor:pointer;padding:12px 16px;font:500 15px/1.2 var(--font-body);color:var(--ink);border-bottom:1px solid var(--line)}
.gmlist button:last-child{border-bottom:0}
.gmlist button:hover,.gmlist button:focus-visible{background:var(--bg,rgba(0,0,0,.04))}
.lvsw{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.lvsw .btn[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.lvpg{background:#e9ecef;border-radius:8px;padding:8px;display:flex;justify-content:center;min-height:120px;align-items:center}
.lvpg img{display:block;width:100%;max-width:520px;height:auto;box-shadow:0 2px 8px rgba(0,0,0,.2);background:#fff}
@media (min-width:1000px){.lvbox{position:sticky;top:12px}}
/* v7.9: tarimas con calidad por línea (calidad, calibre, cajas, productor) */
.plh,.pln{grid-template-columns:58px minmax(78px,.9fr) minmax(64px,.7fr) minmax(0,1.6fr) 38px}
.pln .c0{padding:0 4px;text-align:center}
.dchip.q15{border-style:dashed}
@media (max-width:559px){
  .plh,.pln{grid-template-columns:58px minmax(0,1fr) minmax(0,.8fr) 38px;grid-template-areas:"q c n d" "p p p p"}
  .pln .c0{grid-area:q}.pln .c1{grid-area:c}.pln .c2{grid-area:n}.pln .c3{grid-area:p}.pln>button{grid-area:d}
  .plh span:nth-child(4){display:none}
  .pln{padding-bottom:8px;border-bottom:1px dashed var(--line)}
  .pln .pdd{left:0;right:0}
}
.more.oeecfg{display:block;margin:12px 0 0;text-align:left}.more.oeecfg summary{justify-content:flex-start}
/* v7.9.2: precios por calibre en carrusel */
.fcar{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;margin-top:8px}
.fcar::-webkit-scrollbar{display:none}
.fcs{flex:0 0 100%;scroll-snap-align:start;scroll-snap-stop:always;min-width:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--bg,transparent);box-sizing:border-box}
.fcst{font:600 12px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.fdots{display:flex;justify-content:center;gap:6px;margin-top:8px}
.fdots i{width:7px;height:7px;border-radius:50%;background:var(--line)}
.fdots i.on{background:var(--ink);width:18px;border-radius:4px}
/* v7.9.3: encabezado fijo con botón ✕ en Precios y costos */
.shhead{position:sticky;top:-16px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-16px -16px 8px;padding:12px 16px 10px;background:var(--surface);border-bottom:1px solid var(--line)}
.shhead h3{margin:0}
.shx{flex:0 0 auto;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 18px/1 var(--font-body);cursor:pointer;display:grid;place-items:center}
.shx:hover,.shx:focus-visible{background:var(--bg,rgba(0,0,0,.05))}
/* v8.0 · semana desde la que aplican los precios e historial de versiones */
.fdesde{margin:8px 0 4px}.fdesde .fld{margin-bottom:6px}.fdesde .warnbox{margin-top:8px}
details.parhist{display:block;margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
details.parhist>summary{cursor:pointer;font-weight:600;color:var(--ink);padding:6px 0;min-height:44px;display:flex;align-items:center}
details.parhist .kv b{white-space:nowrap}details.parhist>.btn{margin:8px 0}
.reop{margin-bottom:12px}.reop textarea{min-height:64px;resize:vertical}
/* v8.1 · sección Finanzas y panel del contador */
.fwho{margin:10px 0 0}
.ftabs{overflow-x:auto;scrollbar-width:none}.ftabs::-webkit-scrollbar{display:none}.ftabs .tab{white-space:nowrap}
.finacts{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.fseg{margin:10px 0}
.tile.warnt{border-color:var(--warn)}
.tile b .cur,.tile b em.cur{font:500 12px var(--font-mono);color:var(--muted);margin-left:4px;font-style:normal}
.g2c{display:grid;grid-template-columns:1fr;gap:10px}
.aging{margin-top:10px}.agh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}.agh b{font:700 20px var(--font-display);white-space:nowrap}
.agr{display:grid;grid-template-columns:7.5em 1fr auto;gap:8px;align-items:center;min-height:28px;font:400 13px var(--font-body)}
.agr b{font:600 13px var(--font-mono);text-align:right;min-width:6em}
.agbar{height:10px;border-radius:5px;background:var(--line);overflow:hidden;display:block}
.agbar i{display:block;height:100%;border-radius:5px}.agbar i.ok{background:var(--good)}.agbar i.w{background:var(--warn)}.agbar i.c{background:var(--crit)}
.prd.acc.late{border-left:4px solid var(--warn)}
.prd.acc .rend{font-size:22px}.prd.acc .rend .cur{font:500 11px var(--font-mono);color:var(--muted);margin-left:3px;font-style:normal}
.prd.acc .r3{justify-content:flex-start}.acb{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.todo{display:grid;gap:8px}
.tdi{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-left:4px solid var(--info);background:var(--surface);border-radius:10px;padding:10px 12px}
.tdi.warn{border-left-color:var(--warn)}.tdi.crit{border-left-color:var(--crit)}
.tdi strong{display:block;font:600 14px var(--font-body)}.tdi small{display:block;color:var(--muted);font:400 12px/1.4 var(--font-body);margin-top:2px}
.kvb{display:flex;align-items:center;gap:8px;flex-shrink:0}
.mvr{border-bottom:1px solid var(--line)}.mvr .kv{border-bottom:0}.mvr.anu .kv>span:first-child,.mvr.anu .kvb b{text-decoration:line-through;color:var(--muted)}
.acform{grid-column:1/-1;margin-top:6px}
.acrow{display:grid;grid-template-columns:1fr;gap:6px;margin-bottom:8px}.acrow>b{font:600 13px var(--font-body)}
.pnm .acs{display:block;font:400 11px var(--font-mono);color:var(--muted);margin-top:2px}
.acleg{margin:6px 0}
@media (min-width:700px){.g2c{grid-template-columns:1fr 1fr}.acrow{grid-template-columns:8em 1fr 1fr;align-items:end}}
@media (min-width:1000px){.fsec .tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
.chart .dot{cursor:pointer}.chart .dot.on .pt{stroke:var(--ink);stroke-width:3}
/* v8.2 · antigüedad 0-30 / 31-60 / +60, factura, costeo por embarque y presupuesto */
.agbar i.n{background:var(--muted);opacity:.5}
.agd{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}.agd.n{background:var(--muted);opacity:.6}.agd.ok{background:var(--good)}.agd.w{background:var(--warn)}.agd.c{background:var(--crit)}
.ctab th small{display:block;font:400 11px var(--font-body);color:var(--muted);text-transform:none;letter-spacing:0}
.ctab tr.tot th,.ctab tr.tot td{font-weight:700;border-top:2px solid var(--line)}
.prd .r2.conc{margin-top:2px}
.mvx{margin-top:12px;border:1px solid var(--line);border-radius:10px;padding:0 12px 10px;background:var(--surface)}
.mvx>summary{cursor:pointer;font-weight:600;color:var(--accent-text);min-height:44px;display:flex;align-items:center}
.prd.job>summary{list-style:none;cursor:pointer}.prd.job>summary::-webkit-details-marker{display:none}
.prd.job[open]>summary{border-bottom:1px solid var(--line);padding-bottom:8px}
.jobd{margin-top:4px}.jobd .tblx{margin-top:8px}.kv.tot{border-bottom:0;font-weight:700}.kv.tot b{font-size:15px}
.abs{margin-top:8px}.abcats{margin-top:8px}
.ctab.pres td.pin{min-width:7.5em}.ctab.pres td.pin .in{width:100%;min-width:6.5em;text-align:right;min-height:40px}
.presel{margin-top:8px;max-width:420px}.presel .in{width:100%}.fixv{display:block;font:700 18px var(--font-mono);margin-top:4px}
.prws{display:grid;gap:8px;margin-top:8px}@media (min-width:1000px){.prws{grid-template-columns:1fr 1fr}}
.prw{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px}.prw.sum{border-width:2px}
.prh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.prh small{color:var(--muted);font-size:12px}.prh .chip{margin-left:auto}
.prg{display:grid;grid-template-columns:1.2fr 1fr 1.3fr;gap:8px;margin-top:8px;align-items:end}
.prg span{display:block;font:500 11px var(--font-mono);color:var(--muted);text-transform:uppercase;margin-bottom:3px}
.prg b{font:600 14px var(--font-mono)}.prg b.gv{color:var(--good)}.prg b.bv{color:var(--crit)}.prg .in{width:100%;min-height:40px;text-align:right}
.ctab.phist{min-width:0}.ctab.phist td{white-space:normal}
/* v8.3 · contabilidad */
.csub{flex-wrap:wrap}.grid4{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px}@media (max-width:560px){.grid4{grid-template-columns:1fr 1fr}.grid4 .fld:first-child{grid-column:1/-1}}
.ctag .in{font-family:var(--font-mono)}.prsel{max-width:55%;min-height:40px}
.prd.pol>summary{list-style:none;cursor:pointer}.prd.pol>summary::-webkit-details-marker{display:none}.prd.pol .tblx{margin-top:8px}
.ctab td small{display:block;font:400 11px var(--font-body);color:var(--muted)}
@media (max-width:560px){.ctag{grid-template-columns:1fr 1.5fr}.ctag>span:first-child{display:none}.ctag .fl{grid-column:1/-1;padding:6px 0 0}}
/* v8.3.1 · alineación: los encabezados siguen a su columna (texto a la izquierda, cifras a la derecha) */
.ctab thead th{text-align:right}.ctab thead th:first-child{text-align:left}
.ctab.iq thead th:last-child{text-align:left}
.ctab td,.ctab th{font-variant-numeric:tabular-nums}
@media (max-width:560px){.ctab td{font-size:11.5px}.ctab td small,.ctab th small{font-size:10.5px}}
.prd .ctab,.ctab.phist{min-width:0}
@media (max-width:560px){
  .ctab th,.ctab td{padding:6px 3px}
  .ctab.agt{min-width:0}.ctab.agt thead{display:none}
  .ctab.agt tr{display:grid;grid-template-columns:repeat(4,1fr);gap:2px 6px;border-bottom:1px solid var(--line);padding:8px 0}
  .ctab.agt th[scope=row]{grid-column:1/-1;border:0;padding:0 0 2px}
  .ctab.agt td{border:0;padding:0;text-align:right}
  .ctab.agt td::before{content:attr(data-l);display:block;font:500 10px var(--font-mono);color:var(--muted);text-transform:uppercase}
  .ctab.agt td:last-child{grid-column:1/-1;display:flex;justify-content:space-between;align-items:baseline;border-top:1px dashed var(--line);padding-top:4px;margin-top:2px}
  .ctab.agt td:last-child::before{display:inline}
  .ctab.agt tr.tot{border-top:2px solid var(--line)}.ctab.agt tr.tot th,.ctab.agt tr.tot td{border-top:0}
}
.prd .ctab th,.prd .ctab td,.ctab.phist th,.ctab.phist td{white-space:normal}
.ctab.iq{min-width:0}.ctab.iq th,.ctab.iq td{white-space:normal}
@media (max-width:560px){.ctab.iq th,.ctab.iq td{font-size:11px;padding:6px 2px}.ctab.iq td .chip{font-size:11px;padding:2px 6px}.ctab.iq thead th{font-size:10px}}
.ig.abs{grid-template-columns:repeat(3,minmax(0,1fr))}
.fsec .tblx{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.fsec .prd .tblx,.fsec .panel .tblx,.fsec .jobd .tblx{border:0;border-radius:0;background:none}
.fsec .tblx .ctab tbody tr:last-child>*{border-bottom:0}
.ctab.iq td:last-child{font-family:var(--font-body)}@media (min-width:561px){.ctab.iq td:last-child{white-space:nowrap}}.ctab.iq td:nth-child(2){text-align:right}

/* v8.3.1 · filas de total en tablas: .tot genérico es flex y rompía la fila */
.ctab tr.tot,.ptbl tr.tot{display:table-row}
.ctab.phist td{white-space:nowrap}.ctab.phist td small{white-space:normal}
@media (max-width:560px){.ctab.agt tr{padding:8px 10px}.ctab.agt tr.tot{display:grid}}
.tile{min-width:0}.tile b .cur,.tile b em.cur{display:inline-block}
.jobd .kv b,.fsec .kv>b{white-space:nowrap}
@media (max-width:560px){.ctab.phist td{padding-left:7px}.prd.pol .rend{font-size:22px}}

/* ---------- v8.4 · menú inferior, Productores, Control Logístico ---------- */
.bnav{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}
.bnavin{max-width:720px;margin-inline:auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.bn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:60px;padding:6px 2px;border:0;background:transparent;color:var(--muted);font:600 11px var(--font-body);letter-spacing:.01em;cursor:pointer}
.bn svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bn span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bn[aria-current="page"]{color:var(--ink)}
.bn[aria-current="page"]::before{content:"";position:absolute;top:0;left:20%;right:20%;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}
.bn[aria-current="page"] svg{stroke:var(--accent-text)}
.bn:focus-visible{outline:2px solid var(--accent-text);outline-offset:-3px}
#pvgrid,.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.lgrid{gap:10px;margin-top:10px}
.pcard{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;min-height:104px;padding:10px 10px 30px;text-align:left;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit}
button.pcard{cursor:pointer}
button.pcard:hover{border-color:var(--accent-text)}
button.pcard:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
.pcard.vac{border-style:dashed;background:transparent;color:var(--muted)}
.pcc{font-size:12px;font-weight:600;color:var(--accent-text)}
.pcard.vac .pcc{color:var(--muted)}
.pcn{font:600 15px/1.25 var(--font-body);overflow-wrap:anywhere}
.pcard.vac .pcn{font-style:italic;font-weight:400}
.pce{position:absolute;right:10px;bottom:8px;font:600 12px var(--font-body);color:var(--accent-text)}
.acs{display:block;font-size:12px;color:var(--accent-text)}
.acs.none{color:var(--muted)}
.ltile{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:10px;row-gap:6px;align-items:center;min-width:0;padding:14px;text-align:left;border:1.5px solid var(--ink);border-left:8px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;cursor:pointer}
.ltile:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
.ltile svg{width:28px;height:28px;fill:none;stroke:var(--accent-text);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ltt{font:700 20px/1.1 var(--font-display);letter-spacing:.01em}
.ltc{font-size:13px;font-weight:600;color:var(--muted)}
.ltile small{grid-column:1 / -1;color:var(--muted);font-size:12px;line-height:1.35}
.radd,.rrow.edit{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.radd .btn{align-self:end;min-height:44px}
.radd .fld span,.rrow.edit .fld span{font-size:12px;color:var(--muted)}
.rlist{margin-bottom:12px}
.seg6{flex-wrap:wrap}
.seg6 button{flex:1 1 33%;min-height:42px;font-size:13px}
.seg6 button:nth-child(4){border-left:0}
.seg6 button:nth-child(n+4){border-top:1px solid var(--line)}
@media (min-width:900px){#pvgrid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}
.ltt{min-width:0;font-size:18px;overflow-wrap:anywhere}
.ltc{align-self:start}
.ltile{position:relative;grid-template-columns:auto minmax(0,1fr)}
.ltt{font-size:18px;overflow-wrap:normal;padding-right:18px}
.ltc{position:absolute;top:10px;right:12px}


/* ---------- v8.4.1 · ver contraseña y acceso con huella ---------- */
.pwbox{position:relative;display:block}
.fld>.pwbox{font-size:inherit;color:inherit}
.pwbox .in{padding-right:50px}
.eye{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;padding:0;background:none;border:0;border-radius:8px;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent}
.eye svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.eye[aria-pressed="true"]{color:var(--accent-text)}
.eye:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.btn.bio{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn.bio svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.vlab{text-align:center;margin-top:12px;opacity:.7}

/* v8.4.1 · en teléfonos el gesto de regresar sustituye a la flecha de la pantalla; en computadora se queda */


/* v8.5 · aviso de borrador y orden de tarimas */
.bnote{margin-top:10px;padding:8px 10px;border-radius:10px;background:var(--warn-bg);color:var(--warn);font-size:13px;line-height:1.35;text-align:left}
.bnote b{font-weight:600}
.bnote.vok{background:var(--good-bg);color:var(--good)}
.bnote .pact{margin-top:8px;align-items:center;gap:8px;flex-wrap:wrap}.bnote .pact .note{color:inherit}
.ordok{margin-top:10px;padding:8px 10px;border-radius:10px;background:var(--good-bg);color:var(--good);font-size:13px}

/* v8.5.1 · botón de regresar siempre visible (también en teléfonos) */
.icon.back{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1.5px solid var(--accent-text);color:var(--accent-text);background:var(--surface);-webkit-tap-highlight-color:transparent}
.icon.back:active{background:var(--accent-text);color:var(--surface)}
.icon.back:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
/* v8.5.1 · Productores en teléfono: lista de una columna (código · nombre y acuerdo · Editar) */
@media (max-width:700px){
  #pvgrid{grid-template-columns:1fr;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}
  #pvgrid .pcard{display:grid;grid-template-columns:72px minmax(0,1fr) auto;grid-template-areas:"c n e" "c a e";column-gap:10px;row-gap:2px;align-items:center;min-height:60px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;width:100%}
  #pvgrid .pcard:last-child{border-bottom:0}
  #pvgrid .pcard.vac{border-style:solid;background:transparent}
  #pvgrid .pcc{grid-area:c;font-size:13px;align-self:center}
  #pvgrid .pcn{grid-area:n;font-size:16px;overflow-wrap:break-word}
  #pvgrid .acs,#pvgrid .pcn+*{grid-area:a;font-size:12px}
  #pvgrid .pce{grid-area:e;position:static;padding:6px 10px;border:1px solid var(--line);border-radius:8px}
}
/* v8.5.1 · las tarjetas de productores en Captura y Entrada de Fruta van en una sola columna (lista) fuera de escritorio */
@media (max-width:999px){.pgrid:not(#pvgrid){display:block}}
/* v8.4 · tiempo real: cuántos más están conectados */
.sbtn{position:relative}
.sbtn .scnt{position:absolute;right:-4px;bottom:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--accent,#98c858);color:#111;font:700 10px/16px var(--font-mono);font-style:normal;text-align:center;box-shadow:0 0 0 2px var(--surface)}
.sbtn .scnt[hidden]{display:none}
.ptbl th small.wrapok{white-space:normal}
@media (max-width:560px){.ptbl.pay tbody th{white-space:normal;min-width:110px}.ptbl.pay th,.ptbl.pay td{padding-left:6px;padding-right:6px}}
/* v8.7 Finanzas › Exportar */
.rgrp{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:10px 0}
.rgl{font-weight:600;font-size:.86rem;color:var(--muted,#5b6470);min-width:120px}
.rchk{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line,#d7dce2);border-radius:999px;font-size:.88rem;cursor:pointer;min-height:36px}
.rchk input{width:18px;height:18px;margin:0}
.rprod{display:block}.rprod summary{cursor:pointer;padding:6px 0;min-height:36px}
.rchks{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;overflow:auto;padding:4px 0}
.rexbtns{margin-top:12px}.rexbtns .btn{min-width:150px}
table.rexp th small{display:block;font-weight:400;color:var(--muted,#5b6470);font-size:.75rem}
@media (max-width:560px){.rgl{min-width:100%}.rexbtns .btn{flex:1 1 100%}}
/* v8.7.1 Precios y costos › Juguera: kilos por caja, venta por kg y por caja juntos */
.jugbox{border:2px solid var(--line,#d7dce2);border-radius:12px;padding:8px 12px 12px;margin:0;display:grid;gap:8px;min-width:0}
.jugbox legend{font-size:.82rem;font-weight:600;padding:0 6px;color:var(--muted,#5b6470)}
.jugbox .fld{margin:0}
@media (max-width:560px){.jugbox{grid-column:1/-1}}
/* v8.8 vista previa en vivo con acercamiento */
.xlv{display:flex;flex-direction:column;gap:6px;min-width:0}
.xlvbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px}
.xlvst{font-size:.8rem;color:var(--muted,#5b6470)}
.xlvz{display:flex;align-items:center;gap:4px}.xlvz output{min-width:46px;text-align:center;font-family:var(--font-mono,monospace);font-size:.85rem}
.xlvz .btn{min-width:36px;min-height:36px}
.xlvtabs{display:flex;flex-wrap:wrap;gap:4px}.xlvtabs:empty{display:none}
.xlvp{--z:1;height:auto;max-height:min(70vh,640px);min-height:180px;overflow:auto;background:#8a919c;border-radius:8px;padding:8px;touch-action:pan-x pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.xlvpg{margin:0 auto 10px;width:calc(var(--z)*100%);max-width:none}
.xlvpg img{display:block;width:100%;height:auto;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.35);user-select:none;-webkit-user-drag:none}
.xlvpg figcaption{font-size:.72rem;color:#fff;text-align:center;margin-top:3px}
.xlvw{color:#fff;padding:20px;text-align:center}
.dside .xlvp{max-height:min(75vh,620px)}
/* v8.8 tarimas minimizadas: cuadrícula en escritorio, lista en teléfono, con asa para arrastrar */
.palbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}
.palbar .note{margin:0;font-size:.82rem}
.palmini{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:8px}
.pmini{position:relative;display:flex;align-items:stretch;border:1px solid var(--line);background:var(--surface);border-radius:10px;min-width:0;transition:box-shadow .15s}
.pgrip{flex:0 0 44px;display:flex;align-items:center;justify-content:center;border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted,#5b6470);cursor:grab;touch-action:none;border-radius:10px 0 0 10px;min-height:56px}
.pgrip:active{cursor:grabbing}.pgrip:disabled{cursor:default;opacity:.4}
.pmb{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left;border:0;background:transparent;padding:8px 10px;color:inherit;font:inherit;cursor:pointer}
.pmt{display:flex;align-items:center;justify-content:space-between;gap:6px}
.pmb small{color:var(--muted,#5b6470);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pmini.drag{box-shadow:0 8px 22px rgba(0,0,0,.25);opacity:.95}
.pmini.dropb{box-shadow:inset 4px 0 0 var(--accent,#98c858),0 0 0 2px var(--accent,#98c858)}
.pmini.dropa{box-shadow:inset -4px 0 0 var(--accent,#98c858),0 0 0 2px var(--accent,#98c858)}
@media (max-width:700px){.palmini{grid-template-columns:1fr}.pmini.dropb{box-shadow:inset 0 4px 0 var(--accent,#98c858)}.pmini.dropa{box-shadow:inset 0 -4px 0 var(--accent,#98c858)}}
/* v8.8.1: una sola tarima expandida dentro de la cuadrícula; botón de expandir/minimizar en cada tarima */
.palmini>.pal{grid-column:1/-1;margin-top:0;border-color:var(--accent,#98c858);box-shadow:0 0 0 1px var(--accent,#98c858)}
.palmini>.pal .palh{flex-wrap:wrap}
.pminb{margin-left:auto;display:inline-flex;align-items:center;gap:4px}
.pord+.pminb{margin-left:0}
.pexp{flex:0 0 44px;display:flex;align-items:center;justify-content:center;border:0;border-left:1px solid var(--line);background:transparent;color:var(--muted,#5b6470);cursor:pointer;border-radius:0 10px 10px 0;min-height:56px}
.pexp:hover,.pmb:hover{background:color-mix(in srgb,var(--accent,#98c858) 10%,transparent)}
p.palbar{display:block}
.palmini.dragging>.pal>:not(.palh){display:none}
.palmini.dragging>.pal .palh{margin-bottom:0}

/* v8.9 · clasificación de productores */
.pcls{display:inline-block;font:600 11px/1.7 var(--font-body);font-style:normal;padding:0 8px;border-radius:999px;margin-left:6px;vertical-align:middle;color:#1b2c20;white-space:nowrap}
.pcls.k-chico{background:#8ed973}.pcls.k-grande{background:#7fe3ee}.pcls.k-interno{background:#f59aef}
.padd .sel{max-width:128px;flex:0 0 auto}
.rclasemp{margin:8px 0 14px}.rcemp{display:block;margin-bottom:4px}
.clasgrid{display:grid;grid-template-columns:minmax(96px,1fr) repeat(3,minmax(0,88px));gap:6px;align-items:center}
.clasgrid .fh{text-align:center;margin:0}.clasgrid .fl{font-size:.86rem;line-height:1.2}
.clasgrid .fl small{display:block;color:var(--muted);font-size:11px}
.clasgrid .fna{text-align:center;color:var(--muted)}
.clasgrid .in{min-width:0;text-align:right;padding:8px 6px}
.cfijos{margin-top:10px}.cfijos summary{cursor:pointer;font-weight:600;padding:6px 0}
/* v8.9.1: tarimas que pasan al próximo viaje y renglón SOBRANTES */
.nextb{border-color:var(--accent,#98c858);font-weight:600}
.pln.sobl{background:color-mix(in srgb,var(--accent,#98c858) 8%,transparent);border-radius:8px;padding:4px 6px;align-items:center}
.pln.sobl .sobv,.pln.sobl .sobq{display:flex;gap:6px;align-items:center;min-height:40px;padding:0 8px;border:1px dashed var(--line);border-radius:8px;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pln.sobl .sobt{display:flex;align-items:center;justify-content:center;color:var(--muted,#5b6470);font-size:1.1rem}
.sobfrom{margin-top:8px}
.sobsent .kv b{white-space:nowrap}
.apr.sobr{grid-template-columns:1fr auto}
.sobg{display:block;cursor:pointer}
.sobg .s2h input{width:22px;height:22px;flex:0 0 auto}

/* v8.9.2 · Registro de empaque legible también con letra grande (ajustes de accesibilidad del teléfono):
   el nombre del productor ocupa todo el ancho que queda y las cajas y la diferencia se apilan a la derecha */
.prow{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"i n t" "i n d";column-gap:12px;row-gap:4px}
.prow>.idx{grid-area:i}.prow>.pn{grid-area:n}.prow>.pt{grid-area:t;justify-self:end;align-self:end}.prow>.chip{grid-area:d;justify-self:end;align-self:start}
.pn{overflow-wrap:break-word;word-break:normal;hyphens:manual}
.pn small{overflow-wrap:anywhere}
.pt{font-size:clamp(16px,4.6vw,20px)}
.grid2,.grid3,.grid4{align-items:end}
.fld>span{overflow-wrap:break-word}
.calbox .calrow,.cpage .calhead{grid-template-columns:58px 36px minmax(0,1fr) 46px}
.calhead{letter-spacing:.02em;font-size:9px}
.calhead span{min-width:0;white-space:nowrap}
.dockin .btn{min-height:48px;line-height:1.15;white-space:normal}
@media (max-width:599px){.pfa>.grid2{grid-template-columns:1fr}}
@media (min-width:600px){.pfa>.grid2{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}
/* v8.9.2 · barra inferior: cinco o seis opciones (Finanzas), sin cortar con letra grande del teléfono */
.bnavin{grid-template-columns:repeat(var(--nb,5),minmax(0,1fr))}
.bn{min-height:60px;height:auto;padding:6px 1px}
.bn span{font-size:clamp(9px,2.6vw,11px);letter-spacing:0;line-height:1.15}
/* v8.9.2 · con muchas hojas (Cierre semanal) las pestañas de la vista previa van en una fila que se desliza */
.xlvtabs{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;padding-bottom:4px}
.xlvtabs .btn{flex:0 0 auto;white-space:nowrap}
/* v8.10 · Código de Trazabilidad */
/* aviso de orden minimizado («Permitir cambios») */
.ordmin{margin-top:10px;padding:8px 10px;border-radius:10px;border:1px dashed var(--line);font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;justify-content:space-between}
.ordmin .ordb{display:flex;gap:6px;flex-wrap:wrap}
/* punto de estado de la tarima: arriba del número de cajas */
.pchw{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto}
.pdot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--line);box-shadow:0 0 0 2px var(--surface);flex:0 0 auto}
.pdot.ok{background:var(--good,#2f8f46)}.pdot.bad{background:var(--crit,#c0392b)}
.pmt{align-items:flex-start}
.pn2 .pdot{margin-right:8px;vertical-align:1px}
/* asa para reordenar líneas dentro de la tarima */
.plh,.pln{grid-template-columns:58px minmax(78px,.9fr) minmax(64px,.7fr) minmax(0,1.6fr) 40px 38px}
.lgrip{cursor:grab;touch-action:none;color:var(--muted)}.lgrip svg{display:block;margin:auto}
.lgsp{display:block;width:40px}
.pln.ldrag{position:relative;z-index:5;box-shadow:0 8px 22px rgba(0,0,0,.22);background:var(--surface);border-radius:8px;opacity:.96}
.pln.dropb{box-shadow:inset 0 3px 0 var(--accent,#98c858)}.pln.dropa{box-shadow:inset 0 -3px 0 var(--accent,#98c858)}
@media (max-width:559px){
  .plh,.pln{grid-template-columns:58px minmax(0,1fr) minmax(0,.8fr) 40px 38px;grid-template-areas:"q c n g d" "p p p p p"}
  .pln>button.lgrip,.pln>.lgsp{grid-area:g}
  .pln>button:not(.lgrip){grid-area:d}
  .plh span:nth-child(5){display:none}
}
/* buscador de productor */
.tfind{margin:10px 0}.tfind .fld{margin-bottom:6px}
.tfin{position:relative;display:block}.tfin svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.tfin .in{padding-left:42px;width:100%}
.tfres{margin-top:4px}.tfpals{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pmini.tfhit{box-shadow:0 0 0 2px var(--accent,#98c858)}
.pmini.tfdim{opacity:.45}
/* ventana «Próximo viaje»: viaje que recibe y cajas por productor */
.pnopts{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.pnopt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.pnopt input{margin-top:4px;width:18px;height:18px;flex:0 0 auto}
.pnopt span{display:flex;flex-direction:column;gap:2px;min-width:0}.pnopt small{color:var(--muted);overflow-wrap:anywhere}
.pnopt:has(input:checked){border-color:var(--accent-text,#4a7a24);box-shadow:0 0 0 1px var(--accent-text,#4a7a24)}
.kv.pnq{align-items:center;gap:10px}.kv.pnq .in{width:86px;flex:0 0 86px;text-align:right;min-height:44px}

/* ---------- v8.11 · movimiento de la interfaz ----------
   Botones y salidas: ease-out (arranca rápido y frena al final). Menús, ventanas y casillas: ease-in-out (suave, acelera y frena).
   Todo dura 220 ms o un poco más; con «reducir movimiento» del teléfono se apaga. */
:root{--mo:220ms;--mo2:260ms;--e-out:cubic-bezier(.16,1,.3,1);--e-io:cubic-bezier(.65,0,.35,1)}
.btn,.tab,.mbtn,.ocard,.prow,.tchip,.dchip,.pmb,.pexp,.pgrip,.icon,.nav a,.nav button,.pclsb,.pnopt,.fh.pcls{transition:background-color var(--mo) var(--e-out),border-color var(--mo) var(--e-out),color var(--mo) var(--e-out),box-shadow var(--mo) var(--e-out),transform var(--mo) var(--e-out),opacity var(--mo) var(--e-out)}
.btn:active:not(:disabled),.tab:active,.mbtn:active,.ocard:active,.pmb:active,.pexp:active,.icon:active,.pclsb:active{transform:scale(.97)}
.in,.sel,textarea,select{transition:border-color var(--mo) var(--e-io),box-shadow var(--mo) var(--e-io),background-color var(--mo) var(--e-io)}
.in:focus,select:focus,textarea:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent);border-color:var(--accent)}
.pmini{transition:box-shadow var(--mo) var(--e-out),opacity var(--mo) var(--e-io),transform var(--mo) var(--e-out)}
.pmini.drag{transition:box-shadow var(--mo) var(--e-out)}
.pdot{transition:background-color var(--mo) var(--e-io),box-shadow var(--mo) var(--e-io)}
.toast{transition:opacity var(--mo) var(--e-out),transform var(--mo) var(--e-out);transform:translate(-50%,10px)}
.toast.on{transform:translate(-50%,0)}
/* ventanas: entran con ease-in-out y salen con ease-out */
@keyframes scrIn{from{opacity:0}to{opacity:1}}
@keyframes shIn{from{opacity:.4;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes scrOut{to{opacity:0}}
@keyframes shOut{to{opacity:0;transform:translateY(24px)}}
.scrim.sin{animation:scrIn var(--mo2) var(--e-io)}
.scrim.sin>.sheet{animation:shIn var(--mo2) var(--e-io)}
.scrim.sout{animation:scrOut var(--mo) var(--e-out) forwards;pointer-events:none}
.scrim.sout>.sheet{animation:shOut var(--mo) var(--e-out) forwards}
@media (min-width:560px){@keyframes shIn{from{opacity:.4;transform:scale(.96) translateY(10px)}to{opacity:1;transform:none}}@keyframes shOut{to{opacity:0;transform:scale(.97)}}}
/* cambio de pantalla o de pestaña */
@keyframes vIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
main.vin{animation:vIn var(--mo2) var(--e-io)}
/* tarima que se abre y secciones que se despliegan */
@keyframes pIn{from{opacity:.3;transform:scale(.985)}to{opacity:1;transform:none}}
.palmini>.pal.pin{animation:pIn var(--mo2) var(--e-io)}
details.dan>:not(summary){animation:vIn var(--mo2) var(--e-io)}
@media (prefers-reduced-motion:reduce){
  .btn,.tab,.mbtn,.ocard,.prow,.tchip,.dchip,.pmb,.pexp,.pgrip,.icon,.in,.sel,select,textarea,.pmini,.pdot,.toast,.pclsb,.pnopt{transition:none}
  .scrim.sin,.scrim.sin>.sheet,.scrim.sout,.scrim.sout>.sheet,main.vin,.palmini>.pal.pin,details.dan>:not(summary){animation:none}
  .btn:active,.tab:active,.mbtn:active,.ocard:active,.pmb:active,.pexp:active,.icon:active{transform:none}
}

/* ---------- v8.11 · tarimas de dos en dos en el teléfono (como van dentro de la caja) ---------- */
@media (max-width:700px){
  .palmini{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .pmini{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;grid-template-rows:40px auto}
  .pmini>.pgrip{grid-column:1;grid-row:1;min-height:40px;border-right:0;border-radius:10px 0 0 0;position:relative;z-index:1}
  .pmini>.pexp{grid-column:3;grid-row:1;min-height:40px;border-left:0;border-radius:0 10px 0 0;position:relative;z-index:1}
  .pmini>.pmb{grid-column:1/-1;grid-row:1/3;padding:10px 8px 10px;align-items:stretch;text-align:center}
  .pmini .pmt{flex-direction:column;align-items:center;gap:6px}
  .pmini .pmt>strong{line-height:20px;padding:0 34px}
  .pmini .pchw{align-items:center}
  .pmini .pmb small{text-align:center}
  .pmini.dropb{box-shadow:inset 4px 0 0 var(--accent,#98c858),0 0 0 2px var(--accent,#98c858)}
  .pmini.dropa{box-shadow:inset -4px 0 0 var(--accent,#98c858),0 0 0 2px var(--accent,#98c858)}
}

/* ---------- v8.11 · ventana de productores grandes ---------- */
.pcls.k-grande.pclsb{border:0;cursor:pointer;font:700 12px/1.9 var(--font-body);padding:2px 10px;margin:0;justify-self:center;background:#2f7fd8;color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.pcls.k-grande.pclsb:hover{background:#2169bb}
button.pclsb:focus-visible{outline:3px solid color-mix(in srgb,#2f7fd8 45%,transparent);outline-offset:2px}
.grp{margin-top:14px}
.grh{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.grh b{font:700 18px/1.2 var(--font-display);text-transform:uppercase}
.grh small{color:var(--muted);font-size:.84rem}
.gre{border:1px solid var(--line);border-radius:10px;padding:10px;margin-top:8px;background:var(--bg)}
.gre.gset{border-color:#2f7fd8;box-shadow:inset 3px 0 0 #2f7fd8}
.grt{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.grt span{color:var(--muted);font-size:.86rem}
.grk{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px 12px;margin:8px 0}
.grk div{display:flex;flex-direction:column;min-width:0}
.grk span{font-size:11px;color:var(--muted)}
.grk b{font:600 15px var(--font-mono)}
.grin{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:end}
.grin .fld{margin:0}
.grpay{display:flex;flex-direction:column;justify-content:flex-end;min-height:46px}
.grpay span{font-size:12px;color:var(--muted)}
.grpay b{font:700 18px var(--font-mono)}
.grpay small{font-size:12px;color:var(--muted)}
.grpend{margin-top:6px}
@media (max-width:559px){.grin{grid-template-columns:1fr 1fr}.grpay{grid-column:1/-1;min-height:0}}
.sheet[data-kind="grandes"] .note+.fld{margin-top:10px}

/* ---------- v8.12 · tarimas y líneas que se mueven ---------- */
.flipm{position:relative;z-index:3;box-shadow:0 10px 24px rgba(0,0,0,.18)}
.pln.flipm{background:var(--surface)}
.recacts{margin:10px 0 2px}
/* v8.13 · casilla Cera: cinco casillas en «Otras cajas» */
.grid5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:end}
@media (max-width:620px){.grid5{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* v8.13 · Segundas: tablas de la semana, estado de cada entrega, ventana de semana, envíos a Juguera */
.stbl{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.stbl th,.stbl td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.stbl thead th{font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.stbl .r{text-align:right;font-family:var(--font-mono)}
.stbl .neg{color:var(--crit);font-weight:700}
.stbl tfoot th,.stbl tfoot td{border-bottom:0;border-top:2px solid var(--line)}
.stbl small{color:var(--muted)}
.s2st{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.s2st small{display:block;color:var(--muted);font-size:12px}
.s2n{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.s2n b{font-family:var(--font-mono);color:var(--ink)}.s2n b.pos{color:var(--good)}
.chip.cera{background:var(--warn-bg);color:var(--warn);font-size:11px;padding:2px 6px;vertical-align:middle}
.wkpick{white-space:nowrap}
.wklist{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:56vh;overflow:auto}
.wkopt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;cursor:pointer}
.wkopt small{color:var(--muted);font-size:12px}
.wkopt.on{border-color:var(--accent-text);box-shadow:inset 4px 0 0 var(--accent)}
.wkopt:focus-visible{outline:3px solid var(--accent-text);outline-offset:2px}
.kv.anul{opacity:.6}.kv.anul>span b{text-decoration:line-through}
.kv small{color:var(--muted)}
.ig.tot4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:620px){.ig.tot4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.s2acts .jugb{border-color:var(--warn);color:var(--warn)}.s2acts .jugb.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}

/* v8.14 · engrane de preferencias de empaque (peso por caja) en la esquina de Registro de empaque */
.label.hasgear{position:relative}
.label.hasgear .esw{padding-right:50px}
.icon.kgset{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}
.icon.kgset:hover{background:var(--bg)}
.sheet .fld small.note{display:block;margin-top:3px;font-size:12px}

/* v8.15 · «Sin asignar» en Procesado (Entrada de Fruta) */
.pchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:4px}
.pchips .pchip{margin-top:0}
.chip.unas{background:var(--orange-bg);color:var(--orange)}
.unastx{color:var(--orange)}

/* v8.16 · Pendientes, decisiones de dirección y avisos de captura */
.kgw{color:var(--orange);font-weight:600}
.kgw:empty{display:none}
.pendp{margin-top:16px;border:1.5px solid var(--orange);border-radius:10px;background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.pendp.ok{border-color:var(--line)}
.pendh{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pendh strong{font:700 20px/1 var(--font-display);text-transform:uppercase;letter-spacing:.02em}
.pendl{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:6px 0 6px 10px;border-left:3px solid var(--line)}
.pendl.warn{border-left-color:var(--orange)}.pendl.crit{border-left-color:var(--crit)}.pendl.info{border-left-color:var(--info)}
.pendl span{min-width:0;overflow-wrap:anywhere}
.pendl small{flex:none;font:500 11px var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.pendi{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px;background:var(--surface)}
.pendi.warn{border-left-color:var(--orange)}.pendi.crit{border-left-color:var(--crit)}.pendi.info{border-left-color:var(--info)}
.pendi strong{display:block;margin-bottom:2px}
.pendrows{display:flex;flex-direction:column;margin-top:6px;border-top:1px solid var(--line)}
.pendr{display:flex;justify-content:space-between;gap:8px;align-items:center;text-align:left;width:100%;min-height:38px;padding:6px 2px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:400 14px var(--font-body);overflow-wrap:anywhere}
button.pendr{cursor:pointer}button.pendr span{color:var(--muted);font-size:18px}
.decr{border:1px solid var(--line);border-left:4px solid var(--orange);border-radius:8px;padding:10px 12px;margin-bottom:10px}
.decr.ok{border-left-color:var(--good)}
.dech{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:4px}
.dech strong{display:block}
.decresp{margin:6px 0;padding:8px 10px;border-radius:6px;background:var(--bg);white-space:pre-wrap}
.savedn{margin:6px 0 8px;padding:8px 10px;border-radius:6px;background:var(--bg);overflow-wrap:anywhere}

/* v8.17 · tarimas antes del registro: pendiente de registrar (naranja) y concordancia en la tarjeta del productor */
.pavl.pend{color:var(--orange);font-weight:600}
.pdot.pend{background:var(--orange)}
.ptzw .sec{margin-top:12px}
.ptz{white-space:pre-line;line-height:1.45}
.ptz.warn{color:var(--orange);font-weight:600}
.ptz.good{color:var(--good)}
.twkw .wkbar{margin-top:14px}
/* v8.18.1 · ir y volver entre Registro de Empaque y Código de Trazabilidad */
.xnav{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* v8.19 · orientación del Código de Trazabilidad */
.orientw{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px}.orientw .seg{flex:1 1 220px;max-width:340px}

/* v8.20 · entregas combinadas en una corrida */
.pentw{margin-top:6px}
.pentr{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,170px);gap:4px 10px;align-items:end;padding:8px 0;border-bottom:1px solid var(--line)}
.pentl{display:flex;flex-direction:column;align-self:center}.pentl small{color:var(--muted);font-size:13px}
.pentk{margin:0}.pentk span{font-size:12px}
.pents{grid-column:1 / -1}
.pentx{grid-column:1 / -1;justify-self:start}
.pkgo{display:flex;align-items:center;background:var(--bg);font-weight:600}
.pents.warn{color:var(--orange);font-weight:600}
.ewhy{margin:4px 0 10px}.ewhy strong{display:block;margin-bottom:4px}

/* v8.21 · Reempaque: botón junto al engrane, ventana y renglón REEMPAQUE */
.label.hasrmp .esw{padding-right:170px}
.btn.rmpb{position:absolute;top:12px;right:58px;border-color:var(--accent-text);color:var(--accent-text)}
@media (max-width:420px){.label.hasrmp .esw{padding-right:0;padding-top:44px}}
.s2r.rmr{grid-template-columns:auto 1fr 5.5em;cursor:pointer}
.s2r.rmr input[type=checkbox]{width:20px;height:20px}
.s2r.rmr .in:disabled{opacity:.45}
.seg.rmt{margin-top:6px}
.rmconv{display:flex;flex-direction:column;gap:0}
.rmc{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:8px 0;border-top:1px dashed var(--line)}
.rmc:first-child{border-top:0}
.rmc small{display:block;color:var(--muted)}
.rmci{display:grid;grid-template-columns:auto 5.5em;gap:6px;align-items:center;justify-items:end}
.rmci .in{text-align:right}
.rmci small{grid-column:1/-1}
.rmop{padding:8px 0;border-top:1px dashed var(--line)}
.rmop:first-of-type{border-top:0}
.rmoh{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.rmoh small{color:var(--muted)}
.rmsrc{margin-top:10px}
/* v8.21.1 · botón «Ordenar tarimas como entraron al empaque» arriba de las tarimas */
.ordbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:6px 0 10px}
.ordbar small{color:var(--muted);font-size:12px;flex:1 1 220px}
/* v8.21.5 · calibre 200 a 10 lb: 54 y 48 lado a lado */
.rmci.rmci2{grid-template-columns:5.5em 5.5em}
.rmsp{display:flex;flex-direction:column;gap:2px;align-items:stretch}
.rmsp span{font-size:12px;color:var(--muted);text-align:right}

/* v8.23 · información legal (en las dos apariencias) */
.lbox{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);font-size:13px;line-height:1.5}
.lbox>p{margin:0 0 8px}
.llinks{display:flex;flex-wrap:wrap;gap:0 16px}
.llinks .link{min-height:36px;padding:6px 0}
.lchk{display:flex;align-items:flex-start;gap:10px;margin-top:4px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:14px;font-weight:600;line-height:1.35;cursor:pointer}
.lchk input{flex:none;width:24px;height:24px;margin:0;accent-color:var(--accent-text)}
.lacc{margin-top:10px}
.lfill{padding:0 3px;border-radius:3px;background:var(--warn-bg);color:var(--warn);font-weight:600}
.lfoot{margin-top:18px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;line-height:1.45;color:var(--muted);text-align:center}
.lfoot .llinks{justify-content:center}
.ltabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.ltb[aria-selected="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.lwarn{margin-bottom:10px;padding:8px 10px;border-radius:8px;background:var(--warn-bg);color:var(--ink);font-size:13px;line-height:1.45}
.ldoc{max-width:68ch;font-size:15px;line-height:1.55}
.ldoc h4{margin:16px 0 6px;font:600 16px/1.25 var(--font-body)}
.ldoc p{margin:0 0 8px}
.ldoc ul,.ldoc ol{margin:0 0 8px;padding-left:22px}
.ldoc li{margin-bottom:5px}
.ldoc blockquote{margin:0 0 10px;padding:10px 12px;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;background:var(--bg)}
.lmeta{margin-top:12px;font-size:12px;color:var(--muted)}
.ltw{overflow-x:auto}
.ltab{width:100%;border-collapse:collapse;font-size:13px}
.ltab th,.ltab td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ltab th{font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.ltab .chip{white-space:normal}
.lpanel .lrow{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;padding:0 4px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:500 15px var(--font-body);text-align:left;cursor:pointer}
.lpanel .lrow:focus-visible{outline:3px solid var(--accent-text);outline-offset:-3px}
.ltb{font-family:var(--font-body)}

/* v8.24: buscador de productores en las listas */
.pfind{display:flex;align-items:center;gap:10px;margin:8px 0}.pfind .tfin{flex:1;min-width:0}.pfind .pfn{font-size:13px;color:var(--muted);white-space:nowrap}
/* v8.25: manifiesto cerrado y existencia en empaque */
.manban{margin-bottom:10px}.manban.closed{border-color:var(--warn);background:var(--warn-bg)}.manban .note{margin-top:4px}
.exis summary{cursor:pointer;display:flex;flex-direction:column;gap:2px;list-style:none}.exis summary::-webkit-details-marker{display:none}.exis summary small{color:var(--muted);font-size:13px}
.extab td small{display:block;color:var(--muted);font-size:12px}.extab .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.extab tr.exl td{font-size:13px;color:var(--muted);padding-left:14px}
/* v8.25: Documentos de viaje */
.dvbar{display:flex;flex-direction:column;gap:8px;margin:10px 0}.dvwk{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch}.dvwk .chipbtn{flex:none}
.dvord{margin:0}.dvcard{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;color:inherit;font:inherit;cursor:pointer}
.dvcard .note{margin-top:6px}.dvst{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px}.dvdot{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.dvdot i{width:8px;height:8px;border-radius:50%;background:var(--warn)}.dvdot.ok i{background:var(--good,#2f7d3a)}
.dvdoc .dvh{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.dvdoc .dvh small{display:block;color:var(--muted);font-size:13px;margin-top:2px}.dvdoc .pact{flex-wrap:wrap}
.dvwk .chipbtn[aria-selected="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
/* v8.25: menú por módulos */
.mod{border:1px solid var(--line);border-radius:12px;padding:10px 12px 12px;margin-bottom:12px;background:var(--surface)}.modh{font:700 18px var(--font-cond,inherit);text-transform:uppercase;letter-spacing:.02em;margin-bottom:6px}
.modg{margin-top:8px}.modk{display:block;font:600 11px var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:4px}.modg .mbtn,.modg .mtile{margin-bottom:6px}
/* v8.25: conteo de tarimas */
.ctgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}.ctgrid .fld{margin:0}
.ctpend{margin-bottom:10px}.ctrow{padding:8px 0;border-top:1px solid var(--line)}.ctrow small{display:block;color:var(--muted);font-size:13px;margin-top:2px}.ctrow .pact{flex-wrap:wrap;margin-top:6px}.ctrow .pact .in{flex:1;min-width:160px}
/* v8.25.4: sobrantes ya reempacados */
.apr .rmpmk{display:block;color:var(--accent-text);font-weight:600}
.apr.rmpdone .apn b,.apr.rmpdone .apn small:not(.rmpmk){opacity:.55}
.apr b.mono s{opacity:.55;font-weight:400;margin-right:4px}
.pnopt .chip{align-self:flex-start;width:auto;justify-self:start;margin:2px 0}
.pisomvb{margin:-4px 0 12px}
/* v8.26 · varios manifiestos por viaje */
.vbox .vhead{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.vchips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.vchip{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;max-width:100%;padding:8px 12px;border:1px solid var(--line);border-left:6px solid var(--vc);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.vchip small{color:var(--muted);overflow-wrap:anywhere}
.vchip .vico{width:14px;height:14px;vertical-align:-2px;margin-right:4px;border-radius:3px}
.vemp{margin:0 0 8px}.vemp .esw{margin-bottom:4px}
.vchip[aria-pressed="true"]{box-shadow:0 0 0 2px var(--vc);border-color:var(--vc)}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;margin:8px 0}
.vpal{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:52px;padding:4px;border:2px solid var(--vc);border-radius:8px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}
.vpal b{font-family:var(--font-mono);font-size:1.05rem}.vpal small{font-size:.72rem;color:var(--muted)}
.vpal[aria-pressed="true"]{background:var(--vc);color:#fff}.vpal[aria-pressed="true"] small{color:#fff}
.vpal:disabled{opacity:.7;cursor:default}
.vc0{--vc:#1a5f82}.vc1{--vc:#c24e00}.vc2{--vc:#2b7a3b}.vc3{--vc:#7b3fa0}.vc4{--vc:#9a5f00}.vc5{--vc:#b3261e}
.vrng{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}.vrng .in{width:64px}
.pvsel{margin-bottom:8px}
/* v8.26.5: módulos del menú solo con títulos */
.modl{display:flex;flex-direction:column;gap:8px;margin-top:8px}.modl .mbtn{margin:0}

/* v8.27 · Almacén */
.almig{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:420px){.almig{grid-template-columns:repeat(2,minmax(0,1fr))}}
.almv{margin-bottom:8px}.almv>summary{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;cursor:pointer;list-style:none}
.almv>summary::-webkit-details-marker{display:none}.almv>summary small{font:12px var(--font-mono);color:var(--muted)}
.almr{align-items:center;gap:10px}.almr>span:first-child{min-width:0;overflow-wrap:anywhere}.almr small{display:block;color:var(--muted);font-size:12px}
.almn{display:flex;align-items:center;gap:8px;flex:none}.almn b{font:700 18px var(--font-display);min-width:3ch;text-align:right}.almn b.old{color:var(--crit)}
.almg{margin-bottom:8px}.almgh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}.almgh small{font:12px var(--font-mono);color:var(--muted)}
.almm small{display:block;color:var(--muted);font-size:12px;overflow-wrap:anywhere}.almm.anul{opacity:.55}.almm.anul b{text-decoration:line-through}
.almw{margin:6px 0;color:var(--crit)}
.almtab td small{color:var(--muted)}
/* v8.27.5: filtros del almacén en una fila */
.almf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.almf .fld select{width:100%;min-height:46px}

/* ---------- v8.28 · tipografía: Figtree, cifras de ancho fijo y etiquetas legibles ---------- */
body{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.k,.sec,.calhead,.shead,.chipbtn small,.plh,.vhead,.palh.pale .k,.qsw .k,.mlhead,#manov .totline .k,.pdisp .k,.ig span,.simres span,.tcf>span:first-child,.ptbl thead th,.ctab thead th,.bestar .k,.vjn small,.fcst,.prg span,.ctab.agt td::before,.stbl thead th,.pendl small,.ltab th,.modk,.chart .ql{text-transform:none;letter-spacing:0;font-family:var(--font-body);font-weight:600}
.k,.sec,.fcst,.modk{font-size:13px}
.sec{font-size:14px;color:var(--ink);opacity:.78}
.calhead,.shead,.plh,.vhead,.mlhead,#manov .totline .k,.pdisp .k,.qsw .k,.chipbtn small,.vjn small,.pendl small{font-size:12px}
.ig span{font-size:12px;letter-spacing:0}
.ptbl thead th,.ctab thead th,.stbl thead th,.ltab th{font-size:12.5px}
:is(.ttl,.sheet h3,.empty h2,.mbtn strong,.wkhd,.grh b,.pendh strong,.modh){text-transform:none;letter-spacing:0}
.sheet h3{font-size:22px;line-height:1.15}
.ttl{font-size:21px;line-height:1.15}
@media (max-width:560px){
  .ctab{font-size:13px}.ctab td{font-size:12.5px}.ctab td small,.ctab th small{font-size:12px}
  .ctab.iq th,.ctab.iq td{font-size:12.5px}.ctab.iq thead th{font-size:12px}.ctab.iq td .chip{font-size:12px}
  .seg4 button,.seg3 button{font-size:12.5px}
  .lgr .chip,.mlrow .chip{font-size:12px}
}
/* v8.28: botón Vaciar desecho en Recepción › Segundas */
.dvhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.dvbtn{flex:none;display:flex;align-items:center;gap:6px;min-height:40px;padding:6px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink);font:600 12px/1.2 var(--font-body);cursor:pointer}
.dvbtn svg{color:var(--crit)}
.dvbtn:disabled{opacity:.45;cursor:default}
.dvbtn:not(:disabled):hover{border-color:var(--crit)}
.ig.tot4{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
/* v8.28: conteo de segundas */
.scpad{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 10px;align-items:end;margin-top:10px}
.scpad .fld{margin:0}.scpad .btn{min-height:48px}
.scin{font-size:22px;min-height:52px}
.scparts{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:32px}
.scp{border:0;cursor:pointer;font:600 15px var(--font-body)}
.scplus{color:var(--muted)}.sceq{margin-left:4px;font-size:16px}
.seg button .scbt{display:block;font-size:12px;opacity:.8}
.scrow{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;padding:10px 12px;border-radius:10px;background:var(--warn-bg)}
.scrow.ok{background:var(--good-bg)}
.scrow small{display:block;color:var(--muted);font-size:13px;margin:2px 0 4px}

/* v8.28.1 · Inicio clásico: cada rótulo con su tarjeta; barra con 8 secciones */
.gcc>.sec:first-child{margin-top:18px}
.gcc>.pendp:first-child{margin-top:16px}
@media (min-width:1000px){
  .g-c{display:grid;grid-auto-flow:row;grid-template-rows:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;align-items:start}
  .g-c>.gcc{min-width:0}
}
.admg{display:grid;grid-template-columns:minmax(0,1fr);gap:0 24px;align-items:start}
@media (min-width:1000px){.admg{grid-template-columns:repeat(2,minmax(0,1fr))}}
.admv>.mod{margin-top:16px}
.bn .bns{display:none}
@media (max-width:699px){.bnavin .bn:has(.bns) .bnl{display:none}.bn .bns{display:block}.bn svg{width:22px;height:22px}}

/* v8.32.1 · Manual de usuario (Mi cuenta) */
.mnidx .lrow>span:first-child{display:flex;align-items:center;gap:10px;text-align:left}
.mnum{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:13px;background:var(--bg);border:1px solid var(--line);font-size:13px;flex:none}
.mndoc .mnh{margin-top:4px;font-size:18px}
.mndoc h4{margin-top:18px}
.mtbl{width:100%;border-collapse:collapse;margin:6px 0 12px;font-size:14px;line-height:1.4}
.mtbl th,.mtbl td{border:1px solid var(--line);padding:7px 8px;text-align:left;vertical-align:top}
.mtbl thead th{background:var(--bg);font-weight:600}
.mtbl tbody th{font-weight:600;width:34%}
.mnnav{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.mnacc .note{margin:0}
.mnacc{margin-bottom:14px}
/* v8.32.2 · Equipo de piso (supervisión) */
.suppan summary{display:flex;flex-direction:column;gap:2px;cursor:pointer;padding:4px 0 8px;list-style:none}
.suppan summary::-webkit-details-marker{display:none}
.suppan summary small,.suppan .lrow small{color:var(--muted,var(--ink2));font-size:13px;font-weight:400}
.suppan .lrow>span:first-child{display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.suppan .lrow[disabled]{opacity:.5;cursor:not-allowed}
.supban{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.supban .note{margin:2px 0 0}

/* v8.33 · turno en la ficha del productor */
.trow{background:var(--bg);border:1px solid var(--line)}
.trow.on{background:var(--good-bg);border-color:transparent}

/* v8.33.1 · barra de botón encima de la navegación inferior (teléfono y tablet) */
body.hasnav .dock{bottom:var(--bnh,0px)}
body.hasnav:has(.dock){padding-bottom:calc(var(--bnh,0px) + 96px)}
