:root{
  --bg:#0D1117;
  --inset:#010409;
  --card:#161B22;
  --border:rgba(255,255,255,.08);
  --border-strong:rgba(255,255,255,.18);
  --text:#E6EDF3;
  --muted:#9AA4AE;
  --accent:#10B981;
  --accent-dim:rgba(16,185,129,.12);
  --accent-ring:rgba(16,185,129,.45);
  --accent-text:#04140D;
  --danger:#EF4444;
  --danger-dim:rgba(239,68,68,.16);
  --warn:#F59E0B;
  --warn-dim:rgba(245,158,11,.14);
  --r-tile:8px;
  --r-card:12px;
  --lateral:16rem;
  --icon-12:12px;
  --icon-16:16px;
  --icon-20:20px;
  font-size:16px;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--text);font:1rem/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;display:flex;overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
a{color:var(--accent)}
.icon{display:block;width:var(--icon-16);height:var(--icon-16);stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.icon--12{width:var(--icon-12);height:var(--icon-12)}
.icon--16{width:var(--icon-16);height:var(--icon-16)}
.icon--20{width:var(--icon-20);height:var(--icon-20)}

.side{width:var(--lateral);min-width:var(--lateral);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.1rem .7rem}
.logo{display:flex;align-items:center;gap:.65rem;padding:.4rem .7rem 1.2rem}
.brand-logo{display:block;width:152px;height:auto;object-fit:contain}
.login-logo{width:3.1rem;height:3.1rem;object-fit:contain;margin-bottom:.65rem}
.logo b{font-size:1.15rem;letter-spacing:.2px;display:block}.logo small{display:block;font-size:.72rem;color:var(--muted);letter-spacing:.9px;text-transform:uppercase}
.nav,.nav-mobile{display:flex;flex-direction:column;gap:.15rem}.nav button,.nav-mobile button{display:flex;align-items:center;gap:.7rem;width:100%;padding:.62rem .7rem;border-radius:.55rem;color:var(--muted);font-weight:600;font-size:1rem;text-align:left}
.nav button:hover,.nav-mobile button:hover{background:rgba(255,255,255,.05);color:var(--text)}.nav button.on,.nav-mobile button.on{background:var(--accent-dim);color:var(--accent)}.nav-mobile{display:none}.mobile-menu-control{display:none}
.side .spacer{flex:1}.side-foot{border-top:1px solid var(--border);padding-top:.7rem;margin-top:.7rem}.user{display:flex;align-items:center;gap:.65rem;padding:.55rem .7rem;border-radius:.6rem}
.avatar{width:2.3rem;height:2.3rem;border-radius:.55rem;background:linear-gradient(135deg,#10B981,#0B7A57);display:grid;place-items:center;font-weight:700;font-size:.8rem;color:var(--accent-text)}
.user .who{flex:1;min-width:0;text-align:left}.user .who b{display:block;font-size:.92rem;font-weight:600}.user .who span{display:block;font-size:.78rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.main{flex:1;display:flex;flex-direction:column;min-width:0}.top{height:4.2rem;min-height:4.2rem;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:1rem;padding:0 1.6rem}.top h1{font-size:1.35rem;font-weight:650;letter-spacing:-.2px}.top .sub{color:var(--muted);font-size:.92rem}.top .right{margin-left:auto;display:flex;align-items:center;gap:.6rem}.content{flex:1;overflow:auto;padding:1.5rem 1.6rem 3rem}.wrap{max-width:min(1720px,100%)}.screen{display:none}.screen.on{display:block}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.55rem 1.05rem;border-radius:.55rem;font-weight:650;font-size:.95rem}.btn:focus-visible,.nav button:focus-visible,.nav-mobile button:focus-visible,.stat-link:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}a.btn{text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-text)}.btn.primary:hover{filter:brightness(1.08)}.btn.apply-ia{background:#2563EB;border:1px solid #3B82F6;color:#FFF}.btn.apply-ia:hover{background:#1D4ED8;border-color:#60A5FA}.btn.apply-ia:focus-visible{outline-color:#60A5FA}.btn.ghost{border:1px solid var(--border);color:var(--text)}.btn.ghost:hover{border-color:var(--border-strong)}.btn.peligro{border:1px solid rgba(239,68,68,.45);color:#FCA5A5}.btn.peligro:hover{background:var(--danger-dim)}.btn[disabled]{opacity:.5;cursor:not-allowed}
input[type=text],input[type=email],input[type=password],select{background:var(--inset);border:1px solid var(--border);border-radius:.55rem;padding:.55rem .8rem;font-size:.95rem;color:var(--text);min-width:0}input:focus,select:focus{outline:2px solid var(--accent-ring);outline-offset:1px;border-color:var(--accent-ring)}label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.35rem}
textarea{background:var(--inset);border:1px solid var(--border);border-radius:.55rem;padding:.55rem .8rem;font:inherit;color:var(--text);min-height:8rem;width:100%;resize:vertical}textarea:focus{outline:2px solid var(--accent-ring);outline-offset:1px;border-color:var(--accent-ring)}

.barra{display:flex;flex-wrap:wrap;gap:.6rem;align-items:end;margin-bottom:1.1rem}.barra .crece{flex:1;min-width:14rem}.tarjeta{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:1.2rem 1.35rem;margin-bottom:1.1rem}.tarjeta h2{font-size:1.05rem;font-weight:650;margin-bottom:.9rem}.tarjeta h2 .sub{font-weight:400;color:var(--muted);font-size:.85rem;margin-left:.5rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem;margin-bottom:1.2rem}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:1.2rem 1.35rem}.stat-link{text-align:left;width:100%;transition:border-color .15s ease,transform .15s ease}.stat-link:hover{border-color:var(--accent-ring);transform:translateY(-1px)}.stat span{color:var(--muted);font-size:.9rem;display:block}.stat b{display:block;font-size:2.4rem;line-height:1.1;font-weight:700;margin:.35rem 0 .2rem;letter-spacing:-1px}.stat b.vacio{color:var(--muted);font-size:1.35rem;letter-spacing:0}.stat small{font-size:.82rem;color:var(--muted)}.stat small.ok{color:var(--accent)}.stat small.warn{color:var(--warn)}

