:root{
  --bg:#EAF1FA;
  --panel:#FFFFFF;
  --ink:#1E2430;
  --ink-soft:#5B6472;
  --line:#D6E3F2;
  --accent:#2E6BA6;
  --accent-soft:#DCE9F7;
  --ok:#3F7A57;
  --ok-soft:#E3EFE7;
  --warn:#B23B3B;
  --warn-soft:#F7E4E1;
  --slate:#2B3240;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--ink);}
.wrap{max-width:1860px;margin:0 auto;padding:22px 18px 60px;}
header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:8px;}
header h1{font-size:20px;font-weight:700;letter-spacing:-0.01em;margin:0;}
header .sub{font-size:12.5px;color:var(--ink-soft);}
nav{display:flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:4px;margin-bottom:20px;width:fit-content;flex-wrap:wrap;}
nav button{border:none;background:transparent;padding:9px 16px;border-radius:7px;font-size:13.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;font-family:inherit;}
nav button.active{background:var(--slate);color:#fff;}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin-bottom:18px;}
.panel h2{font-size:14.5px;margin:0 0 4px;font-weight:700;}
.panel p.hint{font-size:12.5px;color:var(--ink-soft);margin:0 0 16px;}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px;}
label{font-size:11.5px;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;display:block;margin-bottom:4px;}
input[type=text], input[type=number], select{
  border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:13px;font-family:inherit;background:#fff;color:var(--ink);
}
input[type=number]{width:70px;}
.btn{background:var(--slate);color:#fff;border:none;border-radius:7px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;}
.btn.secondary{background:transparent;color:var(--ink);border:1px solid var(--line);}
.btn.accent{background:var(--accent);}
.btn.danger{background:transparent;color:var(--warn);border:1px solid var(--warn-soft);padding:5px 10px;font-size:12px;}
table{border-collapse:collapse;width:100%;font-size:12.5px;}
th,td{border:1px solid var(--line);padding:6px 8px;text-align:center;}
th{background:var(--bg);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.02em;color:var(--ink-soft);}
td.name-cell, th.name-cell{text-align:left;font-weight:600;position:sticky;left:0;background:#fff;z-index:2;}
th.name-cell{background:var(--bg);z-index:3;}
.tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:20px;background:var(--accent-soft);color:var(--accent);}
.grid-scroll{overflow-x:auto;}
.emp-card{border:1px solid var(--line);border-radius:9px;padding:12px 14px;margin-bottom:10px;background:#fdfdfc;}
.emp-card .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.emp-card .top strong{font-size:14px;}
.checks{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:6px;}
.checks .group{display:flex;flex-direction:column;gap:4px;}
.checks .group span.lbl{font-size:10.5px;color:var(--ink-soft);font-weight:700;text-transform:uppercase;margin-bottom:2px;}
.chk{display:flex;align-items:center;gap:5px;font-size:12.5px;}
.skill-row{display:flex;align-items:center;gap:6px;font-size:12.5px;}
.skill-row select{width:44px;padding:2px 4px;font-size:11.5px;}
.demand-input{width:56px;padding:4px 5px;font-size:12px;}
.status-ok{color:var(--ok);font-weight:700;}
.status-warn{color:var(--warn);font-weight:700;}
.badge-warn{background:var(--warn-soft);color:var(--warn);padding:2px 8px;border-radius:20px;font-size:11px;font-weight:700;}
.loc-block{margin-bottom:22px;}
.loc-block h3{font-size:13.5px;margin:0 0 8px;padding-bottom:6px;border-bottom:2px solid var(--slate);display:inline-block;}
footer.note{font-size:11.5px;color:var(--ink-soft);margin-top:6px;}
.empty{color:var(--ink-soft);font-size:13px;padding:16px 0;}
.gap-list li{font-size:12.5px;margin-bottom:4px;}
.toolbar{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.cell-loc{font-weight:700;font-size:11px;padding:3px 6px;border-radius:5px;}
.skill-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:4px 6px 4px 10px;font-size:12px;margin:0 6px 6px 0;}
.skill-chip button{border:none;background:transparent;color:var(--warn);cursor:pointer;font-weight:700;font-size:13px;line-height:1;}
.mix-table th, .mix-table td{padding:5px 6px;font-size:11.5px;}
.mix-table input{width:52px;}

.weekbar{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 14px;margin-bottom:14px;font-size:13px;flex-wrap:wrap;}
.sched-entry{border:1px solid var(--line);border-radius:6px;padding:4px;margin-bottom:4px;background:#fdfdfc;}
.sched-entry select, .sched-entry input{width:100%;background:#fff;}
/* Toda la tarjetita del turno pintada del color del local, no solo la
   palabra de arriba — para distinguir de un vistazo dónde trabaja cada uno.
   Los colores reales se generan en JS (ver applyDynamicLocationColors en
   ui.js) a partir de state.config.locationColors, editable en Configuración. */
/* Arrastrar y soltar turnos: la tarjetita se agarra del cuerpo (no de los
   selects/inputs, que siguen funcionando normal), y tanto la celda destino
   como el turno puntual sobre el que pasás por arriba se resaltan. */
.sched-entry{cursor:grab;}
.sched-entry:active{cursor:grabbing;}
.sched-entry select, .sched-entry input, .sched-entry button{cursor:auto;}
td.drop-target, .sched-entry.drop-target{outline:2px dashed var(--accent);outline-offset:-2px;background-color:var(--accent-soft) !important;}

/* ---- portal: barra de módulos (Gestión Gastronómica) ---- */
#portalBar{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;background:var(--slate);color:#fff;border-radius:12px;padding:10px 16px;margin-bottom:16px;}
#portalBar .portal-title{font-size:17px;font-weight:700;letter-spacing:-0.01em;display:flex;flex-direction:column;line-height:1.2;}
#portalBar .portal-sub{font-size:11px;font-weight:500;opacity:.7;letter-spacing:0;}
#portalBar .portal-mods{display:flex;gap:6px;flex-wrap:wrap;}
#portalBar .portal-mods button{border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;padding:8px 16px;border-radius:8px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;}
#portalBar .portal-mods button.active{background:#fff;color:var(--slate);border-color:#fff;}
#portalBar .portal-right{display:flex;align-items:center;gap:10px;font-size:12.5px;}
#portalBar .portal-user{opacity:.8;}
#portalBar .portal-salir{border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;padding:6px 12px;border-radius:7px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;}

/* ---- login gate ---- */
#loginScreen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}
#loginScreen .box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px 26px;width:100%;max-width:340px;}
#loginScreen h1{font-size:17px;margin:0 0 4px;}
#loginScreen p{font-size:12.5px;color:var(--ink-soft);margin:0 0 18px;}
#loginScreen label{margin-top:10px;}
#loginScreen input{width:100%;margin-bottom:2px;}
#loginScreen .btn{width:100%;margin-top:16px;}
#loginError{color:var(--warn);font-size:12.5px;margin-top:10px;display:none;}
#appRoot{display:none;}
.note{font-size:11.5px;color:var(--ink-soft);}

/* ---- ficha simple para el equipo (solo visible al exportar ese PDF) ---- */
#print-empleados-block{ display:none; }
.empleado-ficha{ break-inside:avoid; page-break-inside:avoid; margin-bottom:18px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.empleado-ficha:last-child{ border-bottom:none; }
.empleado-ficha-nombre{ font-size:14px; font-weight:700; margin-bottom:6px; }
.empleado-ficha-tabla{ border-collapse:collapse; width:100%; max-width:420px; }
.empleado-ficha-tabla td{ padding:4px 8px; font-size:12px; vertical-align:middle; border-bottom:1px solid var(--line); }
.empleado-ficha-dia{ font-weight:600; width:100px; white-space:nowrap; }
.empleado-ficha-libre{ color:var(--ink-soft); font-style:italic; }

/* ---- recibo compacto: se aplica al imprimirlo (y al medirlo) para que entre en una hoja ---- */
.recibo-compacto{ padding:0 !important; border:none !important; box-shadow:none !important; background:#fff !important; }
.recibo-compacto table{ font-size:9.5px !important; border-collapse:collapse; }
.recibo-compacto th, .recibo-compacto td{ padding:1px 3px !important; line-height:1.15 !important; }
.recibo-compacto p{ margin:2px 0 !important; }
.recibo-compacto [style*="margin-bottom:14px"]{ margin-bottom:5px !important; }
.recibo-compacto [style*="margin-top:16px"], .recibo-compacto [style*="margin-top:10px"]{ margin-top:4px !important; }
.recibo-compacto [style*="padding:6px;"]{ padding:2px !important; }
.recibo-compacto .row{ gap:10px !important; }

/* ---- exportar a PDF (imprimir solo un panel) ---- */
@media print{
  @page{ size: A4 landscape; margin: 10mm; }
  #portalBar, #modCompras{ display:none !important; }
  body.print-only-schedule #loginScreen,
  body.print-only-schedule-empleados #loginScreen,
  body.print-only-local #loginScreen,
  body.print-only-recibo #loginScreen{ display:none !important; }
  body.print-only-schedule header,
  body.print-only-schedule nav,
  body.print-only-schedule-empleados header,
  body.print-only-schedule-empleados nav,
  body.print-only-local header,
  body.print-only-local nav,
  body.print-only-recibo header,
  body.print-only-recibo nav,
  body.print-only-recibo #weekBar{ display:none !important; }
  body.print-only-schedule .panel:not(#panel-propuesta),
  body.print-only-schedule-empleados .panel,
  body.print-only-local .panel:not(#panel-vista-local),
  body.print-only-recibo .panel:not(#panel-recibo){ display:none !important; }
  body.print-only-schedule .wrap,
  body.print-only-schedule-empleados .wrap,
  body.print-only-local .wrap,
  body.print-only-recibo .wrap{ padding:0; max-width:none; }
  /* Export "empleados": ficha simple y propia, no la grilla de trabajo. */
  body.print-only-schedule-empleados #print-empleados-block{ display:block !important; }
  body.print-only-recibo .no-print{ display:none !important; }
  .grid-scroll{ overflow-x:visible !important; }
  table{ font-size:10px; }
}
