/* Cuadrante mensual: referencia operativa empleado x dia, con totales inferiores.
   Respeta los colores propios por empleado y todos los tokens claro/oscuro. */
#content .fm-coverage-head{border-top:0;border-bottom:1px solid var(--line)}
#content .fm-table-head{display:flex;align-items:center;justify-content:space-between;
  gap:8px 18px;padding:15px 16px 10px;flex-wrap:wrap}
#content .fm-table-head>div{display:flex;gap:7px 11px;align-items:baseline;flex-wrap:wrap}
#content .fm-table-head strong{font-size:15px;letter-spacing:-.015em;color:var(--ink)}
#content .fm-table-head span{font-size:11px;color:var(--ink-3)}
#content .fm-scroll{overflow-x:auto;overflow-y:hidden;max-width:100%;margin:0 13px;
  border:1px solid var(--line);border-radius:9px;scrollbar-width:thin;
  background:var(--surface)}
#content .fm-scroll:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
#content .fm-table{--fm-cell:31px;width:max-content;min-width:100%;border-spacing:0;
  border-collapse:separate;table-layout:fixed;color:var(--ink);font-variant-numeric:tabular-nums}
#content .fm-table :is(th,td){box-sizing:border-box;vertical-align:middle;
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0}
#content .fm-table :is(thead th, tbody th, tfoot th){font-weight:700}
#content .fm-table thead th{height:49px;background:var(--surface-inset)}
#content .fm-table .fm-person-col{width:146px;min-width:146px;max-width:146px;
  position:sticky;left:0;z-index:3;text-align:left;padding:6px 9px;
  background:var(--surface);border-right:1px solid var(--line-strong);
  white-space:normal;line-height:1.3}
#content .fm-table .fm-corner{z-index:6;background:var(--surface-inset);
  font-size:12px;color:var(--ink-2)}
#content .fm-table .fm-person-name{display:flex;align-items:center;gap:6px}
#content .fm-table .fm-person-name i{width:9px;height:9px;flex:0 0 9px;
  border-radius:50%}
#content .fm-table .fm-person-name b{font-size:11px;line-height:1.3;
  font-weight:750;overflow-wrap:anywhere;min-width:0}
#content .fm-table .fm-person-col>small{display:block;color:var(--ink-3);
  font-size:9px;font-weight:500;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;margin:2px 0 0 15px}
#content .fm-table .fm-hours-col{width:62px;min-width:62px;max-width:62px;
  position:sticky;right:0;z-index:3;text-align:center;
  border-left:1px solid var(--line-strong);background:var(--surface)}
#content .fm-table thead .fm-hours-col{z-index:6;background:var(--surface-inset);
  font-size:11px;color:var(--ink-3)}
#content .fm-table tbody .fm-hours-col strong{font-size:12px;color:var(--ink)}
#content .fm-table tbody .fm-hours-col small{font-size:9px;
  margin-left:2px;color:var(--ink-3)}
#content .fm-table .fm-date,#content .fm-table .fm-slot,
#content .fm-table .fm-total-cell{width:var(--fm-cell);min-width:var(--fm-cell);
  max-width:var(--fm-cell);text-align:center}
#content .fm-table .fm-date{position:relative;z-index:1}
#content .fm-table .fm-date-button{appearance:none;display:flex;flex-direction:column;
  align-items:center;justify-content:center;position:relative;
  width:100%;height:100%;min-height:49px;padding:4px 0;
  border:0;color:var(--ink);background:transparent;cursor:pointer}
#content .fm-table .fm-date-button span{color:var(--ink-3);font-size:9px;
  font-weight:680;line-height:1.2}
#content .fm-table .fm-date-button b{font-size:13px;font-weight:850;
  line-height:1.45}
#content .fm-table .fm-date.is-weekend{background:color-mix(in srgb,var(--blue) 7%,var(--surface))}
#content .fm-table .fm-date.is-closed{background:var(--surface-inset)}
#content .fm-table .fm-date.has-alert{box-shadow:inset 0 2px 0 var(--danger)}
#content .fm-table .fm-date.is-selected{box-shadow:inset 0 3px 0 var(--brand);
  background:var(--brand-soft)}
#content .fm-table .fm-date.has-alert.is-selected{box-shadow:inset 0 3px 0 var(--brand)}
#content .fm-guard-mark{position:absolute;left:2px;bottom:1px;font-size:8px;
  font-style:normal;font-weight:760;color:var(--brand)}
