/* Adapted from sire-chat/templates/base.css. Original bubble geometry retained. */
.nd-chat{--bg2:var(--bg-alt);--text:var(--ink-soft);--heading:var(--ink);--nav:var(--ink-soft);--dim:var(--ink-faint);--line:var(--border);--chip-bg:var(--accent-soft);--chip-border:color-mix(in srgb,var(--accent) 35%,transparent);--sire:var(--accent);--ease:cubic-bezier(.16,1,.3,1)}
.nd-chat .msg .bubble a{color:var(--sire);text-decoration:underline}
.nd-chat .pending-dots{letter-spacing:.2em;color:var(--dim);animation:chat-pulse 1.2s var(--ease) infinite}
.nd-chat .voice-btn.listening{border-color:var(--sire)}
.nd-chat [hidden]{display:none!important}
.nd-chat .retry{font:inherit;color:var(--sire);background:none;border:0;padding:0;text-decoration:underline;cursor:pointer}
.nd-chat :focus-visible{outline:3px solid var(--sire);outline-offset:4px}
@keyframes chat-pulse{50%{opacity:.3}}
@keyframes chat-lift{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.nd-chat *{animation:none!important;transition:none!important}.nd-chat .gc-stream{mask-image:none;-webkit-mask-image:none}}

.nd-chat .chat-controls button{cursor:pointer}.nd-chat button:disabled{opacity:.5;cursor:wait}

.nd-chat .msg .booking-card{max-width:100%;width:100%;box-sizing:border-box;padding:1rem}
.nd-chat .booking-card h3{font-size:1.05rem;margin:0 0 .6rem;color:var(--heading)}
.nd-chat .booking-card p{margin:.65rem 0;font-size:.85rem}
.nd-chat .booking-card label{display:block;margin:.8rem 0;font-size:.85rem}
.nd-chat .booking-card input,.nd-chat .booking-card select{display:block;width:100%;box-sizing:border-box;min-height:44px;margin-top:.3rem;font:inherit;color:var(--heading);background:var(--bg2);border:1px solid var(--line);border-radius:7px;padding:.5rem}
.nd-chat .booking-card button{min-height:44px;margin:.25rem .4rem .25rem 0;padding:.5rem .7rem;font:inherit;font-size:.85rem;color:var(--heading);background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:7px;cursor:pointer}
.nd-chat .booking-card button:hover{border-color:var(--sire)}
.nd-chat .booking-times h4{margin:1rem 0 .3rem;font-size:.88rem;color:var(--heading)}
.nd-chat .booking-card a{display:inline-block;margin:.3rem .6rem .3rem 0}

