@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--tint: #1e3a2f;--tint-strong: #142a21;--tint-soft: #e5ece8;--linen: #fbfbf8;--paper: #ffffff;--ink: #1b2420;--ink-soft: #4a5752;--ink-faint: #7b8782;--line: #dde3df;--line-strong: #c4ccc7;--brass: #a9792b;--brass-soft: #f5ecdc;--tomato: #b93a24;--tomato-soft: #f8e5e0;--olive: #4f6b2a;--olive-soft: #e9efdf;--focus: #2f6fd1;--font-display: "Bricolage Grotesque Variable", "Avenir Next", "Segoe UI", sans-serif;--font-body: "Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;--step--1: .8125rem;--step-0: 1rem;--step-1: 1.1875rem;--step-2: 1.5rem;--step-3: 2rem;--step-4: 2.75rem;--radius-s: 6px;--radius-m: 10px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--sidebar: 15.5rem;color-scheme:light}html[data-app=admin]{--tint: #3d2645;--tint-strong: #2a1830;--tint-soft: #ece5ee}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--linen);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);line-height:1.5}h1,h2,h3{font-family:var(--font-display);font-weight:640;letter-spacing:-.01em;line-height:1.15;margin:0}h1{font-size:var(--step-3)}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}p{margin:0}a{color:var(--tint);text-underline-offset:.18em}a:hover{color:var(--tint-strong)}small,.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.tabular{font-variant-numeric:tabular-nums}code,.code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.875em;background:var(--tint-soft);padding:.1em .35em;border-radius:4px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh}.sidebar{background:var(--tint);color:#e8efeb;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5) var(--space-4);position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:baseline;gap:var(--space-2);color:#fff;text-decoration:none;font-family:var(--font-display);font-size:var(--step-1);font-weight:700}.brand:hover{color:#fff}.brand-mark{width:.7em;height:.7em;border-radius:50%;background:var(--brass);box-shadow:0 0 0 3px #a9792b59;align-self:center}.brand-surface{color:#b9c9c1;font-family:var(--font-body);font-size:var(--step--1);font-weight:400}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);color:#d5e0da;text-decoration:none;padding:.55rem .75rem;border-radius:var(--radius-s)}.nav a:hover{background:#ffffff12;color:#fff}.nav a[aria-current=page]{background:#ffffff1f;color:#fff;box-shadow:inset 3px 0 0 var(--brass)}.nav-group{color:#93a89d;font-size:var(--step--1);padding:var(--space-3) .75rem var(--space-1)}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--step--1);color:#b9c9c1}.sidebar-footer button{color:#e8efeb}.switcher select{width:100%;background:var(--tint-strong);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-s);padding:.5rem;font:inherit}.switcher-label{display:block;font-size:var(--step--1);color:#93a89d;margin-bottom:var(--space-1)}.content{padding:var(--space-6) clamp(var(--space-4),4vw,var(--space-7));min-width:0}.content-narrow{max-width:52rem}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-head p{color:var(--ink-soft);margin-top:var(--space-2);max-width:60ch}.topbar{display:none}@media(max-width:860px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(18rem,85vw);z-index:30;transform:translate(-100%);transition:transform .16s ease-out}.shell[data-menu=open] .sidebar{transform:none;box-shadow:0 0 0 100vmax #142a2173}.topbar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--tint);color:#fff;position:sticky;top:0;z-index:20}.topbar .brand{font-size:var(--step-0)}.content{padding:var(--space-5) var(--space-4)}}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:2.5rem;padding:.5rem 1rem;border-radius:var(--radius-s);border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);font:inherit;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}.button:hover{border-color:var(--ink-faint);color:var(--ink)}.button:disabled{opacity:.55;cursor:not-allowed}.button-primary{background:var(--tint);border-color:var(--tint);color:#fff}.button-primary:hover{background:var(--tint-strong);border-color:var(--tint-strong);color:#fff}.button-danger{color:var(--tomato);border-color:#e3b9b0}.button-danger:hover{background:var(--tomato-soft);color:var(--tomato);border-color:var(--tomato)}.button-quiet{border-color:transparent;background:transparent;color:var(--tint)}.button-quiet:hover{background:var(--tint-soft);border-color:transparent}.button-small{min-height:2rem;padding:.25rem .65rem;font-size:var(--step--1)}.link-button{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field-label{font-weight:700;font-size:.9375rem}.field-hint{color:var(--ink-soft);font-size:var(--step--1)}.field-error{color:var(--tomato);font-size:var(--step--1)}.input,.select,.textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-s);background:var(--paper);color:var(--ink);font:inherit;padding:.55rem .7rem}.textarea{min-height:6rem;resize:vertical;line-height:1.55}.textarea-prompt{min-height:16rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.875rem}.input:focus,.select:focus,.textarea:focus{outline:3px solid rgba(47,111,209,.35);border-color:var(--focus)}.checkbox{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer}.checkbox input{width:1.1rem;height:1.1rem;accent-color:var(--tint)}.form{display:flex;flex-direction:column;gap:var(--space-4)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:var(--space-4)}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.section{padding:var(--space-5) 0;border-top:1px solid var(--line)}.section:first-of-type{border-top:0;padding-top:0}.section-head{display:grid;gap:var(--space-1);margin-bottom:var(--space-4)}.section-head p{color:var(--ink-soft);max-width:65ch}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);padding:var(--space-5)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-m);background:var(--paper)}.table{width:100%;border-collapse:collapse;font-size:.9375rem}.table th{text-align:left;font-weight:700;color:var(--ink-soft);font-size:var(--step--1);padding:.6rem .85rem;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:.7rem .85rem;border-bottom:1px solid var(--line);vertical-align:top}.table tr:last-child td{border-bottom:0}.table td.actions{text-align:right;white-space:nowrap}.table tr[data-dimmed=true] td{color:var(--ink-faint)}.badge{display:inline-flex;align-items:center;gap:.3em;padding:.1rem .55rem;border-radius:999px;font-size:var(--step--1);font-weight:700;background:var(--tint-soft);color:var(--tint);white-space:nowrap}.badge-brass{background:var(--brass-soft);color:#7a5519}.badge-alert{background:var(--tomato-soft);color:var(--tomato)}.badge-ok{background:var(--olive-soft);color:var(--olive)}.badge-muted{background:#eef0ef;color:var(--ink-soft)}.count{min-width:1.5rem;padding:0 .45rem;border-radius:999px;background:var(--brass);color:#fff;font-size:var(--step--1);font-weight:700;text-align:center}.notice{border-radius:var(--radius-s);padding:var(--space-3) var(--space-4);background:var(--tint-soft);color:var(--tint-strong)}.notice-alert{background:var(--tomato-soft);color:#7d2616}.notice-brass{background:var(--brass-soft);color:#5e4113}.empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--ink-soft)}.empty strong{display:block;color:var(--ink);font-family:var(--font-display);font-size:var(--step-1);margin-bottom:var(--space-2)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.spread{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--line);margin-bottom:var(--space-5);overflow-x:auto}.tabs a{padding:.6rem .9rem;text-decoration:none;color:var(--ink-soft);border-bottom:3px solid transparent;white-space:nowrap;font-weight:700}.tabs a[aria-current=page]{color:var(--tint);border-bottom-color:var(--brass)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-5)}.kv dt{color:var(--ink-soft)}.kv dd{margin:0}dialog.dialog{border:0;border-radius:var(--radius-m);padding:0;width:min(36rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);box-shadow:0 24px 60px #142a2147;color:var(--ink)}dialog.dialog::backdrop{background:#142a2173}.dialog-body{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}.toasts{position:fixed;bottom:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:50;max-width:min(26rem,calc(100vw - 2rem))}.toast{background:var(--ink);color:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-s);box-shadow:0 10px 30px #0003}.toast-error{background:var(--tomato)}.share-link{display:flex;gap:var(--space-2)}.share-link input{flex:1;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.8125rem}.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,28rem)}.auth-aside{background:var(--tint);color:#e8efeb;padding:var(--space-7);display:flex;flex-direction:column;justify-content:space-between}.auth-aside .brand{font-size:var(--step-2)}.auth-claim{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.25rem);font-weight:650;line-height:1.05;max-width:14ch;color:#fff}.auth-claim+p{margin-top:var(--space-4);color:#b9c9c1;max-width:40ch}.auth-main{display:flex;flex-direction:column;justify-content:center;padding:var(--space-6);background:var(--paper)}.auth-main h1{margin-bottom:var(--space-2)}.auth-main .form{margin-top:var(--space-5)}.qr{width:11rem;height:11rem;border:1px solid var(--line);border-radius:var(--radius-s)}@media(max-width:760px){.auth{grid-template-columns:1fr}.auth-aside{padding:var(--space-5);gap:var(--space-5)}.auth-claim{font-size:1.75rem}}.services{display:flex;flex-direction:column;gap:var(--space-3)}.service-row{display:grid;grid-template-columns:minmax(8rem,1.4fr) repeat(2,minmax(6rem,1fr)) auto;gap:var(--space-3);align-items:end;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-s);background:var(--paper)}.service-row .weekdays{grid-column:1 / -1}.weekdays{display:flex;flex-wrap:wrap;gap:var(--space-2)}.weekday{position:relative}.weekday input{position:absolute;opacity:0;inset:0;cursor:pointer}.weekday span{display:inline-block;min-width:3.1rem;text-align:center;padding:.35rem .5rem;border:1px solid var(--line-strong);border-radius:var(--radius-s);font-size:var(--step--1);font-weight:700;background:var(--paper)}.weekday input:checked+span{background:var(--tomato-soft);border-color:var(--tomato);color:var(--tomato);text-decoration:line-through}.weekday input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}@media(max-width:640px){.service-row{grid-template-columns:1fr 1fr}}.console{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--space-5)}.console-transcript{min-height:22rem;max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m)}.bubble{max-width:85%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-m);background:var(--tint-soft)}.bubble[data-role=user]{align-self:flex-end;background:var(--brass-soft)}.bubble span{display:block;font-size:var(--step--1);color:var(--ink-soft);font-weight:700}.console-log{list-style:none;margin:0;padding:0;font-size:var(--step--1);max-height:60vh;overflow-y:auto}.console-log li{padding:var(--space-2) 0;border-bottom:1px solid var(--line)}.console-log strong{margin-right:var(--space-2)}.status-dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;background:var(--ink-faint);margin-right:var(--space-2)}.status-dot[data-state=connected]{background:var(--olive)}.status-dot[data-state=connecting]{background:var(--brass)}.status-dot[data-state=error]{background:var(--tomato)}@media(max-width:860px){.console{grid-template-columns:1fr}}.floor{overflow-x:auto;overflow-y:hidden;border:1px solid var(--line);border-radius:var(--radius-m);background:var(--paper)}.floor-grid{display:grid;min-width:max-content;position:relative}.floor-corner,.floor-time,.floor-table{position:sticky;background:var(--paper);z-index:2}.floor-corner{left:0;top:0;z-index:3;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.floor-time{top:0;font-size:var(--step--1);color:var(--ink-soft);padding:.4rem 0 .4rem .3rem;border-bottom:1px solid var(--line);border-left:1px solid var(--line);font-variant-numeric:tabular-nums}.floor-time[data-hour=true]{color:var(--ink);font-weight:700;border-left-color:var(--line-strong)}.floor-time[data-service-start=true]{border-left:2px solid var(--tint)}.floor-table{left:0;padding:.5rem .75rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.floor-table strong{font-family:var(--font-display)}.floor-table small{font-size:var(--step--1)}.floor-table[data-disabled=true]{color:var(--ink-faint)}.floor-cell{border-bottom:1px solid var(--line);border-left:1px solid #eef1ef;min-height:3.25rem}.floor-cell[data-closed=true]{background:repeating-linear-gradient(135deg,#f6f7f6,#f6f7f6 6px,#eef0ef 6px 12px)}.floor-cell[data-past=true]{background:#f7f8f7}.floor-cell button{width:100%;height:100%;border:0;background:transparent;cursor:pointer}.floor-cell button:hover{background:var(--tint-soft)}.floor-booking{z-index:1;margin:4px 2px;border-radius:var(--radius-s);background:var(--tint);color:#fff;padding:.25rem .5rem;border:0;text-align:left;font:inherit;font-size:var(--step--1);line-height:1.3;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-shadow:inset 4px 0 0 var(--brass)}.floor-booking strong{font-family:var(--font-display);font-size:.875rem}.floor-booking[data-status=arrivata]{background:var(--olive);box-shadow:inset 4px 0 #c9d8b4}.floor-booking[data-joined=true]{background-image:repeating-linear-gradient(90deg,transparent 0 10px,rgba(255,255,255,.08) 10px 20px)}.floor-booking:hover{filter:brightness(1.1)}.floor-now{position:absolute;top:0;bottom:0;width:2px;background:var(--tomato);z-index:4;pointer-events:none}.floor-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:var(--step--1);color:var(--ink-soft);margin-top:var(--space-3)}.legend-swatch{display:inline-block;width:.9rem;height:.9rem;border-radius:3px;vertical-align:-.15em;margin-right:var(--space-1);background:var(--tint)}.day-nav{display:flex;align-items:center;gap:var(--space-2)}.day-title{font-family:var(--font-display);font-size:var(--step-2);font-weight:650}.service-summary{display:flex;flex-wrap:wrap;gap:var(--space-5);margin:var(--space-4) 0}.service-summary div{display:flex;flex-direction:column}.service-summary strong{font-family:var(--font-display);font-size:var(--step-2);font-variant-numeric:tabular-nums;line-height:1.1}.service-summary span{color:var(--ink-soft);font-size:var(--step--1)}.booking-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-m);background:var(--paper)}.booking-item{display:grid;grid-template-columns:4.5rem minmax(0,1fr) auto;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);align-items:center;text-align:left;background:none;border-left:0;border-right:0;border-top:0;font:inherit;color:inherit;cursor:pointer;width:100%}.booking-item:last-child{border-bottom:0}.booking-item:hover{background:#f6f8f7}.booking-time{font-family:var(--font-display);font-size:var(--step-1);font-weight:700;font-variant-numeric:tabular-nums}.booking-item[data-status=annullata]{color:var(--ink-faint)}.booking-item[data-status=annullata] .booking-name{text-decoration:line-through}.booking-name{font-weight:700}.slot-picker{display:flex;flex-wrap:wrap;gap:var(--space-2)}.slot-picker button{min-width:4.2rem;padding:.35rem .5rem;border-radius:var(--radius-s);border:1px solid var(--line-strong);background:var(--paper);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}.slot-picker button[aria-pressed=true]{background:var(--tint);border-color:var(--tint);color:#fff}.slot-picker button:disabled{color:var(--ink-faint);text-decoration:line-through;cursor:not-allowed;background:#f4f5f4}.auth-foot{color:#93a89d}.plain-fieldset{border:0;padding:0;margin:0;min-width:0}.input-date{max-width:12rem}.confirm-inline{display:inline-flex;gap:var(--space-1)}.content .brand,.content .brand:hover{color:var(--tint)}.content .brand-surface{color:var(--ink-soft)}a.booking-item{text-decoration:none}a.booking-item:hover{color:inherit}.sidebar-footer .link-button{text-align:left;align-self:flex-start}
