/* Universal Chatbot — front-end widget (theme-proof, flat, brand-themable).
   Every colour comes from a custom property; the plugin injects the site's
   palette inline after this file, so one stylesheet serves any brand. */

.ucb,.ucb *{box-sizing:border-box}

.ucb{
	--ucb-primary:#d9720a;
	--ucb-primary-hover:#bf6409;
	--ucb-primary-a15:rgba(217,114,10,.15);
	--ucb-on-primary:#ffffff;
	--ucb-chat-bg:#f2f0e6;
	--ucb-bot-bg:#ffffff;
	--ucb-bot-text:#35383c;
	--ucb-chip-bg:#efe9dc;
	--ucb-chip-text:#a85400;
	--ucb-line:rgba(0,0,0,.10);
	--ucb-muted:rgba(0,0,0,.38);
	position:fixed;right:20px;bottom:20px;z-index:2147483000;
	font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif
}
.ucb.ucb-left{right:auto;left:20px}

/* Neutralise theme button/input styling. Themes routinely use !important on
   buttons (padding, font-size, full-width mobile rules), so the reset does too
   — otherwise the widget inherits 30px padding and 22px text. Component rules
   below use a higher specificity (.ucb button.ucb-x) so they still win here. */
.ucb button{appearance:none;-webkit-appearance:none;border:0 !important;background:transparent !important;box-shadow:none !important;outline:0 !important;font:inherit !important;line-height:1 !important;margin:0 !important;padding:0 !important;min-width:0 !important;min-height:0 !important;text-transform:none !important;letter-spacing:normal !important;color:inherit;cursor:pointer}
.ucb button:focus-visible{outline:2px solid var(--ucb-primary) !important;outline-offset:2px}
.ucb input{appearance:none;-webkit-appearance:none;margin:0 !important;font:inherit !important;min-height:0 !important}

.ucb button.ucb-bubble{width:58px !important;height:58px !important;border-radius:16px !important;background:var(--ucb-primary) !important;color:var(--ucb-on-primary);display:flex !important;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(0,0,0,.22);transition:background .15s,transform .15s}
.ucb button.ucb-bubble:hover{background:var(--ucb-primary-hover) !important;transform:translateY(-2px)}
.ucb-bubble svg{width:26px;height:26px;display:block}
/* Must out-specify .ucb button.ucb-bubble{display:flex !important} above (0-2-1),
   or the launcher stays on screen behind the open panel. */
.ucb-hidden,
.ucb button.ucb-bubble.ucb-hidden{display:none !important}

.ucb-panel{position:absolute;right:0;bottom:70px;width:366px;max-width:calc(100vw - 40px);height:520px;max-height:calc(100vh - 130px);background:var(--ucb-bot-bg);border-radius:14px;box-shadow:0 16px 44px rgba(0,0,0,.20);display:flex;flex-direction:column;overflow:hidden;animation:ucb-in .16s ease}
.ucb-left .ucb-panel{right:auto;left:0}
/* Author styles beat the UA's [hidden]{display:none}, so restate it here —
   without this the panel renders open on every page load. */
.ucb-panel[hidden]{display:none !important}
@keyframes ucb-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.ucb-head{background:var(--ucb-primary);color:var(--ucb-on-primary);padding:15px 16px;display:flex;align-items:center;gap:10px;flex:0 0 auto;user-select:none}
.ucb-htext{flex:1;min-width:0}
.ucb-title{font-weight:700;font-size:15px;display:block;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ucb-sub{font-size:11.5px;opacity:.85;display:flex;align-items:center;gap:6px;margin-top:2px}
.ucb-dot{width:7px;height:7px;border-radius:50%;background:#4ade80;display:inline-block;flex:0 0 auto}
.ucb button.ucb-close{width:30px !important;height:30px !important;color:var(--ucb-on-primary);font-size:20px !important;display:flex !important;align-items:center;justify-content:center;border-radius:8px !important;flex:0 0 auto;opacity:.85}
.ucb button.ucb-close:hover{background:rgba(255,255,255,.15) !important;opacity:1}

.ucb-log{flex:1;overflow-y:auto;padding:16px 15px;display:flex;flex-direction:column;gap:8px;background:var(--ucb-chat-bg)}
.ucb-log::-webkit-scrollbar{width:8px}
.ucb-log::-webkit-scrollbar-thumb{background:var(--ucb-line);border-radius:8px}
.ucb-msg{max-width:86%;padding:10px 13px;border-radius:14px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
/* The bot bubble often sits on a near-white chat background, so it needs a
   shadow rather than the border alone to read as a bubble. */
.ucb-bot{align-self:flex-start;background:var(--ucb-bot-bg);color:var(--ucb-bot-text);border:1px solid var(--ucb-line);border-bottom-left-radius:5px;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.ucb-user{align-self:flex-end;background:var(--ucb-primary);color:var(--ucb-on-primary);border-bottom-right-radius:5px}
.ucb-msg strong{font-weight:700}
.ucb-msg + .ucb-msg{margin-top:0}

.ucb-typing{display:inline-flex !important;gap:5px}
.ucb-typing span{width:7px;height:7px;border-radius:50%;background:var(--ucb-muted);display:inline-block;animation:ucb-b 1.2s infinite}
.ucb-typing span:nth-child(2){animation-delay:.15s}
.ucb-typing span:nth-child(3){animation-delay:.3s}
@keyframes ucb-b{0%,60%,100%{opacity:.3}30%{opacity:1}}

.ucb-foot{border-top:1px solid var(--ucb-line);background:var(--ucb-bot-bg);flex:0 0 auto}
.ucb-chips{display:flex;flex-wrap:wrap;gap:8px;padding:12px 14px 2px;user-select:none}
.ucb-chips:empty{display:none}
.ucb button.ucb-chip{background:var(--ucb-chip-bg) !important;color:var(--ucb-chip-text);border-radius:10px !important;padding:8px 13px !important;font-size:13px !important;font-weight:600 !important;line-height:1.3 !important;width:auto !important;transition:background .12s,color .12s}
.ucb button.ucb-chip:hover{background:var(--ucb-primary) !important;color:var(--ucb-on-primary)}
.ucb-form{display:flex;gap:8px;padding:12px 14px;align-items:center}
.ucb-input{flex:1;min-width:0;border:1px solid var(--ucb-line) !important;background:var(--ucb-bot-bg) !important;border-radius:10px !important;padding:11px 14px !important;font-size:14px !important;line-height:1.3 !important;height:auto !important;color:var(--ucb-bot-text)}
.ucb-input::placeholder{color:var(--ucb-muted);opacity:1}
.ucb-input:focus{border-color:var(--ucb-primary) !important;box-shadow:0 0 0 3px var(--ucb-primary-a15) !important;outline:0 !important}
.ucb-input:disabled{opacity:.6}
.ucb button.ucb-send{width:44px !important;height:44px !important;border-radius:10px !important;background:var(--ucb-primary) !important;color:var(--ucb-on-primary);display:flex !important;align-items:center;justify-content:center;flex:0 0 auto;transition:background .12s}
.ucb button.ucb-send:hover{background:var(--ucb-primary-hover) !important}
.ucb button.ucb-send:disabled{opacity:.6;cursor:default}
.ucb-send svg{width:20px;height:20px}

@media (max-width:480px){
	.ucb-panel{width:calc(100vw - 28px);height:74vh}
}
@media (prefers-reduced-motion:reduce){
	.ucb-panel{animation:none}
	.ucb button.ucb-bubble:hover{transform:none}
	.ucb-typing span{animation:none}
}
