/* PMD Waiter Floor Edit V160.2
 * Stable absolute-position edit authority, smooth no-overlap drag and floor legend.
 */

/* The waiter floor is a coordinate surface, never a flex/grid list. This doubled
 * root selector intentionally wins over legacy inline edit/compact rules. */
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-layout-authority
.pmd-w5-floor-map-real,
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-w19-editing
.pmd-w5-floor-map-real,
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-saving
.pmd-w5-floor-map-real {
  position: relative !important;
  display: block !important;
  flex: none !important;
  flex-flow: initial !important;
  align-items: initial !important;
  justify-content: initial !important;
  grid-template-columns: none !important;
  grid-auto-flow: initial !important;
  gap: 0 !important;
  overflow: hidden !important;
  contain: layout paint !important;
}

body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-layout-authority
.pmd-w5-floor-map-real > .pmd-w5-table[data-table],
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-w19-editing
.pmd-w5-floor-map-real > .pmd-w5-table[data-table],
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-saving
.pmd-w5-floor-map-real > .pmd-w5-table[data-table] {
  position: absolute !important;
  display: flex !important;
  float: none !important;
  clear: none !important;
  flex: 0 0 auto !important;
  align-items: center !important;
  justify-content: center !important;
  right: auto !important;
  bottom: auto !important;
  margin: 0 !important;
  transform: translate(-50%, -50%) !important;
  transform-origin: 50% 50% !important;
  backface-visibility: hidden !important;
}

/* Edit mode must never change the table geometry or animate stale left/top values. */
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-w19-editing
.pmd-w5-floor-map-real > .pmd-w5-table[data-table],
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-saving
.pmd-w5-floor-map-real > .pmd-w5-table[data-table],
body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-edit-freeze
.pmd-w5-floor-map-real > .pmd-w5-table[data-table] {
  width: 104px !important;
  height: 86px !important;
  min-width: 104px !important;
  min-height: 86px !important;
  max-width: 104px !important;
  max-height: 86px !important;
  transition: none !important;
  animation: none !important;
  scroll-snap-align: none !important;
}

#pmd-waiter-dashboard-root.pmd-w19-editing
.pmd-w5-floor-map-real .pmd-w5-table[data-table] {
  cursor: grab !important;
  touch-action: none !important;
  user-select: none !important;
  -webkit-user-select: none !important;
}

#pmd-waiter-dashboard-root.pmd-v160-floor-dragging,
#pmd-waiter-dashboard-root.pmd-v160-floor-dragging * {
  user-select: none !important;
  -webkit-user-select: none !important;
}

body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root
.pmd-v160-dragging-table {
  z-index: 10020 !important;
  cursor: grabbing !important;
  opacity: 1 !important;
  transition: none !important;
  animation: none !important;
  will-change: left, top !important;
  box-shadow: 0 22px 52px rgba(15, 23, 42, .24) !important;
}

body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root
.pmd-v160-dragging-table.pmd-v160-collision-blocked {
  outline: 3px solid rgba(220, 38, 38, .46) !important;
  outline-offset: 3px !important;
}

/* One-time recovery message for the previously saved broken single column. */
#pmd-waiter-dashboard-root .pmd-v160-recovery-notice {
  position: absolute !important;
  left: 50% !important;
  top: 14px !important;
  z-index: 10015 !important;
  width: min(620px, calc(100% - 160px)) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  padding: 9px 14px !important;
  border: 1px solid rgba(16, 185, 129, .30) !important;
  border-radius: 999px !important;
  background: rgba(236, 253, 245, .96) !important;
  color: #065f46 !important;
  box-shadow: 0 12px 28px rgba(6, 95, 70, .12) !important;
  font-size: 11px !important;
  line-height: 1.25 !important;
  opacity: 0 !important;
  transform: translate(-50%, -8px) !important;
  pointer-events: none !important;
  transition: opacity .18s ease, transform .18s ease !important;
}

#pmd-waiter-dashboard-root .pmd-v160-recovery-notice.is-visible {
  opacity: 1 !important;
  transform: translate(-50%, 0) !important;
}

#pmd-waiter-dashboard-root .pmd-v160-recovery-notice strong {
  flex: 0 0 auto !important;
  font-weight: 950 !important;
}

