/* V10 is the only floor presentation, including before the module has loaded.
   Legacy buttons remain hidden event adapters, never a second visible map. */
:is(#overviewFloor,#operationsFloorPlan,#layoutCanvas,.guest-floor-plan,#pos-floor) > :is(.layout-table,.guest-table,.overview-table,.ops-table,.pos-table,.pos-bar-counter,.water-edge,.overview-water,.overview-bar) { display:none!important; }
:is(#overviewFloor,#operationsFloorPlan,#layoutCanvas,.guest-floor-plan,#pos-floor)::before,
:is(#overviewFloor,#operationsFloorPlan,#layoutCanvas,.guest-floor-plan,#pos-floor)::after { display:none!important; }
:is(#overviewFloor,#operationsFloorPlan,#layoutCanvas,.guest-floor-plan,#pos-floor) { background:oklch(.62 .035 180) url('./assets/floor-plan-3d/approved-floor-v10.png') center/contain no-repeat!important; }
.floor-3d-toolbar { display:none!important; }
.floor-3d-list { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%); }
.floor-3d-list:focus-within,.floor-3d-list.is-recovery { position:relative;width:auto;height:auto;overflow:visible;clip-path:none; }
.floor-3d-hint { display:none; }
.floor-3d-layer.has-load-error .floor-3d-hint { display:block!important; }
.floor-3d-layer.has-load-error .floor-3d-stage { display:none; }
.floor-3d-layer.has-load-error .floor-3d-labels { display:none; }
[data-floor3d="loading"] .floor-3d-labels { visibility:hidden; }
[data-floor3d="loading"] .floor-3d-stage { background:oklch(.62 .035 180) url('./assets/floor-plan-3d/approved-floor-v10.png') center/contain no-repeat; }
#resetLayout { display:none!important; }
/* Keep the existing dashboard columns. Responsive framing belongs to the scene. */
#settings:has(#layout-editor:not([hidden])) .settings-heading {
  flex-wrap: wrap;
  align-items: flex-start;
}
#settings:has(#layout-editor:not([hidden])) .settings-heading > div { min-width: 0; }
#settings:has(#layout-editor:not([hidden])) .settings-tabs {
  flex-wrap: wrap;
  max-width: 100%;
}
#settings:has(#layout-editor:not([hidden])) .settings-tab { min-width: 0; }
#layout-editor .layout-editor-layout {
  min-width: 0;
}
#layout-editor .layout-workspace,
#layout-editor .table-editor {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
#layout-editor .table-editor > * { min-width: 0; max-width: 100%; }
#layout-editor .table-editor > .dash-label,
#layout-editor .table-editor > .save-note { grid-column: 1 / -1; }
#layout-editor .table-editor > .dash-label { margin-bottom: 0; }
#layout-editor .table-editor input[type="hidden"] { display: none !important; }
#layout-editor .table-editor input:not([type="checkbox"]):not([type="hidden"]),
#layout-editor .table-editor select {
  min-width: 0;
  max-width: 100%;
  min-height: 48px;
  box-sizing: border-box;
  font-size: 16px;
}
#layout-editor .table-editor > button {
  min-height: 48px;
  white-space: normal;
  overflow-wrap: anywhere;
}
#layout-editor .table-editor > .checkbox-row { min-height: 48px; }
#layoutCanvas {
  display: block;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
#layoutCanvas .floor-3d-toolbar button {
  min-width: 44px;
  min-height: 44px;
}