#content .fm-danger-mark{position:absolute;right:3px;bottom:3px;width:4px;
  height:4px;border-radius:100%;background:var(--danger)}
#content .fm-table tbody tr{height:43px}
#content .fm-table tbody tr:nth-child(even) .fm-person-col,
#content .fm-table tbody tr:nth-child(even) .fm-slot,
#content .fm-table tbody tr:nth-child(even) .fm-hours-col{background:var(--surface-raised)}
#content .fm-table .fm-slot.is-weekend{background:color-mix(in srgb,var(--blue) 4%,var(--surface))}
#content .fm-table .fm-slot.is-closed{background:var(--surface-inset)}
#content .fm-table .fm-slot.is-selected{background:var(--brand-faint)}
#content .fm-table .fm-slot{position:relative;height:43px}
/* Fixed shift palette: employee color is reserved for the identification dot.
   Token contrasts use the active surface and ink in both light and dark themes. */
#content .fm-type-morning{--fm-turn-color:#2F80ED}
#content .fm-type-afternoon{--fm-turn-color:#F2994A}
#content .fm-type-night,#content .fm-type-carry{--fm-turn-color:#6C5CE7}
#content .fm-type-continuous{--fm-turn-color:#27AE60}
#content .fm-type-split{--fm-turn-color:#D946EF}
#content .fm-type-other{--fm-turn-color:#EB5757}
#content .fm-type-vacation{--fm-turn-color:#14B8A6}
#content .fm-type-sick,#content .fm-type-leave{--fm-turn-color:#6B7280}
#content .fm-day-action{appearance:none;display:flex;align-items:center;
  justify-content:center;position:relative;min-height:30px;width:26px;
  margin:0 auto;cursor:pointer;padding:1px;
  border:1px solid color-mix(in srgb,var(--fm-turn-color,#6B7280) 76%,var(--line));
  border-radius:5px;color:var(--ink);
  background:color-mix(in srgb,var(--fm-turn-color,#6B7280) 23%,var(--surface))}
#content .fm-day-action b{font-size:12px;line-height:1;font-weight:820}
#content .fm-day-action small{position:absolute;bottom:0;right:2px;font-size:9px;line-height:1}
#content .fm-day-action:hover{
  background:color-mix(in srgb,var(--fm-turn-color,#6B7280) 35%,var(--surface));
  border-color:var(--fm-turn-color,#6B7280)}
#content .fm-day-action.fm-type-split{border-width:1px 1px 3px}
#content .fm-day-action.fm-type-night{background:color-mix(in srgb,var(--fm-turn-color) 29%,var(--surface))}
#content .fm-day-action.fm-type-carry{
  border-style:dashed;
  background:color-mix(in srgb,var(--fm-turn-color) 13%,var(--surface));
  color:var(--ink-2)
}
#content .fm-day-action.fm-type-carry b{font-size:16px;line-height:1}
#content .fm-day-action.fm-type-continuous{font-weight:850}
#content .fm-absence{display:grid;place-items:center;appearance:none;
  width:26px;height:28px;margin:0 auto;padding:0;
  border:1px solid color-mix(in srgb,var(--fm-turn-color,#6B7280) 76%,var(--line));
  border-radius:5px;
  background:color-mix(in srgb,var(--fm-turn-color,#6B7280) 23%,var(--surface));
  color:var(--ink);font-size:12px;cursor:pointer}
#content .fm-absence:hover{
  background:color-mix(in srgb,var(--fm-turn-color,#6B7280) 35%,var(--surface))}

#content .fm-absence b{font-weight:800}
#content .fm-empty{display:block;text-align:center;color:var(--ink-4);
  font-size:13px;opacity:.55}
#content .fm-add-shift{display:grid;place-items:center;appearance:none;
  width:26px;height:30px;margin:0 auto;background:transparent;
  color:var(--ink-4);border:1px dashed transparent;border-radius:6px;
  font-size:18px;line-height:1;cursor:pointer;opacity:0}
#content .fm-slot:hover .fm-add-shift,#content .fm-add-shift:focus-visible{
  border-color:var(--line-strong);background:var(--surface-inset);opacity:1}
#content .fm-date-button:focus-visible,#content .fm-day-action:focus-visible,
#content .fm-add-shift:focus-visible,#content .fm-absence:focus-visible,
#content .fm-total-cell button:focus-visible{outline:2px solid var(--focus-ring);
  outline-offset:2px}
#content .fm-table tfoot .fm-total-row{height:30px}
#content .fm-table tfoot .fm-total-label{position:sticky;left:0;z-index:3;
  padding:7px 9px;text-align:left;font-size:11px;white-space:nowrap;
  font-weight:730;background:var(--surface-inset);border-right:1px solid var(--line-strong)}
#content .fm-table tfoot .fm-total-cell{background:var(--surface-inset);
  color:var(--ink-2);height:30px}
#content .fm-table tfoot .fm-total-cell.is-weekend{background:color-mix(in srgb,var(--blue) 8%,var(--surface-inset))}
#content .fm-table tfoot .fm-total-cell.is-zero{color:var(--ink-4)}
#content .fm-table tfoot .fm-total-cell.is-selected{background:var(--brand-soft)}
#content .fm-table tfoot .fm-total-cell.is-critical{
  background:var(--danger-soft);color:var(--danger);font-weight:820}
#content .fm-table tfoot .fm-total-cell button{appearance:none;border:0;
  background:transparent;color:inherit;font:inherit;font-weight:700;
  width:100%;height:100%;min-height:30px;padding:3px 0;cursor:pointer}
#content .fm-table tfoot .fm-total-end{position:sticky;right:0;z-index:3;
  background:var(--surface-inset);text-align:center;font-weight:710;font-size:11px;
  border-left:1px solid var(--line-strong)}
#content .fm-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 11px;
  padding:11px 17px 5px;color:var(--ink-3);font-size:11px}
#content .fm-key span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
#content .fm-key b{display:inline-grid;place-items:center;min-width:17px;height:18px;
  padding:0 3px;border-radius:4px;background:var(--surface-inset);
  color:var(--ink);border:1px solid var(--line);font-size:10px}
