/* Plumby booking calendar (booking.js). Colours come from the page: --accent, --text, --muted, --faint, --line, --line-2, --h.
   Per page: --bk-on (text on the accent), --bk-btn (primary button background), --bk-base (panel base colour). */
.bk{--bk-on:#fff;--bk-btn:linear-gradient(180deg,oklch(.6 .19 var(--h)),oklch(.5 .19 var(--h)));--bk-base:oklch(.15 .025 var(--h));
  display:grid;grid-template-columns:280px minmax(0,1fr);width:100%;min-height:500px;text-align:left;color:var(--text);
  border:1px solid var(--line-2);border-radius:22px;overflow:hidden;
  background:linear-gradient(180deg,oklch(1 0 0 / .045),oklch(1 0 0 / .015)),var(--bk-base);
  box-shadow:inset 0 1px 0 oklch(1 0 0 / .06),0 40px 90px -40px oklch(0 0 0 / .8)}
.bk button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
.bk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* left: what you're booking */
.bk-info{padding:28px 26px;border-right:1px solid var(--line)}
.bk-mark{display:block;width:40px;height:40px;object-fit:contain}
.bk-org{display:block;margin-top:14px;font-size:.85rem;color:var(--faint)}
.bk-title{margin:2px 0 0;font:600 1.3rem/1.25 var(--font-body);letter-spacing:-.015em}
.bk-text{margin:.75rem 0 0;color:var(--muted);font-size:.9rem;line-height:1.55}
.bk-meta{list-style:none;margin:1.4rem 0 0;padding:0;display:grid;gap:.7rem;font-size:.9rem}
.bk-meta li{display:flex;align-items:center;gap:.6rem;min-width:0}
.bk-meta li[hidden]{display:none}
.bk-meta svg{width:17px;height:17px;flex:none;color:var(--faint)}
.bk-when span{color:var(--text);font-weight:500}
.bk-tz{position:relative}
.bk-tz-btn{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;padding:3px 8px 3px 6px!important;margin-left:-6px!important;border-radius:8px;font-size:.88rem;color:var(--muted)!important;transition:background-color .2s,color .2s}
.bk-tz-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-tz-btn svg{width:15px!important;height:15px!important;flex:none;transition:transform .25s var(--ease)}
.bk-tz-btn:hover,.bk-tz-btn[aria-expanded="true"]{color:var(--text)!important;background:oklch(1 0 0 / .06)!important}
.bk-tz-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.bk-tz-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.bk-tz-pop{position:absolute;z-index:5;left:0;bottom:calc(100% + 8px);width:300px;max-width:calc(100vw - 48px);padding:8px;border-radius:14px;border:1px solid var(--line-2);
  background:linear-gradient(180deg,oklch(1 0 0 / .05),oklch(1 0 0 / .02)),var(--bk-base);box-shadow:0 24px 60px -18px oklch(0 0 0 / .85);animation:bk-in .2s var(--ease) both}
