/* Reflective silver: directional highlights, dark edges and warm venue light. */
:root{--action:#1e323e;--metal:linear-gradient(115deg,#647d8d 0%,#b4c4cd 14%,#edf3f5 25%,#899faa 38%,#d6e0e5 51%,#f8faf9 55%,#a3b6c2 64%,#586f7c 79%,#c1cfd5 91%,#e4ebed 100%)}
.month.active{background:#191b1e!important;color:#fff!important;box-shadow:0 3px 8px #12191e24}.month.active>small{color:#c6d2dc!important}.month.locked{cursor:pointer}.month:not(.active):hover{background:#dce4ea}.month{transition:background .2s,color .2s,box-shadow .2s}
.map-shell{background:#c5d2db;border:1px solid #b1c2cd}.floor{background:linear-gradient(130deg,#f0f2ef 0%,#e3e9eb 60%,#d4e0e5 100%)}
.cabin{background:var(--metal);border:1px solid #7f97a5;box-shadow:inset 0 1px 0 #fff,0 5px 9px #243e4e26;overflow:hidden}.cabin::after{content:"";position:absolute;inset:-10% -100%;pointer-events:none;background:linear-gradient(110deg,transparent 38%,#ffffff00 43%,#ffffff8a 48%,#fff0 53%,transparent 58%);transform:translateX(-25%);animation:cabin-reflection 7s ease-in-out infinite}.cabin>span,.cabin>small{position:relative;z-index:1;text-shadow:0 1px 0 #edf4f6a8}.cabin>small{font-size:10px}
.rack .rack-plan{border-color:#657e8d;box-shadow:0 4px 7px #20384730,inset 0 1px 0 #fff}.rack-side{background:linear-gradient(105deg,#92a7b6,#eaf1f4 28%,#b1c4cf 48%,#f7fafa 56%,#8ba3b3 85%,#c2d0d7);color:#173849;position:relative;overflow:hidden;text-shadow:0 1px 0 #ffffff6b}.rack-side+.rack-side{background:linear-gradient(105deg,#8099a9,#d7e3e9 30%,#9aafbb 48%,#eef4f6 57%,#738d9e 85%,#a4b8c4);border-color:#7893a3}.rack-side::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,#fff9 50%,transparent 70%);transform:translateX(-130%);pointer-events:none;transition:transform .65s ease}.rack-side:hover::before,.rack-side:focus-visible::before{transform:translateX(130%)}.rack-side:hover{background-color:#d8e4eb}.rack-side.side-selected{background:#263f4f;color:white;text-shadow:none;box-shadow:inset 0 0 0 1px #a7c4d5}.table{background:var(--metal);border-color:#7c95a5;box-shadow:0 3px 6px #263c4926}.table.chosen{background:#263f4f;color:#fff;box-shadow:inset 0 0 0 1px #a7c4d5}.table:hover{background:var(--metal);filter:brightness(1.1)}
#month-note{color:#5b6e7a;font-size:13px;margin:-16px 0 24px}.month-status{display:inline-flex;align-items:center;gap:6px}.floor.is-closed .rack-side,.floor.is-closed .table{opacity:.5;cursor:not-allowed}.floor.is-closed .rack-side::before{display:none}.floor.is-closed .table:hover{filter:none;transform:none}
@keyframes cabin-reflection{0%,15%{transform:translateX(-25%)}65%,100%{transform:translateX(25%)}}
@media(prefers-reduced-motion:reduce){.cabin::after{animation:none;transform:translateX(0)}.rack-side::before{transition:none}}
/* Recovered concept: cabin at the rear, curved service counter, central café. */
.floor{height:688px;background-color:#e5eaec}.cabin{left:0;right:0;height:112px;border-radius:2px 2px 0 0;justify-content:flex-start;padding-top:22px}.cabin::before{content:"";position:absolute;bottom:0;left:39%;width:22%;height:16px;background:#334b58;border:1px solid #6b818e;border-bottom:0;box-shadow:inset 0 3px 7px #0b202d77}
.front-tables{top:110px;left:5%;right:5%;grid-template-columns:1fr 150px 1fr;gap:18px;align-items:start}.tables{padding-top:20px;grid-template-columns:repeat(4,1fr);gap:7px}.reception{position:relative;height:92px;padding:0;border:0;background:none!important;box-shadow:none;border-radius:0}.reception svg{display:block;width:100%;height:90px;filter:drop-shadow(0 3px 3px #233d4a26)}.reception>span{position:absolute;top:27px;left:0;right:0;text-align:center;font-size:9px;color:#334d5c;letter-spacing:.1px}.aisle-label{top:224px}.racks{top:250px;bottom:51px;width:31%}.rack-left{left:7%}.rack-right{right:7%}.cafe-centre{position:absolute;top:330px;left:45%;width:10%;height:190px;border:1px solid #a8b7be;border-radius:4px;background:linear-gradient(100deg,#a9bac4,#e8eef0 45%,#c1cfd6);display:flex;align-items:center;justify-content:center;color:#486474;box-shadow:-8px 0 0 -3px #71859155}.cafe-centre>span{font-size:9px;writing-mode:vertical-rl;letter-spacing:1.2px}.cafe-centre i{position:absolute;left:calc(100% + 5px);width:13px;height:22px;border:1px solid #a4b4bd;border-radius:3px;background:#d2dde2}.cafe-centre i:nth-of-type(1){top:12px}.cafe-centre i:nth-of-type(2){top:58px}.cafe-centre i:nth-of-type(3){top:104px}.cafe-centre i:nth-of-type(4){top:150px}
@media(max-width:1050px){.front-tables{grid-template-columns:1fr 100px 1fr;gap:10px}.tables{grid-template-columns:repeat(2,1fr);padding-top:14px;gap:8px}.reception svg{height:76px}.reception>span{top:25px;font-size:8px}.racks{top:275px;bottom:43px}.aisle-label{top:246px}.cafe-centre{top:355px;width:9%;left:45.5%}.cafe-centre i{width:9px;left:calc(100% + 3px)}}
@media(max-width:540px){.floor{height:688px}.cabin{height:112px;left:0;right:0;padding-top:25px}.cabin span{font-size:22px}.front-tables{grid-template-columns:1fr 82px 1fr;left:4%;right:4%;gap:8px}.tables{gap:7px;padding-top:12px}.table{min-width:34px;width:34px;max-width:34px;height:44px}.reception svg{height:68px}.reception>span{font-size:7px;top:24px}.rack-left{left:5%}.rack-right{right:5%}.racks{width:33%;top:273px}.cafe-centre{top:366px;left:45%;width:10%;height:168px}.cafe-centre i{height:18px;width:7px}.cafe-centre i:nth-of-type(1){top:12px}.cafe-centre i:nth-of-type(2){top:52px}.cafe-centre i:nth-of-type(3){top:92px}.cafe-centre i:nth-of-type(4){top:132px}}
/* Fixed physical geometry: furniture must not reflow into new rows on phones. */
.map-shell{overflow-x:auto;overscroll-behavior-inline:contain;direction:ltr;scrollbar-width:thin;scrollbar-color:#78919f #c5d2db}.floor{min-width:660px;height:688px}.map-pan-hint{display:none;color:#536c7a;font-size:12px;margin:0 0 12px}
.front-tables{top:112px;left:4%;right:4%;display:grid;grid-template-columns:1fr 128px 1fr;gap:14px;align-items:start}.tables{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:44px;padding-top:9px;gap:8px;justify-items:center}.table{width:44px;height:44px;min-width:0;max-width:44px;min-height:44px;aspect-ratio:1;font-size:12px}.reception{height:90px}.reception svg{height:83px}.reception>span{top:29px;font-size:9px}.aisle-label{top:219px;font-size:10px}.rack-left{left:5%}.rack-right{right:5%}.racks{top:248px;bottom:50px;width:28%}.rack-side{font-size:13px}.cabin{padding-top:24px;height:112px}.cabin span{font-size:23px}
.cafe-centre{top:337px;left:36%;width:28%;height:229px;border:0;border-radius:0;background:none;box-shadow:none;display:block}.cafe-table{position:absolute;left:32%;width:36%;height:100%;top:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(100deg,#869dac,#e8eff2 40%,#a5b9c5 70%,#cbd8de);border:1px solid #8ba2b1;border-radius:3px;box-shadow:0 4px 8px #29435122}.cafe-table span{writing-mode:vertical-rl;font-size:11px;letter-spacing:1px;color:#344f5e}.cafe-bench{position:absolute;top:0;left:6%;width:18%;height:100%;display:grid;grid-template-rows:repeat(4,1fr);gap:2px;padding:3px;border:1px solid #5f7582;border-inline-start:5px solid #7d929f;background:#8297a3;border-radius:5px}.cafe-bench i{position:static!important;inset:auto!important;width:auto!important;height:auto!important;background:#b3c3cc;border:1px solid #92a5b0;border-radius:3px;box-shadow:inset 0 1px 2px #edf3f588}.cafe-chairs{position:absolute;top:0;right:4%;width:18%;height:100%;display:flex;flex-direction:column;justify-content:space-around}.cafe-chairs i{position:relative!important;inset:auto!important;width:100%!important;height:32px!important;background:linear-gradient(100deg,#d6e1e7,#98adbb);border:1px solid #728d9e;border-inline-end:4px solid #7f98a8;border-radius:5px;box-shadow:0 2px 4px #29435116}.cafe-centre>small{position:absolute;top:calc(100% + 10px);left:0;right:0;text-align:center;font-size:11px;color:#506b7b}
@media(max-width:1120px){.map-pan-hint{display:block}.map-shell{padding:16px}}
@media(max-width:540px){.map-shell{padding:12px}.floor{min-width:660px}.front-tables{grid-template-columns:1fr 128px 1fr;left:4%;right:4%;gap:14px}.tables{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:9px}.table{width:44px;height:44px;max-width:44px;font-size:12px}.reception svg{height:83px}.reception>span{font-size:9px;top:29px}.racks{top:248px;bottom:50px;width:28%}.rack-left{left:5%}.rack-right{right:5%}.aisle-label{top:219px;font-size:10px}.cafe-centre{top:337px;left:36%;width:28%;height:229px}.cabin span{font-size:23px}}
.map-column{min-width:0}.map-shell{width:100%;max-width:100%}
.table.chosen:hover{background:#263f4f;filter:none}
/* Complete café composition, recovered from the original concept drawing. */
.floor{height:890px;min-width:700px}.front-tables{grid-template-columns:1fr 128px 1fr}.racks{display:contents}.rack{position:absolute;width:15%;min-height:104px;padding:0;gap:8px}.rack-left .rack{left:25%}.rack-right .rack{left:60%}.rack-left .rack:nth-child(1){top:282px}.rack-left .rack:nth-child(2){top:478px}.rack-left .rack:nth-child(3){top:680px}.rack-right .rack:nth-child(1){top:296px}.rack-right .rack:nth-child(2){top:504px}.rack-right .rack:nth-child(3){top:682px}.rack .rack-plan{width:100%;min-height:88px}.rack-side{padding-inline:12px;font-size:12px}.rack>small{font-size:11px}
.cafe-centre{top:432px;left:41%;width:18%;height:260px}.cafe-table{left:32%;width:36%}.cafe-bench{left:4%;width:21%}.cafe-chairs{right:0;width:22%}.cafe-chairs i{height:29px!important}.cafe-centre>small{font-size:10px;top:calc(100% + 9px)}.cafe-table span{font-size:10px}
.cafe-side-seating{position:absolute;inset:0;pointer-events:none}.cafe-bay{position:absolute;left:var(--bay-x);top:var(--bay-y);width:0;height:0}.cafe-small-table{position:absolute;left:-24px;top:-24px;width:48px;height:48px;background:linear-gradient(120deg,#95a9b6,#dfe8ee 48%,#9aafbd);border:1px solid #8a9fac;box-shadow:0 3px 6px #2a465522}.cafe-small-table.round{border-radius:50%}.cafe-small-table.square{border-radius:3px}.cafe-seat{position:absolute;width:25px;height:25px;left:var(--sx);top:var(--sy);transform:translate(-50%,-50%) rotate(var(--rot));background:#d3dfe6;border:1px solid #8ba1af;border-bottom:4px solid #8098a8;border-radius:3px;box-shadow:0 2px 3px #243e4e13}.map-legend{flex-wrap:wrap}.map-legend .cafe-key i{border-radius:2px;background:#c8d5de;border-color:#91a6b5}.entrance{bottom:12px}
@media(max-width:1050px){.floor{height:890px;min-width:700px}.rack-left .rack{left:25%}.rack-right .rack{left:60%}.cafe-centre{top:432px;left:41%;width:18%;height:260px}.rack{width:15%}.front-tables{grid-template-columns:1fr 128px 1fr}.tables{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:540px){.floor{height:890px;min-width:700px}.cafe-centre{top:432px;left:41%;width:18%;height:260px}.rack{width:15%}.rack-side{font-size:12px}.cafe-centre>small{font-size:10px}.map-legend{gap:10px 16px}}

/* Spacious schematic: preserve physical separation at every viewport. */
main{max-width:1640px;padding-inline:3%}.floor{min-width:960px;height:1040px}.rack{width:12%}.rack-left .rack{left:25%}.rack-right .rack{left:63%}.rack-left .rack:nth-child(1),.rack-right .rack:nth-child(1){top:345px}.rack-left .rack:nth-child(2),.rack-right .rack:nth-child(2){top:605px}.rack-left .rack:nth-child(3),.rack-right .rack:nth-child(3){top:840px}
.cafe-centre{top:525px;left:calc(50% - 90px);width:180px;height:216px}.cafe-centre .cafe-table{left:54px;top:44px;width:72px;height:128px}.cafe-centre .communal-seat{position:absolute!important;inset:auto!important;width:28px!important;height:28px!important;background:linear-gradient(120deg,#dce5eb,#a9bdc9);border:1px solid #8098a8;border-radius:3px;box-shadow:0 2px 4px #29435116}.cafe-centre .seat-left-top{left:9px!important;top:56px!important;border-left:4px solid #8098a8}.cafe-centre .seat-left-bottom{left:9px!important;top:132px!important;border-left:4px solid #8098a8}.cafe-centre .seat-right-top{left:143px!important;top:56px!important;border-right:4px solid #8098a8}.cafe-centre .seat-right-bottom{left:143px!important;top:132px!important;border-right:4px solid #8098a8}.cafe-centre .seat-head{left:76px!important;top:0!important;border-top:4px solid #8098a8}.cafe-centre .seat-foot{left:76px!important;top:188px!important;border-bottom:4px solid #8098a8}.cafe-centre>small{top:238px;white-space:nowrap}
@media(max-width:1440px){.booking-layout{grid-template-columns:minmax(0,1fr)}.selection-panel{position:static;max-width:600px;width:100%;justify-self:end}.map-pan-hint{display:block}}
@media(max-width:540px){main{padding-inline:5%}.floor{min-width:960px;height:1040px}.rack{width:12%}.cafe-centre{top:525px;left:calc(50% - 90px);width:180px;height:216px}}

/* Keep the eight display tables together beside the reception. */
.front-tables{gap:18px}.front-tables .tables{grid-template-columns:repeat(4,44px);gap:14px}.front-tables #tables-left{justify-content:end}.front-tables #tables-right{justify-content:start}
/* Device-aware floor viewport and accessible alternative selection controls. */
.booking-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start}.selection-panel{max-width:none;position:sticky;top:110px}.map-shell{padding:12px;max-height:80vh;overflow:auto;scrollbar-gutter:stable}.floor-stage{position:relative;margin-inline:auto;direction:ltr}.floor{position:absolute;left:0;top:0;width:960px!important;min-width:960px!important;height:1040px!important;transform-origin:top left}.floor-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.view-switch,.zoom-tools{display:flex;gap:4px;background:#e5e9ec;border-radius:12px;padding:4px}.floor-toolbar button{min-height:44px;border:0;background:transparent;border-radius:9px;padding:8px 14px;color:#405563;font:500 13px/1.2 inherit;cursor:pointer}.view-switch button[aria-pressed="true"]{background:#fff;color:#142b3c;box-shadow:0 2px 5px #243d5012}.zoom-tools button{min-width:40px;padding:8px}.zoom-tools button:disabled{opacity:.35;cursor:default}.map-pan-hint{display:block;font-size:12px;line-height:1.5}.map-shell[hidden],#space-list[hidden],.zoom-tools[hidden],.map-pan-hint[hidden],.map-note[hidden]{display:none!important}
#space-list{padding:20px;background:#edf1f3;border-radius:16px}#space-list h3{font-size:18px;margin:0 0 6px}#space-list p{font-size:12px;color:#5b6f7b;margin:0 0 18px}.rack-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:28px}.picker-rack{background:#fff;border:1px solid #d9e1e6;border-radius:12px;padding:14px}.picker-rack h4{font-size:14px;margin:0 0 12px}.picker-rack>div{display:grid;gap:6px}.picker-rack button,.table-list button{min-height:48px;border:1px solid #cbd7df;background:#f1f5f7;border-radius:8px;color:#284555;font:500 13px/1.3 inherit;padding:10px;cursor:pointer}.picker-rack button{display:flex;justify-content:space-between;gap:10px}.table-list{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}#space-list button[aria-pressed="true"]{background:#243d4e;color:#fff;border-color:#243d4e}#space-list button:disabled{opacity:.45;cursor:default}.floor-toolbar button:focus-visible,#space-list button:focus-visible{outline:2px solid #24608a;outline-offset:3px}
@media(max-width:1100px){.booking-layout{grid-template-columns:minmax(0,1fr)}.selection-panel{position:static;width:100%}.map-shell{max-height:none}}
@media(max-width:600px){.floor-toolbar{gap:6px}.floor-toolbar button{font-size:12px;padding:8px 10px}.zoom-tools button{min-width:32px;padding:6px}.view-switch,.zoom-tools{gap:0;padding:3px}.rack-list{grid-template-columns:1fr}.picker-rack>div{grid-template-columns:1fr 1fr}.picker-rack button{flex-direction:column;align-items:flex-start;gap:5px}.map-shell{padding:12px;scrollbar-gutter:auto}.map-legend{font-size:10px;gap:8px 12px}#space-list{padding:14px}}

.map-shell{max-height:none}.map-shell.is-zoomed{max-height:70vh}
@media(min-width:801px) and (max-width:1100px){.mobile-selection:not([hidden]){display:flex;position:fixed;bottom:0;inset-inline:0;padding:14px 4%;background:rgba(252,252,253,.97);backdrop-filter:blur(18px);border-top:1px solid #cfd9df;z-index:12;align-items:center;justify-content:space-between;gap:15px}.mobile-selection small{display:block;color:#5e7280;font-size:11px}.mobile-selection b{font-size:20px;color:#193e56}.mobile-selection a{background:var(--action);color:white;border-radius:99px;padding:12px 20px;font-size:13px}body{padding-bottom:84px}}
/* Stable month controls: state changes never insert content above the floor. */
.months{margin-bottom:12px}.month{min-height:88px;height:88px;transition:background-color 180ms ease,color 180ms ease,box-shadow 180ms ease}.month>small{min-height:17px}.month:not(.active){box-shadow:none}#month-note{display:flex;align-items:center;min-height:42px;height:42px;margin:0 0 18px;font-size:12px;line-height:18px;color:#536a78;overflow:hidden}.booking-layout{overflow-anchor:none}.months{overflow-anchor:none}.total b,#mobile-total{font-variant-numeric:tabular-nums}.selection-panel h2{min-height:34px}.settings>button{width:44px;height:44px;border:1px solid #c7d1d9;border-radius:13px;background:#f5f7f8;box-shadow:0 2px 5px #2943510a;color:#294655;transition:background-color 160ms ease,border-color 160ms ease}.settings>button:hover,.settings>button[aria-expanded=true]{background:#e2e9ee;border-color:#98adbb}.settings svg{width:21px;height:21px;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}#settings-menu{width:224px;padding:8px;top:54px;border:1px solid #d1dce3;border-radius:16px;box-shadow:0 12px 28px #20384724;animation:account-appear 160ms ease-out}.account-heading{display:flex;gap:11px;align-items:center;padding:12px 9px 16px;border-bottom:1px solid #e1e7eb;margin-bottom:6px}.account-heading b{font-size:14px;font-weight:600}.account-heading small{display:block;font-size:11px;color:#5b7280}.account-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#e6edf1;color:#294b60;font-size:14px}#settings-menu button{display:flex;align-items:center;gap:10px;min-height:44px;border-radius:9px;font-size:13px;padding:10px}#settings-menu button:hover{background:#edf2f5}#settings-menu button svg{width:18px;height:18px;flex-shrink:0}.floor-toolbar button,#space-list button{transition:background-color 160ms ease,color 160ms ease,border-color 160ms ease}.table:hover{transform:none}.map-shell{scroll-behavior:auto}
@keyframes account-appear{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:540px){.months{margin-bottom:12px}.month{min-height:88px;height:88px}#month-note{min-height:48px;height:48px;margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){.month,.settings>button,.floor-toolbar button,#space-list button{transition:none}#settings-menu{animation:none}}