#pmd-waiter-dashboard-root .pmd-v160-recovery-notice span {
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* Bottom-right color guide. */
#pmd-waiter-dashboard-root .pmd-v61-map-info-btn {
  right: 16px !important;
  bottom: 16px !important;
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  border: 1px solid rgba(15, 23, 42, .14) !important;
  border-radius: 999px !important;
  background: rgba(255, 255, 255, .97) !important;
  color: #0f172a !important;
  font: 950 16px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  box-shadow: 0 12px 30px rgba(15, 23, 42, .18) !important;
  transform: translateZ(0) !important;
  transition: transform .16s ease, box-shadow .16s ease, background-color .16s ease !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-info-btn::before {
  content: "" !important;
  position: absolute !important;
  left: -8px !important;
  right: -8px !important;
  top: -14px !important;
  height: 14px !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-info-btn:hover,
#pmd-waiter-dashboard-root .pmd-v61-map-info-btn:focus-visible {
  background: #fff !important;
  transform: translateY(-2px) scale(1.04) !important;
  box-shadow: 0 16px 38px rgba(15, 23, 42, .22) !important;
  outline: 3px solid rgba(59, 130, 246, .22) !important;
  outline-offset: 2px !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend {
  right: 16px !important;
  bottom: 60px !important;
  width: 292px !important;
  max-width: calc(100% - 32px) !important;
  padding: 15px !important;
  border: 1px solid rgba(15, 23, 42, .12) !important;
  border-radius: 18px !important;
  background: rgba(255, 255, 255, .98) !important;
  color: #0f172a !important;
  box-shadow: 0 24px 64px rgba(15, 23, 42, .20) !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(8px) scale(.98) !important;
  transform-origin: right bottom !important;
  transition: opacity .16s ease, transform .16s ease, visibility 0s linear .16s !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-info-btn:hover ~ .pmd-v61-map-legend,
#pmd-waiter-dashboard-root .pmd-v61-map-info-btn:focus-visible ~ .pmd-v61-map-legend,
#pmd-waiter-dashboard-root .pmd-v61-map-legend:hover,
#pmd-waiter-dashboard-root .pmd-v61-map-legend:focus-within,
#pmd-waiter-dashboard-root .pmd-v61-map-legend.is-open {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transform: translateY(0) scale(1) !important;
  transition-delay: 0s !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend h4 {
  margin: 0 0 11px !important;
  color: #0f172a !important;
  font-size: 14px !important;
  line-height: 1.2 !important;
  font-weight: 950 !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v61-legend-row {
  grid-template-columns: 18px minmax(0, 1fr) !important;
  gap: 10px !important;
  margin: 9px 0 !important;
  color: #334155 !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v61-legend-row b {
  color: #0f172a !important;
  font-weight: 900 !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v61-dot {
  width: 14px !important;
  height: 14px !important;
  margin-top: 2px !important;
  border: 1px solid rgba(15, 23, 42, .18) !important;
  border-radius: 999px !important;
}

#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v154-dot-available { background: #22c55e !important; }
#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v154-dot-occupied { background: #ef4444 !important; }
#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v154-dot-cleaning { background: #f59e0b !important; }
#pmd-waiter-dashboard-root .pmd-v61-map-legend .pmd-v154-dot-reserved { background: #3b82f6 !important; }

#pmd-waiter-dashboard-root.pmd-w19-editing .pmd-v61-map-info-btn,
#pmd-waiter-dashboard-root.pmd-w19-editing .pmd-v61-map-legend,
#pmd-waiter-dashboard-root.pmd-w19-editing .pmd-v160-recovery-notice {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

@media (max-width: 720px) {
  body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-w19-editing
  .pmd-w5-floor-map-real > .pmd-w5-table[data-table],
  body.page #pmd-waiter-dashboard-root#pmd-waiter-dashboard-root.pmd-v160-saving
  .pmd-w5-floor-map-real > .pmd-w5-table[data-table] {
    width: 92px !important;
    height: 76px !important;
    min-width: 92px !important;
    min-height: 76px !important;
    max-width: 92px !important;
    max-height: 76px !important;
  }

  #pmd-waiter-dashboard-root .pmd-v160-recovery-notice {
    width: calc(100% - 100px) !important;
  }

  #pmd-waiter-dashboard-root .pmd-v160-recovery-notice span {
    display: none !important;
  }

  #pmd-waiter-dashboard-root .pmd-v61-map-info-btn {
    right: 12px !important;
    bottom: 12px !important;
  }

  #pmd-waiter-dashboard-root .pmd-v61-map-legend {
    right: 12px !important;
    bottom: 54px !important;
    width: min(292px, calc(100% - 24px)) !important;
    max-width: calc(100% - 24px) !important;
  }
}
