

html{-webkit-text-size-adjust:100%}body{margin:0}[hidden]{display:none!important}img{max-width:100%}
/* Layout: «Programa» = un día a la vez (barra de días, plantas, pedido, plan). «Seguimiento» = días programados y avance por obra. «Obras», «Mezclas», «Plantas» = datos fijos. */
:root{
  --bg:#F1F3F1; --surface:#FFFFFF; --sunk:#E7EAE8; --ink:#1D2326; --muted:#5D676C; --line:#D5DAD8;
  --accent:#1B5B78; --accent-ink:#FFFFFF; --accent-soft:#DCE8EE;
  --ok:#2D7A4C; --warn:#A8650A; --bad:#AE352C; --ok-soft:#DFF0E5; --warn-soft:#F7EAD3; --bad-soft:#F6DEDB;
  --d1:#1B5B78; --d2:#B5651D; --d3:#4F7D3A; --d4:#7A4E8C; --d5:#8A7A2E; --d6:#A23D5A;
  --idle:#E4E8E6; --hatch-bg:#C9CFCC; --hatch:#5E686D;
  --f-display:"Archivo","Arial Narrow",system-ui,sans-serif;
  --f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --r:6px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#141819; --surface:#1C2224; --sunk:#252C2F; --ink:#E6EBEA; --muted:#9BA6AA; --line:#323B3F;
  --accent:#6CB0D0; --accent-ink:#0E1A20; --accent-soft:#1E3440;
  --ok:#6CC08C; --warn:#E3A240; --bad:#E7786D; --ok-soft:#1D3326; --warn-soft:#3A2C14; --bad-soft:#3D2120;
  --d1:#5DA6C9; --d2:#E0904A; --d3:#83B86A; --d4:#B58BC7; --d5:#CDB95A; --d6:#DB7493;
  --idle:#2A3235; --hatch-bg:#3A4448; --hatch:#A3AEB2;
  color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#141819; --surface:#1C2224; --sunk:#252C2F; --ink:#E6EBEA; --muted:#9BA6AA; --line:#323B3F;
  --accent:#6CB0D0; --accent-ink:#0E1A20; --accent-soft:#1E3440;
  --ok:#6CC08C; --warn:#E3A240; --bad:#E7786D; --ok-soft:#1D3326; --warn-soft:#3A2C14; --bad-soft:#3D2120;
  --d1:#5DA6C9; --d2:#E0904A; --d3:#83B86A; --d4:#B58BC7; --d5:#CDB95A; --d6:#DB7493;
  --idle:#2A3235; --hatch-bg:#3A4448; --hatch:#A3AEB2;
  color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.5}
