/* AutoBook app: gradient top bar, white working surface, bottom tab bar on phones, side rail on computers. */
:root{
  --coral:#FF7A6B;--pink:#E91E7A;--pink-deep:#C2105F;
  --grad:linear-gradient(135deg,var(--coral),var(--pink));
  --bg:#FFFFFF;--surface:#FFF7F9;--card:#FFFFFF;--ink:#24131D;--muted:#6D5763;--line:#F1DEE5;--chip:#FFE9EF;
  --ok:#1E8E5A;--ok-bg:#E8F7EF;--warn:#B76A00;--warn-bg:#FFF3DF;--bad:#C0263E;--bad-bg:#FDE8EC;
  --display:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --body:"Figtree","Segoe UI",system-ui,-apple-system,sans-serif;
  --r:16px;
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--body);-webkit-font-smoothing:antialiased;padding-top:env(safe-area-inset-top,0px)}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--coral);z-index:50}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--display);letter-spacing:-.02em;line-height:1.15;margin:0;text-wrap:balance}
p{margin:0}
a{color:var(--pink-deep)}
:focus-visible{outline:3px solid var(--pink);outline-offset:2px}
[dir="rtl"] body{direction:rtl}

.boot{height:100vh;display:grid;place-content:center;justify-items:center;gap:12px;background:var(--grad);color:#fff;font:800 26px var(--display)}
.boot img{width:64px;height:64px}

/* buttons & fields */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:13px 20px;font-weight:600;cursor:pointer;text-decoration:none;transition:transform .12s ease,opacity .12s}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.55;cursor:default}
.btn-grad{background:var(--grad);color:#fff;box-shadow:0 10px 24px -12px rgba(233,30,122,.7)}
.btn-ghost{background:var(--chip);color:var(--pink-deep)}
.btn-line{background:transparent;border:1.5px solid var(--line);color:var(--ink)}
.btn-block{width:100%}
.field{display:grid;gap:6px}
.field label{font-weight:600;font-size:14px}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--pink)}
.hint{color:var(--muted);font-size:14px}
.err{background:var(--bad-bg);color:var(--bad);border-radius:12px;padding:10px 14px;font-size:14.5px;font-weight:600}
.okmsg{background:var(--ok-bg);color:var(--ok);border-radius:12px;padding:10px 14px;font-size:14.5px;font-weight:600}

/* login */
.login{min-height:100vh;display:grid;grid-template-rows:auto 1fr;background:var(--surface)}
.login-top{background:var(--grad);color:#fff;padding:28px max(20px,env(safe-area-inset-left,0px)) 64px;display:grid;gap:14px;justify-items:center;text-align:center}
.login-top .logo{display:flex;align-items:center;gap:10px;font:800 26px var(--display)}
.login-top .logo img{width:40px;height:40px}
.login-top p{opacity:.92;max-width:34ch}
.login-card{align-self:start;background:var(--card);border-radius:24px;box-shadow:0 24px 60px -30px rgba(120,0,50,.35);padding:28px;margin:-40px auto 32px;width:min(420px,calc(100% - 32px));display:grid;gap:18px;align-content:start}
.login-card h1{font-size:26px}
.code-input{font:700 28px/1 var(--display)!important;letter-spacing:.5em;text-align:center;padding:14px!important;font-variant-numeric:tabular-nums}
.linkbtn{background:none;border:0;color:var(--pink-deep);font-weight:600;cursor:pointer;padding:4px;justify-self:center}

/* shell */
.shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}
.topbar{background:var(--grad);color:#fff;position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
.topbar-in{display:flex;align-items:center;gap:12px;padding:12px max(16px,env(safe-area-inset-right,0px)) 12px max(16px,env(safe-area-inset-left,0px))}
.topbar img{width:30px;height:30px}
.topbar .t{display:grid;line-height:1.2;min-width:0}
.topbar .t b{font:800 18px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .t small{opacity:.85;font-size:12.5px;font-weight:600}
.topbar .sp{flex:1}
.role-switch{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.45);color:#fff;border-radius:999px;padding:7px 12px;font-weight:600;font-size:13.5px}
.role-switch option{color:var(--ink)}
.main{padding:20px max(16px,env(safe-area-inset-right,0px)) 96px max(16px,env(safe-area-inset-left,0px));max-width:1080px;width:100%;margin:0 auto;display:grid;gap:18px;align-content:start}
.tabbar{position:fixed;inset:auto 0 0 0;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));z-index:20}
.tab{flex:1;display:grid;justify-items:center;gap:2px;background:none;border:0;padding:6px 4px;border-radius:12px;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}
.tab svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tab.on{color:var(--pink-deep);background:var(--chip)}
@media (min-width:900px){
  .shell{grid-template-columns:220px 1fr;grid-template-rows:auto 1fr}
  .topbar{grid-column:1/-1}
  .tabbar{position:sticky;top:calc(58px + env(safe-area-inset-top,0px));align-self:start;flex-direction:column;justify-content:flex-start;gap:4px;border-top:0;border-inline-end:1px solid var(--line);height:calc(100vh - 58px);padding:16px 12px}
  .tab{grid-template-columns:24px 1fr;justify-items:start;align-items:center;gap:12px;font-size:15px;padding:11px 14px;flex:none}
  .main{padding-bottom:40px}
}