/* Floating glass chat. Geometry and tokens from the glass-chat template; the page background shows through. */
.nd-chat{--gc-text:255 255 255;--gc-tint:255 255 255;--gc-opacity:.13;--gc-blur:22px;--gc-radius:22px;--gc-gap:12px;--gc-fade:90px;--gc-width:400px;position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:12px;color:rgb(var(--gc-text));font:400 15px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;isolation:isolate}
.nd-chat,.nd-chat *{box-sizing:border-box}
.nd-chat .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nd-chat .gc-glass,.nd-chat .gc-launcher,.nd-chat .msg .bubble,.nd-chat .gc-composer,.nd-chat .gc-top{background:rgb(var(--gc-tint)/var(--gc-opacity));backdrop-filter:blur(var(--gc-blur)) saturate(.8);-webkit-backdrop-filter:blur(var(--gc-blur)) saturate(.8);border:1px solid rgb(var(--gc-text)/.17);box-shadow:inset 0 1.5px 0 rgb(var(--gc-text)/.15),0 8px 28px rgb(0 0 0/.25);border-radius:var(--gc-radius)}
.nd-chat .gc-launcher{display:flex;align-items:center;gap:.5rem;padding:12px 18px 12px 14px;border-radius:99px;font:inherit;font-weight:500;color:inherit;cursor:pointer;transition:transform .2s var(--ease),background .2s}
.nd-chat .gc-launcher svg{width:22px;height:22px}
.nd-chat .gc-launcher:hover{transform:translateY(-1px);background:rgb(var(--gc-tint)/calc(var(--gc-opacity)*1.6))}
.nd-chat[data-open="true"] .gc-launcher{display:none}
.nd-chat .gc-launcher{order:2}.nd-chat .gc-panel{order:1;width:min(var(--gc-width),calc(100vw - 36px));max-height:min(78dvh,720px);display:flex;flex-direction:column;animation:gc-open .35s var(--ease) both}
.nd-chat .gc-panel[hidden]{display:none}
.nd-chat .gc-top{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:99px;font-size:12px}
.nd-chat .chat-controls{display:flex;align-items:center;gap:6px;flex:1;min-width:0;font-size:12px}
.nd-chat .chat-controls select{flex:1;min-width:80px;overflow:hidden;text-overflow:ellipsis}
.nd-chat .chat-controls select,.nd-chat .chat-controls button{font:inherit;color:inherit;background:rgb(var(--gc-text)/.07);border:1px solid rgb(var(--gc-text)/.22);border-radius:99px;padding:6px 10px;cursor:pointer}
.nd-chat .chat-controls select option{color:#222}
.nd-chat .chat-controls button:hover{background:rgb(var(--gc-text)/.18)}
.nd-chat .gc-close{flex:none;width:32px;height:32px;border:0;background:none;color:inherit;border-radius:50%;display:grid;place-items:center;cursor:pointer;opacity:.75}
.nd-chat .gc-close svg{width:16px;height:16px}.nd-chat .gc-close:hover{opacity:1;background:rgb(var(--gc-text)/.12)}
.nd-chat .gc-stream{flex:0 1 420px;min-height:200px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding:var(--gc-fade) 2px 12px;display:flex;flex-direction:column;justify-content:flex-end;gap:var(--gc-gap);mask-image:linear-gradient(to bottom,transparent,black var(--gc-fade));-webkit-mask-image:linear-gradient(to bottom,transparent,black var(--gc-fade));overflow-wrap:anywhere;text-align:left}
.nd-chat .gc-stream::-webkit-scrollbar{display:none}
.nd-chat .msg{display:flex;flex:none;animation:gc-arrive .45s var(--ease) both;font-size:15px}
.nd-chat .msg.ai{justify-content:flex-end}.nd-chat .msg.user{justify-content:flex-start}
.nd-chat .msg .bubble{width:88%;padding:14px 18px;line-height:1.5;color:rgb(var(--gc-text))}
.nd-chat .msg.user .bubble{background:rgb(var(--gc-tint)/calc(var(--gc-opacity)*.75))}
.nd-chat .msg .bubble a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.nd-chat .pending-dots{letter-spacing:.2em;opacity:.7;animation:chat-pulse 1.2s var(--ease) infinite}
.nd-chat .gc-composer{display:flex;gap:10px;align-items:center;padding:8px 8px 8px 18px;margin-top:4px}
.nd-chat .gc-composer input{flex:1;min-width:0;border:0;background:none;outline:none;color:inherit;font:inherit;font-size:15px;padding:8px 0;min-height:40px}
.nd-chat .gc-composer input::placeholder{color:rgb(var(--gc-text)/.62)}
.nd-chat .send,.nd-chat .voice-btn{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid rgb(var(--gc-text)/.22);background:rgb(var(--gc-text)/.07);color:inherit;cursor:pointer;display:grid;place-items:center;transition:transform .15s var(--ease)}
.nd-chat .send{border:0;background:rgb(var(--gc-text)/.92);color:rgb(30 30 30)}
.nd-chat .send:hover{transform:scale(1.06)}
.nd-chat .voice-btn svg{width:48%;height:48%;fill:currentColor}.nd-chat .voice-btn.listening{border-color:rgb(var(--gc-text)/.9)}
.nd-chat .hint{margin:6px 10px 0;font-size:12px;opacity:.7;line-height:1.5}
.nd-chat .hint a{color:inherit}
.nd-chat .retry{color:inherit}
.nd-chat :focus-visible{outline:2px solid currentColor;outline-offset:4px}
.nd-chat .msg .booking-card{width:100%}
.nd-chat .booking-card h3{color:inherit}
.nd-chat .booking-card input,.nd-chat .booking-card select{color:inherit;background:rgb(var(--gc-text)/.08);border-color:rgb(var(--gc-text)/.25)}
.nd-chat .booking-card select option{color:#222}
.nd-chat .booking-card button{color:inherit;background:rgb(var(--gc-text)/.07);border-color:rgb(var(--gc-text)/.22);border-radius:99px}
.nd-chat .booking-times h4{color:inherit}
@keyframes gc-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes gc-open{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:600px){.nd-chat{right:12px;bottom:12px;left:12px;align-items:stretch}.nd-chat .gc-launcher{align-self:flex-end}.nd-chat .gc-panel{width:auto;max-height:calc(100dvh - 24px)}.nd-chat .gc-stream{--gc-fade:70px}.nd-chat .msg .bubble{width:92%}}
@supports not (backdrop-filter:blur(1px)){.nd-chat{--gc-opacity:.85;--gc-tint:45 45 45}}
