/* Producción Hormitec — flujo por pieza + tablero de planta. Usa los tokens de app.css y la capa hormitec-ui-T. */
.app { max-width: 720px; margin: 0 auto; }
body.tb .app { max-width: 1280px; }
.header { display: flex; align-items: center; gap: 10px; }
.brand { background: none; border: 0; padding: 0; cursor: pointer; }
.pr-top { display: flex; gap: 6px; align-items: center; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
.pr-chip { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font: inherit; font-size: .85rem; cursor: pointer; }
.pr-chip.sel { background: var(--red); border-color: var(--red); color: #fff; }
.pr-red { background: #F59E0B; border-color: #F59E0B; color: #1A1A1A; }
.main { padding: 8px 14px 20px; }
.muted, .meta { color: var(--muted); }
.small { font-size: .85rem; }
.btn-back { margin: 6px 0 2px; }
/* PIN como Vigilancia */
.pin { max-width: 360px; margin: 5vh auto 0; text-align: center; }
.pin h1 { margin-bottom: 4px; }
.pin-dots { display: flex; justify-content: center; gap: 14px; margin: 18px 0; }
.pin-dots i { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-strong); }
.pin-dots i.on { background: var(--red); border-color: var(--red); }
.teclado { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.teclado button { min-height: 64px; font-size: 26px; font-weight: 700; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); color: var(--text); font-family: inherit; }
.teclado button:active { background: var(--border); }
.pin-err { color: var(--red); min-height: 22px; }
.pin-mal { animation: pinMal .35s; }
@keyframes pinMal { 0%,100% { transform: none; } 25% { transform: translateX(-8px); } 75% { transform: translateX(8px); } }
.flow-btn.sel { outline: 2px solid var(--red); }
a.flow-btn { text-decoration: none; color: inherit; }
/* selección */
.pr-dos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 12px 0; }
.pr-op { min-height: 84px; border-radius: 16px; border: 2px solid var(--border-strong); background: var(--surface); color: var(--text); font: inherit; font-size: 1.05rem; cursor: pointer; }
.pr-op.sel { border-color: var(--red); background: var(--red-soft); }
html[data-theme="dark"] .pr-op.sel { background: rgba(227,31,38,.18); }
.pr-search { width: 100%; min-height: 52px; padding: 10px 18px; border-radius: 999px; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font: inherit; font-size: 1rem; box-sizing: border-box; margin: 6px 0; }
select.pr-search, input[type=number].pr-search, input[type=time].pr-search, input[type=date].pr-search { border-radius: 14px; }
.pr-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.pr-lista { display: grid; gap: 0; border: 1px solid var(--border); border-radius: 14px; overflow: hidden; margin: 8px 0; background: var(--surface); }
.pr-item { display: grid; gap: 2px; text-align: left; padding: 12px 14px; border: 0; border-bottom: 1px solid var(--border); background: transparent; color: var(--text); font: inherit; cursor: pointer; width: 100%; }
.pr-item:last-child { border-bottom: 0; }
.pr-item small { color: var(--muted); font-size: .82rem; }
.pr-item.sel { background: var(--red-soft); }
.pr-sig, .pr-grande { width: 100%; min-height: 56px; margin-top: 14px; font-size: 1.05rem; }
.pr-card { display: grid; gap: 4px; padding: 14px; border-radius: 16px; border: 1px solid var(--border-strong); background: var(--surface); margin: 10px 0; }
.pr-pieza { font-size: 1.15rem; line-height: 1.25; }
.pr-lab { display: grid; gap: 2px; font-size: .85rem; color: var(--muted); margin-top: 8px; flex: 1; }
/* producción */
.pr-cab { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; margin: 8px 0 4px; }
.pr-cab > div { display: grid; gap: 2px; min-width: 0; }
.pr-estado { white-space: nowrap; font-weight: 700; font-size: .85rem; padding: 6px 10px; border-radius: 999px; }
.pr-estado.activa { background: #1FA66A; color: #fff; }
.pr-estado.pausada { background: #F59E0B; color: #1A1A1A; }
.pr-estado.finalizada { background: var(--border-strong); color: var(--text); }
.pr-contador { display: grid; justify-items: center; margin: 10px 0; }
.pr-contador b { font-size: 4.6rem; line-height: 1; font-variant-numeric: tabular-nums; }
.pr-nueva { width: 100%; min-height: 120px; border: 0; border-radius: 22px; background: #1FA66A; color: #fff; font: inherit; font-size: 1.5rem; font-weight: 700; cursor: pointer; box-shadow: 0 6px 18px rgba(31,166,106,.35); touch-action: manipulation; }
.pr-nueva:active { transform: scale(.98); }
.pr-nueva.pulso { animation: pulso .35s; }
@keyframes pulso { 0% { box-shadow: 0 0 0 0 rgba(31,166,106,.7); } 100% { box-shadow: 0 0 0 22px rgba(31,166,106,0); } }
.pr-fila { display: flex; gap: 8px; margin-top: 10px; align-items: flex-end; }
.pr-fila > * { flex: 1; min-width: 0; }
.pr-fila .btn-secondary, .pr-fila .btn-primary { min-height: 52px; margin: 0; }
.pr-pausa { border-color: #F59E0B !important; }
.pr-pausada { display: grid; gap: 4px; padding: 16px; border-radius: 16px; margin: 10px 0; color: #fff; }
.pr-rojo { background: #C81E25; color: #fff; } .pr-naranja { background: #EA7A12; color: #fff; } .pr-amarillo { background: #E5B000; color: #1A1A1A; } .pr-azul { background: #2563EB; color: #fff; } .pr-gris { background: #6B7280; color: #fff; }
.pr-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin: 14px 0; }
.pr-kpis > div { display: grid; gap: 2px; padding: 12px; border-radius: 14px; background: var(--surface); border: 1px solid var(--border); text-align: center; }
.pr-kpis small { color: var(--muted); font-size: .78rem; }
.pr-kpis b { font-size: 1.5rem; font-variant-numeric: tabular-nums; }
b.ok { color: #1FA66A; } b.med { color: #E5A000; } b.mal { color: #E31F26; }
.pr-ok { padding: 12px 14px; border-radius: 14px; background: var(--ok-soft); color: var(--text); margin: 10px 0; }
html[data-theme="dark"] .pr-ok { background: rgba(31,166,106,.18); }
/* modal */
#capa { position: fixed; inset: 0; z-index: 50; background: rgba(0,0,0,.55); display: flex; align-items: flex-end; justify-content: center; padding: 10px; overflow-y: auto; }
#capa[hidden] { display: none; }
.pr-modal { width: 100%; max-width: 560px; background: var(--surface); color: var(--text); border-radius: 20px; padding: 18px 16px; margin: auto 0; box-shadow: 0 10px 40px rgba(0,0,0,.35); }
.pr-modal h2 { margin: 0 0 10px; }
.pr-motivos { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 8px; }
.pr-mot { min-height: 64px; border: 0; border-radius: 14px; font: inherit; font-weight: 700; cursor: pointer; }
.co-pa { align-items: center; } .co-pa .btn-text { flex: 0 0 36px; }
/* barras */
.pr-barras { display: flex; gap: 6px; align-items: flex-end; height: 150px; padding: 8px 4px 0; border-radius: 14px; background: var(--surface); border: 1px solid var(--border); overflow-x: auto; }
.pr-barras > div { flex: 1 0 28px; display: grid; grid-template-rows: 1fr auto auto; justify-items: center; height: 100%; }
.pr-barras i { align-self: end; width: 70%; min-height: 2px; background: var(--muted); border-radius: 6px 6px 0 0; }
.pr-barras .hoy i { background: var(--red); }
.pr-barras small { font-size: .7rem; color: var(--muted); } .pr-barras b { font-size: .75rem; }
.pr-tabla { overflow-x: auto; } .pr-tabla table { width: 100%; border-collapse: collapse; background: var(--surface); border-radius: 14px; overflow: hidden; }
.pr-tabla th, .pr-tabla td { padding: 9px 10px; border-bottom: 1px solid var(--border); text-align: right; font-size: .9rem; } .pr-tabla th:first-child, .pr-tabla td:first-child { text-align: left; }
/* tablero */
.tb-pl { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.tb-oee { display: grid; grid-template-columns: minmax(150px, 220px) 1fr; gap: 12px; align-items: center; margin: 10px 0; }
.tb-gauge { aspect-ratio: 1; border-radius: 50%; display: grid; place-content: center; text-align: center; border: 12px solid var(--border-strong); background: var(--surface); }
.tb-gauge.ok { border-color: #1FA66A; } .tb-gauge.med { border-color: #E5A000; } .tb-gauge.mal { border-color: #E31F26; }
.tb-gauge b { font-size: 2.6rem; } .tb-gauge small { color: var(--muted); }
.tb-dpc { display: grid; gap: 10px; } .tb-dpc > div { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; }
.tb-dpc i { grid-column: 1 / -1; height: 10px; border-radius: 6px; background: var(--border); overflow: hidden; } .tb-dpc em { display: block; height: 100%; background: var(--red); }
.tb-dpc b { font-size: 1.3rem; }
.tb-puestos { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; margin: 8px 0; }
.tb-p { display: grid; gap: 6px; padding: 12px; border-radius: 16px; border: 1px solid var(--border-strong); }
.tb-p.prod { background: #14532D; color: #fff; border-color: #1FA66A; }
.tb-p-cab { display: flex; justify-content: space-between; gap: 6px; } .tb-p-cab span { opacity: .8; font-size: .8rem; }
.tb-p-pz { font-size: .9rem; opacity: .95; } .tb-p-n b { font-size: 2.2rem; margin-right: 8px; } .tb-p-n small, .tb-p-pie { font-size: .82rem; opacity: .9; }
@media (max-width: 480px) { .tb-oee { grid-template-columns: 120px 1fr; } .tb-gauge b { font-size: 1.8rem; } .tb-gauge { border-width: 9px; } .pr-contador b { font-size: 4rem; } }
[hidden] { display: none !important; }
html body .header { display: flex !important; flex-wrap: nowrap !important; align-items: center; }
html body .header .brand { order: 0; } html body .header .pr-top { order: 1; } html body .header .theme-toggle { order: 2; }
html[data-hx-app="produccion"] body div.app header.header { flex-wrap: nowrap !important; }
html body div.app header.header .pr-top { flex: 1 1 auto; min-width: 0; }
html body #btn-salir[hidden], html body #top-red[hidden], html body #top-planta[hidden] { display: none !important; }
html body .pg-cab { display: flex; align-items: center; } html body .pg-cab .pg-n { margin-left: auto; }
html body div.app header.header .pr-top { flex-wrap: nowrap !important; } html body #btn-salir { min-width: 0 !important; padding: 0 4px; }
.tb-vivo { display: inline-flex; align-items: center; gap: 8px; margin: 6px 0 0; font-size: .85rem; color: var(--muted); }
.tb-vivo i { width: 10px; height: 10px; border-radius: 50%; background: #9CA3AF; }
.tb-vivo.on i { background: #1FA66A; box-shadow: 0 0 0 0 rgba(31,166,106,.6); animation: vivo 2s infinite; }
.tb-vivo.off i { background: #E31F26; } .tb-vivo.off { color: #E31F26; }
.tb-vivo.pausa i { background: #E5A000; }
@keyframes vivo { 0% { box-shadow: 0 0 0 0 rgba(31,166,106,.6); } 70% { box-shadow: 0 0 0 8px rgba(31,166,106,0); } 100% { box-shadow: 0 0 0 0 rgba(31,166,106,0); } }
@media (prefers-reduced-motion: reduce) { .tb-vivo.on i { animation: none; } }
.pr-sec { margin: 14px 0 4px; font-size: 1rem; }
.pr-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.pr-par.abierta { background: rgba(227,31,38,.12); border-left: 4px solid #E31F26; }
.pr-tot { flex-wrap: wrap; } .pr-tot > * { flex: 1 1 260px; }
.tb-paradas { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; margin: 8px 0; }
.tb-par { display: grid; gap: 4px; padding: 12px 14px; border-radius: 16px; background: #B91C1C; color: #fff; border: 2px solid #E31F26; animation: parpadeoPar 2.4s infinite; }
.tb-par-t { font-size: 1.8rem; font-weight: 700; font-variant-numeric: tabular-nums; } .tb-par small { opacity: .9; }
@keyframes parpadeoPar { 50% { box-shadow: 0 0 0 4px rgba(227,31,38,.35); } }
@media (prefers-reduced-motion: reduce) { .tb-par { animation: none; } }
/* —— operario: contadores buenas + scrap —— */
.pr-conts { display: grid; grid-template-columns: 1.4fr 1fr; gap: 10px; margin: 10px 0 4px; }
.pr-conts .pr-contador { margin: 0; padding: 10px 6px; border-radius: 18px; background: var(--surface); border: 1px solid var(--border); }
.pr-contador.scrap b { color: #E31F26; font-size: 3.4rem; } .pr-contador.scrap { border-color: rgba(227,31,38,.45); background: rgba(227,31,38,.07); }
.pr-cal { text-align: center; margin: 4px 0 8px; } .pr-cal b { font-size: 1.15rem; }
.latido b { animation: latido .5s ease-out; } .baja b { animation: bajaN .45s ease-out; }
@keyframes latido { 0% { transform: scale(1); } 35% { transform: scale(1.25); } 100% { transform: scale(1); } }
@keyframes bajaN { 0% { transform: translateY(0); opacity: 1; } 40% { transform: translateY(6px); opacity: .4; } 100% { transform: none; opacity: 1; } }
.pr-contador.scrap.latido { animation: flashR .6s; } @keyframes flashR { 30% { box-shadow: 0 0 0 6px rgba(227,31,38,.35); } }
@media (max-width: 480px) { .pr-conts .pr-contador b { font-size: 3.4rem; } .pr-contador.scrap b { font-size: 2.8rem; } }

/* —— tablero: contadores animados —— */
.cnt { font-variant-numeric: tabular-nums; display: inline-block; }
.cnt.sube { animation: cntSube .9s ease-out; } .cnt.baja { animation: cntBaja .9s ease-out; }
@keyframes cntSube { 0% { color: #1FA66A; transform: scale(1.18); } 100% { transform: none; } }
@keyframes cntBaja { 0% { color: #E31F26; transform: scale(.9); } 100% { transform: none; } }
@media (prefers-reduced-motion: reduce) { .cnt.sube, .cnt.baja, .latido b, .baja b { animation: none; } }
.tb-dpc span b { font-size: 1.3rem; } .tb-dpc span.ok b { color: #1FA66A; } .tb-dpc span.med b { color: #E5A000; } .tb-dpc span.mal b { color: #E31F26; }
.tb-tvbtn { margin-left: auto; }
.tb-ppl { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; }
.tb-ppl > div { display: grid; padding: 8px 10px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); } .tb-ppl b { font-size: 1.6rem; } .tb-ppl small { color: var(--muted); } .tb-ppl em.rojo { color: #E31F26; font-style: normal; font-weight: 700; }

/* —— status por sector (estilo página de status) —— */
.st-gen { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 16px; margin: 8px 0; border: 1px solid var(--border-strong); flex-wrap: wrap; }
.st-gen > div { display: grid; flex: 1 1 auto; } .st-gen b { font-size: 1.25rem; } .st-gen small { opacity: .85; }
.st-gen .tb-vivo { margin: 0; }
.st-gen.st-verde { background: rgba(31,166,106,.14); border-color: #1FA66A; } .st-gen.st-amarillo { background: rgba(229,160,0,.16); border-color: #E5A000; }
.st-gen.st-rojo { background: rgba(227,31,38,.16); border-color: #E31F26; } .st-gen.st-gris { background: var(--surface); }
.st-sem { width: 14px; height: 14px; border-radius: 50%; background: #9CA3AF; flex: none; display: inline-block; }
.st-verde .st-sem { background: #1FA66A; box-shadow: 0 0 0 4px rgba(31,166,106,.25); } .st-amarillo .st-sem { background: #E5A000; box-shadow: 0 0 0 4px rgba(229,160,0,.25); }
.st-rojo .st-sem { background: #E31F26; box-shadow: 0 0 0 4px rgba(227,31,38,.3); animation: semR 1.6s infinite; }
@keyframes semR { 50% { box-shadow: 0 0 0 7px rgba(227,31,38,.05); } }
.st-lista { display: grid; gap: 6px; margin: 6px 0 10px; }
.st-pl { font-weight: 700; margin-top: 6px; } .st-pl small { color: var(--muted); font-weight: 400; margin-left: 6px; }
.st-fila, .st-eje { display: grid; grid-template-columns: minmax(130px, 1.1fr) 2.4fr repeat(3, 64px); gap: 10px; align-items: center; }
.st-fila { padding: 8px 10px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); cursor: pointer; }
.st-fila.sel { outline: 2px solid var(--red); } .st-fila.st-rojo { border-color: #E31F26; background: rgba(227,31,38,.1); }
.st-nom { display: grid; grid-template-columns: auto 1fr; gap: 0 8px; align-items: center; min-width: 0; } .st-nom small { grid-column: 2; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.st-nom b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.st-bar { display: flex; gap: 2px; height: 30px; min-width: 0; } .st-bar i { flex: 1 1 0; border-radius: 3px; min-width: 2px; }
.b-verde { background: #1FA66A; } .b-amarillo { background: #E5A000; } .b-rojo { background: #E31F26; } .b-gris { background: var(--border-strong); opacity: .55; }
.st-num { display: grid; text-align: right; } .st-num b { font-variant-numeric: tabular-nums; } .st-num small { color: var(--muted); font-size: .72rem; }
.st-eje > div { position: relative; height: 14px; grid-column: 2; } .st-eje span { position: absolute; transform: translateX(-50%); font-size: .7rem; color: var(--muted); white-space: nowrap; }
.st-eje span:first-child { transform: none; } .st-eje span:last-child { transform: translateX(-100%); }
.st-ley, .g-ley { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: .75rem; color: var(--muted); } .st-ley i, .g-ley i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 5px; vertical-align: -2px; }
@media (max-width: 640px) {
  .st-fila { grid-template-columns: 1fr repeat(3, auto); gap: 4px 10px; } .st-fila .st-bar { grid-column: 1 / -1; grid-row: 2; height: 22px; }
  .st-eje { display: none; } .st-num { min-width: 46px; }
}
/* —— gráfico de estabilidad —— */
.g-cab { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; margin: 6px 0; }
.g-sel { display: flex; gap: 6px; overflow-x: auto; max-width: 100%; } .g-sel .pr-chip { white-space: nowrap; }
.g-ind { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border-strong); }
.g-ind small { color: var(--muted); } .g-ind.st-verde { border-color: #1FA66A; } .g-ind.st-amarillo { border-color: #E5A000; } .g-ind.st-rojo { border-color: #E31F26; }
.g-caja { width: 100%; min-height: 190px; } .g-svg { display: block; }
.g-svg text { font-size: 11px; fill: var(--muted); } .g-grid { stroke: var(--border); stroke-width: 1; }
.g-linea { fill: none; stroke: #3B82F6; stroke-width: 2.5; stroke-linejoin: round; } .g-area { fill: rgba(59,130,246,.12); }
.g-prom { stroke: var(--text, #888); stroke-width: 1.5; stroke-dasharray: 6 4; opacity: .8; } .g-banda { fill: rgba(148,163,184,.2); }
.g-std { fill: none; stroke: #1FA66A; stroke-width: 2; stroke-dasharray: 2 4; }
.g-par { fill: rgba(227,31,38,.18); } .g-par.ab { fill: rgba(227,31,38,.32); }
.g-pt { stroke: var(--surface, #fff); stroke-width: 1.5; } .g-pt.b-verde { fill: #3B82F6; } .g-pt.b-gris { fill: #9CA3AF; opacity: 1; }
.l-linea { background: #3B82F6; height: 3px !important; } .l-prom { border-top: 2px dashed currentColor; height: 0 !important; } .l-banda { background: rgba(148,163,184,.35); }
.l-std { border-top: 2px dotted #1FA66A; height: 0 !important; } .l-par { background: rgba(227,31,38,.35); }
.rk { display: grid; gap: 6px; } .rk-f { display: grid; grid-template-columns: 22px minmax(0, 1.4fr) 1fr auto 56px; gap: 8px; align-items: center; }
.rk-i { color: var(--muted); text-align: right; } .rk-n { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .rk-b { height: 10px; border-radius: 6px; background: var(--border); overflow: hidden; } .rk-b i { display: block; height: 100%; background: #1FA66A; }
.rk-f small { color: #E31F26; font-size: .72rem; }

/* —— modo TV / pantalla grande (?tv=1) —— */
body.tv { overflow: hidden; }
body.tv .app { max-width: none !important; width: 100vw; height: 100vh; display: flex; flex-direction: column; padding: 0 !important; }
body.tv .hx-ayuda-pie { display: none; }
body.tv .header { padding: 4px 1vw !important; min-height: 0 !important; } body.tv .header .brand-logo { height: 3.4vh !important; }
body.tv #tb-hora { font-size: 2.2vh; font-weight: 700; }
html:has(body.tv) { font-size: clamp(13px, 1.02vw, 24px); }
body.tv .main { flex: 1; min-height: 0; padding: 0 1vw 1vh !important; max-width: none !important; }
.tvg { height: 100%; display: grid; gap: .8vw; grid-template-columns: 1.05fr 1.5fr 1.5fr 1.1fr; grid-template-rows: auto minmax(0, 1fr) minmax(0, 1fr);
  grid-template-areas: "gen gen gen gen" "kpi graf graf par" "kpi st st rk"; }
.tv-gen { grid-area: gen; display: flex; gap: 1vw; align-items: center; } .tv-gen .st-gen { flex: 1; margin: 0; padding: .7vh 1vw; } .tv-gen .st-gen b { font-size: 1.7rem; }
.tv-gen .tb-pl { margin: 0; flex-wrap: nowrap; } .tv-gen .tb-tvbtn { margin-left: 0; }
.tv-p { min-height: 0; overflow: hidden; background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: .8vh .8vw; display: flex; flex-direction: column; }
.tv-p .pg-cab { margin: 0 0 .5vh !important; padding: 0 !important; font-size: 1.05rem; }
.tv-kpi { grid-area: kpi; gap: .6vh; } .tv-graf { grid-area: graf; } .tv-st { grid-area: st; } .tv-par { grid-area: par; } .tv-rk { grid-area: rk; }
.tv-kpi .tb-oee { grid-template-columns: 1fr; justify-items: center; margin: 0; gap: .8vh; } .tv-kpi .tb-gauge { width: 15vh; border-width: 1.3vh; } .tv-kpi .tb-gauge b { font-size: 4.2vh; }
.tv-kpi .tb-dpc { width: 100%; gap: .6vh; } .tv-kpi .tb-dpc span b { font-size: 1.6rem; }
.tv-kpi .pr-kpis { grid-template-columns: 1fr 1fr !important; gap: .5vh .5vw; margin: 0; } .tv-kpi .pr-kpis > div { padding: .5vh .5vw; } .tv-kpi .pr-kpis b { font-size: 2.1rem; }
.tv-kpi .tb-ppl { grid-template-columns: 1fr; gap: .4vh; } .tv-kpi .tb-ppl > div { grid-template-columns: 1fr auto; padding: .3vh .6vw; } .tv-kpi .tb-ppl > div small:last-child { grid-column: 1 / -1; }
.tv-graf .g-caja { flex: 1; min-height: 0; } .tv-graf .g-svg text { font-size: 15px; } .tv-graf .g-ind b { font-size: 1.3rem; }
.tv-st .st-lista { overflow: hidden; flex: 1; align-content: start; } .tv-st .st-fila { padding: .5vh .6vw; } .tv-st .st-bar { height: 3.2vh; } .tv-st .st-nom b { font-size: 1.1rem; } .tv-st .st-num b { font-size: 1.2rem; }
.tv-par .tb-paradas { grid-template-columns: 1fr; gap: .6vh; margin: 0 0 .8vh; } .tv-par .tb-par { padding: .7vh .8vw; } .tv-par .tb-par-t { font-size: 2.4rem; }
.tv-par .pr-tabla { overflow: hidden; font-size: .85rem; } .tv-par .pr-tabla td, .tv-par .pr-tabla th { padding: .3vh .4vw; }
.tv-rk .rk-f { font-size: 1.05rem; } .tv-rk .rk-f .cnt { font-size: 1.3rem; }
@media (max-width: 1100px) { body.tv { overflow: auto; } body.tv .app { height: auto; } .tvg { height: auto; grid-template-columns: 1fr; grid-template-areas: "gen" "kpi" "graf" "st" "par" "rk"; } .tv-graf .g-caja { height: 260px; flex: none; } .tv-gen { flex-wrap: wrap; } }
/* TV: ajustes para que entre todo sin scroll */
body.tv .app { height: 100vh !important; min-height: 0 !important; overflow: hidden; }
body.tv .main { overflow: hidden; margin: 0 !important; }
.tv-graf .g-caja { position: relative; } .tv-graf .g-caja .g-svg { position: absolute; inset: 0; }
.tv-graf .g-sel { flex-wrap: nowrap; overflow: hidden; } .tv-graf .g-ley { margin-top: .4vh; }
.tv-kpi .tb-gauge { width: 12.5vh; } .tv-kpi .tb-gauge b { font-size: 3.6vh; } .tv-kpi .tb-dpc > div { grid-template-columns: 1fr auto; } .tv-kpi .tb-dpc i { height: .8vh; }
.tv-kpi .tb-dpc span b { font-size: 1.35rem; } .tv-kpi .pr-kpis b { font-size: 1.7rem; } .tv-kpi .pr-kpis small { font-size: .72rem; }
.tv-kpi .tb-ppl b { font-size: 1.3rem; }
.tv-st .st-lista { gap: .45vh; } .tv-st .st-fila, .tv-st .st-eje { grid-template-columns: minmax(150px, 1.15fr) 2.6fr 70px 64px 84px; }
.tv-st .st-fila { padding: .35vh .6vw; } .tv-st .st-nom small { font-size: .72rem; } .tv-st .st-bar { height: 2.6vh; } .tv-st .st-pl { margin-top: .2vh; font-size: .9rem; }
.st-num b { white-space: nowrap; } .tv-st .st-ley { display: none; }
.tv-rk .rk-f { grid-template-columns: 1.4rem minmax(0, 1fr) 30% auto; } .tv-rk .rk-f small { display: none; }
.tv-par .pr-tabla th:nth-child(2), .tv-par .pr-tabla td:nth-child(2) { display: none; } .tv-par .pr-tabla td { font-size: .82rem; }
body.tv { height: 100vh; box-sizing: border-box; } body.tv .app { height: 100% !important; }
body.tv .header { height: auto !important; padding-top: 2px !important; padding-bottom: 2px !important; }
.tv-kpi .tb-ppl { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); } .tv-kpi .tb-ppl > div { grid-template-columns: 1fr; padding: .3vh .4vw; text-align: center; } .tv-kpi .tb-ppl small { font-size: .7rem; line-height: 1.15; }
.tv-kpi .pr-kpis > div { padding: .3vh .4vw; }
.tv-graf .g-caja { min-height: 0; } .tv-graf .g-caja .g-svg { width: 100%; height: 100%; }
.tv-st .st-nom small { display: none; } .tv-st .st-fila { padding: .25vh .6vw; } .tv-st .st-num small { display: none; } .tv-st .st-bar { height: 2.4vh; }
.tv-st .st-eje span { font-size: .75rem; }
/* TV: «Paradas por sector» con scroll interno; colores de semáforo iguales en claro y oscuro */
.tv-par .tb-paradas { flex: 0 1 auto; max-height: 45%; overflow-y: auto; }
.tv-par .pr-tabla { flex: 1 1 0; min-height: 3.5rem; overflow-y: auto !important; overflow-x: hidden; }
.tv-par .pr-tabla table { width: 100%; table-layout: fixed; } .tv-par .pr-tabla td { overflow-wrap: anywhere; }
.tv-par .pr-tabla thead th { position: sticky; top: 0; background: var(--surface); z-index: 1; }
.tv-par .pr-tabla th:first-child { width: 40%; } .tv-par .pr-tabla th:nth-child(3) { width: 22%; }
html[data-theme] .tb-gauge.ok b, html[data-theme] span.ok > b.cnt { color: #1FA66A; } html[data-theme] span.med > b.cnt { color: #E5A000; } html[data-theme] span.mal > b.cnt { color: #E31F26; }
html[data-theme="light"] span.ok > b.cnt { color: #138A55; } html[data-theme="light"] span.med > b.cnt { color: #B77F00; }
.rk-cab { font-size: .7rem; color: var(--muted); } .rk-cab small { color: var(--muted) !important; display: inline !important; }
.rk-b { position: relative; height: 16px !important; } .rk-b em { position: absolute; right: 4px; top: 0; font-size: .68rem; line-height: 16px; font-style: normal; font-weight: 700; color: var(--text); }
.rk-b.med i { background: #E5A000; } .rk-b.mal i { background: #E31F26; } .rk-b.ok i { background: #1FA66A; }
.tv-rk .rk-f { grid-template-columns: 1.4rem minmax(0, 1fr) 34% 3.2rem 2rem; } .tv-rk .rk-f small { display: inline; color: #E31F26; font-size: .75rem; text-align: right; }
.st-pag { text-align: center; font-size: .8rem; color: var(--muted); margin-top: auto; padding-top: .3vh; }
.tv-st .st-lista { display: flex; flex-direction: column; } .st-plc { font-style: normal; font-size: .72em; padding: 1px 5px; border-radius: 6px; background: var(--border); margin-right: 4px; vertical-align: 1px; }
.tv-rk .rk .rk-f { grid-template-columns: 1.4rem minmax(0, 1fr) 34% 3rem 2rem !important; }
.tv-rk .rk { overflow: hidden; }
@media (max-width: 1500px) { .tv-kpi .pg-cab, .tv-kpi .tb-ppl small:first-child { display: none; } .tv-kpi .tb-gauge { width: 10.5vh; } .tv-kpi .tb-gauge b { font-size: 3vh; } .tv-kpi .tb-dpc small { font-size: .7rem; } .tv-kpi .pr-kpis b { font-size: 1.35rem; } .tv-kpi .pr-kpis small:first-child { font-size: .66rem; } }
.rk .rk-f, .tv-rk .rk .rk-f { grid-template-columns: 1.4rem minmax(0, 1fr) 36% 3rem !important; }
.rk-sc { color: #E31F26 !important; font-size: .72rem; display: inline !important; } .rk-cab span:last-child { text-align: right; }
.rk-f .cnt { text-align: right; }
.ppl-c { font-size: inherit !important; } @media (max-width: 1500px) { .tv-kpi .tb-ppl small:first-child { display: block !important; } .ppl-l { display: none; } }
.tv-par .tb-paradas { max-height: 40%; } .tv-par .tb-par { gap: 0; } .tv-par .tb-par-t { font-size: 1.9rem; line-height: 1.1; }
.tv-par .tb-par { grid-template-columns: 1fr auto; align-items: center; padding: .5vh .7vw; } .tv-par .tb-par > b, .tv-par .tb-par > span:not(.tb-par-t) { grid-column: 1; } .tv-par .tb-par-t { grid-column: 2; grid-row: 1 / span 2; font-size: 1.7rem; } .tv-par .tb-par small { display: none; }
/* —— cumplimiento por sector / persona —— */
.cu-tabla table { width: 100%; } .cu-tabla th[data-sort] { cursor: pointer; user-select: none; white-space: nowrap; } .cu-tabla th.asc::after { content: " ▲"; font-size: .7em; } .cu-tabla th.desc::after { content: " ▼"; font-size: .7em; }
.cu-tabla td:not(:first-child), .cu-tabla th:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }
.cu-sem { white-space: nowrap; font-weight: 700; } .cu-sem .st-sem { width: 11px; height: 11px; margin-right: 6px; vertical-align: -1px; box-shadow: none !important; animation: none !important; }
.cu-tabla tr.st-rojo td.cu-sem { color: #E31F26; } .cu-tabla tr.st-amarillo td.cu-sem { color: #B77F00; } html[data-theme="dark"] .cu-tabla tr.st-amarillo td.cu-sem { color: #E5A000; } .cu-tabla tr.st-verde td.cu-sem { color: #1FA66A; }
.cu-eq { font-size: .68rem; padding: 1px 6px; border-radius: 999px; background: rgba(59,130,246,.18); color: #3B82F6; font-weight: 700; vertical-align: 1px; }
.cu-ley b.v { color: #1FA66A; } .cu-ley b.a { color: #E5A000; } .cu-ley b.r { color: #E31F26; }
.tv-tabs { display: flex; gap: 6px; align-items: center; margin-bottom: .5vh; flex-wrap: nowrap; } .tv-tabs .pr-chip { white-space: nowrap; font-size: .85rem; } .tv-auto { margin-left: auto; font-size: .72rem; color: var(--muted); white-space: nowrap; }
.tv-st { position: relative; } .tv-st .tv-tab { flex: 1; min-height: 0; display: flex; flex-direction: column; } .tv-st .tv-tab[hidden] { display: none !important; }
.tv-st .cu-tabla { flex: 1; min-height: 0; overflow-y: auto; } .tv-st .cu-tabla thead th { position: sticky; top: 0; background: var(--surface); } .tv-st .cu-tabla td { padding: .35vh .5vw; font-size: 1.02rem; }
/* —— Auditoría IA / avisos —— */
.ia-cab { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; justify-content: space-between; margin: 4px 0 6px; } .ia-cab small { color: var(--muted); }
.ia-lista { display: grid; gap: 8px; } .tv-rk .ia-lista { gap: .5vh; overflow: hidden; }
.ia-av { display: grid; gap: 3px; padding: 8px 10px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); border-left: 5px solid #E5A000; }
.ia-av.sev-alta { border-left-color: #E31F26; } .ia-av.est-resuelto { opacity: .6; border-left-color: #1FA66A; }
.ia-l1 { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; } .ia-l1 span { color: var(--muted); font-size: .85rem; } .ia-est { margin-left: auto; font-size: .72rem !important; padding: 1px 8px; border-radius: 999px; background: var(--border); color: var(--text) !important; }
.est-visto .ia-est { background: rgba(59,130,246,.2); } .est-motivo .ia-est { background: rgba(229,160,0,.25); } .est-resuelto .ia-est { background: rgba(31,166,106,.25); }
.ia-sim { font-style: normal; font-size: .65rem; font-weight: 800; padding: 1px 5px; border-radius: 5px; background: #7C3AED; color: #fff; }
.ia-diag { font-size: .92rem; } .ia-sug, .ia-msg { font-size: .85rem; } .ia-hist, .ia-t { font-size: .72rem; color: var(--muted); } .ia-acc { margin-top: 4px; }
.tv-rk .ia-av { padding: .5vh .6vw; } .tv-rk .ia-diag { font-size: .85rem; } .tv-rk .ia-cab small { font-size: .7rem; }
.tv-rk { display: flex; flex-direction: column; } .tv-rk .tv-tab { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; } .tv-rk .tv-tab[hidden] { display: none !important; }
.av-modal { position: fixed; inset: 0; z-index: 1000; background: rgba(0,0,0,.55); display: grid; place-items: center; padding: 16px; }
.av-caja { width: min(440px, 100%); background: var(--surface, #fff); color: var(--text); border-radius: 20px; padding: 18px; display: grid; gap: 10px; border-top: 8px solid #E5A000; box-shadow: 0 20px 60px rgba(0,0,0,.4); animation: avIn .25s ease-out; }
.av-caja.sev-alta { border-top-color: #E31F26; } .av-tit { font-weight: 800; font-size: 1.15rem; } .av-sec { color: var(--muted); } .av-msg { font-size: 1.2rem; line-height: 1.35; margin: 4px 0; }
.av-mot { display: grid; gap: 8px; } @keyframes avIn { from { transform: translateY(20px); opacity: 0; } }
/* header del operario: píldora de planta en 1 renglón; Salir y tema alineados */
html body #top-planta { white-space: nowrap !important; overflow: hidden; text-overflow: ellipsis; max-width: 100%; min-width: 0; flex: 0 1 auto; line-height: 1.2; height: auto; padding: 6px 12px; border-radius: 999px; }
html body div.app header.header .pr-top { display: flex; align-items: center; gap: 8px; justify-content: flex-end; overflow: hidden; }
html body #btn-salir, html body #top-red { flex: none; white-space: nowrap; align-self: center; line-height: 1.2; }
html body div.app header.header .theme-toggle { flex: none; align-self: center; }
@media (max-width: 380px) { html body div.app header.header .brand-logo { max-width: 120px; height: auto; } html body div.app header.header .pr-top { gap: 4px; } }
/* —— procesos —— */
.tb-procs { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 8px 0; }
.tb-proc { display: grid; gap: 2px; padding: 8px 10px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); border-left: 5px solid var(--border-strong); }
.tb-proc.st-verde { border-left-color: #1FA66A; } .tb-proc.st-amarillo { border-left-color: #E5A000; } .tb-proc.st-rojo { border-left-color: #E31F26; }
.tb-proc > small:first-child { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tb-proc span b { font-size: 1.5rem; } .tb-proc em { font-style: normal; color: var(--muted); font-size: .8rem; margin-left: 5px; }
.tb-proc.st-verde .cu-c { color: #1FA66A; } .tb-proc.st-amarillo .cu-c { color: #B77F00; } html[data-theme="dark"] .tb-proc.st-amarillo .cu-c { color: #E5A000; } .tb-proc.st-rojo .cu-c { color: #E31F26; }
.cu-proc td { font-weight: 800; background: var(--border); } .cu-proc small { font-weight: 400; color: var(--muted); } .cu-in { padding-left: 1.2em !important; }
.ia-proc { font-size: .72rem !important; padding: 1px 6px; border-radius: 6px; background: rgba(59,130,246,.15); color: var(--text) !important; }
.g-vacio { padding: 30px 10px; text-align: center; }
.pr-procs-ed { margin: 12px 0; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--border); } .pr-procs-ed summary { cursor: pointer; font-weight: 700; } .pr-procs-ed select { min-width: 0; max-width: 100%; }
.tv-kpi .tb-procs { grid-template-columns: 1fr 1fr; gap: .4vh .4vw; margin: 0; } .tv-kpi .tb-proc { padding: .3vh .5vw; } .tv-kpi .tb-proc span b { font-size: 1.25rem; } .tv-kpi .tb-proc small { font-size: .68rem; }
.tv-kpi .pr-kpis > div:nth-child(n+3) { display: none; }
.tv-kpi .tb-procs { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tv-kpi .tb-proc > small:last-child { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tv-kpi .tb-gauge { width: 10vh; } .tv-kpi .tb-gauge b { font-size: 2.8vh; } .tv-kpi .tb-dpc { gap: .3vh; } .tv-kpi .pr-kpis b { font-size: 1.3rem; } .tv-kpi .tb-oee { gap: .4vh; }
@media (max-width: 1500px) { .tv-kpi .tb-procs { grid-template-columns: 1fr 1fr; } .tv-kpi .tb-proc span b { font-size: 1.05rem; } .tv-kpi .tb-ppl { display: none; } .tv-kpi .tb-dpc i { height: .6vh; } }
/* —— etapas: pre (azul) · prod (verde) · post (violeta) —— */
.b-azul { background: #2563EB; } .b-violeta { background: #8B5CF6; }
.st-azul .st-sem { background: #2563EB; box-shadow: 0 0 0 4px rgba(37,99,235,.25); } .st-violeta .st-sem { background: #8B5CF6; box-shadow: 0 0 0 4px rgba(139,92,246,.25); }
.st-gen.st-azul { background: rgba(37,99,235,.12); border-color: #2563EB; } .st-gen.st-violeta { background: rgba(139,92,246,.12); border-color: #8B5CF6; }
.tb-p.et-pre { background: #1E3A8A; color: #fff; border-color: #2563EB; } .tb-p.et-post { background: #4C1D95; color: #fff; border-color: #8B5CF6; }
.pr-estado.activa.et-pre { background: #2563EB; } .pr-estado.activa.et-post { background: #8B5CF6; }
.et-pre { color: #2563EB; } .et-post { color: #8B5CF6; } .et-prod { color: #1FA66A; } .et-par { color: #E31F26; }
html[data-theme="dark"] .et-pre { color: #60A5FA; } html[data-theme="dark"] .et-post { color: #A78BFA; }
.tb-p.et-pre *, .tb-p.et-post *, .pr-estado.et-pre, .pr-estado.et-post { color: #fff; }
.et-pasos { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0; font-size: .8rem; } .et-pasos i { opacity: .5; font-style: normal; }
.et-paso { padding: 4px 10px; border-radius: 999px; border: 1px solid var(--border-strong); color: var(--muted); }
.et-paso.on.et-pre { background: #2563EB; border-color: #2563EB; color: #fff; } .et-paso.on.et-prod { background: #1FA66A; border-color: #1FA66A; color: #fff; } .et-paso.on.et-post { background: #8B5CF6; border-color: #8B5CF6; color: #fff; }
.et-paso.hecho { text-decoration: line-through; opacity: .7; }
.et-subs { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; } .et-subs .pr-chip { min-height: 48px; padding: 10px 16px; font-size: 1rem; }
.pr-nueva.et-btn-prod, .btn-primary.et-btn-pre { background: #2563EB; border-color: #2563EB; } .btn-primary.et-btn-post, .btn-secondary.et-btn-post { border-color: #8B5CF6; } .btn-primary.et-btn-post { background: #8B5CF6; color: #fff; }
.hs-res { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin: 8px 0; } .hs-res > div { border: 1px solid var(--border); border-radius: 12px; padding: 8px 10px; display: flex; flex-direction: column; }
.hs-res b { font-size: 1.3rem; } .hs-res b.ok { color: #1FA66A; } .hs-res b.med { color: #B77F00; } .hs-res b.mal { color: #E31F26; }
.hs-det { margin: 6px 0; } .hs-det summary { cursor: pointer; font-weight: 600; padding: 6px 0; } .hs-t td.num { text-align: right; font-variant-numeric: tabular-nums; } .hs-t td.ok { color: #1FA66A; } .hs-t td.med { color: #B77F00; } .hs-t td.mal { color: #E31F26; }
.et-reloj { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 22px 12px; margin: 12px 0; border-radius: 18px; color: #fff; text-align: center; }
.et-reloj.et-pre { background: #2563EB; } .et-reloj.et-post { background: #8B5CF6; } .et-reloj * { color: #fff !important; }
.et-reloj b { font-size: 3.4rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.05; } .et-reloj small { opacity: .9; font-size: .85rem; }

/* —— cierre del día rediseñado (cz-*) —— */
.cz{--cz-z1:var(--surface,#F5F6F8);--cz-z2:color-mix(in srgb,var(--surface,#F5F6F8) 88%,var(--text,#000) 4%);--cz-bd:var(--border,#D5D9DE)}
.cz-res{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}
.cz-k{background:var(--cz-z1);border:1px solid var(--cz-bd);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.cz-k small{color:var(--text-secondary,#5C6066);font-size:.78rem}.cz-k b{font-size:1.9rem;line-height:1.1;font-variant-numeric:tabular-nums}
.cz .ok{color:#1f8a4c}.cz .med{color:#b26a00}.cz .mal{color:#c62828}
[data-theme=dark] .cz .ok{color:#5fd38d}[data-theme=dark] .cz .med{color:#ffb74d}[data-theme=dark] .cz .mal{color:#ff6b6b}
.cz-barra{display:flex;height:26px;border-radius:8px;overflow:hidden;margin:4px 0 14px;border:1px solid var(--cz-bd)}
.cz-barra i{display:flex;align-items:center;justify-content:center;min-width:0;font-style:normal;font-size:.72rem;color:#fff;white-space:nowrap;overflow:hidden}
.cz-b-pre{background:#2f6fd6}.cz-b-prod{background:#1f8a4c}.cz-b-post{background:#7b4fc9}.cz-b-par{background:#c62828}
.cz-pasos{display:flex;gap:8px;list-style:none;padding:0;margin:0 0 12px;counter-reset:p}
.cz-paso{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;border:1px solid var(--cz-bd);background:var(--cz-z1);font-size:.85rem;color:var(--text-secondary,#5C6066)}
.cz-paso.act{border-color:var(--accent,#d32f2f);color:var(--text,#111);font-weight:600}.cz-paso.ok{color:#1f8a4c}
.cz-pn{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--cz-bd);font-weight:700;flex:none}.cz-paso.ok .cz-pn{background:#1f8a4c;color:#fff}.cz-paso.act .cz-pn{background:var(--accent,#d32f2f);color:#fff}
.cz-anom{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;margin-bottom:14px}
.cz-a{display:flex;gap:10px;align-items:flex-start;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--cz-bd);border-left:4px solid #b26a00;background:var(--cz-z1);color:inherit;font:inherit;cursor:pointer}
.cz-a[disabled]{cursor:default;opacity:1}.cz-a b{display:block;font-size:.9rem}.cz-a small{color:var(--text-secondary,#5C6066);font-size:.78rem}
.cz-a-abierta{border-left-color:#c62828}.cz-a-ritmo{border-left-color:#b26a00}.cz-a-hueco{border-left-color:#2f6fd6}.cz-a-aviso{border-left-color:#7b4fc9;cursor:default}
.cz-tool{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:6px 0 8px}
.cz-seg{display:flex;align-items:center;gap:4px}.cz-seg button{border:1px solid var(--cz-bd);background:var(--cz-z1);color:inherit;padding:7px 14px;border-radius:999px;font:inherit;cursor:pointer}.cz-seg button.sel{background:var(--text,#222);color:var(--bg,#fff);border-color:transparent}
.cz-acc{display:flex;gap:6px;flex-wrap:wrap}.cz-acc .btn-secondary{padding:7px 12px;font-size:.85rem}
.cz-tw{max-height:70vh;overflow:auto;border:1px solid var(--cz-bd);border-radius:12px;background:var(--cz-z1)}
.cz-t{width:100%;border-collapse:separate;border-spacing:0;font-size:.88rem;font-variant-numeric:tabular-nums}
.cz-t th,.cz-t td{padding:8px 10px;border-bottom:1px solid var(--cz-bd);text-align:left;white-space:nowrap}
.cz-t .num{text-align:right}.cz-t td small,.cz-t th small{color:var(--text-secondary,#5C6066);font-size:.72rem;font-weight:400}
.cz-t thead th{position:sticky;top:0;z-index:2;background:var(--t-s2,#DDE0E4);cursor:pointer;user-select:none;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}
.cz-t thead th.ord{color:var(--accent,#d32f2f)}
.cz-t .cz-r:nth-child(odd) td{background:var(--cz-z2)}.cz-t .cz-r:hover td{background:color-mix(in srgb,var(--accent,#d32f2f) 7%,transparent)}
.cz-gh th,.cz-gh td{background:color-mix(in srgb,var(--t-s2,#DDE0E4) 70%,transparent);font-weight:700;cursor:pointer;border-top:2px solid var(--cz-bd)}
.cz-car{display:inline-block;transition:transform .15s}.cz-g.cerrado .cz-car{transform:rotate(-90deg)}.cz-g.cerrado .cz-r{display:none}
.cz-tot th,.cz-tot td{position:sticky;bottom:0;background:var(--t-s2,#DDE0E4);font-weight:800;border-top:2px solid var(--text-secondary,#5C6066)}
.cz-det{margin:12px 0;border:1px solid var(--cz-bd);border-radius:12px;padding:8px 12px;background:var(--cz-z1)}.cz-det>summary{cursor:pointer;font-weight:600;padding:4px 0}
.cz-check{margin-top:16px;padding:14px;border:2px solid var(--cz-bd);border-radius:14px;background:var(--cz-z1);display:flex;flex-direction:column;gap:10px}
.cz-ck{display:flex;gap:10px;align-items:center;font-size:.95rem}.cz-ck input{width:22px;height:22px}
.cz-abierta{border-left:4px solid #c62828}
.cz-print-h,.cz-print-f{display:none}
@media (max-width:760px){
  .cz-res{grid-template-columns:repeat(2,minmax(0,1fr))}.cz-k b{font-size:1.5rem}.cz-pasos{flex-direction:column}
  .cz-tw{max-height:none;border:0;background:none;overflow:visible}.cz-t,.cz-t tbody,.cz-t tfoot,.cz-t tr{display:block}.cz-t thead{display:block;position:sticky;top:0;z-index:3}
  .cz-t thead tr{display:flex;overflow-x:auto;gap:4px;padding:6px;background:var(--t-s2,#DDE0E4);border-radius:10px}.cz-t thead th{position:static;border:0;padding:4px 8px;background:var(--cz-z1);border-radius:999px;font-size:.7rem}
  .cz-t tr.cz-gh,.cz-t tr.cz-r,.cz-t tr.cz-tot{display:grid;grid-template-columns:1fr 1fr 1fr;gap:2px 10px;padding:10px;margin:8px 0;border:1px solid var(--cz-bd);border-radius:12px;background:var(--cz-z1)}
  .cz-t tr.cz-r:nth-child(odd){background:var(--cz-z2)}.cz-t tr.cz-r td{background:none!important}
  .cz-t tr>*{border:0!important;padding:2px 0!important;white-space:normal;position:static!important;background:none!important}
  .cz-t tr>:first-child{grid-column:1/-1;font-size:1rem;padding-bottom:4px!important}
  .cz-t td.num{text-align:left;display:flex;flex-direction:column}.cz-t td.num::before{content:attr(data-l);font-size:.68rem;color:var(--text-secondary,#5C6066);text-transform:uppercase}
  .cz-t tr.cz-gh{background:var(--t-s2,#DDE0E4)}.cz-t tr.cz-tot{border:2px solid var(--text-secondary,#5C6066)}
  .cz-g:not(.cerrado) .cz-r{margin-left:10px}
}
@media print{
  .btn-back,.pr-chips,.pr-fila,.cz-tool,.cz-check input,#ci-ok,.cz-pasos,.site-footer-x,#toast{display:none!important}
  .cz-print-h{display:flex;justify-content:space-between;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:10px}.cz-print-f{display:block;margin-top:14px;font-size:.75rem;color:#555;border-top:1px solid #999;padding-top:6px}
  .cz-tw{max-height:none;overflow:visible}.cz-t thead th,.cz-tot td,.cz-tot th{position:static}.cz-g.cerrado .cz-r{display:table-row}
  .cz-res{grid-template-columns:repeat(4,1fr)}.cz *{color:#000!important;background:#fff!important}.cz-barra i{background:#bbb!important}
}
.cz-acc .btn-secondary,.cz-seg button{width:auto!important;min-width:0;margin:0}
.cz-mas{grid-column:1/-1}.cz-mas>summary{cursor:pointer;color:var(--accent,#d32f2f);font-weight:600;padding:4px 0}
@media (max-width:760px){
  .cz-t td.num{display:block}.cz-t td.num::before{display:block}
  .cz-t tr.cz-gh,.cz-t tr.cz-r,.cz-t tr.cz-tot{grid-template-columns:repeat(4,1fr);gap:4px 8px}
  .cz-t thead tr{flex-wrap:nowrap}.cz-t thead th{white-space:nowrap!important;flex:none}.cz-t thead th small{display:none}
}

/* —— Tablero de comando (cm-*) —— */
.cm-body .main{max-width:none;padding:12px 16px}
.cm{--cm-s:var(--surface,#F5F6F8);--cm-s2:var(--t-s2,#DDE0E4);--cm-bd:var(--border,#D5D9DE);--cm-tx2:var(--text-secondary,#5C6066)}
.cm .ok{color:#1f8a4c}.cm .med{color:#b26a00}.cm .mal{color:#c62828}
[data-theme=dark] .cm .ok{color:#5fd38d}[data-theme=dark] .cm .med{color:#ffb74d}[data-theme=dark] .cm .mal{color:#ff6b6b}
.cm-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.cm-top h1{font-size:1.5rem;margin:0}.cm-top h1 small{font-size:.8rem;color:var(--cm-tx2);font-weight:400}
.cm-acc{display:flex;gap:6px}.cm-acc .pr-chip{text-decoration:none}
.cm-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.cm-col{background:var(--cm-s);border:1px solid var(--cm-bd);border-top:5px solid var(--pl);border-radius:14px;padding:12px;min-width:0}
.cm-ch{display:flex;justify-content:space-between;align-items:center;gap:8px}.cm-ch h2{margin:0;font-size:1.3rem;color:var(--pl)}
.cm-pill{font-size:.78rem;padding:3px 10px;border-radius:999px;background:var(--cm-s2);white-space:nowrap}
.cm-oee{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px 14px;margin:10px 0}.cm-oee-v{font-size:2.8rem;font-weight:800;line-height:1;grid-row:span 2;font-variant-numeric:tabular-nums}
.cm-oee>small{color:var(--cm-tx2);font-size:.75rem}.cm-dpc{display:flex;gap:12px;font-size:.95rem;color:var(--cm-tx2)}.cm-dpc b{font-size:1.15rem}
.cm-ks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.cm-k{background:var(--cm-s2);border-radius:10px;padding:7px 9px;display:flex;flex-direction:column;min-width:0}.cm-k small{font-size:.7rem;color:var(--cm-tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cm-k b{font-size:1.25rem;font-variant-numeric:tabular-nums}
.cm-h3{font-size:.95rem;margin:14px 0 6px;display:flex;gap:8px;align-items:baseline}.cm-h3 small{color:var(--cm-tx2);font-weight:400;font-size:.78rem}
.cm-ses{display:flex;flex-direction:column;gap:6px}
.cm-s{border:1px solid var(--cm-bd);border-left:5px solid #8a9099;border-radius:10px;padding:7px 9px;background:color-mix(in srgb,var(--cm-s) 92%,var(--cm-s2))}
.cm-s1{display:flex;align-items:center;gap:8px}.cm-s1 b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cm-t{font-variant-numeric:tabular-nums;font-weight:700}
.cm-est{font-size:.68rem;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:999px;color:#fff;background:#8a9099;white-space:nowrap}
.cm-s2{display:flex;justify-content:space-between;gap:8px;font-size:.78rem;color:var(--cm-tx2);margin-top:2px}.cm-s2 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-s3{font-size:.8rem;margin-top:3px;font-weight:600}
.cm-prod{border-left-color:#1f8a4c}.cm-prod .cm-est{background:#1f8a4c}.cm-pre{border-left-color:#2f6fd6}.cm-pre .cm-est{background:#2f6fd6}
.cm-post{border-left-color:#7b4fc9}.cm-post .cm-est{background:#7b4fc9}.cm-pau{border-left-color:#c62828}.cm-pau .cm-est{background:#c62828}.cm-fin{opacity:.72}.cm-fin .cm-est{background:#8a9099}
.cm-bar{position:relative;height:16px;border-radius:6px;background:var(--cm-s2);margin-top:4px;overflow:hidden}.cm-bar i{position:absolute;inset:0 auto 0 0;background:currentColor;opacity:.35}.cm-bar span{position:relative;font-size:.7rem;padding-left:6px;line-height:16px;color:var(--text,#222)}
.cm-mot div{display:grid;grid-template-columns:minmax(0,1fr) 40% auto;gap:8px;align-items:center;font-size:.82rem;margin:3px 0}.cm-mot span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cm-mot i{height:10px;border-radius:5px;background:#c62828;opacity:.75}
.cm-an{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.cm-p{background:var(--cm-s);border:1px solid var(--cm-bd);border-radius:14px;padding:12px;min-width:0}.cm-p .cm-h3{margin-top:0}
.cm-svg{width:100%;height:auto}.cm-grid{stroke:var(--cm-bd);stroke-width:1}.cm-ax{font-size:11px;fill:var(--cm-tx2)}
.cm-ley{display:flex;gap:14px;font-size:.8rem;margin-bottom:4px}.cm-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;flex:none}
.cm-pp-r{display:grid;grid-template-columns:130px 1fr;gap:8px;align-items:center;margin:6px 0;font-size:.85rem}.cm-pp-r>div{display:flex;flex-direction:column;gap:2px}
.cm-pp-r i{display:block;height:12px;width:var(--w);background:var(--c);border-radius:4px;min-width:2px;position:relative}.cm-pp-r em{position:absolute;left:calc(100% + 4px);top:-2px;font-size:.7rem;font-style:normal;white-space:nowrap}
.cm-rk{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cm-rk h4{margin:0 0 4px;font-size:.85rem}.cm-rk ol{margin:0;padding-left:18px}.cm-rk li{font-size:.82rem;margin:3px 0;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.cm-rk li small{color:var(--cm-tx2);flex:1 1 100%;padding-left:15px}.cm-rk em{font-style:normal;font-weight:700;margin-left:auto}
.cm-ia{display:flex;gap:8px;align-items:flex-start;padding:7px 9px;border-radius:10px;border:1px solid var(--cm-bd);border-left:4px solid #b26a00;margin-bottom:6px;font-size:.85rem}.cm-ia small{display:block;color:var(--cm-tx2);font-size:.76rem}.cm-sev-alta{border-left-color:#c62828}
body.tv.cm-body .main{padding:8px 12px}body.tv .cm-top h1{font-size:1.9rem}body.tv .cm-ch h2{font-size:1.7rem}body.tv .cm-oee-v{font-size:3.6rem}body.tv .cm-k b{font-size:1.5rem}body.tv .cm-s1{font-size:1.05rem}
body.tv.cm-body .hx-ayuda-pie{display:none}body.tv .cm-an{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.cm-cols{grid-template-columns:1fr}.cm-an{grid-template-columns:1fr}}
@media (max-width:480px){.cm-ks{grid-template-columns:repeat(2,minmax(0,1fr))}.cm-rk{grid-template-columns:1fr}.cm-oee-v{font-size:2.3rem}}
/* órdenes manuales */
.pr-ob { display:block; height:6px; border-radius:3px; background:var(--border); overflow:hidden; margin-top:4px; }
.pr-ob > i { display:block; height:100%; background:#1f9d6a; }
.mp-tabs { display:flex; gap:6px; flex-wrap:wrap; margin:10px 0; }
.mp-tabs button { border:1px solid var(--border); background:var(--surface,transparent); color:var(--text); border-radius:999px; padding:7px 14px; font:inherit; cursor:pointer; }
.mp-tabs button.on { background:var(--text); color:var(--bg,#fff); }
.mp-sec { border:1px solid var(--border); border-radius:14px; padding:14px; margin:14px 0; background:var(--surface,transparent); }
.mp-sec h2 { margin:0 0 8px; font-size:1.1rem; }
.mp-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; }
.mp-grid label { display:grid; gap:4px; font-size:.85rem; color:var(--muted); }
.mp-grid input, .mp-grid select, .mp-grid textarea { font:inherit; padding:9px; border-radius:10px; border:1px solid var(--border); background:var(--bg,transparent); color:var(--text); }
.mp-t { width:100%; border-collapse:collapse; font-size:.9rem; }
.mp-t th, .mp-t td { padding:8px 6px; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
.mp-t td.num { text-align:right; font-variant-numeric:tabular-nums; }
.mp-badge { display:inline-block; font-size:.75rem; padding:2px 8px; border-radius:999px; border:1px solid var(--border); }
.mp-badge.armadura { background:rgba(217,139,0,.14); } .mp-badge.hormigon { background:rgba(47,111,214,.14); }
.mp-badge.en_curso { background:rgba(31,157,106,.16); } .mp-badge.terminada { opacity:.65; }
.mp-acc { display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.cm-ord { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; }
.cm-ord .pr-item { border:1px solid var(--border); border-radius:10px; cursor:default; }
.mp-sp { border:1px solid var(--border); border-radius:10px; padding:6px 10px; margin:6px 0; }
.mp-sp summary { cursor:pointer; font-weight:600; }
.sp-off td { opacity:.5; }
#sec-ed input.s-nom { width:100%; min-width:180px; }
.cm-sec { width:100%; font-size:.85em; border-collapse:collapse; margin-bottom:8px; }
.cm-sec td, .cm-sec th { padding:3px 4px; border-bottom:1px solid var(--border); text-align:left; }
.cm-sec td.n { text-align:right; }
/* —— sectores por planta: tarjetas (móvil) / filas (escritorio) —— */
.sp-head { display:none; }
.sp-list { display:grid; gap:10px; }
.sp-card { display:grid; grid-template-columns:28px 1fr; gap:8px 10px; border:1px solid var(--border); border-radius:12px; padding:10px; background:var(--surface-elevated,transparent); }
.sp-card.sp-off { opacity:.6; }
.sp-n { font-weight:700; font-size:1.1rem; padding-top:20px; }
.sp-main, .sp-tipo, .sp-pro, .sp-sw, .sp-ord { grid-column:2; min-width:0; }
.sp-lab { display:grid; gap:4px; font-size:.8rem; color:var(--muted); }
.sp-card textarea, .sp-card select { width:100%; min-height:44px; font:inherit; font-size:1rem; padding:10px 12px; border-radius:10px; border:1px solid var(--border); background-color:var(--surface-elevated,var(--bg)); color:var(--text); resize:vertical; }
.sp-card textarea.s-nom { font-weight:600; field-sizing:content; min-height:44px; }
.sp-card textarea.s-sub { font-size:.9rem; field-sizing:content; }
.sp-card select { padding-right:36px; color-scheme:light dark; }
.sp-card select option { background:var(--surface-elevated,#fff); color:var(--text,#111); }
.sp-sw { display:flex; align-items:center; gap:10px; cursor:pointer; font-size:.95rem; }
.sp-sw input { position:absolute; opacity:0; width:1px; height:1px; }
.sp-sw i { width:46px; height:26px; border-radius:999px; background:var(--border); position:relative; transition:background .15s; flex:none; }
.sp-sw i::after { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; transition:left .15s; box-shadow:0 1px 3px rgba(0,0,0,.3); }
.sp-sw input:checked + i { background:#1f9d6a; } .sp-sw input:checked + i::after { left:23px; }
.sp-sw input:focus-visible + i { outline:2px solid var(--text); outline-offset:2px; }
.sp-ord { display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.sp-ord .btn-text { min-width:44px; min-height:40px; }
@media (min-width:900px) {
  .sp-head { display:grid; grid-template-columns:28px minmax(220px,2fr) 150px minmax(170px,1fr) 90px 150px; gap:10px; font-size:.75rem; text-transform:uppercase; color:var(--muted); padding:0 10px; }
  .sp-card { grid-template-columns:28px minmax(220px,2fr) 150px minmax(170px,1fr) 90px 150px; align-items:start; }
  .sp-main, .sp-tipo, .sp-pro, .sp-sw, .sp-ord { grid-column:auto; }
  .sp-card .sp-lab > :first-child { } .sp-tipo, .sp-pro { font-size:0; gap:0; } .sp-tipo select, .sp-pro select { font-size:.95rem; }
  .sp-sw span { display:none; } .sp-sw, .sp-ord, .sp-n { padding-top:22px; }
}
/* tablas de productos/órdenes/calidad en pantallas angostas: cada fila es una tarjeta */
@media (max-width:640px) {
  .mp-t thead { display:none; }
  .mp-t, .mp-t tbody, .mp-t tr, .mp-t td { display:block; width:100%; }
  .mp-t tr { border:1px solid var(--border); border-radius:10px; padding:8px 10px; margin:0 0 8px; }
  .mp-t td { border:0; padding:3px 0; text-align:left !important; overflow-wrap:anywhere; }
  .mp-t td:first-child { font-weight:600; }
  .mp-t td input[type=number] { width:100% !important; }
  .mp-sp .mp-t tr { display:grid; grid-template-columns:1fr 110px; gap:8px; align-items:center; }
  .mp-sp .mp-t td { display:block; }
  .mp-acc { flex-wrap:wrap; } .mp-acc .btn-primary { width:100%; }
  .cm-cols { grid-template-columns:1fr !important; }
  .pr-top .pr-chip { white-space:nowrap; }
}
.pr-top .pr-chip { white-space:nowrap; }
@media (max-width:400px) { .pr-lg { display:none; } .pr-top { gap:6px; } .pr-top .pr-chip { padding-left:10px; padding-right:10px; } }
.sp-logl { display:grid; gap:6px; margin-top:8px; }
.sp-le { display:flex; gap:8px; align-items:flex-start; justify-content:space-between; border:1px solid var(--border); border-radius:10px; padding:8px 10px; }
.sp-le > div { min-width:0; overflow-wrap:anywhere; display:grid; gap:2px; }
.sp-le .btn-text { white-space:nowrap; min-height:40px; flex:none; }
.pg-sub { font-size:1rem; margin:16px 0 6px; }
.pr-viejo small { opacity:.75; text-decoration:underline; }
/* con orden / sin orden */
.cs-seg { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:4px; border-radius:14px; background:var(--surface-elevated,rgba(127,127,127,.12)); border:1px solid var(--border); margin:4px 0 12px; }
.cs-b { min-height:52px; border:0; border-radius:10px; font:inherit; font-size:1rem; font-weight:700; background:transparent; color:var(--muted); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:6px; }
.cs-b b { min-width:26px; padding:1px 7px; border-radius:999px; background:var(--border); color:var(--text); font-size:.85rem; }
.cs-b-con.on { background:#2f6fd6; color:#fff; } .cs-b-con.on b { background:#fff; color:#2f6fd6; }
.cs-b-sin.on { background:#d98b00; color:#fff; } .cs-b-sin.on b { background:#fff; color:#a66a00; }
.cs-panel { border-radius:14px; padding:10px; border:2px solid; }
.cs-p-con { border-color:#2f6fd6; background:rgba(47,111,214,.07); }
.cs-p-sin { border-color:#d98b00; background:rgba(217,139,0,.07); }
.cs-tit { font-weight:700; margin:2px 0 6px; font-size:1.02rem; }
.cs-panel .pr-item { display:grid; gap:3px; border:1px solid var(--border); border-radius:12px; margin:6px 0; background:var(--surface,transparent); }
.cs-con { border-left:5px solid #2f6fd6 !important; } .cs-sin { border-left:5px solid #d98b00 !important; }
.cs-tag { justify-self:start; font-size:.75rem; font-weight:700; letter-spacing:.02em; padding:2px 8px; border-radius:6px; }
.cs-tag-op { background:#2f6fd6; color:#fff; } .cs-tag-sin { background:#d98b00; color:#fff; }
/* personas por planta */
.pe-fil { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; } .pe-fil .on { background:var(--accent,#d32f2f); color:#fff; border-color:transparent; }
.pe-aviso { background:rgba(217,139,0,.14); border:1px solid #d98b00; border-radius:10px; padding:8px 12px; margin:8px 0; }
.pe-list { display:grid; gap:8px; margin:12px 0; } @media (min-width:900px) { .pe-list { grid-template-columns:1fr 1fr; } }
.pe-card { display:flex; gap:12px; align-items:flex-start; padding:12px; border:1px solid var(--border); border-radius:12px; cursor:pointer; background:var(--surface,transparent); }
.pe-card.sel { border-color:#2f6fd6; box-shadow:0 0 0 2px rgba(47,111,214,.35); }
.pe-chk { width:22px; height:22px; margin-top:2px; flex:none; accent-color:#2f6fd6; }
.pe-m { min-width:0; display:grid; gap:4px; } .pe-n { display:flex; flex-wrap:wrap; gap:6px; align-items:center; } .pe-n b { overflow-wrap:anywhere; }
.pe-htc { font-size:.72rem; font-weight:800; letter-spacing:.03em; padding:2px 7px; border-radius:6px; background:#c62828; color:#fff; }
.pe-as { display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
.pe-pl, .pe-sec, .pe-sin { font-size:.78rem; font-weight:700; padding:2px 8px; border-radius:999px; }
.pe-pl { background:#2f6fd6; color:#fff; } .pe-pl.ad { background:transparent; color:inherit; border:1px solid #2f6fd6; }
.pe-sec { border:1px solid var(--border); } .pe-sin { background:#d98b00; color:#fff; }
.pe-masa select { width:100%; }
.hx-gente { margin:14px 0; border:1px solid var(--border); border-radius:12px; padding:8px 12px; } .hx-gente summary { cursor:pointer; font-weight:600; }
.hx-gente-c { display:grid; gap:8px; margin-top:8px; } @media (min-width:900px) { .hx-gente-c { grid-template-columns:repeat(4,1fr); } }
.hx-sin { color:#d98b00; } .hx-sin-box { border:1px solid #d98b00; border-radius:10px; padding:8px; background:rgba(217,139,0,.08); }
.pe-dir { font-size:.8rem; font-weight:600; color:var(--muted); }
.pe-proy { border-color:#7b5cd6; } .pe-pr.off { opacity:.6; } .pe-link select { margin:6px 0; }
.hx-ob { border-left:4px solid #7b5cd6; padding-left:8px; }
/* —— grupos colapsables —— */
.hx-gctl { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0 6px; justify-content:flex-end; }
.hx-gh { cursor:pointer; user-select:none; display:flex !important; align-items:center; flex-wrap:wrap; gap:6px 8px; min-height:44px; margin:0 !important; }
.hx-gh:focus-visible { outline:2px solid #2f6fd6; outline-offset:2px; border-radius:8px; }
.hx-fl { width:0; height:0; border-left:7px solid currentColor; border-top:5px solid transparent; border-bottom:5px solid transparent; transition:transform .15s; flex:none; opacity:.8; }
.hx-gh[aria-expanded="true"] .hx-fl { transform:rotate(90deg); }
.hx-gn { margin-left:auto; font-size:.8rem; font-weight:800; min-width:26px; text-align:center; padding:2px 8px; border-radius:999px; background:var(--border); color:var(--text); }
.hx-gr { flex-basis:100%; font-size:.78rem; font-weight:500; opacity:.75; padding-left:15px; }
.hx-cerrado > :not(.hx-gh) { display:none !important; }
.hx-cerrado { padding-bottom:8px !important; }
.mp-sec .mp-sec.pe-sub { margin:8px 0; padding:8px 10px; border-left:3px solid #7b5cd6; }
.pe-sub > h2 { font-size:1rem !important; }
.pe-g-sin { border-color:#d98b00 !important; } .pe-g-OB { border-left:4px solid #7b5cd6 !important; }
/* tarjeta de persona compacta */
.pe-list { gap:6px !important; margin:8px 0 !important; }
.pe-card { padding:9px 10px !important; gap:10px !important; border-radius:10px !important; }
.pe-nm { font-size:.95rem; line-height:1.25; overflow-wrap:anywhere; }
.pe-m { gap:3px !important; } .pe-m .meta { font-size:.78rem; line-height:1.2; }
.pe-as { gap:4px !important; margin-top:2px; }
.pe-c { font-size:.72rem; font-weight:700; line-height:1.3; padding:2px 7px; border-radius:6px; border:1px solid var(--border); max-width:100%; overflow-wrap:anywhere; }
.pe-c.pe-htc { background:#c62828; color:#fff; border-color:#c62828; } .pe-c.pe-hmt { background:transparent; color:var(--text); border-color:currentColor; opacity:.75; }
.pe-c.pe-dir { font-weight:600; } .pe-c.pe-o { font-weight:500; opacity:.7; } .pe-c.pe-pl.ad { border-color:#2f6fd6; background:transparent; color:inherit; }
/* íconos de línea visibles en pestañas/chips activos (claro y oscuro) */
html body .mp-tabs button .t-ic, html body .mp-tabs button svg.t-ic, html body .pr-chip svg.t-ic, html body .cs-b svg.t-ic, html body .hx-gh svg.t-ic { color:currentColor !important; stroke:currentColor !important; }
.hx-gh { flex-wrap:wrap; font-size:1.12rem !important; line-height:1.25; }
.hx-gt { flex:1 1 0; min-width:0; overflow-wrap:anywhere; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.hx-gn { margin-left:0; } .hx-gr { padding-left:15px; }
.pe-sub > .hx-gh { font-size:.98rem !important; min-height:38px; }
@media (max-width:420px) { .pr-top { gap:4px; } .pr-top .pr-chip { padding:6px 10px; } }
.hx-gh { flex-wrap:nowrap !important; } .hx-gh > .hx-fl { order:-2; } .hx-gh > svg.t-ic { order:-1; flex:none; }
.hx-gt .hx-gr { flex-basis:100%; padding-left:0; }
@media (max-width:420px) { .header .brand-logo { max-width:120px; height:auto; } }
.hx-gt { display:block !important; } .hx-gt > svg.t-ic { margin-right:6px; } .hx-gt .hx-gr { display:block; margin-top:2px; }
@media (max-width:400px) { .pr-top .pr-chip[href="/tablero/comando/"] { display:none; } }
/* sectores: planta fija arriba + filas compactas, un solo sector abierto */
.sp-plsel { position:sticky; top:0; z-index:6; margin:4px -4px 10px; padding:8px 4px 6px; background:var(--surface-elevated, var(--bg, #111)); border-bottom:1px solid var(--border); }
[data-theme="light"] .sp-plsel { background:#f4f5f7; } [data-theme="dark"] .sp-plsel { background:#1d1d1f; }
.sp-seg { display:grid; grid-template-columns:repeat(3,1fr); gap:4px; padding:4px; border-radius:12px; border:1px solid var(--border); }
.sp-seg button { min-height:46px; border:0; border-radius:9px; font:inherit; font-weight:700; font-size:.92rem; line-height:1.15; background:transparent; color:var(--muted, inherit); cursor:pointer; padding:4px; }
.sp-seg button.on { background:#c62828; color:#fff; box-shadow:0 1px 4px rgba(0,0,0,.25); }
.sp-pltit { margin:8px 2px 0; font-size:1.15rem; font-weight:800; } .sp-pltit small { font-size:.8rem; font-weight:500; opacity:.75; margin-left:4px; }
.sp-list { display:grid; gap:6px; }
.sp-row { display:grid; grid-template-columns:28px minmax(0,1fr) auto auto 14px; align-items:center; gap:8px; width:100%; min-height:48px; padding:8px 10px; text-align:left; font:inherit; color:inherit; background:var(--surface, transparent); border:1px solid var(--border); border-radius:10px; cursor:pointer; }
.sp-row:hover { border-color:#2f6fd6; } .sp-row.sp-off { opacity:.6; }
.sp-rn { font-weight:800; font-size:.85rem; text-align:center; border-radius:999px; background:var(--border); padding:2px 0; }
.sp-rnom { font-weight:700; font-size:.92rem; line-height:1.2; overflow-wrap:anywhere; }
.sp-rch { font-size:.7rem; font-weight:700; padding:2px 6px; border-radius:6px; border:1px solid var(--border); white-space:nowrap; }
.sp-rest { font-size:.7rem; font-weight:700; padding:2px 6px; border-radius:999px; background:var(--border); white-space:nowrap; } .sp-rest.on { background:#2e7d32; color:#fff; }
.sp-rfl { opacity:.6; }
@media (max-width:420px) { .sp-row { grid-template-columns:26px minmax(0,1fr) auto 12px; grid-template-areas:"n nom est fl" "n ch ch fl"; row-gap:4px; } .sp-rn { grid-area:n; } .sp-rnom { grid-area:nom; } .sp-rch { grid-area:ch; justify-self:start; } .sp-rest { grid-area:est; } .sp-rfl { grid-area:fl; } }
.sp-card.sp-open { display:block !important; border:2px solid #2f6fd6 !important; border-radius:12px; padding:10px !important; }
.sp-card.sp-open > * { margin-bottom:8px; } .sp-card.sp-open .sp-n { display:inline-block; font-weight:800; }
.sp-acc { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:6px; }
.sp-plsel { top:56px; }
/* —— comando: tablas alineadas + chips de estado (misma línea Tesla) —— */
.cm-sec { table-layout:fixed; width:100%; }
.cm-sec col.c-sec { width:auto; } .cm-sec col.c-n1 { width:3.6em; } .cm-sec col.c-n2 { width:4.6em; } .cm-sec col.c-n3 { width:4.8em; } .cm-sec col.c-n4 { width:3.8em; }
.cm-sec th, .cm-sec td { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; vertical-align:middle; }
.cm-sec th.n, .cm-sec td.n { text-align:right; font-variant-numeric:tabular-nums; }
.cm-sec td .cm-el { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cm-sec td.n small { opacity:.7; }
.cm-s .cm-t, .cm-bar span, .cm-k b, .cm-mot b { font-variant-numeric:tabular-nums; }
.cm-mot > div { display:grid; grid-template-columns:minmax(0,1fr) 30% 4.5em; align-items:center; gap:8px; }
.cm-mot > div span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .cm-mot > div b { text-align:right; }
.cm-pp-r { display:grid; grid-template-columns:minmax(0,9em) 1fr; align-items:center; gap:8px; } .cm-pp-r > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* chip de estado: punto de color + texto corto; borde izquierdo fino del mismo color */
.cm-s { border-left-width:3px !important; }
.cm-est { --c:#8a9099; display:inline-flex; align-items:center; gap:6px; background:transparent !important; color:var(--cm-tx, inherit) !important; border:1px solid color-mix(in srgb, var(--c) 45%, transparent); text-transform:none; letter-spacing:0; font-size:.72rem; font-weight:600; padding:2px 8px 2px 7px; max-width:55%; overflow:hidden; text-overflow:ellipsis; }
.cm-est::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--c); flex:none; }
.cm-pre { border-left-color:#d4a017 !important; } .cm-pre .cm-est { --c:#d4a017; }
.cm-prod { border-left-color:#1f9d55 !important; } .cm-prod .cm-est { --c:#1f9d55; } .cm-prod .cm-est::before { animation:cmPulso 2s ease-in-out infinite; }
.cm-post { border-left-color:#7b4fc9 !important; } .cm-post .cm-est { --c:#7b4fc9; }
.cm-pau { border-left-color:#e07a1f !important; } .cm-pau .cm-est { --c:#e07a1f; }
.cm-fin { opacity:.6; border-left-color:#8a9099 !important; } .cm-fin .cm-est { --c:#8a9099; } .cm-fin .cm-est::before { display:none; }
@keyframes cmPulso { 0%,100% { box-shadow:0 0 0 0 color-mix(in srgb, var(--c) 55%, transparent); } 50% { box-shadow:0 0 0 4px transparent; } }
@media (prefers-reduced-motion:reduce) { .cm-prod .cm-est::before { animation:none; } }
/* —— tablero de planta: franja de situación + sectores con sus puestos (chips del comando) —— */
.tb-chipw { display:inline-flex; } .tb-chipw .cm-est { max-width:none; } .tb-chipw .cm-est b { font-variant-numeric:tabular-nums; margin-left:2px; }
.tb-franja { display:flex; align-items:center; gap:8px; overflow-x:auto; white-space:nowrap; padding:8px 2px; margin:6px 0 4px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.tb-franja::-webkit-scrollbar { display:none; }
.tb-fi { display:inline-flex; align-items:baseline; gap:6px; padding:0 4px; } .tb-fi small { opacity:.7; font-size:.75rem; } .tb-fi b { font-variant-numeric:tabular-nums; font-size:1.05rem; }
.tb-secs { display:grid; gap:10px; margin:6px 0 14px; } @media (min-width:900px) { .tb-secs { grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); } }
.tb-sec { border:1px solid var(--border); border-radius:12px; padding:8px 10px; }
.tb-sec-h { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin:0 0 6px; font-size:.98rem; } .tb-sec-h span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .tb-sec-h small { opacity:.7; font-weight:500; white-space:nowrap; }
.tb-sec-l { display:grid; gap:6px; }
.tb-pu { border:1px solid var(--border); border-left:3px solid #8a9099; border-radius:10px; padding:7px 9px; }
.tb-pu1, .tb-pu2 { display:flex; justify-content:space-between; align-items:center; gap:8px; } .tb-pu-t, .tb-pu-n { font-variant-numeric:tabular-nums; font-size:.78rem; opacity:.8; white-space:nowrap; }
.tb-pu-pz { display:block; margin:3px 0 1px; font-size:.92rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tb-pu2 span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.8rem; opacity:.85; }
.tb-pu .tb-chipw .cm-est { max-width:60vw; overflow:hidden; text-overflow:ellipsis; }
.tb-secs { grid-template-columns:minmax(0,1fr); } @media (min-width:900px) { .tb-secs { grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); } }
.tb-sec, .tb-pu, .tb-pu1, .tb-pu2, .tb-sec-h { min-width:0; } .tb-pu1 > .tb-chipw { min-width:0; flex:0 1 auto; } .tb-pu1 .cm-est { max-width:100% !important; }
.tb-pu-t, .tb-pu-n, .tb-sec-h small { flex:none; }
.eq-sug { font-size:.74rem; line-height:1.3; opacity:.72; overflow-wrap:anywhere; } .eq-arch { opacity:.6; }
.eq-ar { display:inline-flex; align-items:center; gap:6px; font-size:.85rem; margin-left:4px; }
/* —— comando: tarjetas de sesión (15/10 · tarjetas) —— */
.cm-s { overflow:visible; height:auto; container-type:inline-size; }
.cm-s1 { display:grid !important; grid-template-columns:auto minmax(0,1fr) auto; grid-template-areas:"chip tit t"; align-items:center; gap:4px 8px; }
.cm-s1 .cm-est { grid-area:chip; max-width:none; } .cm-s1 > b { grid-area:tit; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .cm-s1 .cm-t { grid-area:t; white-space:nowrap; }
@container (max-width:340px) { .cm-s1 { grid-template-columns:auto 1fr auto; grid-template-areas:"chip . t" "tit tit tit"; } }
.cm-bar { height:auto !important; min-height:20px; overflow:visible !important; display:flex; align-items:center; }
.cm-bar i { border-radius:6px; overflow:hidden; } .cm-bar span { line-height:1.45 !important; padding:2px 6px !important; white-space:nowrap; color:inherit !important; }
.cm-fin { opacity:.82 !important; } .cm-fin .cm-s1 > b, .cm-fin .cm-t { color:var(--cm-tx2, inherit); }
.cm-sec col.c-sec { width:auto; } .cm-sec td:first-child { white-space:normal !important; }
.cm-sec td .cm-el { white-space:normal !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; line-height:1.25; overflow-wrap:anywhere; }
.cm-sec col.c-n1 { width:3.2em; } .cm-sec col.c-n2 { width:4.2em; } .cm-sec col.c-n3 { width:4.6em; } .cm-sec col.c-n4 { width:3.6em; }
.cm-fin .cm-s1 > b { color:inherit !important; } .cm-sec th { font-size:.68rem; }
.cm-sec col.c-n1 { width:3.4em; } .cm-sec col.c-n2 { width:4.4em; } .cm-sec col.c-n3 { width:3.8em; } .cm-sec col.c-n4 { width:3.8em; }
/* —— Editar producto (15/10) —— */
#f-prod .mp-grid{display:grid !important;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px 14px;align-items:end}
#f-prod .mp-grid>label{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0}
#f-prod .mp-grid>label>input,#f-prod .mp-grid>label>select,#f-prod .mp-grid>label>textarea{width:100%;min-width:0;box-sizing:border-box;margin:0}
#f-prod .ep-w2{grid-column:span 2}
#f-prod #p-plano{}#f-prod .mp-grid>label:has(#p-plano){grid-column:span 3}#f-prod #p-arm-l{grid-column:span 3}
#f-prod .mp-grid>label,#f-prod .pr-lab,#f-prod .mp-sp summary small{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#8a9099);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#f-prod .mp-grid>label>*{text-transform:none;letter-spacing:0;font-size:.95rem;font-weight:400;color:var(--text,inherit)}
#f-prod .pr-lab{white-space:normal;margin:14px 0 8px}
#f-prod .ep-chips{display:flex;flex-wrap:wrap;gap:8px}
#f-prod .ep-chip{display:inline-flex !important;flex-direction:row !important;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border,#3a3f47);border-radius:999px;cursor:pointer;text-transform:none !important;letter-spacing:0 !important;font-size:.88rem;font-weight:500;white-space:nowrap;margin:0}
#f-prod .ep-chip:has(input:checked){border-color:var(--accent,#e31e24);background:color-mix(in srgb,var(--accent,#e31e24) 12%,transparent)}
#f-prod .ep-chip input{margin:0;width:16px;height:16px;accent-color:var(--accent,#e31e24)}
#f-prod .ep-chip svg,#f-prod .mp-sp svg{width:15px;height:15px;flex:none}
#f-prod .mp-sp table{width:100%;border-collapse:collapse}#f-prod .mp-sp tr{border-bottom:1px solid var(--border,#2a2e34)}
#f-prod .mp-sp td{padding:6px 4px;vertical-align:middle}#f-prod .mp-sp td:last-child{width:96px;text-align:right}
#f-prod .mp-sp td label{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:.9rem;margin:0}
#f-prod .mp-sp td label input{margin:0;width:16px;height:16px;flex:none;accent-color:var(--accent,#e31e24)}
#f-prod .p-sd{width:88px !important;height:34px;padding:4px 8px;text-align:right;margin:0;box-sizing:border-box;font-variant-numeric:tabular-nums}
@media (max-width:700px){#f-prod .mp-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}#f-prod .ep-w2,#f-prod .mp-grid>label:has(#p-plano),#f-prod #p-arm-l{grid-column:1/-1}#f-prod .p-sd{width:76px !important}#f-prod .mp-sp td:last-child{width:80px}}
/* —— Archivos de referencia —— */
.ep-refs{margin-top:14px}.ep-refs .pr-lab small{text-transform:none;letter-spacing:0;font-weight:400}
.rf-ed{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.rf-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border,#3a3f47);border-radius:10px;min-width:0}
.rf-row .rf-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rf-row .btn-text{padding:4px 6px;margin:0}.rf-del{color:var(--accent,#e31e24) !important}
.rf-sub{display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:1px dashed var(--border,#3a3f47);border-radius:10px;padding:8px 14px}
.rf-acc{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px}
.rf-btn{font:inherit;font-weight:600;padding:10px 14px;border-radius:12px;border:1px solid var(--accent,#e31e24);background:color-mix(in srgb,var(--accent,#e31e24) 12%,transparent);color:inherit;cursor:pointer}
.rf-ov{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:12px}
.rf-box{background:var(--surface,#1c1f24);color:var(--text,#eee);border-radius:14px;width:min(960px,100%);max-height:94vh;display:flex;flex-direction:column;overflow:hidden}
.rf-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border,#3a3f47)}.rf-h b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rf-x{font-size:1.2rem;background:none;border:0;color:inherit;cursor:pointer;padding:4px 8px}
.rf-l{padding:10px;display:flex;flex-direction:column;gap:6px;overflow:auto}
.rf-it{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--border,#3a3f47);border-radius:10px;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0}.rf-it .rf-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rf-v{display:flex;flex-direction:column;min-height:0;flex:1}.rf-v[hidden]{display:none}.rf-vh{display:flex;align-items:center;gap:10px;padding:6px 10px}.rf-vh span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rf-v img{max-width:100%;max-height:80vh;object-fit:contain;margin:0 auto;display:block;background:#fff;touch-action:pinch-zoom}
#f-prod .mp-sp td label{color:var(--text,inherit) !important;font-size:.92rem !important;font-weight:500;opacity:1}
#f-prod .mp-sp summary small{margin-left:6px}
#f-prod .rf-sub{text-transform:none;letter-spacing:0;font-size:.9rem;font-weight:600;color:var(--text,inherit);text-decoration:none}
#f-prod .mp-sp td label{word-break:normal;overflow-wrap:normal;hyphens:auto}#f-prod .mp-sp td:first-child{width:auto}@media (max-width:700px){#f-prod #p-tipo{font-size:.9rem}}
/* —— refs arriba (15/10) —— */
#f-prod .mp-grid>label:has(#p-plano),#f-prod #p-arm-l{grid-column:span 2}
#f-prod .ep-refs{grid-column:span 2;margin:0;display:flex;flex-direction:column;gap:6px;min-width:0;align-self:start}
#f-prod .ep-lab{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#8a9099);line-height:1.3}
#f-prod .ep-rfbox{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:44px;padding:4px 6px;border-radius:12px;background:var(--surface2,rgba(127,127,127,.12));box-sizing:border-box}
#f-prod .rf-sub{border:1px dashed var(--border,#555);border-radius:999px;padding:6px 12px;font-size:.85rem;white-space:nowrap;margin:0}
#f-prod .rf-sub b{display:inline-block;min-width:1.4em;text-align:center;border-radius:999px;background:var(--accent,#e31e24);color:#fff;font-size:.75rem;padding:0 5px;margin-left:4px}
#f-prod .rf-chips{display:contents}
#f-prod .rf-chip{display:inline-flex;align-items:center;max-width:100%;border:1px solid var(--border,#3a3f47);border-radius:999px;overflow:hidden;min-width:0}
#f-prod .rf-cv{display:inline-flex;align-items:center;gap:5px;background:none;border:0;color:inherit;font:inherit;font-size:.82rem;padding:5px 4px 5px 10px;cursor:pointer;min-width:0}
#f-prod .rf-cv .rf-n{max-width:11em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#f-prod .rf-chip .rf-del{background:none;border:0;cursor:pointer;padding:5px 9px 5px 4px;font-size:.8rem;color:var(--muted,#8a9099) !important}#f-prod .rf-chip .rf-del:hover{color:var(--accent,#e31e24) !important}
@media (max-width:700px){#f-prod .ep-refs{grid-column:1/-1}}
#f-prod .mp-grid{align-items:start !important}#f-prod .rf-sub{display:inline-flex !important;flex-direction:row !important;align-items:center;gap:4px;color:var(--text,inherit) !important;font-weight:600}#f-prod .rf-sub b{margin-left:2px}#f-prod .ep-rfbox{min-height:44px}
/* —— Ritmo de la sesión (operario) —— */
.rt-box{margin:6px 0 12px;padding:8px 12px 6px;border:1px solid var(--border,rgba(127,127,127,.25));border-radius:12px;background:color-mix(in srgb,var(--surface,#fff) 70%,transparent)}
.rt-h{display:flex;align-items:baseline;gap:8px}.rt-h span,.rt-vacio span{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#8a9099)}
.rt-h b{font-size:1rem;font-variant-numeric:tabular-nums}.rt-h b small{font-weight:400;color:var(--muted,#8a9099);font-size:.75rem}
.rt-tag{margin-left:auto;font-style:normal;font-size:.75rem;font-weight:600;padding:2px 9px;border-radius:999px;border:1px solid currentColor}
.rt-tv{color:#1f9d55}.rt-tr{color:#e5484d}.rt-ta{color:#d9822b}
.rt-svg{display:block;width:100%;height:56px;margin-top:4px;overflow:visible}
.rt-svg line.rt-v,.rt-svg line.rt-r{stroke-width:2.2;stroke-linecap:round;vector-effect:non-scaling-stroke}
.rt-v{stroke:#1f9d55}.rt-r{stroke:#e5484d}.rt-pv{fill:#1f9d55}.rt-pr{fill:#e5484d}
.rt-ref{stroke:var(--muted,#8a9099);stroke-width:1;stroke-dasharray:3 4;opacity:.7;vector-effect:non-scaling-stroke}
.rt-banda{fill:var(--muted,#8a9099);opacity:.08}
.rt-pie{display:block;font-size:.68rem;color:var(--muted,#8a9099);margin-top:2px}
.rt-vacio{display:flex;align-items:center;justify-content:space-between;gap:8px}.rt-vacio small{color:var(--muted,#8a9099);font-size:.8rem}
/* —— Resumen de personal —— */
.ps-ley{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 0 2px;font-size:.78rem;color:var(--muted,#8a9099)}.ps-ley span{display:inline-flex;align-items:center;gap:6px}.ps-ley i{width:16px;height:8px;border-radius:3px;display:inline-block}
.rt-ok{background:#1f9d55}.rt-dem{background:#e3b341}.rt-par{background:#e5484d}.rt-pre{background:#4c8dff}.rt-post{background:#9b6bff}.rt-sin{background:color-mix(in srgb,var(--muted,#8a9099) 22%,transparent)}
.ps-regla-txt{font-size:.74rem;margin:4px 0 10px}
.ps-sec{margin:8px 0 !important;padding:8px 10px !important}
.ps-regla{position:relative;height:16px;margin:2px 0 4px 0}.ps-regla i{position:absolute;top:0;bottom:-4px;border-left:1px solid var(--border,rgba(127,127,127,.25))}.ps-regla b{position:absolute;left:3px;top:0;font-size:.62rem;font-weight:500;color:var(--muted,#8a9099);font-variant-numeric:tabular-nums}
.ps-fila{display:grid;grid-template-columns:minmax(150px,220px) minmax(0,1fr);grid-template-areas:"q res" "bar bar";gap:4px 12px;padding:8px 0;border-top:1px solid var(--border,rgba(127,127,127,.18))}
.ps-q{grid-area:q;min-width:0;display:flex;flex-direction:column}.ps-q b{font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-secs{color:var(--muted,#8a9099);font-size:.74rem;line-height:1.3}
.ps-res{grid-area:res;display:flex;flex-wrap:wrap;gap:4px 14px;justify-content:flex-end;align-items:center;font-size:.78rem;color:var(--muted,#8a9099);font-variant-numeric:tabular-nums}.ps-res b{color:var(--text,inherit);font-weight:600}.ps-res .ps-mal b{color:#e5484d}
.ps-bar{grid-area:bar;position:relative;height:18px;border-radius:5px;background:color-mix(in srgb,var(--muted,#8a9099) 8%,transparent);overflow:hidden}
.ps-t{position:absolute;top:2px;bottom:2px;border-radius:2px;cursor:pointer;min-width:2px}.ps-t:hover{filter:brightness(1.25);top:0;bottom:0}
.ps-t.rt-sin{top:7px;bottom:7px}
.ps-ahora{position:absolute;top:0;bottom:0;width:2px;background:var(--accent,#e31e24);opacity:.8}
.ps-ficha{position:fixed;z-index:900;background:var(--surface,#1c1f24);color:var(--text,#eee);border:1px solid var(--border,#3a3f47);border-radius:12px;padding:10px 12px;box-shadow:0 10px 30px rgba(0,0,0,.35);font-size:.8rem;pointer-events:auto}
.ps-ficha>b{display:block;font-size:.9rem}.ps-ficha>small{color:var(--muted,#8a9099)}.ps-ficha dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:8px 0 6px}.ps-ficha dt{color:var(--muted,#8a9099)}.ps-ficha dd{margin:0}
.ps-frase{margin:6px 0 0;padding-top:6px;border-top:1px solid var(--border,#3a3f47);font-style:italic}
.ps-ob{display:flex;flex-wrap:wrap;gap:6px}
@media (max-width:600px){.ps-fila{grid-template-columns:minmax(0,1fr);grid-template-areas:"q" "res" "bar"}.ps-res{justify-content:flex-start;gap:2px 10px}.ps-regla b{font-size:.56rem}}
.rt-a{stroke:#e3b341}.rt-pa{fill:#e3b341}.rt-svg line.rt-a{stroke-width:2.2;stroke-linecap:round;vector-effect:non-scaling-stroke}
#f-prod .mp-sp td:last-child{width:auto !important;text-align:right;white-space:normal}
#f-prod .ep-med{display:block;font-size:.72rem;margin-top:3px;font-variant-numeric:tabular-nums}#f-prod .ep-rev{color:#d9822b !important}
#f-prod .ep-usar{font-size:.72rem;padding:2px 0 !important;margin:0}
.rt-a{stroke:#e3b341}.rt-pa{fill:#e3b341}.rt-svg line.rt-a{stroke-width:2.2;stroke-linecap:round;vector-effect:non-scaling-stroke}
#f-prod .mp-sp td:last-child{width:auto !important;text-align:right;white-space:normal}
#f-prod .ep-med{display:block;font-size:.72rem;margin-top:3px;font-variant-numeric:tabular-nums}#f-prod .ep-rev{color:#d9822b !important}
#f-prod .ep-usar{font-size:.72rem;padding:2px 0 !important;margin:0}

/* compañeros: ampliar búsqueda si la planta está vacía */
.eq-mas { display: grid; gap: 8px; margin-top: 10px; }
.eq-mas .btn-secondary { width: 100%; }
/* novedades del header */
.nv-btn.nv-nuevo { outline: 2px solid #E5A000; outline-offset: 1px; }
.nv-lista { margin: 0; padding-left: 1.2em; display: grid; gap: 8px; line-height: 1.4; }
@media (max-width: 400px) { #btn-novedad { padding-left: 8px; padding-right: 8px; font-size: .85rem; } }

/* —— Asistente flotante —— */
.as-fab { position: fixed; right: max(14px, env(safe-area-inset-right)); bottom: max(14px, env(safe-area-inset-bottom)); z-index: 900; width: 56px; height: 56px; border-radius: 50%; border: none; background: #1A1A1A; color: #fff; font-size: 1.45rem; box-shadow: 0 8px 24px rgba(0,0,0,.35); cursor: pointer; display: grid; place-items: center; }
.as-fab:hover, .as-fab:focus-visible { outline: 2px solid #E5A000; outline-offset: 2px; }
.as-fab[hidden], .as-panel[hidden] { display: none !important; }
/* Panel: form siempre visible; sólo el chat scrollea. */
.as-panel { position: fixed; right: max(10px, env(safe-area-inset-right)); bottom: max(78px, calc(env(safe-area-inset-bottom) + 70px)); z-index: 901; width: min(400px, calc(100vw - 16px)); max-height: min(calc(100dvh - 88px), calc(100vh - 88px), 640px); background: var(--surface, #fff); color: var(--text); border-radius: 18px; box-shadow: 0 16px 48px rgba(0,0,0,.35); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border, #ddd); }
.as-h { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--border, #ddd); font-weight: 800; flex: 0 0 auto; }
.as-h .as-x { margin-left: auto; }
.as-tabs { display: flex; gap: 6px; padding: 8px 12px 0; flex: 0 0 auto; }
.as-tabs button { flex: 1; }
.as-tabs button.on { outline: 2px solid #E5A000; }
#as-chat { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; }
#as-chat[hidden] { display: none !important; }
.as-msgs { flex: 1 1 auto; min-height: 48px; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 10px 12px; display: grid; gap: 8px; align-content: start; }
.as-burb { max-width: 94%; padding: 10px 12px; border-radius: 14px; line-height: 1.4; font-size: .95rem; white-space: pre-wrap; }
.as-burb.yo { justify-self: end; background: #1A1A1A; color: #fff; border-bottom-right-radius: 4px; }
.as-burb.bot { justify-self: start; background: var(--bg, #f4f4f4); border-bottom-left-radius: 4px; }
.as-burb.meta { justify-self: center; background: transparent; color: var(--muted); font-size: .82rem; padding: 0; white-space: normal; }
.as-tips { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 12px 6px; flex: 0 0 auto; max-height: 64px; overflow-y: auto; }
.as-tips button { font-size: .78rem; }
/* Formulario anclado abajo: nunca se recorta por overflow del panel. */
.as-form { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--border, #ddd); flex: 0 0 auto; background: var(--surface, #fff); position: relative; z-index: 2; }
.as-form .as-lab { font-size: .8rem; font-weight: 700; color: var(--text); }
.as-form textarea.as-input { display: block !important; visibility: visible !important; width: 100%; min-height: 72px; max-height: 110px; box-sizing: border-box; margin: 0; padding: 10px 12px; font: inherit; font-size: 16px; line-height: 1.35; border-radius: 14px; border: 2px solid var(--border-strong, #888); background: var(--bg, #f4f4f4); color: var(--text); resize: none; }
.as-form textarea.as-input:focus { outline: 2px solid #E5A000; outline-offset: 1px; }
.as-form .as-send { width: 100%; min-height: 44px; flex: 0 0 auto; }
.as-lista { overflow-y: auto; padding: 10px 12px; display: grid; gap: 8px; flex: 1 1 auto; min-height: 0; }
.as-item { border: 1px solid var(--border, #ddd); border-radius: 12px; padding: 8px 10px; font-size: .88rem; }
.as-item.sin { border-color: #E5A000; }
.as-item b { display: block; margin-bottom: 2px; }
@media (max-height: 640px) {
  .as-panel { max-height: calc(100dvh - 76px); bottom: max(70px, calc(env(safe-area-inset-bottom) + 62px)); }
  .as-tips { max-height: 40px; }
  .as-form textarea.as-input { min-height: 56px; max-height: 80px; }
  .as-msgs { min-height: 36px; }
}
@media (max-width: 400px) { .as-fab { width: 50px; height: 50px; font-size: 1.25rem; } }

/* compañeros: mismo centro / otros centros */
.eq-lab { margin: 10px 0 4px; }
.eq-otros { margin: 12px 0 4px; border: 1px solid var(--border, #ddd); border-radius: 14px; padding: 0; background: var(--surface, #fff); }
.eq-otros > summary { cursor: pointer; padding: 12px 14px; font-weight: 700; list-style: none; }
.eq-otros > summary::-webkit-details-marker { display: none; }
.eq-otros > summary::before { content: "▸ "; color: var(--muted); }
.eq-otros[open] > summary::before { content: "▾ "; }
.eq-otros .pr-lista { padding: 0 8px 10px; }

/* home: profundidad suave (capa UI-T / data-hx-app=produccion) — v=depth1 */
