.reservation-page{padding-top:78px;background:var(--ink);min-height:100vh}
.reservation-tool{padding:52px clamp(24px,4vw,72px) 96px}
.reservation-tool-heading{max-width:1480px;margin:0 auto 30px;display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:48px;align-items:end}
.reservation-kicker,.seating-heading>div>p,.dialog-kicker,.selection-eyebrow{margin:0;color:var(--brass);font:500 9px/1.45 var(--sans);letter-spacing:.19em;text-transform:uppercase}
.reservation-tool-heading h1{margin:10px 0 0;color:var(--ivory);font:400 clamp(48px,5vw,76px)/.92 var(--display);letter-spacing:-.035em}
.reservation-lead{max-width:38ch;margin:0;color:rgba(242,237,227,.72);font:400 18px/1.48 var(--display)}
.booking-controls{max-width:1480px;margin:0 auto 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid rgba(184,154,97,.28);background:rgba(16,42,58,.52)}
.booking-control{position:relative;min-height:78px;padding:14px 18px 11px;display:grid;align-content:center;gap:7px;border-left:1px solid var(--line)}
.booking-control:first-child{border-left:0}
.booking-control>span{color:var(--brass);font:500 8px/1 var(--sans);letter-spacing:.17em;text-transform:uppercase}
.booking-control input,.booking-control select{width:100%;height:32px;padding:0 32px 0 0;border:0;border-radius:0;background:transparent;color:var(--ivory);font:400 21px/1 var(--display);letter-spacing:.015em;outline:0;color-scheme:dark;appearance:none}
.booking-control select{cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--brass) 50%),linear-gradient(135deg,var(--brass) 50%,transparent 50%);background-position:calc(100% - 13px) 13px,calc(100% - 8px) 13px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.booking-control input:focus,.booking-control select:focus{box-shadow:0 1px var(--pool)}
.booking-control input::-webkit-calendar-picker-indicator{opacity:.74;cursor:pointer}
.booking-control input[type="number"]{-moz-appearance:textfield}
.booking-control input[type="number"]::-webkit-inner-spin-button,.booking-control input[type="number"]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}
.booking-control select option{background:var(--ink);color:var(--ivory)}
.selector-message{grid-column:1/-1;margin:0;padding:10px 18px;border-top:1px solid var(--line);color:rgba(242,237,227,.6);font:500 9px/1.5 var(--sans);letter-spacing:.025em}
.selector-message.is-error,.form-error{color:#e5aa9e}
.reservation-workspace{max-width:1480px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) clamp(276px,22vw,340px);gap:18px;align-items:start}
.seating-section{min-width:0;border:1px solid var(--line);background:rgba(16,42,58,.28);transition:opacity .2s ease}
.seating-section.is-locked{opacity:.82}
.seating-heading{min-height:72px;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}
.seating-heading h2{margin:5px 0 0;color:var(--ivory);font:400 28px/1 var(--display);letter-spacing:-.02em}
.map-legend{display:flex;align-items:center;gap:17px}
.map-legend span{display:flex;align-items:center;gap:7px;color:rgba(242,237,227,.66);font:500 7px/1 var(--sans);letter-spacing:.11em;text-transform:uppercase}
.map-legend b{font-weight:500}
.map-legend i{width:11px;height:11px;border:1px solid;border-radius:2px}
.map-legend .available{border-color:var(--table-available);background:var(--table-available)}
.map-legend .selected{border-color:var(--table-selected-border);background:var(--table-selected)}
.map-legend .unavailable{border-color:var(--table-unavailable);background:color-mix(in srgb,var(--table-unavailable) 58%,transparent)}
.map-shell{position:relative;background:#4f4132;overflow:hidden}
.map-lock{position:absolute;z-index:4;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;padding:24px;background:rgba(6,19,29,.88);text-align:center;transition:opacity .18s ease,visibility .18s ease}
.map-lock span{color:var(--brass);font:400 42px/1 var(--display)}
.map-lock p{max-width:32ch;margin:0;color:var(--ivory-soft);font:400 18px/1.42 var(--display)}
.seating-section:not(.is-locked) .map-lock{opacity:0;visibility:hidden;pointer-events:none}
.map-status{position:absolute;z-index:3;inset:0;display:none;place-content:center;padding:24px;background:rgba(6,19,29,.9);color:var(--ivory-soft);font:400 20px/1.4 var(--display);text-align:center}
.map-status.is-visible{display:grid}
.seating-map-scroll{overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:rgba(184,154,97,.5) rgba(242,237,227,.06)}
.seating-map{display:block;position:relative;width:100%;min-width:760px;max-width:100%;height:auto;aspect-ratio:1448/1086;background:#4f4132;isolation:isolate;user-select:none}
.seating-map-image{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.seating-hotspots{position:absolute;z-index:2;inset:0;display:block;width:100%;height:100%;overflow:visible}
.seating-hotspots>:not([data-table-layer]){display:none}
.table-node{cursor:pointer;outline:none}
.table-node .table-hitbox{fill:transparent;pointer-events:all}
.table-node .table-state-wash{fill:var(--table-available);fill-opacity:0;pointer-events:none;transition:fill-opacity .16s ease,fill .16s ease}
.table-node .table-state-outline{fill:none;stroke:#f6dfad;stroke-width:3;stroke-opacity:0;pointer-events:none;transition:stroke-opacity .16s ease,stroke-width .16s ease,filter .16s ease}
.table-node .selection-marker{fill:#e0b75f;stroke:#72501f;stroke-width:2;opacity:0;pointer-events:none;filter:drop-shadow(0 2px 3px rgba(35,22,7,.55))}
.table-node .table-number-label{display:none;fill:var(--ivory);font:600 29px/1 Georgia,serif;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
.table-node.has-corrected-number .table-state-wash{fill:var(--table-available);fill-opacity:.98}
.table-node.has-corrected-number .table-number-label{display:block}
.table-node:hover .table-state-outline,.table-node:focus-visible .table-state-outline{stroke-opacity:.92;filter:drop-shadow(0 0 9px rgba(250,213,137,.75))}
.table-node:focus-visible .table-state-outline{stroke-width:6}
.table-node.is-selected .table-state-wash{fill:var(--table-selected);fill-opacity:.72}
.table-node.is-selected .table-state-outline{stroke:var(--table-selected-border);stroke-width:6;stroke-opacity:1;filter:drop-shadow(0 0 10px rgba(225,181,92,.72))}
.table-node.is-selected .selection-marker{opacity:1}
.table-node.has-corrected-number.is-selected .table-state-wash{fill-opacity:.98}
.table-node.has-corrected-number.is-selected .table-number-label{fill:#172019}
.table-node.is-unavailable{cursor:not-allowed}
.table-node.is-unavailable .table-state-wash{fill:var(--table-unavailable);fill-opacity:.48}
.table-node.is-unavailable .table-state-outline{stroke:var(--table-unavailable-border);stroke-width:4;stroke-opacity:.9;filter:none}
.table-node.has-corrected-number.is-unavailable .table-state-wash{fill-opacity:.96}
.table-node.is-unavailable .selection-marker{opacity:0}
.table-node.is-group-incompatible{cursor:not-allowed}
.map-pan-hint{display:none;margin:0;padding:9px 16px;border-top:1px solid var(--line);color:rgba(217,208,194,.58);font:500 8px/1.5 var(--sans);letter-spacing:.04em;text-align:center}
.map-expand{display:none;width:100%;min-height:42px;padding:0 14px;border:0;border-top:1px solid var(--line);background:rgba(7,28,41,.95);color:var(--brass);font:500 8px/1 var(--sans);letter-spacing:.15em;text-transform:uppercase;cursor:pointer}
.selection-panel{position:sticky;top:96px;min-height:354px;border:1px solid rgba(184,154,97,.28);background:rgba(16,42,58,.52)}
.selection-empty[hidden],.selection-summary[hidden]{display:none!important}
.selection-empty,.selection-summary{padding:28px}
.selection-empty{min-height:352px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.selection-number{display:block;margin-bottom:20px;color:rgba(184,154,97,.48);font:400 56px/1 var(--display)}
.selection-panel h2{margin:10px 0 12px;color:var(--ivory);font:400 34px/1.02 var(--display);letter-spacing:-.025em}
.selection-empty>p:last-child{max-width:27ch;margin:0;color:rgba(242,237,227,.6);font:400 14px/1.55 var(--sans)}
.selected-table-number{margin:15px 0 26px;color:var(--ivory-soft);font:400 20px/1 var(--display)}
.selected-table-number strong{display:block;margin-top:3px;color:var(--ivory);font:400 74px/.88 var(--display)}
.selection-summary dl{margin:0 0 24px;border-top:1px solid var(--line)}
.selection-summary dl div{min-height:49px;padding:10px 0;display:grid;grid-template-columns:74px 1fr;gap:12px;align-items:center;border-bottom:1px solid var(--line)}
.selection-summary dt{color:rgba(242,237,227,.48);font:500 7px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.selection-summary dd{margin:0;color:var(--ivory);font:400 14px/1.35 var(--sans);text-align:right}
.selection-summary .available-status{color:#9fc9aa}
.proceed-reservation,.submit-reservation{min-height:50px;width:100%;padding:0 18px;border:1px solid rgba(184,154,97,.72);background:rgba(184,154,97,.13);color:var(--ivory);display:flex;align-items:center;justify-content:center;gap:12px;font:500 8px/1.3 var(--sans);letter-spacing:.17em;text-transform:uppercase;cursor:pointer;transition:background .18s ease,color .18s ease}
.proceed-reservation:hover,.submit-reservation:hover{background:var(--brass);color:var(--ink)}
.proceed-reservation i{width:22px;height:1px;background:currentColor;position:relative}
.proceed-reservation i::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-top:1px solid;border-right:1px solid;transform:rotate(45deg)}
.reservation-dialog{width:min(680px,calc(100% - 36px));max-height:min(90dvh,820px);padding:0;border:1px solid rgba(184,154,97,.42);background:var(--ink);color:var(--ivory);box-shadow:0 34px 90px rgba(0,0,0,.55);overflow:auto}
.reservation-dialog::backdrop{background:rgba(2,10,16,.78);backdrop-filter:blur(5px)}
.dialog-frame{position:relative;padding:46px}
.dialog-close{position:absolute;z-index:2;top:16px;right:16px;width:44px;height:44px;border:0;background:transparent;color:var(--ivory-soft);font:300 28px/1 var(--sans);cursor:pointer}
.dialog-close:hover{color:var(--ivory)}
.dialog-content h2{margin:18px 0 25px;font:400 clamp(42px,5vw,62px)/.94 var(--display);letter-spacing:-.035em}
.reservation-summary{margin:0;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.reservation-summary div{padding:14px 15px;border-left:1px solid var(--line)}
.reservation-summary div:first-child{border-left:0}
.reservation-summary dt{margin-bottom:5px;color:var(--ivory-soft);font-size:7px;letter-spacing:.16em;text-transform:uppercase}
.reservation-summary dd{margin:0;font:400 20px/1.2 var(--display)}
.change-date-time{margin:11px 0 28px;padding:2px 0;border:0;border-bottom:1px solid rgba(184,154,97,.5);background:transparent;color:var(--brass);font-size:8px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 24px}
.customer-form label{display:grid;gap:8px;color:var(--ivory-soft);font-size:8px;letter-spacing:.16em;text-transform:uppercase}
.customer-form label.form-note{grid-column:1/-1}
.customer-form label small{font:inherit;opacity:.6}
.customer-form input,.customer-form textarea{width:100%;border:0;border-bottom:1px solid rgba(242,237,227,.32);border-radius:0;padding:12px 0;background:transparent;color:var(--ivory);font:400 16px/1.4 var(--sans);outline:0;color-scheme:dark}
.customer-form input:focus,.customer-form textarea:focus{border-color:var(--pool)}
.customer-form textarea{resize:vertical;min-height:72px}
.form-error{min-height:22px;margin:16px 0 4px;font-size:10px;line-height:1.5}
.submit-reservation:disabled{opacity:.55;cursor:wait}
.submit-reservation i{display:none;width:13px;height:13px;border:1px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
.submit-reservation.is-loading i{display:block}
body.reservation-dialog-open{overflow:hidden}
.map-zoom-dialog{width:min(960px,calc(100% - 18px));max-width:none;height:min(92dvh,800px);padding:0;border:1px solid rgba(184,154,97,.45);background:var(--ink);color:var(--ivory);overflow:hidden}
.map-zoom-dialog::backdrop{background:rgba(2,10,16,.88);backdrop-filter:blur(4px)}
.map-zoom-frame{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.map-zoom-header,.map-zoom-footer{position:relative;z-index:2;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--ink)}
.map-zoom-header{border-bottom:1px solid var(--line)}.map-zoom-header p{margin:0;color:var(--brass);font:500 7px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase}.map-zoom-header h2{margin:5px 0 0;font:400 28px/1 var(--display)}.map-zoom-header button{width:44px;height:44px;border:0;background:transparent;color:var(--ivory);font:300 28px/1 var(--sans);cursor:pointer}
.map-zoom-scroll{min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y;background:#4f4132}.map-zoom-scroll .seating-map{width:900px;min-width:900px;max-width:none}
.map-zoom-footer{border-top:1px solid var(--line)}.map-zoom-footer p{margin:0;color:var(--ivory-soft);font:400 14px/1.3 var(--display)}.map-zoom-footer button{min-height:44px;padding:0 18px;border:1px solid rgba(184,154,97,.65);background:rgba(184,154,97,.12);color:var(--ivory);font:500 8px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase}.map-zoom-footer button:disabled{opacity:.42}.map-zoom-footer button:not(:disabled){cursor:pointer}.map-zoom-footer button:not(:disabled):hover{background:var(--brass);color:var(--ink)}
body.map-zoom-open{overflow:hidden}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:980px){
  .reservation-page{padding-top:118px}.reservation-tool{padding:34px 24px 76px}.reservation-tool-heading{grid-template-columns:1fr;gap:12px;margin-bottom:22px}.reservation-tool-heading h1{font-size:clamp(43px,8vw,58px)}.reservation-lead{font-size:16px}.reservation-workspace{grid-template-columns:1fr}.selection-panel{position:static;min-height:0}.selection-empty{min-height:190px}.selection-summary{display:grid;grid-template-columns:minmax(160px,.55fr) 1fr;gap:28px;align-items:start}.selection-summary>.selection-eyebrow,.selection-summary>.selected-table-number{grid-column:1}.selection-summary dl{grid-column:2;grid-row:1/3;margin:0}.selection-summary .proceed-reservation{grid-column:1/-1}.map-shell,.seating-map-scroll{width:100%;max-width:100%}.seating-map-scroll{overflow:hidden}.seating-map{width:100%;min-width:0;max-width:100%;height:auto}.map-pan-hint{display:none}.map-expand{display:block}
}
@media(max-width:560px){
  .reservation-tool{padding:25px 16px 60px}.reservation-tool-heading{margin-bottom:18px}.reservation-tool-heading h1{margin-top:7px;font-size:clamp(39px,11.5vw,49px);line-height:.95}.reservation-lead{font-size:15px;line-height:1.45}.booking-controls{grid-template-columns:1fr 1fr;margin-bottom:14px}.booking-control{min-height:69px;padding:11px 12px 8px}.group-type-control{grid-column:1/-1}.booking-control input,.booking-control select{font-size:18px}.selector-message{padding:9px 12px;font-size:8px}.reservation-workspace{gap:10px}.seating-heading{min-height:0;padding:11px 12px;align-items:flex-start;flex-direction:column;gap:9px}.seating-heading h2{font-size:23px}.map-legend{width:100%;gap:12px}.map-legend span{font-size:6.5px}.map-lock p{font-size:15px}.map-lock span{font-size:34px}.selection-empty,.selection-summary{padding:15px 16px}.selection-empty{min-height:140px}.selection-number{margin-bottom:8px;font-size:36px}.selection-panel h2{font-size:27px}.selection-empty>p:last-child{font-size:12px}.selection-summary{display:block}.selected-table-number{margin:8px 0 12px;display:flex;align-items:baseline;gap:8px;font-size:16px}.selected-table-number strong{display:inline;margin:0;font-size:38px}.selection-summary dl{margin-bottom:12px;display:grid;grid-template-columns:1fr 1fr}.selection-summary dl div{min-height:42px;padding:8px;grid-template-columns:auto 1fr;gap:6px}.selection-summary dl div:nth-child(odd){border-right:1px solid var(--line)}.selection-summary dd{font-size:12px}.proceed-reservation{min-height:46px}.reservation-dialog{width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.dialog-frame{padding:36px 20px 24px}.dialog-content h2,.dialog-success h2{font-size:42px;margin-bottom:20px}.reservation-summary{grid-template-columns:1fr 1fr}.reservation-summary div{padding:12px 10px}.reservation-summary dd{font-size:18px}.change-date-time{margin-bottom:22px}.form-grid{gap:17px 14px}.customer-form input{font-size:15px}.form-error{margin-top:12px}.map-zoom-dialog{width:calc(100% - 12px);height:calc(100dvh - 12px)}.map-zoom-header,.map-zoom-footer{padding:11px 12px}.map-zoom-header h2{font-size:24px}.map-zoom-footer p{font-size:12px}.map-zoom-footer button{padding:0 12px;font-size:7px}
}
@media(max-width:370px){.reservation-tool{padding-left:13px;padding-right:13px}.map-legend{gap:10px}.reservation-dialog{width:calc(100% - 14px)}}
@media(prefers-reduced-motion:reduce){.submit-reservation i{animation-duration:1.4s}}
.map-legend span:last-child::after{content:none!important}