.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .7rem;border:1px solid var(--border);border-radius:999px;font-size:.82rem;color:var(--muted);white-space:nowrap}.chip.ok{color:var(--accent);border-color:var(--accent-ring)}.chip.warn{color:var(--warn);border-color:rgba(245,158,11,.4)}.chip.peligro,.chip.bad{color:#FCA5A5;border-color:rgba(239,68,68,.45)}.chip.mute{color:var(--muted)}.dot{width:.45rem;height:.45rem;border-radius:50%;background:currentColor}.dot.pulse{animation:pulse 1.6s infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

.tabla-caja{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden}.tabla-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.95rem}th{text-align:left;font-weight:650;font-size:.78rem;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);padding:.85rem 1.1rem;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:.9rem 1.1rem;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:0}td.mono,.mono{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;font-size:.88rem}td .acciones,.acciones{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}

.aviso{border:1px solid var(--border);border-left:3px solid var(--muted);background:var(--card);border-radius:var(--r-card);padding:1rem 1.2rem;font-size:.95rem;color:var(--text);margin-bottom:1.1rem}.aviso b{display:block;margin-bottom:.3rem;font-size:1rem}.aviso p{color:var(--muted)}.aviso.pendiente{border-left-color:var(--warn)}.aviso.malo{border-left-color:var(--danger)}.aviso.bueno{border-left-color:var(--accent)}.aviso code{font-family:ui-monospace,Consolas,monospace;background:var(--inset);padding:.1rem .35rem;border-radius:.25rem;font-size:.88rem}.cargando{color:var(--muted);padding:1.4rem 0;font-size:.95rem}

