/*! BookEase demo. Copyright (c) 2026 Victor Ravindra. All rights reserved. Unauthorised copying or reuse is prohibited. */
:root{--primary: #333;--on-primary: #fff;--accent: #ddd;--bg: #f6f6f6;--surface: #fff;--ink: #1d1d1d;--muted: #666;--line: #e3e3e3;--font-display: Georgia, serif;--font-body: system-ui, sans-serif;--radius: 14px;--danger: #b3261e;--ok: #1f7a4d;--warn: #9a6a00}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-body);background:var(--bg);color:var(--ink);line-height:1.55;font-size:16px}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary)}h1,h2,h3{font-family:var(--font-display);line-height:1.15;margin:0;font-weight:600}.stat p,.service-price,.date-day,.bk-time,.slot{font-variant-numeric:lining-nums tabular-nums}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}[tabindex="-1"]:focus{outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2px solid transparent;border-radius:999px;padding:12px 22px;font-weight:600;cursor:pointer;text-decoration:none;transition:filter .15s,background .15s}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{filter:brightness(1.1)}.btn-primary:disabled{opacity:.6;cursor:progress}.btn-ghost{background:transparent;border-color:var(--primary);color:var(--primary)}.btn-ghost:hover{background:var(--primary);color:var(--on-primary)}.btn-link{background:none;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.btn-small{padding:7px 14px;font-size:.9rem}.btn-block{width:100%}.demo-bar{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;padding:8px 20px;background:#16181d;color:#e8e8e8;font-size:.85rem}.demo-bar[hidden]{display:none}.demo-label{background:#ffd34d;color:#16181d;font-weight:700;padding:2px 10px;border-radius:999px}.demo-bar nav{display:flex;gap:4px;flex-wrap:wrap}.demo-bar nav a{color:#c9cbd1;text-decoration:none;padding:4px 10px;border-radius:999px}.demo-bar nav a:hover{color:#fff;background:#2a2d35}.demo-bar nav a[aria-current]{background:#fff;color:#16181d;font-weight:600}.demo-switch{margin-left:auto;color:#ffd34d;font-weight:600;text-decoration:none}.demo-switch:hover{text-decoration:underline}.shell{display:grid;grid-template-columns:minmax(280px,400px) minmax(0,1fr);min-height:calc(100vh - 50px)}.biz{background:var(--primary);color:var(--on-primary);padding:56px 44px;display:flex;flex-direction:column;gap:18px}.biz-mark{width:84px;height:84px;border-radius:50%;background:var(--accent);color:var(--primary);display:grid;place-items:center;font:600 2rem var(--font-display);letter-spacing:.02em}.biz h1{font-size:clamp(2rem,3.2vw,2.8rem)}.biz-tagline{margin:0;opacity:.85;font-size:1.05rem;max-width:30ch}.biz-facts{margin:12px 0 0;display:grid;gap:14px}.biz-facts dt{font-size:.8rem;opacity:.7}.biz-facts dd{margin:0;font-weight:500}.biz a{color:inherit}.biz-hours{border-top:1px solid color-mix(in srgb,var(--on-primary) 25%,transparent);padding-top:14px}.biz-hours summary{cursor:pointer;font-weight:600}.biz-hours table{margin-top:10px;border-collapse:collapse;width:100%;font-size:.92rem}.biz-hours th{text-align:left;font-weight:500;padding:4px 12px 4px 0;opacity:.8;vertical-align:top}.biz-hours td{padding:4px 0}.biz-hours tr.today th,.biz-hours tr.today td{opacity:1;font-weight:700}.flow{padding:48px clamp(20px,5vw,72px) 64px;max-width:860px;width:100%}.step h2{font-size:clamp(1.6rem,2.6vw,2.1rem);margin-bottom:18px}.step[hidden]{display:none}.steps{list-style:none;padding:0;margin:0 0 36px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;counter-reset:s}.steps[hidden]{display:none}.steps li{counter-increment:s;border-top:4px solid var(--line);padding-top:10px;font-size:.9rem;color:var(--muted);font-weight:500}.steps li:before{content:counter(s) ". "}.steps li.current{border-color:var(--primary);color:var(--ink);font-weight:700}.steps li.complete{border-color:color-mix(in srgb,var(--primary) 45%,var(--bg))}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.chips[hidden]{display:none}.chip{border:1.5px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 16px;cursor:pointer;font-weight:500}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--bg)}.services{list-style:none;margin:0;padding:0;display:grid;gap:10px}.service{width:100%;display:flex;justify-content:space-between;gap:16px;text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);padding:18px 20px;cursor:pointer;transition:border-color .15s,transform .15s}.service:hover{border-color:var(--primary)}.service:active{transform:scale(.995)}.service-main{display:flex;flex-direction:column;gap:3px}.service-name{font-weight:600;font-size:1.08rem}.service-desc{color:var(--muted);font-size:.93rem}.service-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}.service-price{font:600 1.15rem var(--font-display)}.service-dur{color:var(--muted);font-size:.85rem}.back{background:none;border:0;padding:0;color:var(--muted);cursor:pointer;font-weight:500;margin-bottom:14px}.back:before{content:"\2039  "}.back:hover{color:var(--ink)}.picked{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;background:color-mix(in srgb,var(--accent) 35%,var(--surface));border-radius:var(--radius);padding:14px 18px;margin-bottom:28px}.picked-name{font-weight:700}.picked-meta{color:var(--muted);font-size:.92rem}.picked-when{flex-basis:100%;font-weight:600;color:var(--primary)}.dates{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;margin-bottom:20px;scroll-snap-type:x proximity;scrollbar-width:thin}.date{flex:0 0 74px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;gap:1px;padding:10px 4px;border-radius:var(--radius);border:1.5px solid var(--line);background:var(--surface);cursor:pointer}.date-dow{font-size:.78rem;color:var(--muted);font-weight:600}.date-day{font:600 1.6rem/1.1 var(--font-display)}.date-mon{font-size:.78rem}.date-note{font-size:.7rem;color:var(--muted);margin-top:4px}.date[aria-selected=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.date[aria-selected=true] .date-dow,.date[aria-selected=true] .date-note{color:inherit;opacity:.85}.date:disabled{opacity:.45;cursor:not-allowed;background:transparent}.date:not(:disabled):not([aria-selected=true]):hover{border-color:var(--primary)}.slots-title{font-size:1.3rem!important}.slots-title span{font-family:var(--font-body);font-size:.95rem;color:var(--muted);font-weight:500}.slot-group+.slot-group{margin-top:18px}.slot-group h3{font:600 .85rem var(--font-body);color:var(--muted);margin-bottom:8px}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.slot{padding:11px 6px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;font-weight:600;font-variant-numeric:tabular-nums}.slot:hover:not(:disabled){border-color:var(--primary);background:color-mix(in srgb,var(--accent) 30%,var(--surface))}.slot:disabled{text-decoration:line-through;color:var(--muted);opacity:.5;cursor:not-allowed;background:transparent}.empty{color:var(--muted);background:var(--surface);border:1.5px dashed var(--line);border-radius:var(--radius);padding:20px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-weight:600;font-size:.95rem}.opt{color:var(--muted);font-weight:400}input,select,textarea{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.field.invalid input{border-color:var(--danger)}.error{color:var(--danger);font-size:.85rem;min-height:1em}.form-error{color:var(--danger);font-weight:500;margin:0 0 12px;min-height:0}.form-error:empty{display:none}.done{text-align:center;max-width:520px;margin:24px auto 0}.tick svg{width:76px;height:76px}.tick circle{fill:none;stroke:var(--primary);stroke-width:3;stroke-dasharray:151;stroke-dashoffset:151;animation:draw .6s ease forwards}.tick path{fill:none;stroke:var(--primary);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:draw .4s .5s ease forwards}@keyframes draw{to{stroke-dashoffset:0}}.done h2{margin:12px 0 6px}.done-lead{color:var(--muted)}.receipt{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);padding:6px 20px;margin:24px 0}.receipt div{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}.receipt div:last-child{border-bottom:0}.receipt dt{color:var(--muted);font-size:.9rem}.receipt dd{margin:0;font-weight:600}.receipt .ref{font-variant-numeric:tabular-nums;letter-spacing:.04em}.done-actions{display:flex;flex-direction:column;gap:10px;align-items:stretch}.made-by{text-align:center;padding:20px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line)}@media(max-width:860px){.shell{grid-template-columns:minmax(0,1fr);min-height:0}.biz{padding:28px 20px 24px;gap:10px}.biz-mark{width:56px;height:56px;font-size:1.35rem}.biz-facts{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;font-size:.92rem}.flow{padding:28px 16px 48px}.steps{margin-bottom:24px}.service{padding:16px}.demo-switch{margin-left:0}}.admin{background:var(--bg)}.login{min-height:calc(100vh - 50px);display:grid;place-items:center;padding:24px 16px}.login-card{width:min(400px,100%);background:var(--surface);border:1.5px solid var(--line);border-radius:20px;padding:32px 28px}.login-card .biz-mark{margin-bottom:16px}.login-card h1{font-size:1.7rem;margin-bottom:4px}.login-card p{color:var(--muted);margin:0 0 20px}.hint{background:color-mix(in srgb,var(--accent) 35%,var(--surface));padding:10px 14px;border-radius:10px;font-size:.9rem;color:var(--ink)!important}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px clamp(16px,4vw,40px);background:var(--primary);color:var(--on-primary)}.topbar-brand{display:flex;align-items:center;gap:12px}.topbar .biz-mark{width:40px;height:40px;font-size:1rem}.topbar h1{font-size:1.3rem}.topbar small{display:block;opacity:.8;font-size:.8rem}.topbar-actions{display:flex;gap:8px;flex-wrap:wrap}.topbar .btn-ghost{border-color:color-mix(in srgb,var(--on-primary) 50%,transparent);color:var(--on-primary)}.topbar .btn-ghost:hover{background:color-mix(in srgb,var(--on-primary) 15%,transparent)}.dash{padding:24px clamp(16px,4vw,40px) 56px;max-width:1200px;margin:0 auto}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}.stat{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px}.stat h2{font:500 .85rem var(--font-body);color:var(--muted)}.stat p{margin:4px 0 0;font:600 1.8rem/1.2 var(--font-display);font-variant-numeric:tabular-nums}.stat:first-child{background:var(--ink);color:var(--bg);border-color:var(--ink)}.stat:first-child h2{color:inherit;opacity:.75}.tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--line);margin-bottom:20px;overflow-x:auto}.tabs button{background:none;border:0;padding:10px 16px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1.5px;white-space:nowrap}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--primary)}.panel[hidden]{display:none}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.seg{display:inline-flex;background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:3px}.seg button{border:0;background:none;padding:6px 14px;border-radius:999px;cursor:pointer;font-weight:600;color:var(--muted);font-size:.9rem}.seg button[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}.toolbar input[type=search]{flex:1;min-width:180px;max-width:320px;padding:9px 14px;border-radius:999px}.toolbar .btn{margin-left:auto}.day-group+.day-group{margin-top:22px}.day-group h3{font:600 1rem var(--font-body);margin-bottom:8px;display:flex;gap:10px;align-items:baseline}.day-group h3 span{color:var(--muted);font-weight:500;font-size:.88rem}.bk-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);overflow:hidden}.bk{display:grid;grid-template-columns:130px minmax(0,1.4fr) minmax(0,1fr) 290px;gap:8px 18px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.bk:last-child{border-bottom:0}.bk-time{font-weight:700;font-variant-numeric:tabular-nums}.bk-time small{display:block;font-weight:400;color:var(--muted);font-size:.8rem}.bk-who b{display:block}.bk-who a{font-size:.88rem;margin-right:10px}.bk-who .notes{display:block;color:var(--muted);font-size:.85rem;font-style:italic}.bk-what{font-size:.93rem}.bk-what small{display:block;color:var(--muted)}.bk-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.status{font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}.status.booked{background:color-mix(in srgb,var(--accent) 45%,var(--surface));color:var(--ink)}.status.completed{background:#dcf1e5;color:var(--ok)}.status.cancelled{background:#f9e0de;color:var(--danger)}.status.no_show{background:#fbefd2;color:var(--warn)}.bk.is-cancelled .bk-time,.bk.is-cancelled .bk-who b{text-decoration:line-through;color:var(--muted)}.icon-btn{border:1.5px solid var(--line);background:var(--surface);border-radius:8px;padding:5px 10px;font-size:.82rem;font-weight:600;cursor:pointer}.icon-btn:hover{border-color:var(--primary)}.empty-state{text-align:center;padding:40px 20px;color:var(--muted);background:var(--surface);border:1.5px dashed var(--line);border-radius:var(--radius)}.cards-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius);padding:22px}.card h2{font-size:1.3rem;margin-bottom:6px}.card>p{color:var(--muted);margin:0 0 16px}.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1;min-width:140px}.blocked-list{list-style:none;margin:0;padding:0}.blocked-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.blocked-list li:last-child{border-bottom:0}.blocked-list small{display:block;color:var(--muted)}.link-box{display:flex;gap:8px}.link-box input{font-size:.9rem}.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:14px}#qr{background:#fff;padding:14px;border-radius:12px;border:1.5px solid var(--line);line-height:0}#qr img,#qr canvas{width:200px;height:200px}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;font-weight:500;z-index:50}.toast.show{opacity:1;transform:translate(-50%)}.poster{display:none}@media print{body.printing>*:not(.poster){display:none!important}body.printing .poster{display:flex!important;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:18px;min-height:95vh;color:#000}.poster h1{font-size:40pt}.poster p{font-size:18pt;margin:0}.poster .poster-qr img,.poster .poster-qr canvas{width:9cm!important;height:9cm!important}.poster small{font-size:12pt}}@media(max-width:900px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.cards-2{grid-template-columns:1fr}.bk{grid-template-columns:96px minmax(0,1fr)}.bk-what{grid-column:2}.bk-actions{grid-column:1 / -1;justify-content:flex-start}.toolbar .btn{margin-left:0}}
