:root{--bg:#111a1c;--surface:#1b2728;--surface2:#253333;--line:#354646;--ink:#edf0e8;--muted:#a7b3af;--mint:#b1d4be;--mint-deep:#233f32;--pink:#e8bdc8;--peach:#eac3af;--lilac:#cbbde8;--yellow:#e8d99e;--danger:#f0a6a9;--rounded:16px;--shadow:0 16px 46px #0002}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}a{text-decoration:none;color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.17;letter-spacing:-.045em}h1{font-size:clamp(2.6rem,5vw,5.2rem);font-weight:650}h2{font-size:clamp(1.8rem,3.1vw,3.2rem);font-weight:600}h3{font-size:1.2rem}p{line-height:1.65;color:var(--muted)}em{font-family:Georgia,serif;color:var(--mint);font-weight:400}.wrap{width:min(1190px,calc(100% - 60px));margin-inline:auto}.eyebrow{font-size:.67rem;font-weight:750;letter-spacing:.21em;color:var(--mint)}.brand{font-size:1.48rem;letter-spacing:-.07em;font-weight:850;display:inline-flex;align-items:center;white-space:nowrap}.brand>span:not(.brand-symbol){color:var(--mint)}.brand-symbol{color:var(--mint);font-size:1.7rem;margin-right:8px}.brand small{font-size:.52rem;letter-spacing:.16em;color:var(--muted);font-weight:600;display:block;margin-left:15px}.btn{min-height:40px;border:1px solid transparent;border-radius:9px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:12px;font-weight:700;line-height:1.1;transition:transform .15s,background .15s;font-size:.85rem}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--mint);color:#11261b}.btn-primary:hover{background:#c7e7cf}.btn-outline{border-color:var(--line);background:transparent;color:var(--ink)}.btn-quiet{background:var(--surface2);color:var(--ink)}.btn-danger{background:#5b3039;color:white}.wide{width:100%}.button-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}.muted,.tiny{color:var(--muted)}.tiny{font-size:.72rem}.form-feedback{min-height:18px;font-size:.85rem}.form-feedback.bad{color:var(--danger)}.form-feedback.good{color:var(--mint)}.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}input,select,textarea{min-width:0;width:100%;padding:11px 12px;border-radius:8px;border:1px solid var(--line);color:var(--ink);background:#132023;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--mint);box-shadow:0 0 0 2px #b1d4be21}input[type="date"],input[type="time"],input[type="datetime-local"]{color-scheme:dark}select option{background:var(--surface)}.field{display:flex;flex-direction:column;gap:7px}.field label,label{font-weight:650;font-size:.78rem;color:#d9e2dd}.field-hint{font-size:.75rem;line-height:1.5}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:13px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--rounded);box-shadow:var(--shadow)}.empty{padding:35px 18px;color:var(--muted);text-align:center}.green-circle,.live-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--mint)}
/* Marketing */
.site-header{height:94px;display:flex;align-items:center;justify-content:space-between;gap:20px}.topnav{display:flex;align-items:center;gap:29px;font-weight:600;color:#d0dcd5}.topnav a:hover{color:var(--mint)}.hero{padding-top:82px;padding-bottom:100px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:40px;min-height:620px}.hero-copy h1{margin:26px 0 23px}.hero-copy p{max-width:440px;font-size:1.05rem}.hero-proof{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:.78rem;margin-top:45px}.proof-orbs{font-size:22px;color:var(--pink)}.hero-art{height:510px;position:relative;border-radius:220px 220px 46px 46px;overflow:hidden;background:radial-gradient(circle at 70% 25%,#4f6761,#2c4646 42%,#283137 90%);border:1px solid #60756f44}.art-glow{position:absolute;width:470px;height:470px;border-radius:50%;left:10%;top:18%;filter:blur(15px);background:radial-gradient(circle,#eac3af29,transparent 65%)}.art-circle{border-radius:50%;position:absolute;border:23px solid #e4c8b1a9;box-shadow:inset 0 0 0 5px #a4b7a665}.circle-one{width:340px;height:340px;left:18%;top:21%;transform:rotate(-24deg)}.circle-two{width:155px;height:155px;left:65%;top:47%;border-color:#c7b5d0c0}.circle-three{width:90px;height:90px;left:10%;top:18%;border-color:#bad7c6c0}.art-card{position:absolute;border-radius:13px;box-shadow:0 22px 40px #0003}.art-card-top{right:2%;top:9%;width:220px;background:#e9e8dc;color:#1b342d;padding:23px;transform:rotate(5deg)}.art-card-top span{font-size:.59rem;letter-spacing:.14em;font-weight:800;display:block}.art-card-top strong{display:block;font-size:1.35rem;margin:14px 0 5px}.art-card-top small{color:#637068}.art-card-bottom{left:3%;bottom:18%;padding:15px 20px;background:#233e34;color:#eaf1e7;display:flex;gap:10px;align-items:center;transform:rotate(-5deg);font-weight:800}.art-card-bottom small{font-weight:400;color:#bbcbbf}.art-caption{position:absolute;right:22px;bottom:24px;font-size:.73rem;color:#d1d7ce}.section-light{background:#e8e8dc;color:#18302b;padding:94px 0 110px}.section-light h2{max-width:610px}.section-light h2 em{color:#60886e}.section-light p{color:#53665d}.section-light .eyebrow{color:#557a63}.section-top{display:flex;align-items:flex-end;justify-content:space-between;gap:26px;margin-bottom:35px}.section-top h2{margin:13px 0}.filter{width:min(345px,100%)}.filter label{display:block;margin-bottom:8px;color:#3c5850}.search-box{display:flex;align-items:center;gap:10px;border:1px solid #b6c4bb;background:white;padding:0 13px;border-radius:9px}.search-box span{font-size:24px}.search-box input{background:transparent;border:none;box-shadow:none;color:#18302b;padding:14px 0}.restaurant-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.restaurant-card{background:#f9f9f2;border:1px solid #d2d9ce;border-radius:14px;overflow:hidden;transition:transform .18s,box-shadow .18s}.restaurant-card:hover{transform:translateY(-3px);box-shadow:0 15px 28px #14281c18}.restaurant-art{height:155px;background:radial-gradient(circle at 65% 40%,#d3b6c9,#99b8a8 42%,#7c9c89);display:grid;place-items:center}.restaurant-art span{font:italic 5rem Georgia,serif;color:#fff9}.restaurant-card:nth-child(2n) .restaurant-art{background:radial-gradient(circle,#d9cd9e,#a4b6a7 60%,#8aa3a0)}.restaurant-card:nth-child(3n) .restaurant-art{background:radial-gradient(circle,#b7accf,#b5bfc9 60%,#879e9e)}.restaurant-card-copy{padding:21px}.restaurant-card h3{color:#20372e}.restaurant-card p{font-size:.8rem;margin:3px 0 10px}.restaurant-card-copy span{display:block;min-height:45px;font-size:.81rem;color:#65736b}.restaurant-card-copy b{display:block;margin-top:16px;color:#3e7354}.feature-section{padding:105px 0;display:grid;grid-template-columns:1fr 1fr;gap:100px}.feature-section h2{margin:14px 0 20px}.feature-section>div>p{max-width:440px}.inline-link{color:var(--mint);display:inline-block;margin-top:25px;font-weight:700}.feature-stack{display:grid;gap:16px}.feature-stack article{background:#1d2b2b;border:1px solid var(--line);border-radius:14px;padding:27px;display:flex;gap:24px}.feature-stack p{margin-top:8px;font-size:.83rem}.feature-icon{display:grid;place-items:center;width:49px;height:49px;background:#374840;border-radius:14px;color:var(--mint);flex-shrink:0;font:italic 1.25rem Georgia,serif}.enquiry-block{margin-top:20px;margin-bottom:100px;border-radius:24px;background:#2f4540;padding:65px;display:grid;grid-template-columns:1fr .9fr;gap:60px}.enquiry-block h2{margin:18px 0}.enquiry-block p{color:#becac1}.enquiry-ticks{margin-top:30px;color:var(--mint);font-size:.81rem}.enquiry-form{padding:29px;background:#182624}.enquiry-form h3{display:flex;justify-content:space-between;margin-bottom:22px}.enquiry-form .field{margin-bottom:13px}.enquiry-form .btn{margin-top:12px}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:36px 0;color:var(--muted);border-top:1px solid var(--line)}.footer-inner>div{display:flex;gap:20px}.footer-inner small{font-size:.7rem}
/* Authentication */
.auth-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:33px;padding:20px;background:radial-gradient(circle at 80% 5%,#344841 0,transparent 38%),var(--bg)}.auth-card{width:min(420px,100%);padding:35px}.auth-card h1{font-size:2.4rem;margin:12px 0}.auth-card p{margin-bottom:25px}.auth-card .field{margin-bottom:20px}
/* App */
.app-header{display:flex;align-items:center;gap:27px;padding:0 32px;height:80px;border-bottom:1px solid var(--line);background:#152122}.app-header .brand{font-size:1.32rem}.service-title{border-left:1px solid var(--line);padding-left:27px;display:flex;flex-direction:column;gap:1px}.service-title strong{font-size:.9rem}.service-title .eyebrow{font-size:.53rem}.header-actions{display:flex;align-items:center;gap:18px;margin-left:auto}.nav-link{padding:12px;color:var(--muted);font-weight:700}.nav-link.active{color:var(--mint)}.signed-user{font-size:.8rem;color:var(--muted)}.app-main{max-width:1560px;padding:30px 32px 50px;margin:auto}.app-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.app-heading h1{font-size:2.65rem;margin-top:6px}.app-heading p{margin-top:7px}.date-control{display:flex;gap:9px;align-items:center}.date-control input{width:160px}.icon-button{background:var(--surface2);color:var(--ink);border:1px solid var(--line);border-radius:9px;min-width:36px;height:36px;font-size:1.4rem;display:grid;place-items:center}.icon-button:hover{border-color:var(--mint)}.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{border:1px solid var(--line);border-radius:13px;background:var(--surface);padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:10px}.stat span{color:var(--muted);font-size:.79rem}.stat strong{font-size:1.8rem;color:var(--mint)}.service-layout{display:grid;grid-template-columns:minmax(380px,.92fr) minmax(480px,1.08fr);gap:17px;align-items:start}.bookings-panel,.floor-panel{min-height:590px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:23px 23px 17px}.panel-heading h2{font-size:1.48rem;margin-top:5px}.small-count{font:normal .8rem sans-serif;color:var(--muted)}.panel-toolbar{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:0 22px 15px}.tabrow{display:flex;gap:4px;padding:3px;background:#121c1d;border-radius:9px}.tab{border:0;color:var(--muted);padding:8px 12px;border-radius:7px;background:none;font-size:.76rem;font-weight:700}.tab.active{background:var(--surface2);color:var(--mint)}.search-input{width:min(190px,40%);font-size:.8rem}.booking-list{min-height:375px;max-height:570px;overflow:auto;border-top:1px solid var(--line)}.booking-row{display:grid;grid-template-columns:54px 1fr auto;gap:12px;align-items:center;padding:15px 20px;border-bottom:1px solid #33413e;cursor:grab;transition:background .12s}.booking-row:hover,.booking-row:focus{background:#2a3836}.booking-time{color:var(--muted);font-size:.84rem;font-weight:800}.booking-main{min-width:0}.booking-main strong{font-size:.92rem}.booking-main>div{color:var(--muted);font-size:.77rem;margin-top:4px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.booking-meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.pill{font-size:.66rem;font-weight:800;border-radius:18px;padding:4px 8px;background:#34453f;color:var(--mint);text-transform:capitalize;white-space:nowrap}.pill.pending{background:#493e33;color:var(--yellow)}.pill.cancelled,.pill.no_show,.pill.declined{background:#503439;color:var(--danger)}.pill.seated,.pill.arrived{background:#4c4056;color:var(--lilac)}.pill.completed{background:#36413c;color:#a6aea9}.book-covers{color:var(--muted);font-size:.75rem}.panel-foot{border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:15px 23px;flex-wrap:wrap}.panel-foot .tiny{margin-left:auto}.floor-actions{display:flex;gap:8px}.floor-actions select{min-width:130px;width:auto}.floor-legend{display:flex;gap:12px;flex-wrap:wrap;padding:0 22px 20px;color:var(--muted);font-size:.72rem}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.dot.ready{background:var(--mint)}.dot.occupied{background:var(--lilac)}.dot.clearing{background:var(--peach)}.dot.unavailable{background:var(--danger)}.floor-canvas{position:relative;min-height:360px;background-color:#132022;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:24px 24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden}.table-shape{position:absolute;border:2px solid #9ac5ad;background:#30473c;color:#e7f1e7;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;font-weight:800;font-size:.8rem;cursor:pointer;user-select:none;touch-action:none;box-shadow:0 3px 13px #0003;text-align:center}.table-shape small{font-weight:500;font-size:.62rem}.table-shape.round,.table-shape.oval{border-radius:100px}.table-shape.occupied{background:#4a4155;border-color:var(--lilac)}.table-shape.clearing{background:#514235;border-color:var(--peach)}.table-shape.out_of_service{background:#52393c;border-color:var(--danger)}.table-shape.selected{outline:3px solid white;outline-offset:3px}.table-shape.drop-target{box-shadow:0 0 0 5px #b1d4be66}.floor-help{font-size:.73rem;margin:13px 22px}.table-details{padding:7px 22px 24px;font-size:.8rem}.table-details h3{font-size:1rem;margin-bottom:10px}.table-details>div{display:flex;gap:7px;flex-wrap:wrap}.table-details .btn{min-height:30px;padding:6px 10px;font-size:.73rem}.table-details .selected-state{border-color:var(--mint);color:var(--mint)}.app-dialog{border:1px solid var(--line);background:var(--surface);border-radius:18px;color:var(--ink);width:min(580px,calc(100% - 24px));max-height:92vh;overflow:auto;padding:24px;box-shadow:0 24px 100px #0009}.app-dialog::backdrop{background:#051011c9;backdrop-filter:blur(4px)}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:23px}.dialog-title h2{font-size:1.7rem;margin-top:8px}.dialog-form{display:grid;gap:14px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:5px}.checkline{display:flex;gap:9px;align-items:center;font-size:.82rem}.checkline input{width:auto}.toast{position:fixed;bottom:20px;right:20px;background:#375747;border:1px solid var(--mint);color:white;border-radius:12px;padding:15px 18px;max-width:350px;box-shadow:var(--shadow);opacity:0;transform:translateY(20px);pointer-events:none;transition:.2s;z-index:200}.toast.show{opacity:1;transform:translateY(0)}.toast.bad{background:#633b43;border-color:var(--danger)}.guest-list{max-height:210px;overflow:auto}.guest-result{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink);text-align:left;border-radius:8px;padding:12px;display:flex;justify-content:space-between;gap:10px;margin:6px 0}.guest-result small{color:var(--muted)}
/* Admin */
.admin-layout{display:grid;grid-template-columns:225px 1fr;gap:18px;align-items:start}.admin-sidebar{display:flex;flex-direction:column;gap:5px;position:sticky;top:20px}.admin-tab{padding:14px;border:none;text-align:left;border-radius:9px;background:transparent;color:var(--muted);font-weight:700}.admin-tab:hover{background:var(--surface2)}.admin-tab.active{background:var(--mint-deep);color:var(--mint)}.admin-content{min-width:0}.admin-section{padding:25px;min-height:450px}.admin-section[hidden]{display:none}.section-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:27px}.section-heading h2{font-size:1.9rem;margin:5px 0}.section-heading p{font-size:.85rem}.settings-form{display:grid;gap:18px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:10px}.setting-field{border:1px solid var(--line);padding:15px;border-radius:11px;display:flex;flex-direction:column;gap:10px}.setting-field .field-label{font-weight:700}.setting-field small{color:var(--muted);font-size:.72rem}.setting-field input[type="checkbox"]{width:22px;height:22px;accent-color:#a8cfb5}.window-list{display:grid;gap:10px;margin-bottom:18px}.window-row{display:grid;grid-template-columns:105px 1fr 105px 105px 105px 44px 28px;gap:9px;align-items:end;border:1px solid var(--line);border-radius:9px;padding:13px}.window-row .field label{font-size:.63rem}.window-row input,.window-row select{padding:9px}.window-row .checkline input{accent-color:var(--mint)}.floor-admin-controls{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}.floor-admin-controls select{width:min(220px,100%)}.editor-layout{display:grid;grid-template-columns:minmax(250px,1fr) 245px;gap:14px;align-items:start;margin-bottom:18px}.floor-edit{border:1px solid var(--line);border-radius:10px;min-height:450px;overflow:hidden;touch-action:none}.floor-edit .table-shape{cursor:grab}.floor-edit .table-shape:active{cursor:grabbing}.table-properties{background:#132021;border:1px solid var(--line);padding:16px;border-radius:10px;display:grid;gap:12px}.table-properties h3{margin-bottom:4px}.table-properties .field{gap:4px}.table-properties input,.table-properties select{padding:8px}.table-properties .checkline input{width:auto}.setting-list{display:grid;gap:9px;margin:15px 0}.setting-list article{padding:14px;background:var(--surface2);border:1px solid var(--line);border-radius:9px}.setting-list article p{margin-top:5px}.legal{padding-top:70px;padding-bottom:120px;max-width:770px}.legal h1{margin:40px 0}.legal p{margin-bottom:18px}
/* Customer booking */
.booking-page{min-height:100vh;background:radial-gradient(ellipse at 75% 0%,#344f43 0%,transparent 42%),var(--bg);padding:25px 14px}.public-booking{max-width:590px;margin:auto}.booking-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.66rem;letter-spacing:.12em}.booking-intro{text-align:center;margin:45px 0 28px}.booking-intro h1{font-size:clamp(2.15rem,5vw,3rem);margin:10px 0}.booking-intro p{margin-top:10px}.customer-card{padding:29px;display:grid;gap:18px}.slot-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;min-height:45px}.slot{padding:12px 5px;border:1px solid var(--line);background:#283835;color:var(--ink);border-radius:7px;font-weight:700}.slot:hover,.slot.selected{border-color:var(--mint);background:var(--mint-deep);color:var(--mint)}.subdivider{font-size:.69rem;letter-spacing:.15em;color:var(--mint);margin:8px 0 17px;border-top:1px solid var(--line);padding-top:20px}.customer-card #customerDetails{display:grid;gap:16px}.customer-card #customerDetails[hidden]{display:none}.powered{text-align:center;margin-top:22px;font-size:.76rem}.powered b{color:var(--mint)}.success-view{text-align:center;padding:30px;display:grid;gap:12px}.success-view[hidden]{display:none}.success-mark{font-size:3rem;color:var(--mint)}.success-view .btn{margin:auto}
@media(max-width:1140px){.service-layout{grid-template-columns:1fr}.bookings-panel,.floor-panel{min-height:unset}.floor-canvas{min-height:460px}.window-row{grid-template-columns:repeat(3,1fr)}.window-row .icon-button{align-self:end}}
@media(max-width:800px){.wrap{width:min(100% - 35px,1190px)}.site-header{height:75px}.topnav>a:not(.btn){display:none}.hero{grid-template-columns:1fr;padding-top:50px}.hero-art{height:320px;max-width:530px;width:100%;justify-self:center}.art-circle.circle-one{width:260px;height:260px}.section-top,.feature-section,.enquiry-block{grid-template-columns:1fr;display:grid}.feature-section{gap:34px}.enquiry-block{padding:30px;gap:30px}.restaurant-grid{grid-template-columns:repeat(2,1fr)}.app-main{padding:25px 16px}.admin-layout{grid-template-columns:1fr}.admin-sidebar{flex-direction:row;position:static;overflow:auto}.admin-tab{white-space:nowrap}.editor-layout{grid-template-columns:1fr}.floor-edit{min-height:360px}.stat-row{grid-template-columns:repeat(2,1fr)}.signed-user,.service-title{display:none}.app-header{padding:0 15px;gap:10px}.header-actions{gap:5px}.header-actions .nav-link{padding:8px}.app-heading{flex-wrap:wrap}}
@media(max-width:550px){.hero{padding-top:35px;padding-bottom:65px}.hero-copy h1{font-size:3.1rem}.hero-art{height:260px}.art-card-top{transform:scale(.8) rotate(5deg);transform-origin:top right}.art-card-bottom{transform:scale(.82) rotate(-5deg);transform-origin:bottom left}.section-light{padding:65px 0}.restaurant-grid{grid-template-columns:1fr}.filter{width:100%}.section-top{align-items:stretch}.enquiry-block{margin-bottom:30px}.footer-inner{flex-wrap:wrap}.stat{padding:12px}.stat span{font-size:.68rem}.stat strong{font-size:1.45rem}.stat-row{gap:8px}.app-heading h1{font-size:2.2rem}.date-control{width:100%;flex-wrap:wrap}.panel-heading,.panel-toolbar{padding-left:13px;padding-right:13px}.panel-toolbar{flex-wrap:wrap}.search-input{width:100%}.booking-row{padding:12px 10px;grid-template-columns:46px 1fr auto;gap:6px}.floor-canvas{min-height:300px}.floor-legend{gap:7px;font-size:.64rem;padding:0 13px 12px}.panel-foot{padding:12px}.tab{padding:8px}.two-fields,.settings-grid{grid-template-columns:1fr}.admin-section{padding:15px}.window-row{grid-template-columns:repeat(2,1fr)}.booking-page{padding:15px 8px}.customer-card{padding:16px}.slot-grid{grid-template-columns:repeat(4,1fr)}.public-booking .booking-top>span{display:none}}

.tenant-switcher{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:20px;display:flex;align-items:center;gap:15px;background:var(--surface)}.tenant-switcher[hidden]{display:none}.tenant-switcher label{display:flex;align-items:center;gap:10px}.tenant-switcher select{width:auto;min-width:190px}

.guest-alert{background:#574034;border:1px solid #bc9e84;color:#f5d8b9;padding:11px 14px;border-radius:9px;font-weight:700;font-size:.78rem}.guest-alert[hidden]{display:none}

.combination-list{display:flex;flex-direction:column;gap:7px;margin:0 0 14px}.combination-item{border:1px solid var(--line);border-radius:8px;background:#172626;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:.8rem}

/* IONOS browser installer and mail delivery health controls */
.installer-shell{max-width:800px;margin:3rem auto;padding-bottom:5rem}
.installer-panel{padding:2rem}
.mail-health{margin-top:2rem}

/* TableSync service dashboard: screen-fitting, side-by-side work area.
   Scoped to staff.php; admin and customer pages retain their own layouts.
   Keep these rules after the generic mobile breakpoints above. */
@media (min-width: 800px) {
  .app-page:not(.admin-page) .app-header {
    height: 60px;
    padding-inline: clamp(14px, 1.8vw, 26px);
    gap: 16px;
  }
  .app-page:not(.admin-page) .service-title {padding-left:16px}
  .app-page:not(.admin-page) .header-actions {gap:8px}
  .app-page:not(.admin-page) .app-main {
    max-width: none;
    width: 100%;
    padding: 14px clamp(12px, 1.8vw, 28px) 16px;
  }
  .app-page:not(.admin-page) .app-heading {margin-bottom: 12px}
  .app-page:not(.admin-page) .app-heading h1 {
    font-size: clamp(1.6rem, 2.1vw, 2.05rem);
    margin-top: 2px;
  }
  .app-page:not(.admin-page) .stat-row {gap:9px;margin-bottom:11px}
  .app-page:not(.admin-page) .stat {padding:8px 12px;min-height:54px}
  .app-page:not(.admin-page) .stat strong {font-size:clamp(1.25rem, 1.8vw, 1.6rem)}
  .app-page:not(.admin-page) .stat span {font-size:.74rem}
  .app-page:not(.admin-page) .service-layout {
    display:grid;
    grid-template-columns: minmax(300px, .82fr) minmax(405px, 1.18fr);
    gap: 12px;
    align-items: stretch;
    min-width: 0;
  }
  .app-page:not(.admin-page) .bookings-panel,
  .app-page:not(.admin-page) .floor-panel {
    min-width:0;
    min-height:0;
    display:flex;
    flex-direction:column;
    overflow:hidden;
  }
  .app-page:not(.admin-page) .panel-heading {
    padding:12px 14px 10px;
    gap:8px;
    flex:none;
  }
  .app-page:not(.admin-page) .panel-heading h2 {font-size:1.23rem;margin-top:2px}
  .app-page:not(.admin-page) .panel-heading .btn {padding:9px 10px;min-height:35px;font-size:.79rem}
  .app-page:not(.admin-page) .panel-toolbar {padding:0 12px 9px;gap:6px;flex:none}
  .app-page:not(.admin-page) .tab {padding:7px 8px;font-size:.71rem}
  .app-page:not(.admin-page) .search-input {width:min(175px, 37%);padding:8px 9px}
  .app-page:not(.admin-page) .booking-list {
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  .app-page:not(.admin-page) .booking-row {
    grid-template-columns:47px minmax(0, 1fr) auto;
    gap:8px;
    padding:10px 12px;
  }
  .app-page:not(.admin-page) .booking-main strong {font-size:.84rem}
  .app-page:not(.admin-page) .panel-foot {padding:9px 13px;gap:6px;flex:none}
  .app-page:not(.admin-page) .panel-foot .btn {min-height:34px;padding:7px 10px}
  .app-page:not(.admin-page) .floor-actions select {min-width:105px;padding:8px 9px}
  .app-page:not(.admin-page) .floor-legend {
    padding:0 14px 10px;
    gap:6px 12px;
    font-size:.7rem;
    flex:none;
  }
  .app-page:not(.admin-page) .floor-canvas {
    min-height: 0;
    flex:1 1 auto;
    height:auto;
    overflow:hidden;
  }
  .app-page:not(.admin-page) .table-shape {
    line-height:1.1;
    font-size:clamp(.62rem, .85vw, .82rem);
    padding:2px;
  }
  .app-page:not(.admin-page) .table-shape small {
    font-size:clamp(.51rem, .65vw, .64rem);
  }
  .app-page:not(.admin-page) .floor-help {
    margin:7px 14px;
    font-size:.69rem;
    line-height:1.35;
    flex:none;
  }
  .app-page:not(.admin-page) .table-details {
    border-top:1px solid var(--line);
    padding:7px 14px 10px;
    max-height:116px;
    overflow-y:auto;
    min-height:34px;
    flex:none;
  }
  .app-page:not(.admin-page) .table-details h3 {margin-bottom:5px;font-size:.88rem}
}

/* Keep the whole active service visible at normal browser zoom on laptop screens.
   Booking rows scroll inside their own panel; the floor plan always has priority. */
@media (min-width:800px) and (min-height:650px) {
  .app-page:not(.admin-page) {height:100vh;height:100dvh;overflow:hidden}
  .app-page:not(.admin-page) .app-main {
    height:calc(100vh - 60px);
    height:calc(100dvh - 60px);
    display:flex;
    flex-direction:column;
    min-height:0;
  }
  .app-page:not(.admin-page) .app-heading,
  .app-page:not(.admin-page) .stat-row,
  .app-page:not(.admin-page) .tenant-switcher {flex:none}
  .app-page:not(.admin-page) .service-layout {flex:1 1 auto;min-height:0}
}

/* On particularly short displays, keep both columns and allow normal page scrolling
   rather than squeezing the floor plan until its tables become unusable. */
@media (min-width:800px) and (max-height:649px) {
  .app-page:not(.admin-page) .service-layout {min-height:475px}
  .app-page:not(.admin-page) .floor-canvas {min-height:305px}
  .app-page:not(.admin-page) .booking-list {max-height:405px}
}

@media (min-width:800px) and (max-width:1090px) {
  .app-page:not(.admin-page) .service-layout {
    grid-template-columns:minmax(292px, .76fr) minmax(405px, 1.24fr);
  }
  .app-page:not(.admin-page) .panel-toolbar {flex-wrap:wrap}
  .app-page:not(.admin-page) .search-input {width:100%}
  .app-page:not(.admin-page) .panel-foot .tiny {display:none}
  .app-page:not(.admin-page) .signed-user {display:none}
}

/* Only stack the workspace when two usable columns genuinely cannot fit. */
@media (max-width:799px) {
  .app-page:not(.admin-page) .service-layout {grid-template-columns:minmax(0,1fr);gap:14px}
  .app-page:not(.admin-page) .bookings-panel,
  .app-page:not(.admin-page) .floor-panel {min-height:unset}
  .app-page:not(.admin-page) .floor-canvas {min-height:clamp(350px, 50vh, 520px)}
}

/* TableSync 2.2 · familiar service colours, softer on dark. No excessive zoom needed. */
:root{
 --bg:#16171f;--surface:#232530;--surface2:#2d303c;--line:#444655;
 --ink:#f1efef;--muted:#b7b7c3;--mint:#b6d8c5;--mint-deep:#31473c;
 --pink:#e6b5bf;--peach:#e8c2ac;--lilac:#c6b9e4;--yellow:#ead8a5;--danger:#f1aeb2;
}
.app-header{background:#1d202a}.floor-canvas,.floor-edit{background-color:#1d202a;background-image:linear-gradient(#fff7 1px,transparent 1px),linear-gradient(90deg,#fff7 1px,transparent 1px)}
.table-shape{background:#344d48;border-color:#a8d1bd;color:#effaf5;transition:background .14s,border-color .14s}
.table-shape.occupied{background:#544f63;border-color:#c6b9e4}
.table-shape.clearing{background:#635348;border-color:#e8c2ac}
.table-shape.out_of_service{background:#654d54;border-color:#f1aeb2}
.table-shape.stage-ordered{background:#3c526b;border-color:#b4cee9}
.table-shape.stage-starters{background:#395f51;border-color:#b2dcc3}
.table-shape.stage-mains{background:#61536c;border-color:#dcc4ed}
.table-shape.stage-dessert{background:#735666;border-color:#edc3d7}
.table-shape.stage-bill{background:#5e5a4b;border-color:#e6d4a8}
.table-shape.stage-seated{background:#63594a;border-color:#eac9aa}
.booking-name-line{display:flex;align-items:center;gap:7px;min-width:0}
.booking-name-line strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booking-main .booking-note-line{margin-top:3px;color:#f4c7bd;font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.note-alert-mark{display:inline-grid;place-items:center;flex:none;min-width:19px;height:19px;padding:0 4px;border-radius:50%;font-size:.8rem;font-weight:900;background:#e7b28e;color:#2b2427;box-shadow:0 0 0 1px #fff4}
.legend-warning{min-width:14px;height:14px;font-size:.63rem;margin-right:3px}
.table-note-alert{position:absolute;right:-9px;top:-9px;transform:rotate(0deg);z-index:4;box-shadow:0 1px 7px #0009}
.table-stage-label{position:absolute;bottom:2px;left:5px;right:5px;font-size:clamp(.52rem,.62vw,.68rem);font-weight:650;letter-spacing:.02em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.stage-action-row{display:flex!important;flex-wrap:wrap;gap:4px;padding:5px 0}
.stage-action{min-height:28px;border:1px solid var(--line);border-radius:6px;background:var(--surface2);color:var(--ink);padding:4px 7px;font-size:.69rem;font-weight:750}
.stage-action:hover{border-color:var(--mint)}.stage-action.active{outline:2px solid var(--mint);outline-offset:1px}
.stage-action.stage-none{border-color:#d5aca8}.stage-action.stage-seated{border-color:#e4bd8f}
.stage-action.stage-ordered{border-color:#a5bce1}.stage-action.stage-starters{border-color:#abd8b1}
.stage-action.stage-mains{border-color:#d7b9e3}.stage-action.stage-dessert{border-color:#e7b8d2}
.stage-action.stage-bill{border-color:#e5d4a4}.stage-action.stage-completed{border-color:#c2c6ca}
.pill.stage-none{background:#604648;color:#f3d0d1}.pill.stage-seated,.pill.stage-arrived{background:#675741;color:#fae0bb}
.pill.stage-ordered{background:#435e80;color:#d8e7fb}.pill.stage-starters{background:#406852;color:#e2f7df}
.pill.stage-mains{background:#645475;color:#efddf6}.pill.stage-dessert{background:#74576d;color:#f9dfed}
.pill.stage-bill{background:#695f47;color:#f8e9c1}.pill.stage-completed{background:#465052;color:#e6eceb}
.pill.stage-pending{background:#5f5240;color:#f5e5c7}
.table-guest-note{display:flex;align-items:center;gap:7px;background:#53423e;color:#ffe5d7;border:1px solid #c99782;border-radius:7px;padding:6px 8px;margin:5px 0;font-weight:650;line-height:1.35;font-size:.78rem}
.table-guest-line{font-weight:800;color:var(--ink)}.table-state-actions{display:flex!important;align-items:center;gap:5px;flex-wrap:wrap;margin-top:6px}
.table-state-actions .btn{font-size:.64rem;padding:5px 7px;min-height:27px}
.tetris-button{white-space:nowrap;min-height:33px;padding:7px 10px;font-size:.72rem}.tetris-button.active,.tetris-picked{border-color:var(--peach)!important;background:#564740!important;color:var(--ink)!important}
.tetris-bar{padding:8px 12px;background:#403848;border-top:1px solid #79637d;display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:.76rem}
.tetris-bar[hidden]{display:none}.tetris-bar span{flex:1;min-width:155px}.tetris-bar .btn{font-size:.69rem;min-height:31px;padding:7px 10px}
.table-shape.tetris-target{cursor:crosshair}.table-shape.tetris-target.selected{outline:3px solid var(--peach);outline-offset:2px;box-shadow:0 0 0 4px #e8c2ac33}
.guest-flag{color:#edbfad;font-size:.67rem;font-weight:800;white-space:nowrap}
.join-hint{background:var(--surface2);border-radius:7px;padding:8px 10px;font-size:.73rem}
/* Large and small desktops: keep the right-hand plan entirely in view, scroll only bookings. */
@media(min-width:800px){
 .app-page:not(.admin-page) .service-layout{grid-template-columns:minmax(300px,43%) minmax(0,57%)}
 .app-page:not(.admin-page) .floor-panel{min-width:0}
 .app-page:not(.admin-page) .floor-canvas{min-height:275px}
 .app-page:not(.admin-page) .table-details{max-height:190px;overflow-y:auto;padding-bottom:7px}
 .app-page:not(.admin-page) .floor-help{font-size:.67rem;margin:4px 12px}
 .app-page:not(.admin-page) .floor-legend{padding-bottom:6px}
 .app-page:not(.admin-page) .panel-heading{padding-block:9px}
 .app-page:not(.admin-page) .panel-foot{padding:7px}
}
@media (min-width:800px) and (min-height:650px){
 .app-page:not(.admin-page) .floor-canvas{min-height:0}
}
@media (max-width:980px) and (min-width:800px){
 .app-page:not(.admin-page) .service-layout{grid-template-columns:minmax(290px,43%) minmax(0,57%)}
 .app-page:not(.admin-page) .floor-actions{flex-wrap:wrap;justify-content:flex-end}
 .app-page:not(.admin-page) .floor-actions select{max-width:130px}
}
@media (max-width:799px){.tetris-bar{position:sticky;top:0;z-index:10}.floor-canvas{min-height:360px}}
/* Admin floor plan: select, drag, then pull edges or corners to resize any table shape. */
.floor-edit .table-shape.editor-selected{overflow:visible;outline:2px solid var(--mint);outline-offset:3px;z-index:5}
.resize-handle{position:absolute!important;width:12px;height:12px;min-width:12px;min-height:12px;background:#f6e4d5;border:2px solid #554a59;border-radius:3px;display:block;z-index:10;touch-action:none;box-shadow:0 2px 7px #0006}
.resize-handle.handle-n{top:-7px;left:50%;transform:translateX(-50%);cursor:n-resize}
.resize-handle.handle-ne{top:-7px;right:-7px;cursor:ne-resize}
.resize-handle.handle-e{right:-7px;top:50%;transform:translateY(-50%);cursor:e-resize}
.resize-handle.handle-se{bottom:-7px;right:-7px;cursor:se-resize}
.resize-handle.handle-s{bottom:-7px;left:50%;transform:translateX(-50%);cursor:s-resize}
.resize-handle.handle-sw{bottom:-7px;left:-7px;cursor:sw-resize}
.resize-handle.handle-w{left:-7px;top:50%;transform:translateY(-50%);cursor:w-resize}
.resize-handle.handle-nw{top:-7px;left:-7px;cursor:nw-resize}
.floor-edit .table-shape{overflow:visible}

/* Service grouping retained from the original restaurant diary. */
.service-filter{min-width:115px;max-width:175px;padding:7px 9px;font-size:.75rem;font-weight:750;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px}
@media(min-width:800px) and (max-width:1200px){
 .app-page:not(.admin-page) .panel-toolbar{flex-wrap:wrap}
 .app-page:not(.admin-page) .search-input{width:min(100%,185px)}
}
@media(max-width:480px){.service-filter{max-width:100%;width:100%}}

.table-shape.stage-none{background:#664c56;border-color:#e4b2bc}.table-shape.stage-arrived{background:#696048;border-color:#eddaa6}.table-shape.stage-pending{background:#565044;border-color:#d7c2a0}
.pill.stage-cancelled,.pill.stage-declined,.pill.stage-no_show{background:#53444c;color:#e9c4c9}

.booking-join-widget{display:grid;gap:8px}.booking-join-widget>.btn{justify-self:start}
.booking-join-widget>.btn.active{background:#4c435a;border-color:var(--lilac);color:var(--ink)}
.join-picks{display:flex;flex-wrap:wrap;gap:6px;padding:11px;border:1px dashed var(--line);border-radius:8px}
.join-picks[hidden]{display:none}.join-pick{border:1px solid var(--line);border-radius:7px;padding:7px 9px;color:var(--ink);background:var(--surface2);font-size:.76rem;font-weight:700}
.join-pick.chosen{border-color:var(--mint);background:#365243;outline:1px solid var(--mint)}
