:root{color-scheme:dark;--bg:#151312;--surface:#211e1b;--line:#3c352e;--fg:#f5eee4;--muted:#c3b5a6;--accent:#d5ab73;--ink:#20170e;--error:#ffb2a8;font:16px/1.5 system-ui,sans-serif}
:root[data-theme=light]{color-scheme:light;--bg:#f6f0e8;--surface:#fffbf5;--line:#d5c9b9;--fg:#221c17;--muted:#665b50;--error:#a32820}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button{cursor:pointer;border:1px solid transparent;background:var(--accent);color:var(--ink);border-radius:.65rem;padding:.57rem 1rem;min-height:44px;font-weight:650}button:disabled{cursor:default;opacity:.44}button.ghost,.nav-button{background:transparent;color:var(--fg);border-color:var(--line)}button[aria-current=true]{border-color:var(--accent)}.top{display:flex;align-items:center;gap:1rem;min-height:72px;padding:.75rem max(1rem,calc((100vw - 1240px)/2));border-bottom:1px solid var(--line)}.brand{font:bold 2rem Georgia,serif;text-decoration:none;letter-spacing:-.09rem}.brand span,footer span{color:var(--accent)}nav{flex:1;display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}nav a{font-size:.88rem;text-decoration:none;padding:.3rem}main{max-width:1240px;margin:auto;padding:clamp(1rem,4vw,3rem);min-height:73vh}h1,h2{font-family:Georgia,serif;font-weight:400;line-height:1.1;margin:.25em 0 .6em}h1{font-size:clamp(2.4rem,7vw,5.5rem);letter-spacing:-.055em}h2{font-size:clamp(1.55rem,3vw,2.2rem)}h3,p{margin:.4rem 0 .8rem}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.19em;font-size:.72rem;font-weight:700}.grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,345px),1fr))}.panel{border:1px solid var(--line);border-radius:1rem;padding:clamp(1rem,3vw,1.6rem);background:var(--surface);min-width:0}.stack>*+*{margin-top:1rem}.row{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}.spread{justify-content:space-between}.muted,small{color:var(--muted)}label{display:grid;gap:.3rem;font-size:.9rem;min-width:0}input:not([type=checkbox]),select,textarea{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:.55rem;padding:.65rem;min-height:44px;width:100%}textarea{resize:vertical;min-height:90px}label.check{display:flex;gap:.6rem;align-items:center}input[type=checkbox]{width:20px;height:20px;flex-shrink:0}form .grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,155px),1fr));gap:.8rem}fieldset{margin:0;padding:0;border:0;min-width:0}legend{font-weight:650;margin-bottom:.5rem}.item{padding:.8rem 0;border-top:1px solid var(--line)}.badge{border:1px solid var(--line);border-radius:10rem;padding:.18rem .6rem;font-size:.8rem}.late{color:var(--error)}.notice{position:fixed;z-index:5;bottom:1rem;right:1rem;max-width:min(90vw,520px);padding:1rem;border:1px solid var(--accent);border-radius:.6rem;background:var(--surface);box-shadow:0 4px 20px #0005}.notice.error{border-color:var(--error);color:var(--error)}.slots{display:flex;flex-wrap:wrap;gap:.5rem}.slots button[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent);background:var(--surface);color:var(--fg)}.map{height:330px;position:relative;background:var(--bg);border:1px solid var(--line);border-radius:1rem;overflow:hidden;margin-top:.5rem}.table-dot{position:absolute;transform:translate(-50%,-50%);min-width:50px;padding:.4rem}.table-dot.round{border-radius:50%}.stat{font:2rem Georgia,serif}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.3rem}.calendar button{padding:.25rem;min-width:0}.calendar .today{border-color:var(--accent)}.setting-entry{border:1px solid var(--line);padding:.9rem;border-radius:.6rem}.screen-reader{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}footer{padding:1.5rem;text-align:center;border-top:1px solid var(--line);color:var(--muted)}[hidden]{display:none!important}@media(max-width:600px){.top{gap:.5rem}.top nav{gap:.15rem}.brand{font-size:1.5rem}.map{height:280px}}@media(prefers-reduced-motion:no-preference){button{transition:background-color .13s ease}}
.wide{grid-column:1/-1}.widget-tools{margin-top:.5rem}.widget-tools button{font-size:.8rem;padding:.35rem .55rem}.panel dialog{max-height:90dvh;overflow:auto}dialog.panel{max-height:90dvh;overflow:auto;color:var(--fg)}dialog::backdrop{background:#0008}
@media print{.top,footer,#app>div.row,#stats,#stats+div.row,.widget-tools,#stats-result>a,.notice{display:none!important}main{padding:0;max-width:none}.panel{break-inside:avoid;background:white;color:black;border-color:#ddd}body{background:white;color:black}small,.eyebrow{color:#444}}

/* Accoglienza: mappa e pannello operativo scorrono separatamente su iPad. */
#app.reception-app{max-width:1680px;min-height:0;padding:1rem}
.reception-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,35%);gap:.85rem;align-items:start}
.reception-map-panel,.reception-sidebar{padding:.85rem}
.reception-map-panel{display:flex;flex-direction:column;gap:.65rem}
.reception-map-toolbar{gap:.65rem}
#app.reception-app .reception-map-toolbar h1{font-size:clamp(1.45rem,3.2vw,2.45rem);letter-spacing:-.035em;margin:0}
.reception-map-toolbar p{margin:0 0 .2rem}
.reception-map-toolbar label{min-width:0}
.reception-map-toolbar input,.reception-map-toolbar select{padding:.35rem .5rem}
.reception-map-toolbar .row{align-items:end;gap:.45rem}
.reception-map{height:clamp(350px,61dvh,740px);margin:0}
.table-dot.reception-tile{display:grid;align-content:center;justify-items:center;gap:.12rem;width:clamp(82px,23%,150px);min-height:74px;max-width:26%;padding:.45rem .3rem;line-height:1.15;color:#211911}
.reception-tile strong{font-size:1.02rem}
.reception-tile span,.reception-tile small{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit}
.reception-tile span{font-size:.77rem}.reception-tile small{font-size:.65rem}
.reception-sidebar{position:sticky;top:.75rem;display:flex;flex-direction:column;gap:.6rem;max-height:calc(100dvh - 6.5rem)}
.reception-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.35rem}
.reception-tabs button{padding:.4rem;font-size:.88rem}
.reception-tabs button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--ink)}
.reception-sidebar-body{min-height:0;overflow:auto;overscroll-behavior:contain}
.reception-sidebar-body>label{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:.15rem 0 .55rem}
.reception-sidebar-body>label select{width:auto}
.reception-booking{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:.25rem;align-items:center;border-top:1px solid var(--line);padding:.2rem 0}
.reception-booking-main.ghost{display:grid;grid-template-columns:3rem minmax(0,1fr) minmax(1.6rem,auto);align-items:center;gap:.35rem;text-align:left;border-color:transparent;padding:.35rem .25rem}
.reception-booking-main:hover{border-color:var(--line)}
.reception-time,.reception-table{font-variant-numeric:tabular-nums;font-size:.82rem}.reception-table{text-align:right;max-width:5rem;overflow-wrap:anywhere}
.reception-name{min-width:0}.reception-name strong,.reception-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reception-name strong{font-size:.88rem}.reception-name small{font-size:.73rem;font-weight:400}
.reception-note{display:grid;place-items:center;width:44px;padding:0;background:transparent;color:var(--muted);border:1px solid transparent}
.reception-note.has-note{color:var(--fg);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,var(--surface))}
.reception-wait{padding:.45rem 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.reception-wait>.row:last-child:not(:first-child){margin-top:.35rem}.reception-wait button:not(.reception-note){font-size:.82rem;padding:.3rem .55rem}
.reception-pick{border:1px solid var(--accent);border-radius:.65rem;padding:.35rem .65rem}
.reception-dialog{width:min(calc(100vw - 2rem),480px);margin:auto}
.reception-dialog h2{font-size:1.55rem;margin:.25rem 0}.reception-dialog .panel{border:0;padding:.5rem 0}
.reception-dialog .panel h2{display:none}
.reception-note-text{white-space:pre-wrap;overflow-wrap:anywhere;padding:.75rem 0}
.reception-actions{margin-top:.8rem}.reception-actions button{padding:.4rem .65rem}
@media(max-width:740px){.reception-layout{grid-template-columns:1fr}.reception-sidebar{position:static;max-height:none}.reception-map{height:clamp(310px,48dvh,450px)}}

/* In accoglienza lo schermo è dedicato alla sala; le liste si aprono sopra la mappa. */
body:has(#app.reception-app)>.top,body:has(#app.reception-app)>footer{display:none}
#app.reception-app{width:100%;max-width:none;height:100dvh;padding:0;margin:0}
.reception-layout{height:100%;grid-template-columns:minmax(0,4fr) minmax(168px,1fr);gap:0;align-items:stretch}
.reception-map-panel{min-height:0;padding:.65rem}
.reception-areas{display:grid;grid-template-columns:repeat(min(var(--area-count),2),minmax(0,1fr));grid-auto-rows:minmax(210px,1fr);gap:.65rem;flex:1;min-height:0;overflow:auto}
.reception-area{display:flex;flex-direction:column;min-width:0;min-height:0}
.reception-area h2{font:600 .78rem/1.25 system-ui,sans-serif;letter-spacing:.06em;color:var(--muted);margin:.25rem 0 .45rem;text-transform:uppercase}
.reception-area .reception-map{height:auto;flex:1;min-height:180px;border-radius:0}
.table-dot.reception-tile{border-radius:0;aspect-ratio:1;width:clamp(64px,24%,118px);max-width:24%;min-width:0;min-height:0;padding:.22rem}
.reception-tile .reception-joined{font-weight:750;border-top:1px solid currentColor;padding-top:.14rem}
.reception-sidebar{position:relative;top:auto;max-height:none;overflow:auto;border-left:1px solid var(--line);background:var(--surface);padding:.85rem;gap:.95rem}
.reception-sidebar .brand{font-size:clamp(1.4rem,3vw,2.2rem)}
.reception-sidebar .eyebrow{margin:.2rem 0 0}
.reception-tabs{grid-template-columns:1fr}
.reception-tabs button{width:100%;text-align:left;padding:.45rem .65rem}
.reception-links{margin-top:auto;display:grid;gap:.35rem;font-size:.78rem;color:var(--muted)}
.reception-dialog.reception-dialog-wide{width:min(calc(100vw - 2rem),680px)}
.reception-dialog .reception-sidebar-body{max-height:min(65dvh,520px)}
@media(orientation:portrait) and (max-width:740px){
  #app.reception-app{height:auto;min-height:100dvh}
  .reception-layout{grid-template-columns:minmax(0,1fr);height:auto}
  .reception-sidebar{grid-row:1;border-left:0;border-bottom:1px solid var(--line)}
  .reception-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .reception-areas{grid-template-columns:1fr}
  .reception-area .reception-map{min-height:260px}
}

.brand-image{display:block;max-width:100%;max-height:3.75rem;object-fit:contain;object-position:left center}
.reception-layout{grid-template-columns:minmax(0,1fr) clamp(176px,25vw,280px)}
.reception-workspace{min-width:0;min-height:0;overflow:auto}
.reception-map-panel{height:100%}
.reception-map-panel>.reception-area{flex:1}
.reception-sidebar{min-width:0;overflow-x:hidden;padding:clamp(.4rem,1.25vw,.9rem);overflow-wrap:anywhere}
.reception-sidebar label,.reception-sidebar input,.reception-sidebar select,.reception-tabs button{min-inline-size:0;max-inline-size:100%}
.reception-sidebar input[type=date]{display:block;padding-inline:.3rem}
.reception-sidebar select{padding-inline:.55rem;text-overflow:ellipsis}
.reception-sidebar .reception-tabs button{padding:.55rem .75rem;font-size:.93rem}
.reception-tabs button{white-space:normal;overflow-wrap:anywhere}
.reception-tabs button[aria-current=page],.staff-sidebar button[aria-current=page]{border-color:var(--accent);background:var(--accent);color:var(--ink)}
.reception-page{padding:clamp(.7rem,2vw,1.6rem)}
#app.reception-app .reception-page h1{font-size:clamp(1.6rem,3.2vw,2.65rem)}
.reception-page .reception-bookings-page>label{max-width:16rem;margin-bottom:.75rem}
.reception-page .reception-booking-main.ghost{grid-template-columns:minmax(3rem,12%) minmax(0,1fr) minmax(1.6rem,auto)}
.reception-page .reception-booking-main.ghost,.reception-page .reception-booking{min-height:3.4rem}
.reception-page .reception-wait{padding:.6rem 0}
.reception-area .reception-map{container-type:size}
.reception-map .table-dot.reception-tile{
  width:min(112px,calc(85cqw / var(--map-columns)),calc(85cqh / var(--map-rows)));max-width:none;overflow:hidden
}
.brand-preview{display:block;max-width:100%;height:54px;object-fit:contain;object-position:left}
.brand-preview.favicon{width:32px;height:32px}
body:has(#app.staff-app)>.top,body:has(#app.staff-app)>footer{display:none}
#app.staff-app{width:100%;max-width:none;min-height:100dvh;padding:0;margin:0}
.staff-layout{display:grid;grid-template-columns:clamp(122px,19vw,230px) minmax(0,1fr);align-items:start}
.staff-sidebar{position:sticky;top:0;height:100dvh;overflow:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:.65rem;padding:clamp(.55rem,1.5vw,1.2rem);background:var(--surface);border-right:1px solid var(--line)}
.staff-sidebar .brand{font-size:clamp(1.3rem,3vw,2rem);overflow-wrap:anywhere}
.staff-sidebar .eyebrow{margin:0}
.staff-sidebar nav{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:.3rem;flex:0 1 auto}
.staff-sidebar button{padding:.4rem .55rem;text-align:left;font-size:clamp(.77rem,1.45vw,1rem);overflow-wrap:anywhere}
.staff-content{min-width:0;padding:clamp(.7rem,3vw,2.4rem)}
#app.staff-app .staff-content>h1{font-size:clamp(1.75rem,4.3vw,3.5rem);overflow-wrap:anywhere}
@media(orientation:portrait) and (max-width:740px){
  .reception-layout{grid-template-columns:minmax(0,1fr)}
  .reception-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reception-map-panel{height:55dvh}
}

.staff-mobile-bar{display:none}
.staff-drawer{border:0;padding:0;background:var(--surface);color:var(--fg)}
.staff-drawer::backdrop{background:#0009}
.settings-workspace{max-width:980px}
.setting-sections{display:flex;justify-content:flex-start;gap:.35rem;margin-bottom:1rem}
.setting-sections button{font-size:.88rem;padding:.4rem .65rem}
.setting-sections button[aria-current=page]{background:var(--accent);color:var(--ink);border-color:var(--accent)}
.setting-panel{background:var(--surface);border:1px solid var(--line);border-radius:.85rem;padding:clamp(.75rem,2vw,1.45rem)}
.setting-panel>header h2{margin:0 0 .3rem}
.setting-panel>header p{margin:0}
.setting-group{display:grid;gap:.45rem}
.setting-group h3{margin:0}
.setting-group>button{justify-self:start}
.setting-entry summary{cursor:pointer;overflow-wrap:anywhere}
.setting-entry summary small{display:inline-block;margin-inline-start:.6rem}
.setting-entry-content{padding-top:.85rem}
.setting-entry-content details>.grid{margin-top:.55rem}
.setting-wide{grid-column:1/-1}
.setting-weekdays{display:flex;flex-wrap:wrap;gap:.35rem .8rem}
.setting-weekdays .check{min-height:40px}
.settings-save{padding:.75rem 0}
.setting-panel label{max-width:100%;overflow-wrap:anywhere}
@media(max-width:767px),(hover:none) and (pointer:coarse) and (max-height:500px){
  .staff-layout{display:block}
  .staff-layout>.staff-sidebar{display:none}
  .staff-content{padding:0 .85rem 1rem}
  .staff-mobile-bar{display:flex;justify-content:space-between;align-items:center;gap:.65rem;padding:.6rem 0;border-bottom:1px solid var(--line);margin-bottom:.85rem}
  .staff-mobile-bar .brand{min-width:0;font-size:1.6rem}
  .staff-mobile-bar .brand-image{max-height:2.75rem}
  .staff-drawer{position:fixed;inset:0 auto 0 0;margin:0;width:min(82vw,310px);height:100dvh;max-height:none;max-width:none}
  .staff-drawer .staff-sidebar{position:static;height:100%;padding:.8rem}
  .staff-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
  .staff-drawer-header .brand{min-width:0}
  .setting-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .setting-sections button{text-align:left;overflow-wrap:anywhere}
  .setting-panel .grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,145px),1fr))}
}

