/* ---------- booking widget (shared: book.php + chat) ---------- */
.bk-card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.6rem;box-shadow:0 18px 50px -24px rgba(28,39,73,.25)}
.bk-steps{display:flex;gap:6px;margin-bottom:.9rem}
.bk-steps span{flex:1;height:3px;border-radius:99px;background:var(--line)}
.bk-steps span.done{background:var(--blue)}
.bk-sub{font-size:.82rem;color:var(--muted);margin-bottom:.9rem}
.bk-panes{display:grid;grid-template-columns:1fr 200px;gap:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.bk-cal{padding:1rem;border-right:1px solid var(--line)}
.cal-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:.7rem}
.cal-nav b{font:800 .95rem var(--sans);color:var(--navy)}
.cal-nav button{width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--navy);font-size:1rem;cursor:pointer}
.cal-nav button:hover:not(:disabled){border-color:var(--blue)}
.cal-nav button:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-wd{font:700 .62rem var(--sans);color:var(--muted);text-align:center;padding:2px 0;text-transform:uppercase}
.cal-cell{aspect-ratio:1;border:1px solid transparent;border-radius:8px;background:none;font:600 .82rem var(--sans);color:var(--ink);cursor:pointer}
.cal-cell:hover:not(:disabled){border-color:var(--blue);color:var(--blue2)}
.cal-cell.sel{background:var(--navy);color:#fff}
.cal-cell.today{border-color:var(--line2)}
.cal-cell:disabled{color:var(--line2);cursor:default}
.bk-times{padding:1rem;max-height:340px;overflow-y:auto;background:#fafbfe}
.bk-day{font:800 .68rem var(--sans);letter-spacing:.08em;color:var(--muted);margin-bottom:.6rem}
.bk-col{display:flex;flex-direction:column;gap:6px}
.bk-slot{padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:#fff;font:700 .85rem var(--sans);color:var(--navy);cursor:pointer;text-align:center}
.bk-slot:hover{border-color:var(--blue);color:var(--blue2)}
.bk-slot.sel{background:var(--navy);border-color:var(--navy);color:#fff}
.bk-hint{font-size:.85rem;color:var(--muted);padding:.5rem 0}
.bk-go{width:100%;margin-top:1rem;padding:.85rem;font-size:.95rem;border:none;border-radius:var(--r);cursor:pointer}
.bk-det{padding-top:.4rem}
.bk-dethead{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}
.bk-dethead b{font:800 1.05rem var(--sans);color:var(--navy);display:block}
.bk-dethead span{font-size:.82rem;color:var(--muted)}
.bk-back{background:none;border:none;font:700 .82rem var(--sans);color:var(--blue2);cursor:pointer;white-space:nowrap;padding-top:.2rem}
.bk-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-bottom:1rem}
.bk-grid label{display:flex;flex-direction:column;gap:.3rem;font:700 .78rem var(--sans);color:var(--navy);letter-spacing:.02em}
.bk-grid label.full{grid-column:1/-1}
.bk-grid input,.bk-grid select,.bk-grid textarea{padding:.6rem .75rem;border:1px solid var(--line);border-radius:8px;font:400 .9rem var(--sans);color:var(--ink);background:#fbfcfe}
.bk-grid input:focus,.bk-grid select:focus,.bk-grid textarea:focus{outline:none;border-color:var(--blue);background:#fff}
.bk-note{font-size:.78rem;color:var(--muted);margin-top:.7rem}
.bk-confirm{text-align:center;padding:1.5rem 1rem}
.bk-check{width:64px;height:64px;margin:0 auto 1rem;border-radius:50%;background:#e8f7ee;color:#1a9e54;display:grid;place-items:center;font-size:1.8rem}
.bk-confirm h3{font-size:1.5rem;margin-bottom:.4rem}
.bk-confirm p{color:var(--muted);font-size:.92rem}
.bk-links{display:flex;gap:.7rem;justify-content:center;margin-top:1.2rem;flex-wrap:wrap}
.bk-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.2rem;flex-wrap:wrap}
.linklike{background:none;border:none;font:700 .85rem var(--sans);color:var(--blue2);cursor:pointer;padding:0}
.linklike.dim{color:var(--muted);font-weight:600}
.linklike.danger{color:#b3261e}
@media(max-width:680px){.bk-panes{grid-template-columns:1fr}.bk-cal{border-right:none;border-bottom:1px solid var(--line)}.bk-times{max-height:240px}.bk-grid{grid-template-columns:1fr}}

/* ---------- assistant dock ---------- */
.chat-fab{position:fixed;right:1.2rem;bottom:1.2rem;z-index:60;width:56px;height:56px;border-radius:50%;background:var(--navy);color:#fff;border:none;display:grid;place-items:center;cursor:pointer;box-shadow:0 12px 30px -8px rgba(28,39,73,.5);transition:transform .18s,background .18s}
.chat-fab:hover{transform:translateY(-2px);background:var(--navy2)}
.chat-dock{position:fixed;right:1.2rem;bottom:1.2rem;z-index:61;width:min(400px,calc(100vw - 2.4rem));height:min(600px,calc(100vh - 3rem));background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 70px -18px rgba(28,39,73,.45);display:flex;flex-direction:column;overflow:hidden}
.chat-dock[hidden]{display:none}
.chat-head{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1.1rem;background:var(--navy);color:#fff}
.chat-head b{font:800 .95rem var(--sans);display:block}
.chat-head span{font-size:.72rem;color:#9fc9ef}
.chat-x{background:none;border:none;color:#9fc9ef;font-size:1.4rem;cursor:pointer;line-height:1}
.chat-x:hover{color:#fff}
.chat-log{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.8rem;background:#fafbfd}
.msg{display:flex;flex-direction:column;max-width:92%}
.msg.user{align-self:flex-end;align-items:flex-end}
.msg.bot{align-self:flex-start}
.msg .who{font:700 .58rem var(--sans);letter-spacing:.1em;color:var(--muted);margin-bottom:.25rem}
.bubble{padding:.6rem .85rem;border-radius:12px;font-size:.9rem;line-height:1.55}
.msg.user .bubble{background:var(--navy);color:#fff;border-bottom-right-radius:4px}
.msg.bot .bubble{background:#fff;border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px}
.msg.typing .bubble{display:flex;gap:5px;padding:.8rem .9rem}
.msg.typing i{width:6px;height:6px;border-radius:50%;background:var(--line2);animation:tp 1.2s infinite}
.msg.typing i:nth-child(2){animation-delay:.15s}.msg.typing i:nth-child(3){animation-delay:.3s}
@keyframes tp{0%,60%,100%{transform:none;opacity:.5}30%{transform:translateY(-4px);opacity:1}}
.wbox{width:100%;margin-top:.5rem}
.chat-chips{display:flex;gap:.45rem;flex-wrap:wrap;padding:.6rem 1rem;border-top:1px solid var(--line);background:#fff}
.chip{padding:.42rem .8rem;border:1px solid var(--line);border-radius:99px;background:#fff;font:600 .78rem var(--sans);color:var(--navy);cursor:pointer}
.chip:hover{border-color:var(--blue);color:var(--blue2)}
.chat-form{display:flex;gap:.5rem;padding:.7rem 1rem;border-top:1px solid var(--line);background:#fff}
.chat-form input{flex:1;padding:.6rem .85rem;border:1px solid var(--line);border-radius:99px;font:400 .88rem var(--sans)}
.chat-form input:focus{outline:none;border-color:var(--blue)}
.chat-form button{width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;border:none;display:grid;place-items:center;cursor:pointer}
.chat-form button:hover{background:var(--navy2)}

/* ---------- generative widgets inside messages ---------- */
.w{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.9rem;width:min(340px,100%)}
.w-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.7rem}
.w-head b{font:800 .88rem var(--sans);color:var(--navy)}
.w-head span{font:700 .62rem var(--sans);letter-spacing:.06em;color:var(--muted);text-transform:uppercase}
.bk-w{width:min(400px,100%);padding:.9rem .9rem 1rem}
.bk-w .bk-panes{grid-template-columns:1fr}
.bk-w .bk-cal{border-right:none;border-bottom:1px solid var(--line)}
.bk-w .bk-times{max-height:190px}
.bk-w .bk-grid{grid-template-columns:1fr}
.svc-mini{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}
.svc-mini-a{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;font:700 .78rem var(--sans);color:var(--navy);text-decoration:none}
.svc-mini-a:hover{border-color:var(--blue);color:var(--blue2)}
.svc-mini-a i{font:600 .62rem var(--sans);color:var(--blue2);font-style:normal;text-transform:uppercase;letter-spacing:.06em}
.doc-row{display:flex;flex-direction:column;gap:.15rem;width:100%;text-align:left;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;margin-bottom:.4rem}
.doc-row b{font:700 .8rem var(--sans);color:var(--navy)}
.doc-row span{font-size:.72rem;color:var(--muted)}
.doc-row.done{opacity:.55}.doc-row.done b{text-decoration:line-through}
.proc-row{padding:.55rem 0;border-top:1px solid var(--line)}
.proc-row:first-of-type{border-top:none}
.proc-row b{display:block;font:700 .82rem var(--sans);color:var(--navy)}
.proc-row span{font-size:.78rem;color:var(--muted);line-height:1.5}
.con-rows{display:flex;flex-direction:column;gap:.5rem}
.con-rows a{font:700 .85rem var(--sans);color:var(--blue2);padding:.5rem .7rem;border:1px solid var(--line);border-radius:8px}
.con-rows a:hover{border-color:var(--blue);background:#f4faff}
@media(max-width:560px){.chat-dock{right:.6rem;bottom:.6rem;width:calc(100vw - 1.2rem);height:calc(100dvh - 1.2rem)}}