.wrap{max-width:1080px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:18px 48px;display:grid;gap:20px}
h1,h2,h3{font-family:var(--f-display);font-stretch:112%;text-wrap:balance;margin:0;line-height:1.15}
h1{font-size:clamp(1.5rem,4.5vw,2.1rem);font-weight:800;letter-spacing:-.01em}
h2{font-size:1.2rem;font-weight:700}
h3{font-size:1rem;font-weight:700}
.eyebrow{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
header{display:grid;gap:4px}
.topline{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 12px}
.sync{font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}
.sync.err{color:var(--bad)}
.tabsbox{position:sticky;top:env(safe-area-inset-top,0px);background:var(--bg);z-index:5;overflow-x:auto;border-bottom:2px solid var(--ink)}
.tabs{display:flex;gap:2px;min-width:max-content}
.tab{font:inherit;font-family:var(--f-display);font-stretch:108%;font-weight:700;font-size:.95rem;border:none;background:none;color:var(--muted);padding:10px 13px;cursor:pointer;border-bottom:3px solid transparent;border-radius:0;min-height:auto}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.sec{display:grid;gap:12px;min-width:0}
.sec-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
button,.btnlike{font:inherit;font-weight:600;font-size:.86rem;border-radius:var(--r);border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:7px 13px;cursor:pointer;min-height:36px;display:inline-flex;align-items:center;gap:6px}
button:hover,.btnlike:hover{border-color:var(--muted)}
button:disabled{opacity:.5;cursor:not-allowed}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.ghost{border-color:transparent;background:transparent;color:var(--muted);padding:6px 8px;min-height:32px}
button.ghost:hover{color:var(--bad)}
button.danger{background:var(--bad);color:#fff;border-color:var(--bad)}
.btnlike{position:relative}
.btnlike input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.btnlike:focus-within{outline:2px solid var(--accent);outline-offset:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:6px 8px;min-width:0}
input.num{text-align:right;font-family:var(--f-mono);font-size:.85rem;font-variant-numeric:tabular-nums}
input.no{color:var(--bad);font-weight:600}
input.nofab::placeholder{color:var(--bad);font-style:italic;opacity:.85}
input.nofab{background:var(--bad-soft)!important}
input[type="checkbox"]{width:18px;height:18px;accent-color:var(--accent);margin:0}
.hint{font-size:.82rem;color:var(--muted);margin:0;max-width:72ch}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-width:0}

/* Barra de días */
.daybar{display:grid;gap:10px;padding:12px;}
.daynav{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.daynav .fecha{font-family:var(--f-display);font-stretch:108%;font-weight:700;font-size:1.15rem;text-transform:capitalize;min-width:0}
.daynav input[type="date"]{font-family:var(--f-mono);font-size:.85rem}
.estado{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;padding:3px 9px;border-radius:99px;white-space:nowrap}
.estado.borrador{background:var(--warn-soft);color:var(--warn)}
.estado.version{background:var(--ok-soft);color:var(--ok)}
.estado.editado{background:var(--warn-soft);color:var(--warn)}
.strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}
.chip{flex:0 0 auto;display:grid;gap:0;text-align:left;font-weight:500;padding:6px 10px;min-height:auto;border-radius:var(--r)}
.chip b{font-family:var(--f-mono);font-size:.78rem}
.chip small{font-size:.7rem;color:var(--muted);text-transform:capitalize}
.chip .v{font-family:var(--f-mono);font-size:.68rem}
.chip.sel{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.chip.pasado{opacity:.75}
.chip.hoy b::after{content:" · hoy";color:var(--accent)}

.plants-today{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:8px}
.pt{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;padding:10px 12px}
.pt.off{opacity:.55}
.pt .name{font-weight:600}
.pt .cfg{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:.8rem;color:var(--muted)}
.pt .cfg label{display:flex;align-items:center;gap:6px}
.pt .cfg input[type="time"]{width:7.2em}
.pt .cfg input.num{width:4.2em}

.ln{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 6.5em auto 7.4em 2.2em;grid-template-areas:"obra mez ton pri ini del";gap:6px 10px;align-items:center;padding:7px 12px;border-bottom:1px solid var(--line)}
.ln .obra{grid-area:obra;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ln .obra small{display:block;font-weight:400;font-family:var(--f-mono);font-size:.7rem;color:var(--muted)}
.ln .mez{grid-area:mez;width:100%}
.ln .ton{grid-area:ton;width:100%}
.ln .pri{grid-area:pri}
.ln .ini{grid-area:ini;width:100%}
.ln .del{grid-area:del;justify-self:end}
.ln.zero .obra,.ln.zero .mez{color:var(--muted)}
.ln.cont .obra{visibility:hidden}
.ln-head{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--sunk);padding-block:6px}
.chk{display:flex;align-items:center;gap:6px;font-size:.82rem}
.addln{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;background:var(--sunk);border-radius:0 0 var(--r) var(--r)}
.addln select{flex:1 1 150px}
@media (max-width:600px){
  .ln{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"obra ton del" "mez pri ini"}
  .ln.cont .obra{visibility:visible}
  .ln .ton{width:6.5em}
  .ln-head{display:none}
}
.totals{display:flex;flex-wrap:wrap;gap:4px 16px;font-family:var(--f-mono);font-size:.8rem;color:var(--muted)}
.totals strong{color:var(--ink);font-weight:500}
.bar-accion{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;border:1px dashed var(--accent);background:var(--accent-soft);border-radius:var(--r);font-size:.88rem}

.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.kpi{background:var(--surface);padding:12px 14px;display:grid;gap:2px;align-content:start}
.kpi b{font-family:var(--f-display);font-stretch:108%;font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}
.kpi small{color:var(--muted);font-size:.78rem}
.kpi.alert b{color:var(--bad)}
@media (max-width:640px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.note{border-left:3px solid var(--accent);background:var(--accent-soft);padding:10px 14px;border-radius:0 var(--r) var(--r) 0;font-size:.9rem;display:grid;gap:6px}
.note.warn{border-color:var(--warn);background:var(--warn-soft)}
.note.bad{border-color:var(--bad);background:var(--bad-soft)}
.note ul{margin:0;padding-left:18px;display:grid;gap:4px}
.note .monto{font-family:var(--f-mono);font-size:.82rem;white-space:nowrap}
.falta{padding:12px 14px;display:grid;gap:6px;border-left:3px solid var(--warn)}
.falta.prio{border-left-color:var(--bad)}
.falta b{font-weight:600}
.falta ul{margin:0;padding-left:18px;display:grid;gap:3px;font-size:.88rem}
.falta .lbl{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.plant{padding:14px;display:grid;gap:12px}
.plant-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;align-items:baseline}
.meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.8rem;color:var(--muted);font-family:var(--f-mono);align-items:center}
.meta strong{color:var(--ink);font-weight:500}
.gantt{position:relative;height:46px;background:var(--idle);border-radius:4px;overflow:hidden;border:1px solid var(--line)}
.seg{position:absolute;top:0;bottom:0;border-right:2px solid var(--surface);color:#fff;font-size:.72rem;line-height:1.2;padding:5px 6px;overflow:hidden;white-space:nowrap;display:flex;flex-direction:column;justify-content:center}
.seg span{overflow:hidden;text-overflow:ellipsis}
.seg .t{font-family:var(--f-mono);opacity:.9}
.seg.prio{box-shadow:inset 0 4px 0 rgba(0,0,0,.35)}
.offz{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,var(--hatch-bg) 0 4px,var(--hatch) 4px 6px)}
.axis{position:relative;height:16px;font-family:var(--f-mono);font-size:.68rem;color:var(--muted)}
.axis span{position:absolute;transform:translateX(-50%)}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.8rem;color:var(--muted)}
.legend i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:5px;vertical-align:-2px;border:1px solid var(--line)}
.legend i.hatch{background:repeating-linear-gradient(135deg,var(--hatch-bg) 0 2px,var(--hatch) 2px 4px)}
.pill{display:inline-block;font-size:.72rem;font-weight:600;padding:1px 8px;border-radius:99px;white-space:nowrap}
.pill.alta{background:var(--bad-soft);color:var(--bad)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.falta{background:var(--warn-soft);color:var(--warn)}
.tag{font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:14px}
.err{background:var(--bad-soft);color:var(--bad);border-radius:var(--r);padding:10px 14px;font-weight:500}
.empty{padding:22px;display:grid;gap:10px;justify-items:start}

.tablebox{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.86rem}
th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}
th{font-family:var(--f-mono);font-weight:500;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:var(--sunk)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--f-mono);font-size:.82rem}
tr:last-child td{border-bottom:none}
tfoot td{font-weight:600;background:var(--sunk);border-top:1px solid var(--line)}
.edit td{padding:4px 6px}
.edit input,.edit select{border-color:transparent;background:transparent;width:100%;min-width:70px}
.edit input:hover,.edit select:hover{border-color:var(--line)}
.edit input.w-name{min-width:160px}
.edit input.num{min-width:96px}
.copybox{width:100%;min-height:160px;font-family:var(--f-mono);font-size:.8rem}
.banner{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;border:1px dashed var(--warn);background:var(--warn-soft);border-radius:var(--r);padding:10px 14px;font-size:.88rem}
.toast{font-size:.82rem;color:var(--muted)}
footer{font-size:.78rem;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}