/* Table fills encode booking status on both maps, regardless of service. */
.table-dot,.table-dot.reception-tile{
  --table-fill:#dedee4;
  color:var(--table-text,#1e1820);
  background:var(--table-fill);
  border:1px solid #67606b;
}
.table-dot.free{--table-fill:var(--table-free,#dedee4);--table-text:var(--table-text-free,#1e1820)}
.table-dot.reserved{--table-fill:var(--table-reserved,#ead5b9);--table-text:var(--table-text-reserved,#1e1820)}
.table-dot.occupied{--table-fill:var(--table-occupied,#d5a0b8);--table-text:var(--table-text-occupied,#1e1820)}
.table-dot.leaving{--table-fill:var(--table-leaving,#b6dbc0);--table-text:var(--table-text-leaving,#1e1820)}
.table-dot.disabled{--table-fill:var(--table-disabled,#b9b2be);--table-text:var(--table-text-disabled,#1e1820)}
.table-dot:disabled{opacity:1;border-style:dashed}
.table-dot:focus-visible{outline-color:var(--fg)}

.setting-sections{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}
.setting-area{min-width:0;padding:.75rem;border:1px solid var(--line);border-radius:.85rem;background:var(--surface)}
.setting-area .eyebrow{margin:0 0 .45rem}
.setting-area-buttons{display:flex;flex-wrap:wrap;gap:.35rem}
.setting-area-buttons button{white-space:normal;overflow-wrap:anywhere;text-align:left}
.table-color-settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:.65rem}
.table-color-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:end}
.table-color-sample{grid-column:1/-1;min-height:54px;display:grid;place-items:center;border:1px solid #67606b;border-radius:.5rem;font-weight:650}
.table-color-entry input[type=color]{width:100%;min-width:48px;padding:.3rem}
.table-color-entry button{font-size:.8rem;padding:.5rem .6rem}
@media(max-width:680px){
  .setting-sections{grid-template-columns:1fr}
  .setting-area{padding:.55rem}
}

.banner,#sync-state{padding:.65rem 1rem;border:1px solid var(--accent);background:var(--surface);color:var(--fg);border-radius:.55rem}
#sync-state{position:fixed;z-index:20;inset:auto 1rem 1rem;max-width:40rem;margin:0 auto}
.responsive-table table{border-collapse:collapse;width:100%;table-layout:fixed}
.responsive-table th,.responsive-table td{padding:.5rem;text-align:left;vertical-align:middle;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.responsive-table button{width:100%;text-align:left;padding:.35rem .45rem}
.responsive-table th button{font-size:.84rem}
.message-content{white-space:pre-wrap;overflow-wrap:anywhere}
.analytics-chart details{padding:.4rem 0;border-bottom:1px solid var(--line)}
.analytics-chart summary span{float:right}
.analytics-bars{display:grid;gap:.25rem}
.analytics-bars meter{width:100%}
.settings-accordion{display:grid;gap:.6rem}
.setting-heading{display:flex;align-items:center;gap:.9rem;width:100%;text-align:left}
.setting-heading small{display:block;font-weight:400}
#book .grid,#staff-book .grid,#walk .grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
input[type=date],input[type=time],select{min-width:0;max-width:100%;inline-size:100%;box-sizing:border-box}
input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value{text-align:left;min-height:1.35em}
@media(max-width:767px){
  .staff-mobile-bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;text-align:center}
  .staff-mobile-bar button{min-width:44px;padding:.35rem}
  .reception-mobile-bar{padding:.5rem;margin:0}
  .reception-app:has(.reception-mobile-bar){height:auto!important;min-height:100dvh}
  .reception-app .reception-layout{height:auto}
  .reception-mobile-bar .brand-image{margin-inline:auto}
  .responsive-table table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block}
  .responsive-table thead,.responsive-table thead tr{display:flex;flex-wrap:wrap;gap:.35rem}
  .responsive-table th{padding:0;border:0}
  .responsive-table tbody tr{padding:.55rem;border:1px solid var(--line);border-radius:.7rem;margin-top:.65rem}
  .responsive-table td{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);align-items:center;gap:.55rem}
  .responsive-table td::before{content:attr(data-label);font-size:.78rem;color:var(--muted)}
  .responsive-table td:last-child{border:0}
  dialog.reception-dialog-wide{width:100%;max-width:none;height:100dvh;max-height:none;inset:0;border-radius:0;margin:0;overflow:auto}
}

/* Backoffice navigation and shared compact controls. */
.ui-icon{display:inline-block;width:1.1rem;height:1.1rem;flex:none;vertical-align:middle}
.staff-sidebar nav .staff-nav-item{display:flex;align-items:center;gap:.65rem;min-height:42px;padding:.5rem .65rem;border-color:transparent;font-size:.92rem;font-weight:400}
.staff-sidebar nav .staff-nav-item:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.staff-sidebar nav .staff-nav-item[aria-current=page]{color:var(--fg);background:var(--surface);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:color-mix(in srgb,var(--accent) 50%,var(--line))}
.staff-nav-item[aria-current=page] .ui-icon{color:var(--accent)}
.list-filter,.booking-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.65rem}
.list-filter label{flex:1 1 9rem;max-width:22rem}
.list-filter label:first-child{flex-basis:13rem}
.list-filter .filter-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;width:auto;padding:.45rem .85rem;font-size:.88rem}
.booking-toolbar label{width:clamp(8rem,22vw,11rem)}
.booking-toolbar .day-step{min-width:44px;padding-inline:.5rem}
.daily-bookings>label{max-width:22rem}
.responsive-table .icon-button{display:inline-grid;place-items:center;width:44px;padding:.35rem}
.responsive-table .table-link{font-weight:500;border-color:transparent}
.booking-table th:first-child{width:15%}
.booking-table th:nth-child(2){width:34%}
.booking-table th:nth-child(5){width:17%}
.booking-table:has(tbody tr) .empty-table{display:none}
.booking-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));gap:.75rem;margin-block:1rem}
.booking-detail-grid dt{font-size:.8rem;color:var(--muted)}
.booking-detail-grid dd{margin:0;overflow-wrap:anywhere}
.setting-item{border:1px solid var(--line);border-radius:.85rem;background:var(--surface);min-width:0}
.setting-item:has(.setting-heading[aria-expanded=true]){border-color:var(--accent)}
.setting-item .setting-heading{border:0;border-radius:.8rem}
.setting-item .setting-heading[aria-expanded=true]{border-radius:.8rem .8rem 0 0}
.setting-item .setting-panel{margin:0;border:0;border-top:1px solid var(--line);border-radius:0 0 .8rem .8rem}

/* Infographic Home. */
.home-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.65rem}
.home-toolbar label{width:min(100%,12rem)}
.home-scope,.custom-period{margin-top:.7rem}
.home-scope summary,.home-export summary{width:fit-content;cursor:pointer;color:var(--muted);font-size:.88rem;padding:.35rem 0}
.home-scope .list-filter{margin-top:.4rem}
.home-grid{display:grid;gap:.8rem;margin-top:.8rem;grid-auto-flow:dense}
.home-graphs{grid-template-columns:repeat(6,minmax(0,1fr))}
.home-main,.home-compact{grid-template-columns:repeat(4,minmax(0,1fr))}
.home-card{min-width:0;padding:.85rem}
.home-graphs .home-card,.home-main .home-card{grid-column:span 2}
.home-graphs .home-card-wide,.home-main .home-card-wide{grid-column:span 4}
.home-compact .home-card-wide{grid-column:span 2}
.home-card .home-module{display:grid;align-content:start;gap:.55rem;text-align:left;width:100%;height:auto;padding:0;border:0;font-weight:400}
.home-card-title{display:flex;align-items:flex-start;gap:.5rem;min-width:0;font-size:.88rem;font-weight:600}
.home-card-title .ui-icon{color:var(--accent)}
.home-main .stat{font:650 clamp(2.4rem,5vw,4.5rem)/1 system-ui,sans-serif}
.home-compact .stat{font:600 clamp(1.5rem,3vw,2.4rem)/1 system-ui,sans-serif}
.home-compare{font-size:.78rem;color:var(--muted);overflow-wrap:anywhere}
.home-status,.home-editor,.home-export{margin-top:.65rem}
.home-status,.home-empty{font-size:.82rem}
.home-chart{min-width:0;font-size:.72rem}
.home-columns{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.2rem;text-align:center}
.home-columns .home-chart-mark{display:grid;grid-template-rows:1.5rem 4.25rem 1.25rem;min-width:0}
.home-columns .home-mark-value{grid-row:1;align-self:end;overflow:hidden;text-overflow:ellipsis}
.home-columns .home-mark-label{grid-row:3}
.home-columns .home-mark-track{grid-row:2;align-self:stretch;display:flex;align-items:end;justify-content:center;margin:.15rem .1rem}
.home-columns .home-mark-fill{height:var(--bar);width:100%;max-width:1.3rem}
.home-mark-fill{display:block;background:var(--accent);border-radius:.18rem}
.home-bars{display:grid;gap:.22rem}
.home-bars .home-chart-mark{display:grid;grid-template-columns:minmax(3rem,38%) minmax(0,1fr) auto;align-items:center;gap:.35rem}
.home-bars .home-mark-label{overflow-wrap:anywhere}
.home-bars .home-mark-track{grid-column:2;grid-row:1;background:var(--line);border-radius:.2rem}
.home-bars .home-mark-fill{height:.37rem;width:var(--bar)}
.home-bars .home-mark-value{grid-column:3;grid-row:1}
.home-detail-list{list-style:none;padding:0}
.home-detail-list li{display:flex;justify-content:space-between;gap:.6rem;padding:.35rem 0;border-bottom:1px solid var(--line)}
@media(max-width:1100px){
  .home-graphs{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:650px){
  .home-graphs,.home-main,.home-compact{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-graphs .home-card,.home-main .home-card,.home-graphs .home-card-wide,.home-main .home-card-wide{grid-column:span 2}
  .home-card{padding:.7rem}
  .booking-table thead{display:none}
  .daily-bookings{padding:.75rem}
  .booking-toolbar{gap:.35rem}
  .list-filter label{flex-basis:min(100%,11rem)}
}
@media print{.home-filters,.home-editor,.home-export,.staff-sidebar,.staff-mobile-bar{display:none!important}.staff-layout{display:block}}

.room-map-controls{display:flex;gap:.65rem;flex-wrap:wrap;align-items:end}
.room-map-controls label:first-child{flex:1 1 12rem;max-width:23rem}
.room-map-controls label:not(:first-child){flex:0 1 8rem}
.map-scroll{max-width:100%;overflow:auto}
.room-grid{display:grid;grid-template-columns:repeat(var(--map-columns),minmax(44px,1fr));gap:.35rem}
.room-grid .map-grid-table,.room-grid .map-empty{min-height:44px;border-radius:.38rem}
.room-grid .map-grid-table{min-width:0;padding:.3rem .2rem;overflow-wrap:anywhere;font-size:.83rem}
.room-grid .map-grid-table small{display:block;font-size:.66rem;color:inherit;font-weight:400}
.room-grid .map-grid-table[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--ink)}
.room-grid .map-empty{border:1px dashed var(--line);background:var(--bg)}
.map-removal-list{padding-inline-start:1.2rem}
.map-removal-list li{margin:.35rem 0}
.reception-area .reception-map.gridded-map{container-type:normal;display:grid;overflow:auto;gap:.35rem;padding:.45rem;
  grid-template-columns:repeat(var(--map-columns),minmax(44px,1fr));grid-template-rows:repeat(var(--map-rows),minmax(56px,1fr))}
.reception-map.gridded-map .table-dot.reception-tile{position:static;transform:none;aspect-ratio:auto;width:100%;height:100%;max-width:none;min-width:0;overflow:hidden}
.reception-map.gridded-map .reception-tile strong{font-size:clamp(.75rem,1.4vw,1rem);max-width:100%;overflow:hidden;text-overflow:ellipsis}

.reception-links a.staff-portal-link{display:flex;align-items:center;min-height:44px;padding:.65rem .8rem;border:1px solid var(--line);border-radius:.65rem;text-decoration:none;font-size:.9rem;font-weight:400;overflow-wrap:anywhere}
.reception-links a.staff-portal-link:hover{border-color:var(--accent)}
/* Shared controls: all popup content belongs to Kadave, including opened lists. */
:root{accent-color:var(--accent);color-scheme:dark}
:root[data-theme=light]{color-scheme:light}
.control-trigger{display:flex;align-items:center;justify-content:space-between;gap:.65rem;width:100%;min-width:0;min-height:44px;padding:.65rem;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:.55rem;font-size:inherit;font-weight:400;text-align:left}
.control-trigger>span:first-child{min-width:0;overflow-wrap:anywhere}
.control-trigger:disabled{opacity:.5}
.control-trigger[aria-expanded=true],.control-trigger:hover{border-color:var(--accent)}
.control-trigger[aria-invalid=true]{border-color:var(--error)}
.control-trigger[data-preview]>span:last-child{width:24px;height:24px;border:1px solid var(--line);border-radius:.3rem;flex-shrink:0}
.control-popover{position:fixed;margin:0;width:min(360px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:85dvh;padding:.8rem;background:var(--surface);color:var(--fg);border:1px solid var(--accent);border-radius:.75rem;box-shadow:0 12px 48px #0006;overflow:auto;overscroll-behavior:contain}
.control-popover::backdrop{background:#0002}
.control-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;font-size:.95rem}
.control-heading button{font-size:1.4rem;padding:.2rem .6rem}
.control-options{display:grid;gap:.2rem;max-height:45dvh;overflow:auto;margin-top:.4rem}
.control-options button{text-align:left;font-weight:400;width:100%;white-space:normal;overflow-wrap:anywhere}
.control-options [aria-selected=true],.control-popover [aria-pressed=true]{background:var(--accent);color:var(--ink);border-color:var(--accent)}
.control-options button:focus-visible,.control-popover button:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.control-calendar-nav{display:grid;grid-template-columns:36px 1fr 80px 36px;gap:.25rem;align-items:center;margin-bottom:.6rem}
.control-calendar-nav button{padding:.3rem;min-height:40px;font-weight:400}
.control-calendar-nav input{padding:.3rem;min-height:40px}
.control-day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.2rem}
.control-day-grid>span{text-align:center;color:var(--muted);font-size:.8rem;padding:.25rem}
.control-day-grid button{min-height:40px;padding:.2rem;font-size:.9rem;font-weight:400}
.control-day-grid .adjacent-month{color:var(--muted)}
.control-day-grid .control-today{border-color:var(--accent)}
.control-month-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}
.control-month-grid button{padding:.4rem;font-weight:400}
.control-actions{display:flex;justify-content:space-between;gap:.5rem;margin-top:.65rem}
.control-actions button{font-weight:400;color:var(--accent)}
.control-error{color:var(--error);margin:.6rem 0 0;font-size:.9rem}
.control-time-row{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.75rem}
.control-color-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:.75rem 0}
.control-color-grid button{border:1px solid var(--fg)}
input[type=checkbox],input[type=radio]{appearance:none!important;display:inline-grid;place-content:center;width:22px!important;height:22px;min-height:22px!important;padding:0!important;flex-shrink:0;border:1px solid var(--muted);background:var(--bg);border-radius:.3rem;cursor:pointer;vertical-align:middle}
input[type=radio]{border-radius:50%}
input[type=checkbox]:checked,input[type=radio]:checked{background:var(--accent);border-color:var(--accent)}
input[type=checkbox]:checked::after{content:'✓';color:var(--ink);font-size:17px;font-weight:700;line-height:1}
input[type=radio]:checked::after{content:'';width:8px;height:8px;border-radius:50%;background:var(--ink)}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.45;cursor:default}
input::file-selector-button{font:inherit;background:var(--accent);color:var(--ink);border:0;border-radius:.4rem;padding:.45rem .7rem;margin-right:.6rem;cursor:pointer}
.booking-toolbar{display:grid;grid-template-columns:44px minmax(150px,190px) 44px max-content;align-items:end;gap:.65rem}
.booking-toolbar label{width:auto;margin:0}
.booking-toolbar>.day-step,.booking-toolbar>[data-booking-new],.booking-toolbar .control-trigger{height:44px;min-height:44px;margin:0}
@media(max-width:680px){.booking-toolbar{grid-template-columns:44px minmax(0,1fr) 44px}.booking-toolbar>[data-booking-new]{grid-column:1/-1;width:100%}.control-popover{font-size:16px}}
.control-actions button{color:var(--fg);border-color:var(--accent)}
.control-heading{position:sticky;top:-.8rem;background:var(--surface);z-index:1}
.control-popover input{font-size:16px}
.field-error{display:block;color:var(--error);font-size:.85rem;font-weight:400}
input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--error)}
::selection{background:var(--accent);color:var(--ink)}
/* Shared operations: calendars, reservations and customer review. */
.booking-origin{margin:.5rem 0;font-size:.85rem}.compact{min-height:36px;padding:.4rem .7rem}
.table-picks{max-height:40vh;overflow:auto}.table-picks>div+div{margin-top:1rem}
.calendar-rule{border-bottom:1px solid var(--line);padding-bottom:.8rem;margin-bottom:.8rem}
.reserved-marker{border:1px solid currentColor;border-radius:.25rem;padding:.1rem .3rem;font-size:.7rem!important}
.reception-tile.disabled{opacity:.65}.booking-table .badge{display:block;font-size:.72rem;width:max-content}
@media(max-width:680px){.calendar-rule{grid-template-columns:1fr}.table-picks{max-height:30vh}}
.review-table th:first-child{width:9%}.review-table th:nth-child(2){width:23%}.review-table th:nth-child(3){width:9%}
.review-table th:nth-child(4){width:11%}.review-table th:nth-child(5){width:9%}.review-table th:nth-child(6){width:39%}
.review-status{display:block;font-size:.85rem;font-weight:400}.review-table td .row{gap:.4rem;margin-top:.4rem}
.review-table td .row button{width:auto;text-align:center}.review-table td>small{display:block}