#content .fm-key b[class*="fm-type-"]{
  background:color-mix(in srgb,var(--fm-turn-color,#6B7280) 23%,var(--surface));
  border-color:color-mix(in srgb,var(--fm-turn-color,#6B7280) 76%,var(--line));
  color:var(--ink)}
#content .fm-table-note{margin:2px 17px 12px;color:var(--ink-3);
  font-size:11px;line-height:1.45}
#content .fm-inspector{margin-top:0}
#content .month-calendar-head .month-legend span{white-space:normal}
#content .month-calendar-head .month-legend{text-align:right}
#content .fm-slot.month-quick-selectable{background:color-mix(in srgb,var(--brand) 12%,var(--surface))!important;
  cursor:pointer;outline:1px dashed var(--brand);outline-offset:-2px}
#content .fm-slot.month-quick-source{background:var(--brand-soft)!important}
#content .fm-slot.month-quick-drop-target{background:var(--brand-soft)!important;
  box-shadow:inset 0 0 0 2px var(--brand)}
@media(hover:none){
  #content .fm-add-shift{opacity:.45}
}
@media(max-width:760px){
  #content .fm-table{--fm-cell:35px}
  #content .fm-table .fm-person-col{width:132px;min-width:132px;max-width:132px}
  #content .fm-table .fm-hours-col{width:49px;min-width:49px;max-width:49px}
  #content .fm-table-head{padding:12px 11px 9px}
  #content .fm-scroll{margin:0 8px}
  #content .fm-key{padding:10px 11px 4px;gap:5px 9px}
  #content .fm-table-note{margin:4px 11px 10px}
  #content .fm-table-head>span{font-size:11px}
  #content .fm-table .fm-day-action{width:29px;min-height:32px}
}
#content .ft-month-coverage-list .ft-coverage-date{
  display:grid;justify-items:start;gap:3px;white-space:normal;
}
#content .ft-month-coverage-list .ft-coverage-date small{
  font-size:10px;color:var(--brand);font-weight:730;text-transform:none;text-decoration:underline;
  text-underline-offset:2px;
}
@media(max-width:610px){
  #content .month-calendar>.month-calendar-head{order:0}
  #content .month-calendar>.fm-coverage-head{order:1}
  #content .month-calendar>.fm-table-head{order:2}
  #content .month-calendar>.fm-scroll{order:3}
  #content .month-calendar>.fm-key{order:4}
  #content .month-calendar>.fm-table-note{order:5}
  #content .month-calendar>.fm-inspector{order:6}
  #content .month-calendar>.month-calendar-foot{order:7}
}
@media print{
  #content .fm-scroll{overflow:visible;border-color:var(--line)}
  #content .fm-table{min-width:0;width:100%;--fm-cell:19px}
  #content .fm-table .fm-person-col{width:95px;min-width:95px;max-width:95px;
    position:static;font-size:8px;padding:2px}
  #content .fm-table .fm-hours-col{position:static;width:31px;min-width:31px;max-width:31px}
  #content .fm-table .fm-person-name b{font-size:8px}
  #content .fm-table .fm-day-action{width:18px;min-height:20px}
  #content .fm-table tbody tr{height:23px}
  #content .fm-table .fm-slot{height:23px}
  #content .fm-table .fm-day-action b{font-size:9px}
  #content .fm-table .fm-total-label{position:static;font-size:8px;padding:1px}
  #content .fm-table tfoot .fm-total-row{height:20px}
  #content .fm-table tfoot .fm-total-cell button{min-height:20px}
  #content .fm-table .fm-date-button{min-height:26px}
  #content .fm-inspector{break-before:page}
  #content .fm-add-shift{display:none}
}