.bk-tz-pop[hidden]{display:none}
.bk-tz-pop input{width:100%;font:inherit;font-size:.88rem;color:var(--text);background:oklch(0 0 0 / .25);border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;outline:none;transition:border-color .2s}
.bk-tz-pop input:focus{border-color:var(--accent)}
.bk-tz-pop input::placeholder{color:var(--faint)}
.bk-tz-pop input::-webkit-search-cancel-button{display:none}
.bk-tz-list{max-height:260px;overflow:auto;margin-top:6px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.bk-tz-list button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:8px 10px!important;border-radius:9px;text-align:left;transition:background-color .15s}
.bk-tz-list button:hover,.bk-tz-list button:focus-visible{background:oklch(1 0 0 / .06)!important;outline:none}
.bk-tz-list button[aria-selected="true"]{background:oklch(1 0 0 / .08)!important}
.bk-tz-list button[aria-selected="true"] b{color:var(--accent)}
.bk-tz-list span{display:grid;min-width:0}
.bk-tz-list b{font-weight:500;font-size:.88rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-tz-list i{font-style:normal;font-size:.74rem;color:var(--faint)}
.bk-tz-list em{flex:none;font-style:normal;font-size:.76rem;color:var(--faint);font-variant-numeric:tabular-nums}
.bk-tz-list p{margin:10px;color:var(--faint);font-size:.86rem}

/* right: month + times */
.bk-main{position:relative;min-width:0}
.bk-pick{display:grid;grid-template-columns:minmax(0,1fr) 230px;height:100%;animation:bk-in .35s var(--ease) both}
.bk-cal{padding:26px 26px 22px;transition:opacity .25s}
.bk-cal.busy{opacity:.55}
.bk-month{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.bk-month b{font-weight:600;font-size:1.02rem;letter-spacing:-.01em}
.bk-nav{display:flex;gap:4px}
.bk-nav button{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;color:var(--muted);transition:background-color .2s,color .2s}
.bk-nav button:hover:not(:disabled){background:oklch(1 0 0 / .06);color:var(--text)}
.bk-nav button:disabled{opacity:.3;cursor:default}
.bk-nav svg{width:18px;height:18px}
.bk-week,.bk-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.bk-week span{text-align:center;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);padding-bottom:6px}
.bk-day{position:relative;aspect-ratio:1;max-height:58px;width:100%;border-radius:12px;font-size:.92rem;color:var(--faint);transition:background-color .2s,color .2s,box-shadow .2s}
.bk-day:disabled{cursor:default}
.bk-day.open{color:var(--text);font-weight:600;background:oklch(1 0 0 / .055)}
.bk-day.open:hover{background:oklch(1 0 0 / .1)}
.bk-day.today::after{content:"";position:absolute;left:50%;bottom:7px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--accent)}
.bk-day.on{background:var(--accent);color:var(--bk-on)}
.bk-day.on:hover{background:var(--accent)}
.bk-day.on.today::after{background:var(--bk-on)}
.bk-day:focus-visible,.bk-slot:focus-visible,.bk-nav button:focus-visible,.bk-fmt button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.bk-times{display:flex;flex-direction:column;min-height:0;padding:26px 20px 22px;border-left:1px solid var(--line)}
.bk-times-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px;min-height:34px}
.bk-times-head b{font-weight:600;font-size:.98rem}
.bk-fmt{display:flex;padding:3px;border-radius:9px;background:oklch(1 0 0 / .05)}
.bk-fmt button{padding:4px 9px;border-radius:7px;font-size:.78rem;font-weight:500;color:var(--faint);transition:background-color .2s,color .2s}
.bk-fmt button[aria-pressed="true"]{background:oklch(1 0 0 / .1);color:var(--text)}
.bk-slots{display:grid;gap:8px;align-content:start;overflow:auto;max-height:384px;padding:2px 4px 2px 2px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.bk-slot{height:44px;border-radius:11px;border:1px solid var(--line-2);background:oklch(1 0 0 / .03)!important;font-size:.92rem;font-weight:600;letter-spacing:.01em;transition:border-color .2s,background-color .2s,color .2s;animation:bk-in .3s var(--ease) both}
.bk-slot:hover{border-color:var(--accent);background:oklch(1 0 0 / .07)!important}
.bk-empty{margin:4px 0 0;color:var(--faint);font-size:.9rem}
.bk-link{color:var(--text)!important;text-decoration:underline;text-underline-offset:3px}
.bk-dots{display:flex;gap:7px;padding:14px 4px}
.bk-dots span{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:bk-dot 1s var(--ease) infinite}
.bk-dots span:nth-child(2){animation-delay:.15s}.bk-dots span:nth-child(3){animation-delay:.3s}

/* step 2: details */
.bk-form{padding:24px 28px 26px;animation:bk-in .35s var(--ease) both}
.bk-back{display:inline-flex;align-items:center;gap:4px;margin:0 0 16px -4px;padding:4px 8px 4px 4px!important;border-radius:8px;font-size:.88rem;color:var(--muted)!important;transition:color .2s,background-color .2s}
.bk-back:hover{color:var(--text)!important;background:oklch(1 0 0 / .05)!important}
.bk-back svg{width:16px;height:16px}
.bk-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.bk-field{display:grid;gap:7px;margin-bottom:16px}
.bk-field>span{font-size:.86rem;font-weight:500}
.bk-field>span i{font-style:normal;font-weight:400;color:var(--faint);margin-left:6px}
.bk-field input,.bk-field textarea{width:100%;font:inherit;font-size:.95rem;color:var(--text);background:oklch(.1 .01 var(--h) / .6);border:1px solid var(--line-2);border-radius:12px;padding:11px 14px;outline:none;transition:border-color .2s}
.bk-field textarea{resize:vertical;min-height:92px;line-height:1.55}
.bk-field input::placeholder,.bk-field textarea::placeholder{color:var(--faint);opacity:.8}
.bk-field input:focus,.bk-field textarea:focus{border-color:var(--accent)}
.bk-field.bad input,.bk-field.bad textarea{border-color:oklch(.72 .17 40)}
.bk-chips{display:flex;flex-wrap:wrap;gap:8px}
.bk-chips label{position:relative;cursor:pointer}
.bk-chips input{position:absolute;opacity:0;pointer-events:none}
.bk-chips b{display:inline-block;font-weight:500;font-size:.9rem;padding:8px 16px;border-radius:999px;border:1px solid var(--line-2);color:var(--muted);transition:border-color .2s,color .2s,background-color .2s}
.bk-chips label:hover b{color:var(--text)}
.bk-chips input:checked+b{color:var(--text);border-color:var(--accent);background:oklch(1 0 0 / .06)}
.bk-chips input:focus-visible+b{outline:2px solid var(--accent);outline-offset:2px}
.bk-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-top:4px}
.bk-err{margin:0 auto 0 0;font-size:.88rem;color:oklch(.75 .16 40)}
.bk-primary{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 1.4rem!important;border-radius:999px;font-weight:600!important;font-size:.95rem;
  color:var(--bk-on)!important;background:var(--bk-btn)!important;box-shadow:inset 0 1px 0 oklch(1 0 0 / .3);transition:filter .2s,opacity .2s}