/* --- v5: pedido con confirmación y observación --- */
.ln{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 6.2em auto 7.2em auto 2.2em;grid-template-areas:"obra mez ton pri ini conf del" ". obs obs obs obs obs .";row-gap:4px}
.ln .conf{grid-area:conf}
.ln .obs{grid-area:obs;width:100%;font-size:.8rem;padding:3px 8px;border-color:transparent;background:transparent;color:var(--muted)}
.ln .obs:hover,.ln .obs:focus{border-color:var(--line);background:var(--surface);color:var(--ink)}
.ln.porconf .conf{color:var(--warn);font-weight:600}
.ln-head{grid-template-areas:"obra mez ton pri ini conf del"}
@media (max-width:600px){
  .ln{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"obra ton del" "mez pri ini" "obs obs conf"}
}
/* --- v5: celdas de mezcla con precio y diseño --- */
/* --- v5: flete --- */
input.calc{box-shadow:inset 3px 0 0 var(--accent)}
.flete{padding:14px;display:grid;gap:12px}
.flete .params{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:.82rem;color:var(--muted);align-items:center}
.flete .params label{display:flex;gap:6px;align-items:center}
.flete .params input{width:6.5em}
.flete td.res{font-weight:600}
.flete .formula{font-family:var(--f-mono);font-size:.74rem;color:var(--muted);white-space:normal;max-width:52ch}
details.par{font-size:.85rem}
details.par summary{cursor:pointer;color:var(--accent);font-weight:600}
details.par .params{margin-top:8px}
/* --- v5: reporte --- */
.rep{padding:14px;display:grid;gap:12px}
.rep pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--f-body);font-size:.88rem;line-height:1.45;background:var(--sunk);border-radius:var(--r);padding:14px;max-height:520px;overflow:auto}
.seg2{display:inline-flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.seg2 button{border:none;border-radius:0;min-height:34px}
.seg2 button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
/* --- v6: vista previa de la tabla operacional (papel blanco, igual a como llega al correo) --- */
.hoja{background:#FFFFFF;color:#1D2326;border:1px solid var(--line);border-radius:var(--r);padding:14px;overflow-x:auto;max-height:560px;overflow-y:auto}
.hoja input.obs-tabla{width:100%;border:1px dashed #A6ADB0;background:#FAFBFA;color:#1D2326;font:inherit;font-size:.85rem;padding:3px 6px;border-radius:3px}
.hoja input.obs-tabla:focus{border-style:solid;border-color:#1B5B78;background:#FFFFFF}
.hoja input.obs-tabla::placeholder{color:#8A9499}
/* --- v7: pedido como matriz fija --- */
table.ped{table-layout:fixed;min-width:940px}
table.ped td{padding:3px 6px;vertical-align:middle}
table.ped th.c,table.ped td.c-chk{text-align:center}
table.ped td.c-obra{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:12px}
table.ped td.c-obra span{font-weight:600}
table.ped td.c-obra span.rep{color:var(--muted);font-weight:500}
table.ped td.c-obra small{display:block;font-family:var(--f-mono);font-size:.68rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
table.ped tr.zero td.c-obra span,table.ped tr.zero select{color:var(--muted)}
table.ped tr.porconf td.c-obra{box-shadow:inset 4px 0 0 var(--warn)}

table.ped input[type="time"]{width:100%}
table.ped tbody tr:hover td{background:var(--sunk)}
.pedleyenda{font-size:.78rem;color:var(--muted)}
/* ===================== v8 ===================== */
:root{--zebra:#F6F8F7;--info:#1B5B78;--info-soft:#DCE8EE}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--zebra:#20272A;--info:#6CB0D0;--info-soft:#1E3440}}
:root[data-theme="dark"]{--zebra:#20272A;--info:#6CB0D0;--info-soft:#1E3440}
/* Un solo estilo de encabezado en todas las tablas */
th,th.n{font-family:var(--f-body);font-size:.78rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted);background:var(--sunk);white-space:nowrap}
/* Pedido: matriz fija */
table.ped{min-width:1000px}
table.ped th{overflow:hidden;text-overflow:ellipsis}
table.ped td.c-obra b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis}
table.ped td.c-obra b.rep-ob{color:var(--muted);font-weight:500}
table.ped td.c-obra small{display:block}
/* Semáforo */
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none;background:var(--muted)}
.dot.rojo{background:var(--bad)}.dot.amarillo{background:var(--warn)}.dot.verde{background:var(--ok)}.dot.azul{background:var(--info)}
.estado-dia{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;font-weight:600;padding:4px 12px;border-radius:99px;background:var(--surface);border:1px solid var(--line)}
/* KPI con estado */
.kpi.k-rojo{box-shadow:inset 4px 0 0 var(--bad);background:var(--bad-soft)}
.kpi.k-amarillo{box-shadow:inset 4px 0 0 var(--warn);background:var(--warn-soft)}
.kpi.k-verde{box-shadow:inset 4px 0 0 var(--ok)}
/* Costos: franja secundaria de una línea (uso interno) */
.costos{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:baseline;padding:9px 14px;border:1px dashed var(--line);border-radius:var(--r);font-size:.85rem;color:var(--muted)}
.costos b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.costos .eti{font-size:.72rem;font-weight:600;color:var(--warn);text-transform:uppercase;letter-spacing:.04em}
/* Alertas */
.alertas{padding:12px 16px 6px;display:grid;gap:4px}
.al-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 14px;align-items:center;padding-bottom:4px}
.al-cnt{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.8rem;color:var(--muted)}
.al-cnt span{display:inline-flex;align-items:center;gap:6px}
.al-list{list-style:none;margin:0;padding:0}
.al{border-top:1px solid var(--line);padding:9px 0}
.al summary,.al .sum{display:flex;gap:10px;align-items:center;list-style:none}
.al summary{cursor:pointer}
.al summary::-webkit-details-marker{display:none}
.al .t{flex:1;min-width:0}
.al .tipo{font-size:.72rem;color:var(--muted);white-space:nowrap}
.al summary .mas{font-size:.76rem;color:var(--accent);white-space:nowrap}
.al details[open] summary .mas{visibility:hidden}
.al .body{padding:6px 0 2px 19px;display:grid;gap:5px;font-size:.86rem}
.al .body ul{margin:0;padding-left:18px;display:grid;gap:2px}
.al .lbl{font-size:.72rem;font-weight:600;color:var(--muted)}
.al-vacio{display:flex;gap:10px;align-items:center;padding:6px 0 10px;color:var(--muted)}
/* Gantt único */
.gt{padding:14px 18px 12px;display:grid;gap:8px}
.gt-row{display:grid;grid-template-columns:180px minmax(0,1fr);gap:14px;align-items:center}
.gt-lbl{min-width:0}
.gt-lbl b{display:block;font-weight:600;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gt-lbl small{display:flex;align-items:center;gap:6px;font-size:.76rem;color:var(--muted);font-family:var(--f-mono);white-space:nowrap}
.gt-track{position:relative;height:44px;background:var(--idle);border-radius:4px;overflow:hidden}
.gt-track .gl{position:absolute;top:0;bottom:0;width:1px;background:var(--line);opacity:.8}
.gt-track .seg{border-right-width:2px}
.gt-axis{position:relative;height:16px;font-family:var(--f-mono);font-size:.7rem;color:var(--muted)}
.gt-axis span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.gt-axis span.ini{transform:none}
.gt-axis span.fin{transform:translateX(-100%)}
.gt-off{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,var(--hatch-bg) 0 4px,var(--hatch) 4px 6px)}
@media (max-width:640px){.gt-row{grid-template-columns:minmax(0,1fr);gap:4px}.gt-row.ax>div:first-child{display:none}}
/* Tabla operacional dentro del plan */
.tabla-op{display:grid;gap:10px}
/* Mezclas ordenada */
table.tmz{table-layout:fixed}
table.tmz th.pl{text-align:center;border-left:1px solid var(--line)}
table.tmz th.sub{font-weight:500;font-size:.72rem;background:var(--sunk)}
table.tmz td{padding:4px 6px}
table.tmz td.pp{border-left:1px solid var(--line)}
table.tmz td.z,table.tmz th.z{background:var(--zebra)}
table.tmz th.z{background:color-mix(in srgb,var(--sunk) 70%,var(--zebra))}
table.tmz tr.grp td{border-top:2px solid var(--line)}
table.tmz input.num{text-align:right}
table.tmz input.nofab{background:transparent!important}
table.tmz input.nofab::placeholder{color:var(--muted);font-style:italic;opacity:.8}
table.tmz input.dis{font-family:var(--f-mono);font-size:.8rem}
table.tmz input.dis:disabled{opacity:.45}
/* Obras: celdas sin flete, discretas */
#tObras input.nofab{background:transparent!important}
#tObras input.nofab::placeholder{color:var(--muted);font-style:italic;opacity:.8}
table.tmz input.nofab::placeholder{font-family:var(--f-body);font-size:.8rem}
@media (max-width:640px){.gt-axis span.sec{display:none}.al .tipo{display:none}}
/* ===================== v9: bloqueos ===================== */
.gt-blk{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(45deg,var(--warn-soft) 0 5px,color-mix(in srgb,var(--warn) 55%,transparent) 5px 7px);display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:1}
.gt-blk span{font-size:.72rem;font-weight:600;color:var(--ink);background:var(--surface);padding:1px 6px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:92%}
.legend i.blk{background:repeating-linear-gradient(45deg,var(--warn-soft) 0 2px,var(--warn) 2px 4px)}
.blqs{grid-column:1/-1;display:grid;gap:6px;padding:8px;background:var(--warn-soft);border-radius:var(--r)}
.blq{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:.8rem}
.blq input[type="time"]{width:7.4em}
.blq input.mot{flex:1 1 140px;min-width:120px}
.pt-pie{grid-column:1/-1;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 10px;border-top:1px solid var(--line);padding-top:6px;font-size:.78rem;color:var(--muted)}
.pt-pie .res{font-family:var(--f-mono);font-size:.74rem}
button.lnk{color:var(--accent);padding:2px 4px;min-height:26px;font-size:.8rem}
button.lnk:hover{color:var(--accent);text-decoration:underline}
.marca{font-size:.72rem;color:var(--muted);text-align:center;letter-spacing:.02em;padding-top:4px}
.pt{align-content:start}
.blq input[type="time"]{width:8.4em}
/* ===================== v10: seguimiento real, prioridades, colores ===================== */
/* Estados del día */
.estado.ejecutado{background:var(--ok);color:var(--surface)}
.chip.prog{box-shadow:inset 0 3px 0 var(--accent)}
.chip.borr .v{color:var(--warn)}
.chip.ej{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}
.chip.ej .v{color:var(--ok);font-weight:600}
.chip.ej.sel{box-shadow:inset 0 0 0 1px var(--accent)}
.ejbar{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}
.ejbar span{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
/* Prioridad y Junto en el pedido */
select.prio{font-weight:600}
select.prio.p1{color:var(--bad);background:var(--bad-soft)}
select.prio.p-1{color:var(--muted);font-style:italic}
input.junto{text-align:center;text-transform:uppercase;font-family:var(--f-mono);font-weight:700;width:100%}
/* Color de planta y de mezcla */
.pt{border-top:4px solid var(--pc,var(--line))}
.gt-lbl{border-left:4px solid var(--pc,transparent);padding-left:8px}
.colsel{display:inline-flex;align-items:center;gap:6px}
.colsel i{width:14px;height:14px;border-radius:3px;flex:none;border:1px solid rgba(0,0,0,.15)}
.colsel select{min-width:7.2em}
.tag.adic{display:inline-block;margin-left:6px;font-size:.68rem;font-weight:600;color:var(--info);background:var(--info-soft);padding:1px 6px;border-radius:99px;vertical-align:middle}
/* Gantt: intercalado y cambios de mezcla */
.gt-track .seg.inter{padding:0 6px;border-bottom:1px solid var(--surface);justify-content:center}
.gt-track .seg.inter span{font-size:.68rem;line-height:1.1}
.gt-set{position:absolute;top:0;bottom:0;z-index:1;background:repeating-linear-gradient(90deg,#3E474B 0 3px,#8A9499 3px 5px)}
.legend i.set{background:repeating-linear-gradient(90deg,#3E474B 0 2px,#8A9499 2px 3px)}
/* Alertas aceptadas */
.al .acep-b{opacity:.75;white-space:nowrap}
.al:hover .acep-b,.al .acep-b:focus{opacity:1}
.al.acep{opacity:.62}
.al.acep .t{text-decoration:line-through;text-decoration-color:var(--muted)}
.al .acep-t{font-size:.72rem;color:var(--ok);font-weight:600;white-space:nowrap}
/* Cierre del día */
.cierre-inv{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:14px 16px}
table.cierre{table-layout:fixed;min-width:960px}
table.cierre td{padding:3px 6px;vertical-align:middle}
table.cierre td:first-child{padding-left:12px;font-weight:600}
table.cierre tr.dif td{background:color-mix(in srgb,var(--warn-soft) 45%,transparent)}
table.cierre td.dif-c{font-family:var(--f-mono);font-weight:600}
table.cierre td.dif-c.neg{color:var(--bad)}
table.cierre td.dif-c.pos{color:var(--ok)}
table.cierre select.pend{border-color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn)}
table.cierre tr.sub td{background:var(--sunk);font-size:.78rem;font-weight:600;color:var(--muted);padding:6px 12px}
table.cierre input:disabled,table.cierre select:disabled{opacity:1;color:var(--ink);background:transparent;border-color:transparent;-webkit-text-fill-color:var(--ink)}
.cierre-pie{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:10px 12px;border-top:1px solid var(--line);font-size:.88rem}
.c-verde{color:var(--ok)}.c-amarillo{color:var(--warn)}.c-rojo{color:var(--bad)}
.warn-t{color:var(--warn);font-weight:600}
/* Seguimiento */
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:860px){.grid2{grid-template-columns:minmax(0,1fr)}}
.cump{padding:14px 16px;display:grid;gap:8px;align-content:start}
.cump table td,.cump table th{padding:6px 8px}
.cump td .dot{vertical-align:0}
.barra{display:block;height:8px;border-radius:99px;background:var(--idle);overflow:hidden;min-width:60px}
.barra i{display:block;height:100%;background:var(--accent);border-radius:99px}
td.bar-c{width:28%}
.cump tr.sin td{color:var(--muted);font-style:italic}
#dias tr.ej td:first-child{box-shadow:inset 4px 0 0 var(--ok)}
/* Datos: sub-secciones */
.subtabs{align-self:flex-start}
.subtabs button{padding:0 18px;font-weight:600}
table.ped tr.porconf td:nth-child(6){background:transparent}
table.ped tr.porconf td:nth-child(7){background:var(--warn-soft)}
table.ped{min-width:1080px}
td.bar-c{width:24%;min-width:70px}
/* ===================== v11: navegación más simple ===================== */
.tabs{align-items:center}
.tab .badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:99px;background:var(--warn);color:var(--surface);font-family:var(--f-body);font-size:.7rem;font-weight:700;vertical-align:2px}
.pasos{margin-left:auto;display:flex;gap:2px;padding-left:12px}
.pasos a{font-size:.78rem;font-weight:600;color:var(--muted);text-decoration:none;padding:5px 9px;border-radius:99px;white-space:nowrap}
.pasos a:hover{background:var(--sunk);color:var(--ink)}
.pasos.off{display:none}
@media (max-width:640px){.pasos{display:none}}
#secPlantas,#secPedido,#plan,#reporteSec,#cierreSec{scroll-margin-top:64px}
h2 .n{display:inline-grid;place-items:center;width:1.45em;height:1.45em;margin-right:.45em;border-radius:50%;background:var(--ink);color:var(--surface);font-size:.72em;font-family:var(--f-body);vertical-align:.12em}
/* Sección plegable de plantas */
details.plegable>summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
details.plegable>summary::-webkit-details-marker{display:none}
details.plegable>summary h2{margin:0}
details.plegable>summary h2::after{content:"▾";font-size:.7em;color:var(--muted);margin-left:.5em;display:inline-block;transition:transform .15s}
details.plegable:not([open])>summary h2::after{transform:rotate(-90deg)}
details.plegable>summary .resumen{font-family:var(--f-mono);font-size:.78rem;color:var(--muted)}
details.plegable[open]>summary{margin-bottom:12px}
/* Barra del día con sus acciones */
.dia-acc{display:grid;gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:2px}
.dia-acc .bar-accion{margin:0}
.dia-acc .bar-accion[hidden]{display:none}
/* Datos: pestañas de segundo nivel */
.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);align-self:stretch}
.subtabs button{border:none;border-bottom:3px solid transparent;border-radius:0;background:none;min-height:auto;padding:8px 14px;font-weight:600;color:var(--muted)}
.subtabs button[aria-pressed="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.subtabs small{font-family:var(--f-mono);font-size:.7rem;color:var(--muted);background:var(--sunk);border-radius:99px;padding:1px 6px;margin-left:3px}
ul.cambios{margin:8px 0 0;padding-left:18px;display:grid;gap:3px;font-size:.86rem}
.dia-acc .bar-accion{border:none;background:transparent;padding:0;min-height:36px}
.dia-acc .ejbar{background:var(--ok-soft);padding:8px 12px;border-radius:var(--r)}
.dia-acc #preciosBar{background:var(--warn-soft);padding:8px 12px;border-radius:var(--r)}
/* v12: flete por revisar */
#tObras small.fl-aviso{display:block;font-size:.72rem;line-height:1.25;margin-top:3px;max-width:30ch;white-space:normal}
#tObras tr.fl-warn small.fl-aviso{color:var(--warn);font-weight:600}
#tObras tr.fl-info small.fl-aviso{color:var(--muted)}
#tObras tr.fl-warn td:first-child{box-shadow:inset 4px 0 0 var(--warn)}
#tObras input.cero{box-shadow:inset 0 0 0 2px var(--warn)!important;background:var(--warn-soft)!important}
#tObras input:disabled{background:transparent}
.avisofl{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 40%,var(--line))}
#tObras select[data-k="cliente"]{min-width:7.6em}