/* Fit the editor's actual column, not just the browser viewport. */
.layout-workspace .floor-plan-settings,
.layout-workspace .floor-create-panel {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.layout-workspace .floor-plan-settings > *,
.layout-workspace .floor-create-panel > * {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.layout-workspace .floor-plan-settings > div,
.layout-workspace .floor-create-panel > div {
  grid-column: 1 / -1;
}
.layout-workspace .floor-plan-settings input,
.layout-workspace .floor-plan-settings select,
.layout-workspace .floor-create-panel input,
.layout-workspace .floor-create-panel select {
  min-width: 0;
  max-width: 100%;
  width: 100%;
  box-sizing: border-box;
  font-size: 16px;
}
.layout-workspace .floor-plan-settings > button {
  grid-column: 1 / -1;
  justify-self: end;
}
.layout-workspace .floor-create-actions {
  flex-wrap: wrap;
}
.layout-workspace .floor-plan-manager {
  flex-direction: row;
  flex-wrap: wrap;
}
.layout-workspace .floor-plan-manager > .floor-plan-tabs {
  flex: 1 1 240px;
  max-width: 100%;
}
.layout-workspace .floor-plan-actions,
.layout-workspace .layout-toolbar {
  flex-wrap: wrap;
  max-width: 100%;
}
.layout-workspace .layout-toolbar > span {
  flex: 1 1 150px;
  min-width: 0;
}
.layout-workspace .floor-plan-settings button,
.layout-workspace .floor-create-panel button,
.layout-workspace .floor-plan-actions button,
.layout-workspace .layout-toolbar button {
  min-height: 44px;
  min-width: 0;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}
.floor-3d-layer{position:relative;z-index:2;color:#143b50;font:500 14px/1.4 var(--sans,system-ui);background:#e6efeb;border-radius:10px;overflow:hidden}
.floor-3d-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding:10px;background:#f4f4eb}
.floor-3d-toolbar button,.floor-3d-list button{min-height:44px;min-width:44px;padding:8px 13px;border:1px solid #b6c7c3;background:#fffdf5;color:#143b50;border-radius:6px;font:inherit;cursor:pointer}
.floor-3d-toolbar button:first-child{margin-right:auto}
.floor-3d-toolbar button:focus-visible,.floor-3d-list summary:focus-visible,.floor-3d-list button:focus-visible{outline:3px solid #155ec8;outline-offset:2px}
.floor-3d-toolbar button:disabled,.floor-3d-list button:disabled{opacity:.6;cursor:default}
.floor-3d-stage{position:relative;width:100%;height:clamp(380px,65vw,640px);overflow:hidden;touch-action:pan-y}
#layoutCanvas.floor-3d-ready .floor-3d-stage{touch-action:none}
.floor-3d-stage canvas{display:block;width:100%;height:100%;touch-action:inherit}
.floor-3d-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.floor-3d-table-label{position:absolute;left:0;top:0;padding:3px 6px;border-radius:4px;background:#fdf9eee8;color:#163a4b;font-size:12px;font-weight:800;white-space:nowrap;border:1px solid #b0bdb7;box-shadow:0 1px 3px #143b501c}
.floor-3d-table-label.is-selected{background:#155ec8;color:#f9f5e9;border-color:#155ec8}
.floor-3d-table-label.is-unavailable{background:#d8dcda;color:#586c74;text-decoration:line-through}
.floor-3d-table-label.is-occupied{border:2px solid #ad522d}
.floor-3d-table-label.is-bar{font-size:8px;padding:1px 3px;opacity:.92}
.floor-3d-table-label.has-overlap{background:#a42c28;color:#fff7eb}
.floor-3d-landmark{position:absolute;left:0;top:0;color:#294f59;background:#fff8e6bf;border-radius:3px;padding:2px 5px;font-size:10px;font-weight:700;white-space:nowrap}
.floor-3d-hint{padding:9px 12px;margin:0!important;font-size:12px!important;color:#355c66!important;background:#f4f4eb}
.floor-3d-list{padding:0 12px 12px;background:#f4f4eb}
.floor-3d-list summary{cursor:pointer;min-height:44px;display:flex;align-items:center;text-decoration:underline}
.floor-3d-list>div{display:flex;flex-wrap:wrap;gap:8px}
.floor-3d-ready{height:auto!important;min-height:0!important;overflow:visible!important;background:#e6efeb!important;padding:0!important}
.floor-3d-ready:before,.floor-3d-ready:after,.floor-3d-ready>.water-edge,.floor-3d-ready>.overview-water,.floor-3d-ready>.overview-bar{display:none!important}
.floor-3d-ready>.floor-3d-native{display:none!important}
.floor-3d-layer.is-flat{position:absolute;inset:0 0 auto;background:transparent;overflow:visible}
.floor-3d-layer.is-flat .floor-3d-stage,.floor-3d-layer.is-flat .floor-3d-list,.floor-3d-layer.is-flat .floor-3d-hint{display:none}
.floor-3d-layer.is-flat .floor-3d-toolbar{padding:3px;background:transparent;justify-content:flex-end;pointer-events:none}
.floor-3d-layer.is-flat .floor-3d-toolbar button{display:none}
.floor-3d-layer.is-flat .floor-3d-toolbar button:first-child{display:block;pointer-events:auto;margin:0;min-height:35px}
@media(max-width:699px){.floor-3d-stage{height:450px}.floor-3d-toolbar{gap:5px;padding:8px}.floor-3d-toolbar button{font-size:12px;padding:6px 9px}.floor-3d-table-label{font-size:10px;padding:2px 4px}.floor-3d-table-label.is-bar{font-size:7px}}

/* Group bar selection, never the underlying seats or their bills. */
.floor-bar-grouped > .floor-bar-native:not(.floor-bar-selected),
.floor-bar-grouped > .overview-bar,
.floor-bar-grouped:not(.floor-bar-editing) .floor-3d-table-label.is-bar,
.floor-bar-grouped .floor-3d-table-label.is-bar:not(.is-selected) { display: none !important; }
.floor-bar-grouped .floor-3d-table-label.is-bar.is-selected { font-size: 12px; padding: 3px 6px; opacity: 1; }
.floor-bar-grouped:not(.floor-3d-ready) > .floor-bar-selected {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 4px;
  left: clamp(24px, calc(var(--x) * 1%), calc(100% - 24px));
  top: clamp(24px, calc(var(--y) * 1%), calc(100% - 24px));
}
.floor-bar-grouped:not(.floor-3d-ready) > .floor-bar-selected small { display: none; }
.floor-bar-marker { position: absolute; left: 12px; z-index: 4; max-width: calc(100% - 24px); }
.floor-bar-marker > button {
  display: grid;
  gap: 3px;
  min-width: 112px;
  max-width: 100%;
  min-height: 60px;
  border: 1px solid var(--sage, oklch(.55 .06 170));
  border-radius: 8px;
  padding: 9px 15px;
  color: var(--navy, oklch(.32 .05 240));
  background: var(--paper, oklch(.98 .01 90));
  box-shadow: 0 3px 12px oklch(.3 .03 220 / .16);
  font: 600 14px/1.3 var(--sans, system-ui);
  cursor: pointer;
}
.floor-bar-marker strong { font-size: 16px; }
.floor-bar-marker small { font-size: 12px; font-weight: 500; }
dialog.floor-bar-dialog {
  width: min(640px, calc(100vw - 32px));
  max-width: calc(100vw - 32px);
  max-height: calc(100dvh - 32px);
  box-sizing: border-box;
  margin: auto;
  padding: 22px;
  border: 1px solid var(--line, oklch(.85 .01 160));
  border-radius: 12px;
  color: var(--ink, oklch(.3 .03 220));
  background: var(--paper, oklch(.98 .01 90));
  font: 500 16px/1.5 var(--sans, system-ui);
  overflow-y: auto;
  overscroll-behavior: contain;
}
dialog.floor-bar-dialog::backdrop { background: oklch(.22 .025 220 / .5); }
dialog.floor-bar-dialog[open] { display: grid; gap: 16px; }
.floor-bar-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.floor-bar-dialog h3 { margin: 0; font: 700 22px/1.2 var(--sans, system-ui); }
.floor-bar-dialog p { margin: 0; max-width: 65ch; font-size: 14px; }
.floor-bar-dialog button { min-width: 44px; min-height: 44px; font: inherit; cursor: pointer; }
.floor-bar-dialog header button { padding: 8px 14px; border: 1px solid var(--line); border-radius: 6px; color: inherit; background: transparent; }
.floor-bar-seats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 104px), 1fr)); gap: 10px; }
.floor-bar-seats .floor-bar-seat {
  display: grid;
  align-content: center;
  gap: 5px;
  min-height: 76px;
  min-width: 0;
  padding: 12px 8px;
  border: 1px solid var(--line, oklch(.85 .01 160));
  border-radius: 8px;
  color: var(--navy);
  background: oklch(.95 .015 160);
  overflow-wrap: anywhere;
}
.floor-bar-seat strong { font-size: 17px; line-height: 1.25; }
.floor-bar-seat small { font-size: 12px; line-height: 1.3; }
.floor-bar-seats .floor-bar-seat.is-occupied { border-color: oklch(.59 .11 50); background: oklch(.95 .025 65); }
.floor-bar-seats .floor-bar-seat.is-selected { border: 2px solid var(--blue); background: oklch(.93 .025 230); }
.floor-bar-dialog button:disabled { cursor: default; color: var(--muted, oklch(.48 .015 210)); }
.floor-bar-dialog button:not(:disabled):hover, .floor-bar-marker button:hover { border-color: var(--blue); background: oklch(.92 .025 190); }
.floor-bar-dialog button:focus-visible, .floor-bar-marker button:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }
@media(max-width:420px) {
  dialog.floor-bar-dialog { padding: 16px; }
  .floor-bar-seats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media(max-width:699px) {
  /* Phone users can inspect and select. Drag editing still starts at 700px. */
  #layoutCanvas { min-height: 360px; touch-action: pan-y; }
  #layoutCanvas .floor-3d-stage,
  #layoutCanvas.floor-3d-ready .floor-3d-stage {
    height: clamp(340px, 62svh, 560px);
    min-height: 0;
    max-height: none;
    aspect-ratio: auto;
    touch-action: pan-y;
  }
  #layout-editor .table-editor { grid-template-columns: minmax(0, 1fr); }
  #layout-editor .layout-mobile-note { display: block; margin-top: 12px; }
  #layout-editor .floor-create-panel,
  #layout-editor .floor-plan-settings { padding: 12px; }
  /* Keep the fallback map visible without desktop-sized furniture. */
  #layoutCanvas:not(.floor-3d-ready) > .layout-table:not(.is-bar-seat) {
    width: 44px; height: 44px; min-height: 44px; padding: 4px;
  }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-md { width: 66px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-lg { width: 80px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-xl { width: 94px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-md.is-vertical { width: 44px; height: 66px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-lg.is-vertical { width: 44px; height: 80px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table.capacity-xl.is-vertical { width: 44px; height: 94px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table b { font-size: 11px; }
  #layoutCanvas:not(.floor-3d-ready) > .layout-table small { font-size: 9px; }
}