.bk-primary{gap:.55rem}
.bk-primary svg{width:16px;height:16px;flex:none;transition:transform .35s var(--ease)}
.bk-primary:hover{filter:brightness(1.08)}
.bk-primary:hover svg{transform:translateX(3px)}
.bk-primary:disabled{opacity:.6;cursor:default}

/* step 3: booked */
.bk-done{display:grid;justify-items:center;align-content:center;gap:4px;height:100%;min-height:440px;padding:32px;text-align:center;animation:bk-in .45s var(--ease) both}
.bk-ok{width:52px;height:52px;display:grid;place-items:center;border-radius:50%;color:var(--bk-on);background:var(--accent);margin-bottom:10px;animation:bk-pop .5s var(--ease) both}
.bk-ok svg{width:26px;height:26px}
.bk-done h3{margin:0;font:400 clamp(2.1rem,4vw,2.8rem)/1.05 var(--font-display);letter-spacing:-.02em}
.bk-done h3 em{font-style:italic;color:var(--accent)}
.bk-done-when{margin:.6rem 0 0!important;color:var(--text)!important;font-weight:500}
.bk-done p{margin:.3rem 0 0;max-width:42ch;color:var(--muted);font-size:.95rem}
.bk-done b{color:var(--text);font-weight:500}
.bk-done .bk-primary{margin-top:1.4rem}

@keyframes bk-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes bk-pop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes bk-dot{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:none}}

@media (max-width:900px){
  .bk{grid-template-columns:1fr}
  .bk-info{border-right:0;border-bottom:1px solid var(--line);padding:22px 22px 20px}
  .bk-pick{grid-template-columns:1fr}
  .bk-times{border-left:0;border-top:1px solid var(--line)}
  .bk-slots{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));max-height:none}
}
@media (max-width:520px){.bk-row{grid-template-columns:1fr;gap:0}.bk-cal{padding:20px 16px}.bk-week,.bk-days{gap:4px}.bk-form{padding:20px 18px}.bk-actions{flex-direction:column-reverse;align-items:stretch}.bk-err{margin:0;text-align:center}}
@media (prefers-reduced-motion:reduce){.bk-pick,.bk-form,.bk-done,.bk-slot,.bk-ok{animation:none}.bk-dots span{animation:none}}