.puerta{position:fixed;inset:0;z-index:50;background:var(--bg);display:grid;place-items:center;padding:1.5rem}.puerta form{width:min(27rem,100%);background:var(--card);border:1px solid var(--border);border-radius:var(--r-card);padding:1.8rem}.puerta h1{font-size:1.5rem;margin-bottom:.3rem}.puerta .lead{color:var(--muted);font-size:.92rem;margin-bottom:1.4rem}.puerta .campo{margin-bottom:1rem}.puerta input{width:100%}.puerta .btn{width:100%;margin-top:.4rem;padding:.7rem}.fallo{color:#FCA5A5;font-size:.9rem;min-height:1.2rem}.puerta .fallo{margin-top:.9rem}.oculto{display:none !important}

.modal-dialog{position:fixed;inset:0;margin:auto;width:min(34rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);overflow:auto;background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-card);padding:0;box-shadow:0 1.4rem 4rem rgba(0,0,0,.5)}.modal-dialog::backdrop{background:rgba(5,10,20,.76)}.modal-form{display:grid;gap:.85rem;padding:1.4rem}.modal-form h2{font-size:1.18rem}.modal-form h3{font-size:1rem;margin-top:.4rem}.modal-form p{color:var(--muted)}.modal-content{display:grid;gap:.75rem}.modal-content input,.modal-content select{width:100%}.modal-form[aria-busy="true"]{cursor:progress}.modal-progress{min-height:1.5rem;font-variant-numeric:tabular-nums}.modal-spinner{inline-size:1rem;block-size:1rem;border:2px solid currentColor;border-inline-start-color:transparent;border-radius:50%;animation:modal-spinner-rotate .8s linear infinite;flex:0 0 auto}@keyframes modal-spinner-rotate{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.modal-spinner{animation:none;border-inline-start-color:currentColor;opacity:.75}}
.toggle-linea{display:inline-flex;align-items:center;gap:.45rem;min-height:2.5rem;margin:0;color:var(--muted)}.toggle-linea input{accent-color:var(--accent)}.toggle-linea input:disabled{cursor:not-allowed}.alert-snapshot{display:block;width:7.5rem;max-width:20vw;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--border);border-radius:.4rem;background:var(--inset)}
.editor-grid{display:grid;grid-template-columns:minmax(16rem,1fr) minmax(16rem,1fr);gap:1rem}.frame-shell{min-height:16rem;border:1px solid var(--border-strong);border-radius:var(--r-card);overflow:hidden;display:grid;place-items:center;background:var(--inset)}.ia-canvas{display:block;width:100%;min-height:16rem;outline:none;touch-action:none;cursor:crosshair}.ia-canvas:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.latest-frame{display:block;max-width:100%;max-height:22rem;object-fit:contain}.frame-grid{width:100%;min-height:16rem;border:1px dashed var(--border-strong);border-radius:var(--r-card);display:grid;place-items:center;padding:1rem;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:1.5rem 1.5rem;color:var(--muted);text-align:center}.editor-fields{display:grid;gap:.75rem}.editor-fields textarea{min-height:11rem;width:100%;resize:vertical}.editor-fields fieldset{display:grid;gap:.5rem;border:1px solid var(--border);border-radius:var(--r);padding:.7rem}.crop-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.crop-fields label{display:grid;gap:.25rem}.editor-fields .acciones{margin-top:.3rem}.extra-zone{color:var(--muted);font-size:.9rem}.extra-zone pre{overflow:auto;white-space:pre-wrap}.effect-summary{display:grid;gap:.5rem;margin:.8rem 0}.effect-summary strong{display:block}.chip.bad{color:#FCA5A5}
.ia-workbench{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;max-block-size:calc(100dvh - 8.8rem);padding:0;overflow:hidden}.ia-workbench-header{padding:1.2rem 1.35rem .8rem;border-bottom:1px solid var(--border);background:var(--card);z-index:1}.ia-workbench-header h2{margin-bottom:.35rem}.ia-section-tabs{display:flex;gap:.4rem;margin-top:.85rem;overflow-x:auto;scrollbar-width:thin}.ia-section-tabs [role=tab]{flex:0 0 auto;border:1px solid var(--border);border-radius:.5rem;padding:.45rem .7rem;color:var(--muted);font-weight:650}.ia-section-tabs [role=tab][aria-selected=true]{color:var(--accent);border-color:var(--accent-ring);background:var(--accent-dim)}.ia-section-tabs [role=tab]:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.ia-workbench-content{min-height:0;overflow:auto;padding:1rem 1.35rem}.ia-section-panel{min-height:0}.ia-section-card{display:grid;gap:1rem;max-width:64rem}.ia-section-card h3{font-size:1.05rem}.ia-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.ia-control-grid label,.editor-fields fieldset>label{display:grid;gap:.3rem}.ia-control-grid input,.ia-control-grid select,.ia-section-card input[type=number]{width:100%;min-width:0;background:var(--inset);border:1px solid var(--border);border-radius:.55rem;padding:.55rem .8rem;color:var(--text)}.ia-toggle-grid{display:grid;gap:.55rem}.ia-toggle-grid label{display:flex;align-items:center;gap:.5rem}.ia-readonly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.ia-readonly-grid div{border:1px solid var(--border);border-radius:.55rem;padding:.75rem;background:var(--inset)}.ia-readonly-grid dt{color:var(--text);font-weight:650}.ia-readonly-grid dd{margin:.25rem 0 0;color:var(--muted)}.ia-workbench-footer{position:sticky;bottom:0;padding:.75rem 1.35rem 1.1rem;border-top:1px solid var(--border);background:var(--card);box-shadow:0 -.6rem 1rem rgba(13,17,23,.5);z-index:1}.ia-workbench-footer .acciones{margin:.4rem 0}.schedule-workbench{max-width:60rem}.schedule-workbench .ia-workbench-footer{margin:1rem -1.35rem -1.2rem}.schedule-workbench .schedule-row{display:grid;grid-template-columns:minmax(7rem,1fr) minmax(7rem,1fr) minmax(7rem,1fr);gap:.6rem;align-items:end;padding:.55rem 0;border-bottom:1px solid var(--border)}.schedule-workbench .schedule-row label{display:grid;gap:.25rem}.schedule-workbench input[type=time]{background:var(--inset);border:1px solid var(--border);border-radius:.55rem;padding:.55rem .8rem}
.schedule-presets{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0 .45rem}.schedule-presets .btn{padding:.48rem .72rem}.schedule-preset-note{margin:0 0 .65rem;color:var(--muted);font-size:.84rem}.schedule-scroll{max-block-size:min(24rem,48dvh);overflow:auto;padding-right:.35rem;scrollbar-width:thin;overscroll-behavior:contain}.schedule-scroll .schedule-row:first-child{border-top:1px solid var(--border)}

@media (min-width:1500px){:root{font-size:17px;--lateral:17rem}}
@media (max-width:1000px){.side{width:12rem;min-width:12rem;padding:1rem .45rem}.user .who{display:none}.content{padding:1.1rem 1rem 3rem}.top{padding:0 1rem;overflow-x:auto;overflow-y:hidden}.top .right{gap:.4rem}.top .right .btn{padding:.45rem .65rem;font-size:.85rem;white-space:nowrap}.top h1{white-space:nowrap}.top .sub{display:none}}
@media (max-width:640px){body{overflow:auto}.side{display:none}.main{min-height:100dvh}.mobile-menu-control{display:inline-flex}.nav-mobile:not([hidden]){display:flex;gap:.2rem;padding:.65rem .9rem;border-bottom:1px solid var(--border);background:var(--inset)}.nav-mobile button{border:1px solid var(--border);justify-content:flex-start}.top{height:auto;min-height:4.2rem;flex-wrap:wrap;padding-block:.7rem}.top .right{width:100%;margin-left:0;overflow-x:auto}.content{padding:.9rem}.barra .crece{min-width:100%}.stats{grid-template-columns:1fr}.btn{min-height:2.7rem}}
@media (max-width:800px){.editor-grid{grid-template-columns:1fr}}
@media (max-width:800px){.ia-workbench{max-block-size:none;overflow:visible}.ia-workbench-content{overflow:visible}.ia-control-grid,.ia-readonly-grid{grid-template-columns:1fr}.ia-workbench-footer{position:sticky;padding-inline:1rem}.schedule-workbench .schedule-row{grid-template-columns:1fr}.ia-section-tabs{margin-inline:-.15rem;padding-inline:.15rem}}