/* content */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.page-head h1{font-size:28px}
.page-head p{color:var(--muted)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;display:grid;gap:12px;min-width:0}
.card h2{font-size:19px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:4px}
.tile b{font:800 32px/1 var(--display);font-variant-numeric:tabular-nums}
.tile span{color:var(--muted);font-weight:600;font-size:14px}
.tile.hot{background:var(--grad);color:#fff;border-color:transparent}
.tile.hot span{color:rgba(255,255,255,.9)}
.empty{border:1.5px dashed var(--line);border-radius:var(--r);padding:28px 20px;display:grid;gap:8px;justify-items:center;text-align:center;color:var(--muted)}
.empty .ic{width:52px;height:52px;border-radius:16px;background:var(--chip);display:grid;place-items:center}
.empty .ic svg{width:26px;height:26px;stroke:var(--pink);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.empty b{color:var(--ink);font-size:17px}
.soon{display:inline-block;background:var(--warn-bg);color:var(--warn);font-weight:700;font-size:12px;padding:3px 10px;border-radius:999px;letter-spacing:.02em}

.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}
table{width:100%;border-collapse:collapse;font-size:14.5px;font-variant-numeric:tabular-nums}
th,td{text-align:start;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
th{background:var(--surface);font-weight:700;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
tr:last-child td{border-bottom:0}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-weight:700;font-size:12.5px}
.pill.setup{background:var(--warn-bg);color:var(--warn)}
.pill.active{background:var(--ok-bg);color:var(--ok)}
.pill.paused,.pill.cancelled{background:var(--bad-bg);color:var(--bad)}
.pill.demo{background:var(--chip);color:var(--pink-deep)}

.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.list{display:grid;gap:0}
.list .li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14.5px}
.list .li:last-child{border-bottom:0}
.list .li span{color:var(--muted);flex:none}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:15px}
.kv dt{color:var(--muted);font-weight:600}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.code-chip{font:700 18px var(--display);letter-spacing:.06em;background:var(--chip);color:var(--pink-deep);padding:8px 14px;border-radius:12px;display:inline-block}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* stage 2: wizard, building screen, assistant card */
.pill.pending_payment{background:var(--warn-bg);color:var(--warn)}
.wz-page{min-height:100vh;background:var(--surface)}
.wz{max-width:720px;margin:0 auto;padding:22px max(16px,env(safe-area-inset-right,0px)) 120px max(16px,env(safe-area-inset-left,0px));display:grid;gap:16px}
.wz-head{display:grid;gap:8px}
.wz-head h1{font-size:28px}
.wz-bar{display:flex;gap:6px}
.wz-bar span{flex:1;height:6px;border-radius:999px;background:var(--line)}
.wz-bar span.on{background:var(--grad)}
.wz-body{gap:16px}
.wz-nav{display:flex;justify-content:space-between;gap:12px;position:sticky;bottom:0;background:linear-gradient(transparent,var(--surface) 30%);padding:18px 0 calc(10px + env(safe-area-inset-bottom,0px))}
.opt{color:var(--muted);font-weight:500}
.prefix{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.prefix span{padding:12px 4px 12px 14px;color:var(--muted);white-space:nowrap;font-size:14.5px}
.prefix input{border:0!important;padding-inline-start:2px!important;min-width:0;flex:1}
.prefix:focus-within{border-color:var(--pink)}
.slugst{font-size:13.5px;font-weight:600}
.slugst.ok{color:var(--ok)}.slugst.bad{color:var(--bad)}
.svc-list{display:grid;gap:10px}
.svc{display:grid;grid-template-columns:minmax(0,1fr) 92px 112px 28px;gap:8px;align-items:start}
.svc input{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:11px 12px;background:#fff;outline:none;min-width:0}
.svc input:focus{border-color:var(--pink)}
.svc .mini{display:grid;gap:2px}
.svc .mini small{color:var(--muted);font-size:12px;padding-inline-start:4px}
@media (max-width:520px){.svc{grid-template-columns:1fr 1fr 28px}.svc>input{grid-column:1/-1}}
.hours{display:grid;gap:4px}
.hrow{display:grid;grid-template-columns:150px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.hrow:last-child{border-bottom:0}
.hrow.off b{color:var(--muted)}
.hrow input[type=time]{border:1.5px solid var(--line);border-radius:10px;padding:8px;background:#fff;font-variant-numeric:tabular-nums}
.hrow input[type=time]:disabled{opacity:.4}
.hrow input[type=checkbox],.check input,.plan-opt input{width:20px;height:20px;accent-color:var(--pink);flex:none}
@media (max-width:520px){.hrow{grid-template-columns:1fr auto}.hrow>.row:nth-child(2){grid-column:1/-1;order:3}}
.plans-pick{display:grid;gap:10px}
.plan-opt{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;border:1.5px solid var(--line);border-radius:16px;padding:14px 16px;cursor:pointer;background:#fff}
.plan-opt:has(input:checked){border-color:var(--pink);box-shadow:0 0 0 3px var(--chip)}
.plan-opt b{font-size:17px}
.price-pick{display:flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}
.price-pick s{color:var(--muted)}
.price-pick b{font:800 24px var(--display)}
.price-pick small{color:var(--muted)}
.check{display:flex;gap:10px;align-items:flex-start;font-size:15px;cursor:pointer}
.build{justify-items:center;text-align:center;padding:36px 22px}
.build-ic{width:72px;height:72px;border-radius:22px;background:var(--grad);display:grid;place-items:center;box-shadow:0 14px 30px -14px rgba(233,30,122,.7)}
.build-ic img{width:44px;height:44px}
.build h1{font-size:26px}
.build-list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:10px;text-align:start;min-width:min(340px,100%)}
.build-list li{display:flex;gap:12px;align-items:center;color:var(--muted);font-weight:600}
.build-list li i{width:24px;height:24px;border-radius:50%;border:2px solid var(--line);flex:none;position:relative}
.build-list li.done{color:var(--ink)}
.build-list li.done i{background:var(--grad);border-color:transparent}
.build-list li.done i::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:13px;font-style:normal;font-weight:800}
.linkbox{background:var(--surface);border:1px dashed var(--pink);border-radius:12px;padding:10px 14px;font-weight:600;color:var(--pink-deep);overflow-wrap:anywhere;direction:ltr;text-align:start}

/* stage 3: fixes */
.field input.bad,.field select.bad,.field textarea.bad,.svc input.bad{border-color:var(--bad)!important;background:var(--bad-bg)}
.pair{display:grid;grid-template-columns:110px minmax(0,180px);gap:8px}
.pair select{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.field .hint{margin-top:-2px}
.btn.sm{padding:9px 16px;font-size:14.5px}
.btn-danger{background:var(--bad-bg);color:var(--bad)}
.icon-btn{width:38px;height:38px;border-radius:50%;border:1.5px solid var(--line);background:#fff;font-size:22px;line-height:1;cursor:pointer;display:grid;place-items:center;color:var(--ink)}
.icon-btn:hover{border-color:var(--pink)}
.stack{display:grid;gap:14px}

/* modal */
.modal-back{position:fixed;inset:0;background:rgba(36,19,29,.45);z-index:100;display:grid;place-items:end center;padding:0}
.modal{background:#fff;width:min(520px,100%);max-height:92vh;overflow:auto;border-radius:22px 22px 0 0;box-shadow:0 -20px 50px -20px rgba(0,0,0,.35);display:grid;grid-template-rows:auto 1fr auto}
@media (min-width:640px){.modal-back{place-items:center;padding:20px}.modal{border-radius:22px}}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 6px}
.modal-head h2{font-size:21px;overflow-wrap:anywhere}
.modal .x{background:var(--surface);border:0;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:15px;flex:none}
.modal-body{padding:10px 20px 18px}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:12px 20px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);flex-wrap:wrap}
.modal .field input,.modal .field select,.modal .field textarea{padding:11px 12px}
.movebox{background:var(--surface);border-radius:14px;padding:14px;display:grid;gap:12px}
.ac{position:relative}
.sugg{position:absolute;inset:100% 0 auto;z-index:5;background:#fff;border:1.5px solid var(--line);border-radius:12px;box-shadow:0 14px 30px -14px rgba(120,0,50,.35);overflow:hidden;margin-top:4px}
.sugg-i{display:flex;justify-content:space-between;gap:12px;width:100%;background:none;border:0;border-bottom:1px solid var(--line);padding:10px 12px;cursor:pointer;text-align:start}
.sugg-i:last-child{border-bottom:0}
.sugg-i:hover,.sugg-i:focus{background:var(--chip)}
.sugg-i span{color:var(--muted);font-size:13.5px}

/* booking colors */
.pill.bk-upcoming{background:#E7F0FF;color:#1F55C4}
.pill.bk-past{background:#F1EEF0;color:#6D5763}
.pill.bk-completed{background:var(--ok-bg);color:var(--ok)}
.pill.bk-no_show{background:var(--warn-bg);color:var(--warn)}
.pill.bk-cancelled{background:var(--bad-bg);color:var(--bad)}

/* calendar */
.cal-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.cal-nav{display:flex;align-items:center;gap:8px;min-width:0}
.cal-title{font-size:22px;margin-inline-start:6px}
.cal-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px}
.seg button{border:0;background:none;padding:7px 14px;border-radius:999px;font-weight:600;font-size:14px;cursor:pointer;color:var(--muted)}
.seg button.on{background:#fff;color:var(--pink-deep);box-shadow:0 2px 8px -3px rgba(120,0,50,.3)}
.cal-wrap{min-width:0}
.tg{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.tg-head{display:grid;border-bottom:1px solid var(--line);background:var(--surface)}
.tg-day{border:0;background:none;padding:8px 4px;display:grid;justify-items:center;gap:0;cursor:pointer;color:var(--muted);border-inline-start:1px solid var(--line)}
.tg-day small{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.tg-day b{font:800 19px var(--display);color:var(--ink);width:34px;height:34px;display:grid;place-items:center;border-radius:50%}
.tg-day.today b{background:var(--grad);color:#fff}
.tg-scroll{max-height:68vh;overflow-y:auto}
.tg-body{display:grid;position:relative}
.tg-gut{position:relative}
.tg-gut span{position:absolute;inset-inline-end:8px;transform:translateY(-50%);font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap}
.tg-gut span:first-child{transform:none}
.tg-col{position:relative;border-inline-start:1px solid var(--line)}
.tg-col.closed{background:repeating-linear-gradient(135deg,#FBF6F8 0 8px,#fff 8px 16px)}
.tg-col .hl{position:absolute;inset-inline:0;border-top:1px solid #F6EBEF;pointer-events:auto}
.tg-col .shut{position:absolute;inset-inline:0;background:rgba(241,222,229,.35)}
.tg-col .now{position:absolute;inset-inline:0;height:2px;background:var(--pink);z-index:3;pointer-events:none}
.tg-col .now::before{content:"";position:absolute;inset-inline-start:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--pink)}
.ev{position:absolute;z-index:2;border:0;border-radius:9px;padding:4px 7px;text-align:start;cursor:pointer;overflow:hidden;display:grid;align-content:start;gap:1px;font-size:12.5px;line-height:1.25;border-inline-start:4px solid}
.ev b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev span{opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.bk-upcoming{background:#E7F0FF;color:#173F96;border-color:#3D74E6}
.ev.bk-past{background:#F3F0F2;color:#5A4752;border-color:#B9A9B2}
.ev.bk-completed{background:var(--ok-bg);color:#14633F;border-color:var(--ok)}
.ev.bk-no_show{background:var(--warn-bg);color:#7A4700;border-color:var(--warn)}
.ev:hover{filter:brightness(.97);box-shadow:0 6px 14px -8px rgba(0,0,0,.35)}
.blk{position:absolute;inset-inline:2px;z-index:1;border:1px dashed #C9AEBB;border-radius:9px;background:repeating-linear-gradient(135deg,#F7EEF2 0 7px,#FDF9FA 7px 14px);color:var(--muted);font-size:12px;font-weight:700;padding:4px 7px;text-align:start;cursor:pointer;overflow:hidden}
.cal-foot{margin-top:8px}
.mg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.mg-h{background:var(--surface);padding:8px 6px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;text-align:center;border-bottom:1px solid var(--line)}
.mg-c{min-height:96px;border:0;border-bottom:1px solid var(--line);border-inline-end:1px solid var(--line);background:#fff;padding:6px;display:grid;align-content:start;gap:3px;text-align:start;cursor:pointer;min-width:0}
.mg-c:nth-child(7n+7){border-inline-end:0}
.mg-c b{font-size:14px;width:26px;height:26px;display:grid;place-items:center;border-radius:50%}
.mg-c.today b{background:var(--grad);color:#fff}
.mg-c.out{background:#FCFAFB;color:#B9A9B2}
.mg-c.closed:not(.out){background:#FCF8FA}
.mg-c.blocked{background:repeating-linear-gradient(135deg,#FBF4F7 0 7px,#fff 7px 14px)}
.mg-c:hover{background:var(--chip)}
.chipev{font-size:11.5px;font-weight:600;border-radius:6px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chipev.bk-upcoming{background:#E7F0FF;color:#173F96}
.chipev.bk-past{background:#F3F0F2;color:#5A4752}
.chipev.bk-completed{background:var(--ok-bg);color:#14633F}
.chipev.bk-no_show{background:var(--warn-bg);color:#7A4700}
.mg-c .more{font-size:11.5px;color:var(--muted);font-weight:700}
@media (max-width:640px){
  .cal-title{font-size:18px}
  .cal-top{gap:10px}
  .cal-actions{width:100%}
  .cal-actions .seg{order:-1}
  .mg-c{min-height:64px;padding:4px}
  .chipev{font-size:0;padding:0;height:6px;border-radius:3px}
  .tg-gut span{font-size:10.5px}
}

/* bookings table */
.req-bar{display:grid;gap:12px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.fchip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:7px 14px;font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;gap:8px;align-items:center;color:var(--ink)}
.fchip span{background:var(--surface);border-radius:999px;padding:0 8px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.fchip.on{border-color:var(--pink);background:var(--chip);color:var(--pink-deep)}
.fchip.on span{background:#fff;color:var(--pink-deep)}
.search{flex:1;min-width:200px;border:1.5px solid var(--line);border-radius:12px;padding:10px 14px;background:#fff;outline:none}
.search:focus{border-color:var(--pink)}
.src{border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.bk-table td{vertical-align:top}
.bk-table .sub{color:var(--muted);font-size:13px;margin-top:2px}
.bk-table tr.clickable{cursor:pointer}
.bk-table tr.clickable:hover td,.bk-table tr.clickable:focus td{background:var(--surface)}
.th-sort{background:none;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}
.src-tag{display:inline-block;font-size:12.5px;font-weight:700;padding:3px 9px;border-radius:999px}
.src-tag.bot{background:var(--chip);color:var(--pink-deep)}
.src-tag.you{background:#EEF3F1;color:#2F5C4B}
.main>*{min-width:0}
@media (max-width:640px){
  .chips{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding-inline:16px;scrollbar-width:none}
  .chips::-webkit-scrollbar{display:none}
  .fchip{flex:none}
  .req-bar .row{flex-wrap:wrap}
  .req-bar .search{min-width:0;flex:1 1 100%}
  .req-bar .src{flex:1}
  .bk-table,.bk-table tbody{display:block}
  .bk-table thead{display:none}
  .tbl-wrap:has(.bk-table){border:0;overflow:visible}
  .bk-table tr{display:grid;grid-template-columns:1fr auto;gap:4px 12px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;background:#fff}
  .bk-table td{display:block;border:0;padding:0;white-space:normal}
  .bk-table td:nth-child(1){grid-column:2;grid-row:1}
  .bk-table td:nth-child(2){grid-column:1;grid-row:1}
  .bk-table td:nth-child(3){grid-column:1/-1}
  .bk-table td:nth-child(4){grid-column:1;color:var(--muted);font-size:14px}
  .bk-table td:nth-child(5){grid-column:2;grid-row:3;align-self:center}
  .bk-table td:nth-child(6){grid-column:1/-1;font-size:13.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:6px;margin-top:4px}
  .bk-table td:nth-child(6) .sub{display:inline;margin-inline-start:6px}
  .bk-table td:nth-child(6) div:first-child{display:inline}
  .bk-table tr.clickable:hover td{background:none}
}

/* stage 4: assistant */
.as-wrap{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.as-wrap{grid-template-columns:minmax(0,1fr) 300px;align-items:start}}
.as-chat{padding:0;gap:0;overflow:hidden;display:grid;grid-template-rows:1fr auto;height:min(68vh,640px)}
.as-log{overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:10px;background:var(--surface)}
.as-hello{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:grid;gap:4px}
.as-tips{display:flex;gap:8px;flex-wrap:wrap}
.chip-s{border:1.5px solid var(--pink);background:#fff;color:var(--pink-deep);border-radius:999px;padding:8px 14px;font-weight:600;font-size:14px;cursor:pointer}
.chip-s:hover{background:var(--chip)}
.as-row{display:flex}
.as-row.user{justify-content:flex-end}
.as-b{max-width:82%;padding:10px 14px;border-radius:18px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15.5px;line-height:1.45}
.as-row.bot .as-b{background:#fff;border:1px solid var(--line);border-bottom-left-radius:6px}
.as-row.user .as-b{background:var(--grad);color:#fff;border-bottom-right-radius:6px}
.as-b.typing span{display:inline-block;width:7px;height:7px;margin:0 2px;border-radius:50%;background:#C9A9B8;animation:asb 1s infinite}
.as-b.typing span:nth-child(2){animation-delay:.15s}.as-b.typing span:nth-child(3){animation-delay:.3s}
@keyframes asb{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-5px)}}
.as-prop{align-self:stretch;background:#fff;border:2px solid var(--pink);border-radius:16px;padding:14px 16px;display:grid;gap:10px;max-width:560px;box-shadow:0 12px 26px -18px rgba(233,30,122,.8)}
.as-prop-h{font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--pink-deep)}
.as-prop ul{margin:0;padding-inline-start:20px;display:grid;gap:4px}
.as-prop.done{border-color:var(--ok);box-shadow:none}
.as-prop.off{border-color:var(--line);box-shadow:none;opacity:.7}
.as-form{padding:10px;border-top:1px solid var(--line);background:#fff}
.as-box{display:flex;gap:8px;align-items:flex-end;border:1.5px solid var(--line);border-radius:20px;padding:6px}
.as-box:focus-within{border-color:var(--pink)}
.as-in{flex:1;border:0;outline:0;resize:none;font-size:16px;padding:8px 10px;max-height:140px;background:transparent}
.as-send{width:40px;height:40px;border-radius:50%;border:0;background:var(--grad);color:#fff;font-size:18px;cursor:pointer;flex:none}
.as-send:disabled{opacity:.45}
.as-hist{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:10px}
.as-hist h2{font-size:17px}
.as-hi{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.as-hi:last-child{border-bottom:0}
.as-hi.off{opacity:.55;text-decoration:line-through}
.as-hi.off .hint{text-decoration:none}
@media (max-width:640px){.as-chat{height:calc(100vh - 290px);min-height:360px}}

/* stage 5: notifications */
.steps{background:var(--surface);border-radius:14px;padding:14px 16px;display:grid;gap:6px;font-size:14.5px}
.steps ol{margin:0;padding-inline-start:20px;display:grid;gap:4px}

/* stage 6: admin + partners */
.tile-btn{position:relative;text-align:start;cursor:pointer;font:inherit;color:inherit;transition:transform .12s ease,box-shadow .12s ease}
.tile-btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px -16px rgba(120,0,50,.45);border-color:var(--pink)}
.tile-btn .go{position:absolute;inset-inline-end:14px;top:14px;font-style:normal;color:var(--muted);font-weight:700}
.tile-btn.hot .go{color:#fff}
.adm-table td{vertical-align:top}
.adm-table .sub{color:var(--muted);font-size:13px;margin-top:2px}
.adm-table tr.clickable{cursor:pointer}
.adm-table tr.clickable:hover td,.adm-table tr.clickable:focus td{background:var(--surface)}
.owe{color:var(--pink-deep)}
.mini-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.mini-tiles>div{background:var(--surface);border-radius:12px;padding:10px 12px;display:grid;gap:2px}
.mini-tiles b{font:800 20px var(--display);font-variant-numeric:tabular-nums}
.mini-tiles span{color:var(--muted);font-size:12.5px;font-weight:600}
.quote{background:var(--surface);border-inline-start:3px solid var(--pink);border-radius:10px;padding:10px 12px;font-size:14.5px;white-space:pre-wrap}
.h3{font-size:16px;margin-top:4px}
.movebox input{border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;width:100%;min-width:0}
.partner-hero{justify-items:start}
.code-chip.big{font-size:28px;letter-spacing:.1em;padding:10px 18px}
.login-card.wide{width:min(560px,calc(100% - 32px))}
.linkbtn.sm{font-size:14px;font-weight:600;opacity:.9}
@media (max-width:640px){
  .adm-table,.adm-table tbody{display:block}
  .adm-table thead{display:none}
  .tbl-wrap:has(.adm-table){border:0;overflow:visible}
  .adm-table tr{display:grid;grid-template-columns:1fr auto;gap:4px 12px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;background:#fff}
  .adm-table td{display:block;border:0;padding:0;white-space:normal}
  .adm-table td:nth-child(1){grid-column:1}
  .adm-table td:nth-child(2){grid-column:2;grid-row:1}
  .adm-table td:nth-child(n+3){grid-column:1/-1;font-size:13.5px;color:var(--muted)}
}

/* ---------- stage 7 ---------- */
/* opening screen */
.splash{position:fixed;inset:0;z-index:200;background:var(--grad);color:#fff;display:grid;place-content:center;justify-items:center;gap:14px;transition:opacity .5s ease,visibility .5s}
.splash.out{opacity:0;visibility:hidden}
.sp-logo{display:flex;align-items:center;gap:14px;font:800 44px/1 var(--display);letter-spacing:-.03em}
.sp-logo img{width:58px;height:58px;animation:spPop .7s cubic-bezier(.2,1.4,.4,1) both}
.sp-logo span{animation:spIn .6s .25s ease-out both}
.sp-tag{font-size:16px;font-weight:600;opacity:.92;animation:spIn .6s .5s ease-out both}
.sp-bar{display:block;width:140px;height:4px;border-radius:9px;background:rgba(255,255,255,.3);overflow:hidden;margin-top:10px;animation:spIn .4s .7s both}
.sp-bar b{display:block;height:100%;width:40%;border-radius:9px;background:#fff;animation:spLoad 1.1s .8s ease-in-out infinite}
@keyframes spPop{from{transform:scale(.4) rotate(-12deg);opacity:0}to{transform:none;opacity:1}}
@keyframes spIn{from{transform:translateX(-14px);opacity:0}to{transform:none;opacity:1}}
@keyframes spLoad{0%{transform:translateX(-110%)}100%{transform:translateX(260%)}}
@media (max-width:480px){.sp-logo{font-size:36px}.sp-logo img{width:48px;height:48px}}
@media (prefers-reduced-motion:reduce){.sp-logo img,.sp-logo span,.sp-tag,.sp-bar,.sp-bar b{animation:none}}

/* jump to month / year */
.cal-title-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:4px 8px;border-radius:10px;cursor:pointer;color:inherit}
.cal-title-btn:hover{background:var(--chip)}
.cal-title-btn .caret{color:var(--pink-deep);font-size:14px}
.cal-title-btn .cal-title{margin-inline-start:0}

/* colors & marker */
.cbar{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:10px 12px;display:grid;gap:8px;margin:12px 0}
.cbar.active{border-color:var(--pink);box-shadow:0 0 0 3px var(--chip)}
.cbar-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cbar-t{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-inline-end:4px}
.cbar-sw{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sw{width:26px;height:26px;border-radius:50%;border:2px solid #fff;background:var(--c);box-shadow:0 0 0 1px rgba(0,0,0,.12);cursor:pointer;padding:0;flex:none}
.sw:hover{transform:scale(1.1)}
.sw.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--c);transform:scale(1.1)}
.sw-pick{position:relative;width:26px;height:26px;border-radius:50%;background:conic-gradient(#E91E7A,#F2C94C,#27AE60,#2D9CDB,#9B51E0,#E91E7A);display:grid;place-items:center;cursor:pointer;flex:none}
.sw-pick span{width:16px;height:16px;border-radius:50%;background:#fff;color:var(--ink);font:700 14px/16px var(--body);text-align:center}
.sw-pick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;border:0;padding:0}
.btn.sm.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px;color:var(--muted);font-weight:600}
.lg{display:inline-flex;align-items:center;gap:6px}
.lg i,.dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:none}
.cbar-on{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:#fff;border-radius:12px;padding:8px 10px;font-weight:600;font-size:14px}
.cbar-on span{display:inline-flex;align-items:center;gap:8px}
.marking .ev,.marking .chipev,.marking tr.clickable{cursor:crosshair}
.marking .tg-col{cursor:default}
.ev.colored{border-inline-start:4px solid}
.chipev.colored{border-inline-start:3px solid}
.bk-table tr.colored td{background:transparent}
.lbl-list{display:grid;gap:8px;max-height:46vh;overflow-y:auto;padding:2px}
.lbl-row{display:grid;grid-template-columns:44px 1fr auto;gap:8px;align-items:center}
.lbl-row input[type=color]{width:44px;height:40px;border:1.5px solid var(--line);border-radius:10px;padding:2px;background:#fff;cursor:pointer}
.lbl-row input:not([type=color]){border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;min-width:0}

/* settings */
.note-box{background:var(--warn-bg);color:#6A3D00;border-radius:12px;padding:12px 14px;display:grid;gap:4px}
.danger-text{color:var(--bad)}
.bul{margin:0;padding-inline-start:20px;display:grid;gap:6px}
.hr-list{display:grid;gap:4px;font-size:14.5px;max-width:420px}
.hr-line{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--line);padding:3px 0}
.hr-line b{font-weight:600}
.legal{display:grid;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.legal-a{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;text-decoration:none;color:var(--ink);font-weight:600;border-bottom:1px solid var(--line)}
.legal-a:last-child{border-bottom:0}
.legal-a:hover{background:var(--chip)}
.legal-a i{font-style:normal;color:var(--pink-deep);font-size:20px}
@media (max-width:640px){
  .cbar{padding:8px 10px;gap:6px;margin:10px 0}
  .cbar-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:3px 2px}
  .cbar-row::-webkit-scrollbar{display:none}
  .cbar-row .cbar-sw{flex-wrap:nowrap}
  .cbar-row .btn{white-space:nowrap;flex:none}
  .cbar-t{display:none}
}

/* ---------- stage 7b: calendar toolbar, events, summary, print ---------- */
.cal-tools{display:grid;gap:8px;margin-top:12px}
.tools-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tools-row .sp{flex:1}
.tools-search{position:relative;flex:1 1 240px;min-width:200px;margin:0}
.tools-search .search{width:100%}
.tools-search .sugg{max-height:320px;overflow-y:auto}
.tgl{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-weight:600;font-size:14px;cursor:pointer;color:var(--muted)}
.tgl i{width:28px;height:16px;border-radius:9px;background:#E7D9DF;position:relative;flex:none;transition:background .15s}
.tgl i::after{content:"";position:absolute;top:2px;inset-inline-start:2px;width:12px;height:12px;border-radius:50%;background:#fff;transition:inset-inline-start .15s}
.tgl.on{color:var(--pink-deep);border-color:var(--pink)}
.tgl.on i{background:var(--pink)}
.tgl.on i::after{inset-inline-start:14px}
.zoom{display:inline-flex;align-items:center;border:1.5px solid var(--line);border-radius:999px;background:#fff;overflow:hidden}
.zoom button{border:0;background:none;width:34px;height:32px;font-size:18px;font-weight:700;cursor:pointer;color:var(--pink-deep)}
.zoom button:disabled{color:#D5C6CD;cursor:default}
.zoom span{font-size:13px;font-weight:700;min-width:44px;text-align:center;color:var(--muted)}
.cbar-st{display:flex;flex-wrap:wrap;gap:6px}
.stm{border:1.5px solid transparent;border-radius:999px;padding:5px 12px;font-weight:700;font-size:13.5px;cursor:pointer}
.stm.st-completed{background:var(--ok-bg);color:var(--ok)}
.stm.st-no_show{background:var(--warn-bg);color:var(--warn)}
.stm.st-cancelled{background:var(--bad-bg);color:var(--bad)}
.stm.st-restore{background:#E7F0FF;color:#1F55C4}
.stm.on{border-color:currentColor;box-shadow:0 0 0 3px #fff inset}
.busy{opacity:.5;pointer-events:none}
.cal-sum{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;margin-bottom:12px}
.cal-sum:empty{display:none}
.sum-t{font:800 15px var(--display);margin-inline-end:4px}
.sum-i{display:inline-flex;align-items:baseline;gap:6px;font-size:14px;color:var(--muted)}
.sum-i b{font:800 18px var(--display);color:var(--ink)}
.sum-i.ok b{color:var(--ok)}.sum-i.warn b{color:var(--warn)}.sum-i.bad b{color:var(--bad)}
/* events */
.tg-allday{display:grid;border-bottom:1px solid var(--line);background:#fff}
.ad-l{font-size:11px;font-weight:700;color:var(--muted);padding:6px 6px;text-align:end;text-transform:uppercase;letter-spacing:.04em}
.ad-c{border-inline-start:1px solid var(--line);padding:4px;display:grid;gap:3px;align-content:start;min-width:0}
.ad-ev,.evt,.evc{border:0;border-inline-start:4px solid var(--c);border-radius:7px;padding:3px 7px;font-size:12px;font-weight:700;text-align:start;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ad-ev.soft,.evt.soft,.evc.soft{border-inline-start-style:dashed;outline:1px dashed var(--c);outline-offset:-1px}
.evt{position:absolute;inset-inline:2px;z-index:2;display:grid;align-content:start;gap:1px;white-space:normal}
.evt small{font-weight:600;opacity:.8}
.ev-shade{position:absolute;inset:0;background:var(--c);opacity:.07;pointer-events:none}
.mg-c .evc{display:block;font-size:11px;padding:2px 5px}
.ev.bk-cancelled{background:#FBEFF1;color:var(--bad);border-color:#E7A2AE;text-decoration:line-through;opacity:.8}
.chipev.bk-cancelled{background:#FBEFF1;color:var(--bad);text-decoration:line-through}
/* print: just the calendar or table */
@media print{
  body.print-cal .topbar,body.print-cal .tabbar,body.print-cal .cal-tools,body.print-cal .cbar,body.print-cal .cal-actions,body.print-cal .cal-nav>button,body.print-cal .req-bar,body.print-cal .caret,body.print-cal .splash{display:none!important}
  body.print-cal .main{padding:0!important;margin:0!important}
  body.print-cal .tg-scroll{max-height:none!important;overflow:visible!important}
  body.print-cal .shell{display:block!important}
  body.print-cal *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-cal .bk-table tr{break-inside:avoid}
}
@media (max-width:640px){
  .tools-row .sp{display:none}
  .tools-search{flex-basis:100%}
  .cal-sum{gap:6px 12px;padding:8px 12px}
}
.more-tools{display:none}
@media (max-width:640px){
  .more-tools{display:inline-flex}
  .main:not(.tools-open) .fold{display:none}
}
.client-search{position:relative;margin:4px 0 10px}
.client-search .search{width:100%;padding:13px 16px 13px 46px;font-size:16px;border-radius:14px;border-color:var(--pink)}
.client-search .search:focus{box-shadow:0 0 0 3px var(--chip)}
.cs-ic{position:absolute;inset-inline-start:14px;top:50%;transform:translateY(-50%);display:grid}
.cs-ic svg{width:22px;height:22px;stroke:var(--pink-deep);fill:none;stroke-width:2.2;stroke-linecap:round}
[dir=rtl] .client-search .search{padding:13px 46px 13px 16px}
.sw-open{width:30px;height:30px;border-radius:50%;border:0;padding:0;cursor:pointer;flex:none;background:conic-gradient(#E91E7A,#F2994A,#F2C94C,#27AE60,#2D9CDB,#3D5AFE,#9B51E0,#E91E7A);display:grid;place-items:center;box-shadow:0 0 0 2px #fff,0 0 0 3px rgba(0,0,0,.1);transition:transform .15s}
.sw-open:hover{transform:scale(1.08) rotate(20deg)}
.sw-open span{width:18px;height:18px;border-radius:50%;background:#fff;display:grid;place-items:center;font:800 16px/1 var(--body);color:var(--pink-deep)}
.sw-open:not(.on) span{width:12px;height:12px}

/* ---------- website demo ---------- */
.demo-bar{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;background:#24131D;color:#fff;font-size:14px;padding:8px 14px;text-align:center}
.demo-bar b{color:#FFB3CF}
.btn-white{background:#fff;color:var(--pink-deep)}
.cv-wrap{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:20px;align-items:start}
.cv-phone{background:var(--surface);border:6px solid #2A1A23;border-radius:30px;overflow:hidden;display:flex;flex-direction:column;height:640px;max-height:76vh}
.cv-top{display:flex;align-items:center;gap:10px;background:var(--grad);color:#fff;padding:12px 14px}
.cv-top b{display:block;font-size:15px}.cv-top small{font-size:12px;opacity:.9}
.cv-av{width:34px;height:34px;border-radius:50%;background:#fff;color:var(--pink-deep);display:grid;place-items:center;font-weight:800}
.cv-log{flex:1;overflow-y:auto;padding:14px;display:grid;gap:8px;align-content:start}
.cv-log .welcome{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.cv-log .welcome h1{font-size:22px;color:#111;margin:0 0 4px}
.cv-log .welcome p{color:var(--muted);font-size:14px}
.cv-log .as-b{white-space:pre-line}
.cv-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px}
.cv-chips:empty{display:none}
.cv-form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line);background:#fff}
.cv-in{flex:1;border:1.5px solid var(--line);border-radius:999px;padding:10px 14px;min-width:0;outline:none}
.cv-in:focus{border-color:var(--pink)}
@media (max-width:800px){.cv-wrap{grid-template-columns:1fr}.cv-side{order:-1}.cv-phone{height:560px}}
.as-b{white-space:pre-line}
.shell.is-demo{grid-template-rows:auto auto 1fr auto}
.shell.is-demo .demo-bar{grid-column:1/-1}
@media (min-width:900px){
  .shell.is-demo{grid-template-rows:auto auto 1fr}
  .shell.is-demo .tabbar{grid-row:3;grid-column:1;bottom:auto}
  .shell.is-demo .main{grid-row:3;grid-column:2}
}
.cv-chips{max-height:42%;overflow-y:auto}
.wz-who{display:flex;align-items:center;gap:10px}
.wz-who small{opacity:.9;font-size:13px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){.wz-who small{display:none}}
.linkbtn{text-decoration:none;display:inline-block;text-align:center}

/* welcome screen before sign-up */
.welcome-scr{min-height:100vh;background:var(--grad);color:#fff;display:grid;place-items:center;padding:40px 20px;position:relative;overflow:hidden}
.welcome-scr::before,.welcome-scr::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.welcome-scr::before{width:520px;height:520px;top:-180px;right:-160px}
.welcome-scr::after{width:380px;height:380px;bottom:-160px;left:-120px}
.wl-in{position:relative;max-width:640px;text-align:center;display:grid;gap:22px;justify-items:center;animation:wlIn .7s ease-out both}
.wl-logo{display:flex;align-items:center;gap:12px;font:800 28px var(--display)}
.wl-logo img{width:46px;height:46px}
.wl-in h1{font:800 clamp(40px,8vw,72px)/1.02 var(--display);letter-spacing:-.035em}
.wl-in h1 span{font-weight:500;opacity:.95}
.wl-sub{font-size:18px;opacity:.93;max-width:46ch}
.wl-ctas{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:6px}
.btn-white{background:#fff;color:var(--pink-deep)}
.wl-main{font-size:17px;padding:15px 28px;box-shadow:0 16px 34px -14px rgba(80,0,30,.55)}
.btn-ghost-w{background:rgba(255,255,255,.14);color:#fff;border:1.5px solid rgba(255,255,255,.6)}
.wl-facts{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:center;font-weight:600;font-size:14.5px;opacity:.95}
.wl-facts li::before{content:"\2713  "}
@keyframes wlIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.back-lnk{background:none;border:0;color:var(--muted);font-weight:600;font-size:14px;cursor:pointer;padding:0;justify-self:start}
.back-lnk:hover{color:var(--pink-deep)}

/* ---------- stage 8: compact toolbars, full-size calendar ---------- */
.main.wide{max-width:none;gap:10px;padding-top:12px}
.cal-top{gap:8px 14px}
.cal-title{font-size:20px}
.cal-sum{margin:0;padding:6px 12px;gap:4px 14px;background:transparent;border:0;flex:1;justify-content:center;flex-wrap:wrap}
.cal-sum .sum-t{display:none}
.sum-i{font-size:13px}.sum-i b{font-size:15px}
.cal-tools{margin-top:0}
.tools-row{flex-wrap:nowrap;gap:6px}
.tools-search{flex:1 1 200px;min-width:120px}
.tools-search .search{padding:8px 12px}
.btn.sm.on{background:var(--chip);color:var(--pink-deep);border-color:var(--pink)}
.icon-only{padding:6px 12px;font-size:18px;line-height:1}
.mk-wrap{display:inline-flex;gap:6px;align-items:center}
.mk-btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.mk-btn.on{background:#24131D;color:#fff;border-color:#24131D}
.sw-mini{width:14px;height:14px;border-radius:50%;background:conic-gradient(#E91E7A,#F2C94C,#27AE60,#2D9CDB,#9B51E0,#E91E7A);display:inline-block}
.popov{position:absolute;z-index:80;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 22px 48px -20px rgba(80,0,40,.45);padding:12px;display:grid;gap:8px;min-width:220px;max-width:calc(100vw - 16px)}
.popov.pop-colors{width:min(460px,calc(100vw - 16px));padding:4px}
.popov.pop-colors .cbar{margin:0;border:0;background:transparent}
.popov .cbar-sw{flex-wrap:wrap}
.popov .cbar-row{flex-wrap:wrap;overflow:visible}
.popov .src{width:100%}
.pop-t{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.pop-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:600;font-size:14px}
.pop-i{background:none;border:0;text-align:start;padding:10px 12px;border-radius:10px;font-weight:600;cursor:pointer}
.pop-i:hover{background:var(--chip)}
.tg{border-radius:14px}
.tg-scroll{max-height:none}
.ev .ev-staff{position:absolute;top:3px;inset-inline-end:3px;width:18px;height:18px;border-radius:50%;color:#fff;font:700 9px/18px var(--body);text-align:center;font-style:normal;opacity:.95}
.ev.arrived{box-shadow:inset 0 0 0 2px var(--ok)}
.ev.arrived b::after{content:" \2713";color:var(--ok)}
.ev.series b::before{content:"\21BB ";opacity:.7}
.ev.dragging{z-index:20;opacity:.92;box-shadow:0 14px 30px -10px rgba(0,0,0,.45);cursor:grabbing;transition:none}
.ev.dragging::after{content:attr(data-drop);position:absolute;bottom:100%;inset-inline-start:0;background:#24131D;color:#fff;font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;white-space:nowrap;margin-bottom:3px}
body.is-dragging{user-select:none;cursor:grabbing}
@media (pointer:fine){.ev{cursor:grab}}
.req-top{display:flex;align-items:center;gap:10px}
.req-h{font-size:22px;margin-inline-end:6px}
.req-top .client-search{flex:1;margin:0}
.req-top .client-search .search{padding:10px 14px 10px 42px;font-size:15px}
.req-row2{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.req-row2 .sp{flex:1}
.req-bar{gap:8px}
.lnk{background:none;border:0;padding:0;color:var(--pink-deep);font-weight:600;cursor:pointer;text-align:start;font-size:inherit}
.lnk.b{color:var(--ink);font-weight:700}
.lnk.b:hover{color:var(--pink-deep);text-decoration:underline}
.ok-t{color:var(--ok)!important;font-weight:700}
.arrived-pill{background:var(--ok-bg);color:var(--ok);margin-inline-start:6px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;vertical-align:middle}
/* messages */
.btn-wa{background:#25D366;color:#fff}
/* client card */
.cc-head{display:flex;gap:14px;align-items:center}
.cc-av{width:48px;height:48px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font:800 17px var(--display);flex:none}
.cc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cc-st{background:var(--surface);border-radius:12px;padding:10px;display:grid;text-align:center}
.cc-st b{font:800 18px var(--display)}.cc-st span{font-size:12.5px;color:var(--muted)}
.cc-st.warn b{color:var(--warn)}.cc-st.bad b{color:var(--bad)}
.cc-h{font-size:16px;margin-top:4px}
.cc-list{display:grid;gap:4px;max-height:240px;overflow-y:auto}
.cc-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;font-size:14px;padding:6px 2px;border-bottom:1px solid var(--line)}
.cc-sv{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.okmsg.sm{padding:4px 10px;font-size:13px}
/* waitlist */
.wl-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px}
.wl-add summary{cursor:pointer;font-weight:700;color:var(--pink-deep);padding:6px 0}
.wl-add .form-grid{margin:8px 0}
.wl-add input{border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;min-width:0;width:100%}
.empty.sm{padding:22px}
/* reports */
.tile small{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.bars{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;align-items:end;height:200px;padding-top:18px}
.bar-c{display:grid;grid-template-rows:auto 1fr auto;height:100%;align-items:end;justify-items:center;gap:4px}
.bar-c i{width:min(48px,80%);background:var(--grad);border-radius:8px 8px 3px 3px;align-self:end;min-height:2px}
.bar-v{font-size:11.5px;font-weight:700;color:var(--muted);align-self:end}
.bar-c small{font-size:12px;color:var(--muted);font-weight:600}
.rep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.rank{display:grid;gap:6px}
.rank-r{display:grid;grid-template-columns:22px 1fr auto auto;gap:10px;align-items:center;font-size:14px;padding:6px 0;border-bottom:1px solid var(--line)}
.rank-n{width:22px;height:22px;border-radius:50%;background:var(--chip);color:var(--pink-deep);font-weight:800;font-size:12px;display:grid;place-items:center}
.rank-r b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-r span{color:var(--muted);font-size:13px}.rank-v{font-weight:700;color:var(--ink)!important}
.dows{display:grid;gap:6px}
.dow-r{display:grid;grid-template-columns:38px 1fr 28px;gap:8px;align-items:center;font-size:13.5px;font-weight:600}
.dow-r i{height:12px;border-radius:6px;background:var(--grad);min-width:2px}
.dow-r b{text-align:end}
/* settings rows */
button.legal-a{width:100%;background:none;border:0;border-bottom:1px solid var(--line);font:inherit;font-weight:600;cursor:pointer;text-align:start}
.legal button.legal-a:last-child{border-bottom:0}
.legal.danger{border-color:#F3C9D1}
.legal.danger .legal-a{color:var(--bad)}
.legal.danger .legal-a i{color:var(--bad)}
@media (max-width:760px){
  .tools-row{flex-wrap:wrap}
  .tools-search{order:5;flex-basis:100%}
  .req-top{flex-wrap:wrap}.req-top .client-search{order:3;flex-basis:100%}
  .cc-stats{grid-template-columns:repeat(2,1fr)}
  .cal-sum{order:3;flex-basis:100%;justify-content:flex-start;padding:2px 0}
  .wl-row{flex-direction:column;align-items:stretch}
}
@media (max-width:600px){.demo-bar{font-size:12.5px;padding:6px 10px;gap:8px}.demo-bar .btn{padding:5px 12px}}

/* ---------- stage 9: support chat, admin assistant, ideas button ---------- */
.as-chat{position:relative}
.as-box{align-items:flex-end}
.as-tipbtn{flex:none;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--pink-deep);font-size:16px;cursor:pointer;display:grid;place-items:center;margin:2px}
.as-tipbtn:hover,.as-tipbtn.on{background:var(--chip);border-color:var(--pink)}
.as-tips-pop{position:absolute;inset-inline:12px;bottom:76px;z-index:6;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 40px -18px rgba(80,0,40,.45);padding:12px;display:grid;gap:8px;max-height:60%;overflow-y:auto}
.as-tips-pop .as-tips{display:flex;flex-wrap:wrap;gap:6px}
.admin-asst{min-height:min(70vh,640px);display:grid;grid-template-rows:1fr auto}
.sp-list{display:grid;gap:8px;align-content:start;max-height:min(52vh,460px);min-height:180px;overflow-y:auto;background:var(--surface);border-radius:14px;padding:12px}
.sp-list .as-b{display:grid;gap:4px}
.sp-time{font-size:11px;opacity:.7}
.sp-in{display:flex;gap:8px;align-items:flex-end}
.sp-in .as-in{flex:1;border:1.5px solid var(--line);border-radius:14px;padding:10px 12px;resize:none;min-height:46px}
.sp-wrap{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:14px;align-items:start}
.sp-threads{display:grid;gap:4px;padding:8px;max-height:72vh;overflow-y:auto}
.sp-th{display:grid;gap:2px;text-align:start;background:none;border:0;border-radius:12px;padding:10px 12px;cursor:pointer}
.sp-th:hover{background:var(--surface)}
.sp-th.on{background:var(--chip)}
.sp-th-t{display:flex;justify-content:space-between;gap:8px;align-items:center}
.sp-th-p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-badge{background:var(--pink);color:#fff;border-radius:999px;font-size:12px;font-weight:700;padding:1px 8px}
.sp-panel{display:grid;gap:10px}
.sp-panel .sp-list{max-height:58vh;min-height:300px}
.sp-info{font-size:15px}
@media (max-width:760px){.sp-wrap{grid-template-columns:1fr}.sp-threads{max-height:none}}

/* ---------- stage 12: roomier phone layout, scrollbars you can see, full-height calendar and table ---------- */
html,body{overflow-x:clip}
.shell{max-width:100vw}
.main{overflow-x:clip}
.m-only{display:none}
/* a row of buttons or chips that slides sideways instead of wrapping */
.hscroll{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;align-items:center;padding:2px 2px 4px}
.hscroll::-webkit-scrollbar{display:none}
.hscroll>*{flex:none;white-space:nowrap}
.vsep{width:1px;align-self:stretch;background:var(--line);margin:4px 2px}
/* our own horizontal scrollbar: visible, thick enough to grab, works with a finger */
.hbar{position:relative;height:14px;margin:6px 2px 0;border-radius:999px;background:#F3E7EC;touch-action:none;cursor:pointer}
.hbar.off{display:none}
.hbar-t{position:absolute;top:2px;left:0;height:10px;min-width:48px;border-radius:999px;background:linear-gradient(90deg,#F06A8A,#E91E7A);box-shadow:0 1px 3px rgba(120,0,50,.3);cursor:grab;touch-action:none}
.hbar.on .hbar-t,.hbar-t:active{cursor:grabbing;height:12px;top:1px}
@media (pointer:coarse){.hbar{height:18px}.hbar-t{top:3px;height:12px}.hbar.on .hbar-t{height:14px;top:2px}}
/* desktop scrollbars inside the calendar and table: wide and easy to drag */
.tg-scroll,.tbl-scroll{scrollbar-width:auto;scrollbar-color:#E2BFCD #FBF5F7}
.tg-scroll::-webkit-scrollbar,.tbl-scroll::-webkit-scrollbar{width:13px;height:13px}
.tg-scroll::-webkit-scrollbar-track,.tbl-scroll::-webkit-scrollbar-track{background:#FBF5F7}
.tg-scroll::-webkit-scrollbar-thumb,.tbl-scroll::-webkit-scrollbar-thumb{background:#E2BFCD;border-radius:9px;border:3px solid #FBF5F7}
.tg-scroll::-webkit-scrollbar-thumb:hover,.tbl-scroll::-webkit-scrollbar-thumb:hover{background:#D597AE}
@media (pointer:coarse){.tg-scroll,.tbl-scroll{scrollbar-width:none}.tg-scroll::-webkit-scrollbar:horizontal,.tbl-scroll::-webkit-scrollbar:horizontal{height:0}}

/* calendar: one box that scrolls both ways; day names stay on top, hours stay on the side */
.tg{overflow:hidden}
.tg-scroll{overflow:auto;max-height:none;overscroll-behavior:contain;position:relative}
.tg-head{position:sticky;top:0;z-index:6}
.tg-head .tg-corner{position:sticky;left:0;z-index:7;background:var(--surface)}
.tg-allday{position:sticky;top:var(--tgh,58px);z-index:5}
.ad-l{position:sticky;left:0;z-index:6;background:#fff}
.tg-gut{position:sticky;left:0;z-index:4;background:#fff;border-inline-end:1px solid var(--line)}
.tg-day{min-width:0}
.ev{font-size:13px;padding:5px 8px}
.ev b{font-size:13px}
.mg{grid-template-rows:auto;grid-auto-rows:1fr}
.cal-tools{display:flex;align-items:center;gap:8px}
.cal-tools .tools-row{flex:1 1 auto;min-width:0}
.cal-tools .tools-search{flex:0 1 320px}
@media (max-width:760px){
  .cal-tools{display:grid;gap:6px}
  .cal-tools .tools-search{display:none;flex:none;order:0}
  .cal-tools.search-open .tools-search{display:block}
  .m-only{display:inline-flex}
  .tools-row{flex-wrap:nowrap}
}
@media (max-width:640px){
  .main.wide{padding-top:10px;gap:8px}
  .cal-top{display:grid;grid-template-columns:1fr;gap:6px}
  .cal-nav{gap:6px;flex-wrap:nowrap}
  .cal-nav .btn{padding:6px 12px}
  .cal-title-btn{padding:2px 4px;min-width:0}
  .cal-title{font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cal-actions{width:auto;display:flex;justify-content:space-between;gap:8px}
  .cal-actions .seg button{padding:6px 14px}
  .cal-sum{order:3;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;justify-content:flex-start;gap:14px;padding:0 2px;white-space:nowrap}
  .cal-sum::-webkit-scrollbar{display:none}
  .sum-i{flex:none}
  .tools-row .btn{padding:7px 13px}
  .tg-day{padding:7px 2px}
  .tg-day b{width:32px;height:32px;font-size:17px}
  .tg-gut span{font-size:11px;inset-inline-end:6px}
  .ev{font-size:12.5px;padding:4px 7px;border-radius:8px}
  .mg-c{min-height:0}
}

/* bookings: a real table on every screen, roomy rows, scrolls sideways with a scrollbar under it */
.req-top{justify-content:space-between}
.req-bar>.client-search{margin:0}
.req-row2.hscroll{gap:8px}
.req-row2 .fchip{padding:8px 15px}
.tbl-box{border:1px solid var(--line);border-radius:var(--r);background:#fff;overflow:hidden}
.tbl-scroll{overflow:auto;overscroll-behavior:contain;position:relative;min-height:280px}
.tbl-scroll .empty{position:sticky;left:0;width:min(100%,100vw - 40px);margin:24px auto}
.bk-table{min-width:1040px;width:100%;border-collapse:separate;border-spacing:0}
.bk-table th{position:sticky;top:0;z-index:3;background:var(--surface);text-align:start;font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.bk-table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14.5px;line-height:1.35;background:#fff}
.bk-table tr:last-child td{border-bottom:0}
.bk-table .stick{position:sticky;left:0;z-index:2;box-shadow:1px 0 0 var(--line)}
.bk-table th.stick{z-index:4}
.bk-table td.stick{background:#fff}
.bk-table tr.colored td.stick{background:inherit}
.bk-table .num{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
.bk-table .note-c{max-width:220px;min-width:140px}
.bk-table .note-c span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bk-table tr.clickable:hover td{background:var(--surface)}
.cl-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ctag{display:inline-flex;align-items:center;font-size:11.5px;font-weight:800;border-radius:999px;padding:2px 9px;white-space:nowrap;letter-spacing:.01em}
.ctag.new{background:#E5F7EE;color:#137A4A}
.ctag.ret{background:#EEE9FB;color:#5B3FB8}
.cc-head .ctag{margin-bottom:4px}
.tbl-count{margin:6px 2px 0}
.warn-t{color:var(--warn);font-weight:700}
@media (max-width:640px){
  .tbl-box{border-radius:14px}
  .bk-table{min-width:980px}
  .bk-table td{padding:14px 14px;font-size:14.5px}
  .bk-table th{padding:11px 14px}
  .bk-table tr{display:table-row;border:0;padding:0;margin:0;background:none}
  .req-h{font-size:22px}
  .req-row2.hscroll{margin-inline:-16px;padding-inline:16px}
}
/* booking history in the details window */
.ap-hist summary{cursor:pointer;font-weight:700;color:var(--pink-deep);padding:4px 0}
.hist-list{margin:6px 0 0;padding-inline-start:20px;display:grid;gap:8px;font-size:14px}

/* assistant: the chat gets the full width; recent changes open from a button */
.main.as-page{max-width:1180px}
.as-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.as-top h1{margin:0}
.as-top .hint{margin:4px 0 0}
.as-acts{display:flex;gap:8px;flex-wrap:wrap}
.as-wrap{grid-template-columns:minmax(0,1fr)!important}
.as-chat{height:auto;min-height:380px}
.as-log{padding:22px}
.ch-n{background:var(--pink);color:#fff;border-radius:999px;font-size:11.5px;font-weight:800;padding:0 7px;margin-inline-start:6px;line-height:18px}
.modal .as-hist .list{gap:10px}
.rate-btn{position:relative}
.rate-btn.due::after{content:"";position:absolute;top:3px;inset-inline-end:3px;width:9px;height:9px;border-radius:50%;background:var(--pink);box-shadow:0 0 0 2px #fff}
@media (max-width:640px){
  .as-top{gap:8px}
  .as-top .hint{display:none}
  .as-acts{width:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .as-acts::-webkit-scrollbar{display:none}
  .as-acts .btn{flex:none;white-space:nowrap}
  .as-log{padding:14px}
}
/* rating */
.stars{display:flex;gap:6px;justify-content:center}
.stars button{border:0;background:none;font-size:38px;line-height:1;color:#E6D3DB;cursor:pointer;padding:2px;transition:transform .12s,color .12s}
.stars button.on{color:#F5A623}
.stars button:hover{transform:scale(1.12)}
.star-l{text-align:center;font-weight:700}
.fb-row{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.fb-row:last-child{border-bottom:0}
.fb-row p{margin:4px 0}
.fb-row.low .fb-st{color:var(--bad)}
.fb-st{color:#F5A623;font-size:16px;letter-spacing:1px;white-space:nowrap}
.tile.warn b{color:var(--warn)}
/* invite, deposits, account */
.code-big{font:800 26px var(--display);letter-spacing:.06em;color:var(--pink-deep);background:var(--chip);border:1.5px dashed var(--pink);border-radius:14px;padding:10px 16px;text-align:center;direction:ltr}
.inv-edit summary,.acc-danger summary{cursor:pointer;font-weight:700;color:var(--muted);padding:6px 0}
.acc-danger summary{color:var(--bad)}
.acc-danger{border-top:1px solid var(--line);padding-top:8px}
.acc-row{margin-top:12px}
.acc-sub{display:block;font-weight:500;margin-top:2px}
.dp-svcs{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px}
.check.sm{font-size:14px}
.dp-u{white-space:nowrap}
.muted{color:var(--muted)}
/* bottom tab bar sits right on the bottom edge */
@media (max-width:899px){
  .tabbar{bottom:0;padding-bottom:max(6px,env(safe-area-inset-bottom,0px))}
  .tabbar .tab{min-width:0;flex:1 1 0}
  .tabbar .tab span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
}
@media (max-width:640px){
  .bk-table{display:table}
  .bk-table thead{display:table-header-group}
  .bk-table tbody{display:table-row-group}
  .bk-table td,.bk-table td:nth-child(n){display:table-cell;grid-column:auto;grid-row:auto;border-top:0;margin-top:0;padding-top:14px;color:inherit;font-size:14.5px;align-self:auto;white-space:normal}
  .bk-table td:nth-child(n) .sub{display:block;margin-inline-start:0}
  .bk-table td:nth-child(n) div:first-child{display:block}
  .bk-table td .cl-line{display:flex!important}
}
.icon-only svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;display:block}
.tg-scroll::-webkit-scrollbar:horizontal,.tbl-scroll::-webkit-scrollbar:horizontal{height:0}
.bk-table .stick{min-width:150px;white-space:nowrap}
.bk-table td:nth-child(2){min-width:210px}
.bk-table td:nth-child(4){min-width:190px}
.cc-head>div>.ctag{display:table;margin-bottom:4px}
.mg-c .more{white-space:nowrap;font-size:11px}
/* ---------- stage 12b: calendar laid out like Google Calendar ---------- */
.cal-page .cal-top{display:grid;grid-template-columns:1fr;gap:10px}
.cal-bar{display:flex;align-items:center;gap:6px;min-width:0}
.cal-bar .sp{flex:1}
.cal-bar .cal-title-btn{min-width:0}
.cal-bar .cal-title{font-size:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-bar .icon-btn{width:40px;height:40px;display:grid;place-items:center;font-size:20px;flex:none}
.cal-bar .icon-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round}
.cal-menu.on{background:var(--chip);color:var(--pink-deep);border-color:var(--pink)}
.cal-today{flex:none;width:36px;height:38px;border:2px solid var(--ink);border-radius:9px;background:#fff;font:800 15px var(--display);cursor:pointer;position:relative;padding-top:4px;color:var(--ink)}
.cal-today::before{content:"";position:absolute;top:5px;inset-inline:5px;height:2px;background:var(--ink);border-radius:2px}
.cal-today:hover{background:var(--chip)}
.cal-views{display:grid;grid-template-columns:repeat(3,1fr);width:100%;padding:4px}
.cal-views button{padding:10px 0;font-size:15px}
.cal-months{gap:8px;margin-inline:-4px;padding-inline:4px}
.cm{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:7px 16px;font-weight:600;font-size:14px;cursor:pointer;color:var(--ink)}
.cm.on{background:var(--grad);color:#fff;border-color:transparent}
.cm-year{font:800 15px var(--display);color:var(--muted);padding:0 4px}
.cal-panel{display:none;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.cal-panel.open{display:grid}
.cal-panel .cal-sum{justify-content:flex-start}
.cal-fab{position:fixed;inset-inline-end:20px;bottom:calc(96px + env(safe-area-inset-bottom,0px));z-index:40;width:60px;height:60px;border-radius:18px;border:0;background:var(--grad);color:#fff;font-size:34px;line-height:1;cursor:pointer;box-shadow:0 14px 28px -10px rgba(200,20,90,.6)}
.cal-fab:hover{filter:brightness(1.05)}
@media (min-width:900px){.cal-fab{bottom:28px;inset-inline-end:28px}}
/* bigger month grid with readable bookings */
.cal-page .mg-c{min-height:110px;padding:6px 4px;gap:3px}
.cal-page .mg-c b{font-size:14px}
.cal-page .chipev{font-size:11.5px;height:auto;padding:2px 5px;border-radius:5px}
@media (max-width:640px){
  .cal-bar .cal-title{font-size:20px}
  .cal-bar{gap:4px}
  .cal-bar .icon-btn{width:36px;height:36px}
  .cal-page .chipev{font-size:10.5px;padding:1px 3px}
  .cal-page .mg-c{min-height:88px;padding:4px 2px}
  .cal-page .mg-h{padding:8px 2px}
}
/* stage 12c: months collapsed to one, bottom scrollbars everywhere */
.cal-months.closed{display:flex;align-items:center;gap:8px}
.cm-tg{flex:none;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line);background:#fff;font-size:20px;line-height:1;cursor:pointer;color:var(--pink-deep);display:grid;place-items:center}
.cm-tg:hover{background:var(--chip);border-color:var(--pink)}
.mg-scroll{overflow:auto;overscroll-behavior:contain;border-radius:var(--r);scrollbar-width:auto;scrollbar-color:#E2BFCD #FBF5F7}
.mg-scroll::-webkit-scrollbar{width:13px;height:0}
.mg-scroll::-webkit-scrollbar-thumb{background:#E2BFCD;border-radius:9px;border:3px solid #FBF5F7}
.mg-scroll::-webkit-scrollbar-track{background:#FBF5F7}
.cal-page .mg{min-width:980px}
@media (max-width:640px){.cal-page .mg{min-width:0}}
.hbar{height:16px}
.hbar-t{height:12px}
/* ---------- stage 12d: page scrolls, full day, calendars slide sideways, gray bars ---------- */
.cm,.cm-tg,.fchip,.seg button,.tg-day{user-select:none;-webkit-user-select:none}
.cal-months{display:flex;align-items:center;gap:8px;min-width:0}
.cal-months.closed .cm-strip{flex:none}
.cal-months.open .cm-strip{flex:1 1 auto;min-width:0}
.cm-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth}
.cm-strip::-webkit-scrollbar{display:none}
.cm-strip .cm{flex:none}
.cm-yr{flex:none;border:1.5px solid var(--line);border-radius:999px;padding:7px 12px;background:#fff;font-weight:700;font-size:14px;color:var(--ink);cursor:pointer}
/* the calendar box grows with the day; the page scrolls */
.tg{overflow:visible;border-radius:14px}
.tg-headbox{position:sticky;top:calc(58px + env(safe-area-inset-top,0px));z-index:8;overflow-x:auto;scrollbar-width:none;background:var(--surface);border-radius:14px 14px 0 0;border-bottom:1px solid var(--line)}
.tg-headbox::-webkit-scrollbar{display:none}
.tg-headbox .tg-head{position:static;border-bottom:0}
.tg-headbox .tg-allday{position:static;border-top:1px solid var(--line);border-bottom:0}
.tg-scroll{overflow-x:auto;overflow-y:hidden;height:auto!important;max-height:none;scrollbar-width:none}
.tg-scroll::-webkit-scrollbar{display:none}
.tg-head .tg-corner,.ad-l{position:sticky;left:0;z-index:2}
.mg-scroll{height:auto!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.mg-scroll::-webkit-scrollbar{display:none}
.cal-page .mg{min-width:1200px}
@media (max-width:640px){.cal-page .mg{min-width:760px}}
.tbl-scroll{height:auto!important}
/* the bottom scrollbar: same gray as the browser's side scrollbar, always stuck to the bottom of the screen */
.hbar{position:sticky;bottom:var(--bb,8px);z-index:9;height:16px;margin:6px 0 0;background:#EEEEF1;border:1px solid #DDDDE2;border-radius:999px;box-shadow:0 -6px 14px -8px rgba(0,0,0,.15)}
.hbar-t{top:2px;height:10px;background:#A3A6AE;box-shadow:none}
.hbar-t:hover,.hbar.on .hbar-t{background:#7E828C}
@media (pointer:coarse){.hbar{height:20px}.hbar-t{top:3px;height:12px}}
/* the + button sits above the bar */
.cal-fab{bottom:calc(120px + env(safe-area-inset-bottom,0px))}
@media (min-width:900px){.cal-fab{bottom:60px}}
.main.cal-page{padding-bottom:120px}
/* zoom: 100% fits the screen */
.cal-page .mg{min-width:0}
@media (max-width:640px){.cal-page .mg{min-width:0}}
.cal-zoom{flex:none;margin-inline-start:auto}
.cal-zoom .z-v{width:auto;min-width:50px;font-size:13px;font-weight:700;color:var(--muted)}
.cal-months{flex-wrap:nowrap}
.tight .ev{padding:2px 3px;font-size:10px;border-inline-start-width:3px}
.tight .ev b{font-size:10px}
.tight .ev span,.tight .ev .ev-staff{display:none}
.tight .tg-day small{font-size:10px}
.tight .tg-day b{font-size:15px;width:28px;height:28px}
.tight .evt{font-size:10px;padding:2px 3px}
@media (max-width:640px){.cm-yr{padding:7px 8px}.cal-months{gap:6px}.cal-zoom button{width:30px}.cal-zoom .z-v{min-width:44px}}