/* Status encodes verified simultaneous staffing; employee hue is never
   reused for totals. Band identity remains independent from pass/fail. */
#content .fm-table .fm-total-label{position:sticky}
#content .fm-table .fm-total-reception{--fm-band:#18a3a5}
#content .fm-table .fm-total-morning{--fm-band:#c18b20}
#content .fm-table .fm-total-midday{--fm-band:#9a70b8}
#content .fm-table .fm-total-afternoon{--fm-band:#4e8ed2}
#content .fm-table .fm-total-night{--fm-band:#7775c9}
#content .fm-table .fm-total-alerts{--fm-band:#da6262}
#content .fm-table .fm-total-row .fm-total-label{
  border-left:4px solid var(--fm-band,var(--line-strong));
  padding-left:7px;background:color-mix(in srgb,var(--fm-band,var(--line-strong)) 8%,var(--surface-inset));
}
#content .fm-table tfoot .fm-total-cell.is-ok{
  color:var(--good);background:color-mix(in srgb,var(--good) 19%,var(--surface));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--good) 18%,transparent);
}
#content .fm-table tfoot .fm-total-cell.is-under{
  color:var(--danger);background:color-mix(in srgb,var(--danger) 19%,var(--surface));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--danger) 21%,transparent);
}
#content .fm-table tfoot .fm-total-cell.is-unknown{
  color:var(--amber);background:color-mix(in srgb,var(--amber) 16%,var(--surface));
}
#content .fm-table tfoot .fm-total-cell.is-off{
  color:var(--ink-4);background:var(--surface-inset);
}
#content .fm-table tfoot .fm-total-cell.is-pending{
  color:var(--ink-3);background:var(--surface-inset);
}
#content .fm-table tfoot .fm-total-cell.is-selected{
  outline:2px solid var(--brand);outline-offset:-2px;
}
#content .fm-table tfoot .fm-total-cell.is-zero.is-ok{color:var(--good)}
#content .fm-table tfoot .fm-total-cell.is-zero.is-under{color:var(--danger)}
#content .fm-table tfoot .fm-total-cell.is-under button::after{
  content:'!';position:absolute;top:1px;right:1px;
  font-size:8px;font-weight:900;line-height:1;
}
#content .fm-table tfoot .fm-total-cell button{position:relative}
#content .fm-key .fm-status-legend{font-size:11px;color:var(--ink-2);white-space:normal}
#content .fm-key .fm-status-legend .fm-dot{
  width:9px;height:9px;border-radius:3px;background:var(--ink-3);
}
#content .fm-key .fm-status-legend .fm-dot.good{background:var(--good)}
#content .fm-key .fm-status-legend .fm-dot.bad{background:var(--danger)}
@media print{
  #content .fm-table tfoot .fm-total-cell.is-ok{background:#e3f3e7!important;color:#145b37!important}
  #content .fm-table tfoot .fm-total-cell.is-under{background:#ffe0e0!important;color:#9b2525!important}
}

/* The per-band top edge stays distinct while the main cell indicates pass/fail. */
#content .fm-table tfoot tr.fm-total-row td.fm-total-cell{
  border-top:2px solid color-mix(in srgb,var(--fm-band,#819291) 55%,transparent);
}
