:root {
  --mat-agenda-stripe-pending: var(--mat-pending, #fef3c7);
  --mat-agenda-stripe-waitlist: var(--mat-waitlist, #c4b5fd);
  --mat-agenda-stripe-reserved: var(--mat-reserved, #dcfce7);
  --mat-agenda-stripe-seated: var(--mat-seated, #dbeafe);
  --mat-agenda-stripe-completed: var(--mat-completed, #e5e7eb);
  --mat-agenda-stripe-cancelled: var(--mat-cancelled, #fee2e2);
}

/* La lista completa sigue siendo el unico contenedor desplazable. */
#section-tablet .tablet-agenda-list {
  display: block;
  overflow-y: auto;
  overflow-x: hidden;
  scroll-behavior: smooth;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
}

#section-tablet .matilde-v95-agenda-group {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
  margin: 0 0 14px;
}

#section-tablet .matilde-v95-agenda-group:last-child {
  margin-bottom: 2px;
}

#section-tablet .matilde-v95-agenda-group-title {
  min-height: 27px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 4px 7px;
  color: var(--mat-text, #f8fafc);
  font-size: 9px;
  line-height: 1.1;
  font-weight: 950;
  letter-spacing: .075em;
  text-transform: uppercase;
}

#section-tablet.covermanager-dark-mode .matilde-v95-agenda-group-title {
  color: var(--mat-cover-text, #f8fafc);
}

#section-tablet .matilde-v95-agenda-group-label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

#section-tablet .matilde-v95-agenda-group-dot {
  width: 9px;
  height: 9px;
  flex: 0 0 9px;
  border-radius: 999px;
  background: var(--mat-agenda-group-colour);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--mat-agenda-group-colour) 28%, transparent);
}

#section-tablet .matilde-v95-agenda-group-count {
  min-width: 24px;
  height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 7px;
  border: 1px solid color-mix(in srgb, var(--mat-agenda-group-colour) 60%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--mat-agenda-group-colour) 22%, transparent);
  color: inherit;
  font-size: 9px;
  font-weight: 950;
}

#section-tablet button.matilde-v95-agenda-group-count {
  min-width: 48px;
  min-height: 32px;
  cursor: pointer;
  pointer-events: auto !important;
  touch-action: manipulation;
}

#section-tablet .matilde-v95-agenda-group-actions {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

#section-tablet .matilde-v95-agenda-collapse:not(.matilde-v95-agenda-group-count) {
  width: 24px;
  height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid color-mix(in srgb, var(--mat-agenda-group-colour) 60%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--mat-agenda-group-colour) 22%, transparent);
  color: inherit;
  cursor: pointer;
  pointer-events: auto !important;
  touch-action: manipulation;
}

#section-tablet .matilde-v95-agenda-group.is-collapsed > .tablet-res-card {
  display: none !important;
}

/* Mobile: mismos grupos que Tablet, pero los encabezados son hermanos de las
   tarjetas para conservar el reconciliador nativo de iOS. */
#section-mobile .matilde-v104-mobile-agenda-group-title {
  min-height: 34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:10px 0 7px;
  padding:6px 8px;
  color:var(--mat-cover-text,var(--mat-text,#f8fafc));
  font-size:10px;
  line-height:1.1;
  font-weight:950;
  letter-spacing:.07em;
  text-transform:uppercase;
}
#section-mobile .matilde-v104-mobile-agenda-group-label,
#section-mobile .matilde-v104-mobile-agenda-group-actions { display:inline-flex; align-items:center; gap:7px; }
#section-mobile .matilde-v104-mobile-agenda-group-dot { width:9px; height:9px; flex:0 0 9px; border-radius:999px; background:var(--mat-agenda-group-colour); box-shadow:0 0 0 2px color-mix(in srgb,var(--mat-agenda-group-colour) 28%,transparent); }
#section-mobile .matilde-v104-mobile-agenda-group-count { min-width:30px; min-height:26px; display:inline-flex; align-items:center; justify-content:center; gap:4px; padding:0 8px; border:1px solid color-mix(in srgb,var(--mat-agenda-group-colour) 60%,transparent); border-radius:999px; background:color-mix(in srgb,var(--mat-agenda-group-colour) 22%,transparent); color:inherit; font:inherit; font-weight:950; cursor:pointer; pointer-events:auto !important; touch-action:manipulation; }
#section-mobile .matilde-v104-mobile-agenda-group-title[data-mobile-agenda-estado="pending"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-reserved); }
#section-mobile .matilde-v104-mobile-agenda-group-title[data-mobile-agenda-estado="waitlist"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-waitlist); }
#section-mobile .matilde-v104-mobile-agenda-group-title[data-mobile-agenda-estado="seated"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-seated); }
#section-mobile .matilde-v104-mobile-agenda-group-title[data-mobile-agenda-estado="completed"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-completed); }
#section-mobile .matilde-v104-mobile-agenda-group-title[data-mobile-agenda-estado="cancelled"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-cancelled); }
#section-mobile .mobile-res-item.is-waitlist { background:var(--mat-agenda-stripe-waitlist) !important; border-color:var(--mat-agenda-stripe-waitlist) !important; }
#section-mobile .salovix-waitlist-position { display:inline-flex; align-items:center; gap:6px; margin:4px 0 0; font-size:12px; font-weight:900; }

/* Web: misma jerarquía visual estable que Tablet/Mobile. Los grupos están
   dentro del listado, por lo que no hay cabeceras externas que parpadeen al
   refrescar Firestore. */
#listado-reservas-container .matilde-v104-web-agenda-group { display:grid; gap:8px; margin:0 0 12px; }
#listado-reservas-container .matilde-v104-web-agenda-group-title {
  min-height:30px; display:flex; align-items:center; justify-content:space-between;
  gap:10px; padding:0 4px; font-size:10px; line-height:1; font-weight:950;
  letter-spacing:.07em; text-transform:uppercase; color:var(--text-dark,#122033);
}
#listado-reservas-container .matilde-v104-web-agenda-group-label,
#listado-reservas-container .matilde-v104-web-agenda-group-actions { display:inline-flex; align-items:center; gap:7px; }
#listado-reservas-container .matilde-v104-web-agenda-group-dot { width:8px; height:8px; flex:0 0 8px; border-radius:999px; background:var(--mat-agenda-group-colour); box-shadow:0 0 0 2px color-mix(in srgb,var(--mat-agenda-group-colour) 28%,transparent); }
#listado-reservas-container .matilde-v104-web-agenda-group-count { min-width:28px; min-height:24px; display:inline-flex; align-items:center; justify-content:center; gap:4px; padding:0 7px; border:1px solid color-mix(in srgb,var(--mat-agenda-group-colour) 60%,transparent); border-radius:999px; background:color-mix(in srgb,var(--mat-agenda-group-colour) 18%,transparent); color:inherit; font:inherit; font-weight:950; cursor:pointer; }
#listado-reservas-container .matilde-v104-web-agenda-group[data-agenda-estado="pending"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-reserved,#84cc16); }
#listado-reservas-container .matilde-v104-web-agenda-group[data-agenda-estado="waitlist"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-waitlist,#a78bfa); }
#listado-reservas-container .matilde-v104-web-agenda-group[data-agenda-estado="seated"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-seated,#4f46e5); }
#listado-reservas-container .matilde-v104-web-agenda-group[data-agenda-estado="completed"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-completed,#94a3b8); }
#listado-reservas-container .matilde-v104-web-agenda-group[data-agenda-estado="cancelled"] { --mat-agenda-group-colour:var(--mat-agenda-stripe-cancelled,#ef4444); }

/* Encabezados de histórico para las agendas Web y Mobile. Son hermanos de la
   lista para no cambiar el árbol que reconcilian sus renderizadores. */
.matilde-v106-history-controls {
  display: grid;
  gap: 6px;
  margin: 0 0 8px;
}
.matilde-v106-history-row {
  width: 100%;
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 10px;
  border: 1px solid rgba(100,116,139,.35);
  border-radius: 10px;
  background: rgba(248,250,252,.9);
  color: #334155;
  font: inherit;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.matilde-v106-history-row > span:first-child { display:inline-flex; align-items:center; gap:6px; min-width:0; }
.matilde-v106-history-count { min-width:58px; min-height:36px; margin-left:auto; padding:5px 9px; border:1px solid #94a3b8; border-radius:999px; background:#e2e8f0; color:inherit; font:inherit; font-size:11px; font-weight:950; cursor:pointer; pointer-events:auto !important; touch-action:manipulation; }
.matilde-v106-history-row[data-history-state="cancelled"] { color:#b91c1c; border-color:rgba(220,38,38,.25); background:#fff7f7; }
.matilde-v106-history-row[data-history-state="cancelled"] > .matilde-v106-history-count { background:#fee2e2; border-color:#fca5a5; }
.matilde-v106-history-hidden { display: none !important; }

#matilde-v104-seated-release .matilde-v104-release-backdrop{position:fixed;inset:0;background:rgba(2,6,23,.48);z-index:2147483000}
#matilde-v104-seated-release .matilde-v104-release-sheet{position:fixed;z-index:2147483001;top:50%;left:50%;width:min(360px,calc(100vw - 32px));transform:translate(-50%,-50%);display:grid;gap:10px;padding:22px;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:#263640;color:#f8fafc;box-shadow:0 20px 60px rgba(0,0,0,.38)}
#matilde-v104-seated-release .matilde-v104-release-sheet strong{font-size:18px}#matilde-v104-seated-release .matilde-v104-release-sheet span{color:#cbd5e1;font-size:13px}
#matilde-v104-seated-release button{min-height:44px;border:0;border-radius:10px;background:#2d6b37;color:#fff;font-weight:800;cursor:pointer}#matilde-v104-seated-release [data-v104-edit]{background:#2563eb}#matilde-v104-seated-release [data-v104-close]{background:#475569}

#section-tablet .matilde-v95-agenda-group[data-agenda-estado="pending"] {
  --mat-agenda-group-colour: var(--mat-agenda-stripe-reserved);
}
#section-tablet .matilde-v95-agenda-group[data-agenda-estado="waitlist"] {
  --mat-agenda-group-colour: var(--mat-agenda-stripe-waitlist);
}
#section-tablet .matilde-v95-agenda-group[data-agenda-estado="seated"] {
  --mat-agenda-group-colour: var(--mat-agenda-stripe-seated);
}
#section-tablet .matilde-v95-agenda-group[data-agenda-estado="completed"] {
  --mat-agenda-group-colour: var(--mat-agenda-stripe-completed);
}
#section-tablet .matilde-v95-agenda-group[data-agenda-estado="cancelled"] {
  --mat-agenda-group-colour: var(--mat-agenda-stripe-cancelled);
}

/* La barra lateral usa exactamente el mismo color configurable que las mesas. */
#section-tablet .tablet-res-card {
  width: 100%;
  box-sizing: border-box;
  border-left-width: 8px !important;
  border-left-style: solid !important;
}

#section-tablet .tablet-res-card.is-pending {
  border-left-color: var(--mat-agenda-stripe-pending) !important;
}
#section-tablet .tablet-res-card.is-waitlist {
  border-left-color: var(--mat-agenda-stripe-waitlist) !important;
  background: var(--mat-agenda-stripe-waitlist) !important;
}
#section-tablet .tablet-res-card.is-waitlist { min-height:0; align-items:start; }
/* La tarjeta conserva su altura: aprovechamos el hueco existente para que
   la hora y la posición de cola sean igual de legibles que el resto. */
#section-tablet .tablet-res-card.is-waitlist .tablet-res-time { box-sizing:border-box; align-self:start; width:48px; min-width:48px; max-width:48px; height:76px; font-size:15px; line-height:1; }
#section-tablet .tablet-res-card.is-waitlist .tablet-res-time * { font-size:inherit; }
#section-tablet .tablet-res-card.is-waitlist .tablet-res-actions { margin-top:0; }
/* El botón de asignación de una espera, independientemente de qué vista haya
   generado la tarjeta, usa el mismo color configurable que el menú de espera. */
.tablet-res-card.is-waitlist .tablet-mini-btn.primary,
.tablet-res-card.is-waitlist .mobile-mini,
.tablet-res-card.is-waitlist button[onclick*="iniciarAsignacionMesa"] {
  background: var(--mat-waitlist-assign, #6D28D9) !important;
  color: var(--mat-waitlist-assign-text, #fff) !important;
}
#section-tablet .salovix-waitlist-position { display:flex; align-items:center; gap:6px; height:20px; margin:2px 0 0; font-size:14px; line-height:20px; font-weight:950; white-space:nowrap; }
#section-tablet .salovix-waitlist-position .fa-clock { font-size:13px; }
#section-tablet .tablet-res-card.is-reserved {
  border-left-color: var(--mat-agenda-stripe-reserved) !important;
}
#section-tablet .tablet-res-card.is-seated {
  border-left-color: var(--mat-agenda-stripe-seated) !important;
}
#section-tablet .tablet-res-card.is-completed {
  border-left-color: var(--mat-agenda-stripe-completed) !important;
}
#section-tablet .tablet-res-card.is-cancelled {
  border-left-color: var(--mat-agenda-stripe-cancelled) !important;
}

/* Agenda: las combinaciones largas de mesas forman parte de la información
   operativa. Las tarjetas crecen únicamente las líneas necesarias en vez de
   recortarlas con puntos suspensivos. No altera datos, orden ni acciones. */
#section-tablet .tablet-res-card,
#section-mobile .mobile-res-item,
#listado-reservas-container [data-reserva-card="true"] {
  height: auto !important;
  min-height: 0;
}

#section-tablet .tablet-res-name,
#section-tablet .tablet-res-meta,
#section-mobile .mobile-res-name,
#section-mobile .mobile-res-meta,
#listado-reservas-container [data-reserva-card="true"] .truncate,
#listado-reservas-container [data-reserva-card="true"] [class*="text-textMuted"],
#listado-reservas-container [data-reserva-card="true"] [class*="text-blueAccent"] {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere;
  word-break: normal;
}

#section-tablet .tablet-res-time,
#section-mobile .mobile-res-time {
  align-self: stretch;
  height: auto;
}

@supports not (color: color-mix(in srgb, #000 50%, #fff)) {
  #section-tablet .matilde-v95-agenda-group-dot { box-shadow: none; }
  #section-tablet .matilde-v95-agenda-group-count { border-color: currentColor; background: transparent; }
}
