/* Fabby, the FindaBiz chat helper (6 Oct 2026). Colours per day are set by fabby.js as CSS variables. */
.fabby { --fb-body: #e71f68; --fb-cheek: #c4145a; --fb-accent: #0e6ea2; --fb-ink: #1d2b33; --fb-blue: #0e6ea2; position: fixed; right: 20px; bottom: 20px; z-index: 900; font-family: var(--wp--preset--font-family--body, system-ui, sans-serif); color: #33424a; }
.fabby *, .fabby *::before, .fabby *::after { box-sizing: border-box; }

/* Launcher */
.fabby__launch { display: block; width: 76px; height: 76px; padding: 0; border: 0; background: none; cursor: pointer; filter: drop-shadow(0 6px 14px rgba(16, 40, 60, .28)); -webkit-tap-highlight-color: transparent; }
.fabby__launch:focus-visible { outline: 3px solid var(--fb-blue); outline-offset: 4px; border-radius: 50%; }
.fabby__launch svg { width: 100%; height: 100%; overflow: visible; }
.fabby.is-open .fabby__launch { display: none; }
.fabby__hello { position: absolute; right: 84px; bottom: 26px; width: max-content; max-width: 220px; background: #fff; border-radius: 14px 14px 4px 14px; padding: .6rem .85rem; font-size: .92rem; line-height: 1.35; box-shadow: 0 8px 24px rgba(16, 40, 60, .18); opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .3s; pointer-events: none; }
.fabby__hello.is-on { opacity: 1; transform: none; pointer-events: auto; }
.fabby__hello button { position: absolute; top: -8px; left: -8px; width: 22px; height: 22px; border-radius: 50%; border: 0; background: #33424a; color: #fff; font-size: 13px; line-height: 22px; cursor: pointer; padding: 0; }

/* Animations */
.fb-float { animation: fbfloat 3.2s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes fbfloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
.fb-blink { animation: fbblink 4.6s infinite; transform-box: fill-box; transform-origin: center; }
@keyframes fbblink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }
.fb-spark { animation: fbspark 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes fbspark { 0%, 100% { transform: scale(1) rotate(0); } 50% { transform: scale(1.25) rotate(20deg); } }
.fb-pop { animation: fbpop .35s ease-out; transform-box: fill-box; transform-origin: center; }
@keyframes fbpop { 0% { transform: scale(.85); } 70% { transform: scale(1.06); } 100% { transform: scale(1); } }
/* Sleepy: three Zs float up and out, growing and fading, one a second;
   the mouth puffs in time with the snores. */
.fb-z { opacity: 0; animation: fbz 3s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.fb-z--2 { animation-delay: 1s; }
.fb-z--3 { animation-delay: 2s; }
@keyframes fbz {
	0% { opacity: 0; transform: translate(0, 0) scale(.6) rotate(-10deg); }
	20% { opacity: 1; }
	70% { opacity: .85; }
	100% { opacity: 0; transform: translate(34px, -50px) scale(1.15) rotate(12deg); }
}
.fb-snore { animation: fbsnore 3s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes fbsnore { 0%, 100% { transform: scale(.75); } 45% { transform: scale(1.4); } }
.fb-dots circle { animation: fbdot 1.2s infinite ease-in-out; }
.fb-dots circle:nth-child(2) { animation-delay: .15s; }
.fb-dots circle:nth-child(3) { animation-delay: .3s; }
@keyframes fbdot { 0%, 80%, 100% { opacity: .35; } 40% { opacity: 1; } }

/* Panel */
.fabby__panel { position: absolute; right: 0; bottom: 0; width: 380px; max-width: calc(100vw - 32px); height: min(600px, calc(100vh - 40px)); background: #fff; border-radius: 20px; box-shadow: 0 18px 50px rgba(16, 40, 60, .3); display: none; flex-direction: column; overflow: hidden; }
.fabby.is-open .fabby__panel { display: flex; animation: fbopen .22s ease-out; }
@keyframes fbopen { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
.fabby__head { display: flex; align-items: center; gap: .7rem; padding: .7rem .8rem .7rem 1rem; background: var(--fb-body); color: #fff; transition: background-color .4s; }
.fabby__face { width: 54px; height: 54px; flex: 0 0 auto; background: #fff; border-radius: 50%; padding: 3px 4px 5px; box-shadow: 0 2px 8px rgba(0, 0, 0, .15); }
.fabby__face svg { width: 100%; height: 100%; overflow: visible; }
.fabby__title { flex: 1; min-width: 0; }
.fabby__name { font-weight: 800; font-size: 1.15rem; letter-spacing: .01em; margin: 0; line-height: 1.1; color: #fff; }
.fabby__mood { font-size: .82rem; opacity: .92; margin: .1rem 0 0; color: #fff; }
.fabby__icon { width: 34px; height: 34px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .18); color: #fff; font-size: 18px; line-height: 34px; padding: 0; cursor: pointer; flex: 0 0 auto; }
.fabby__icon:hover, .fabby__icon:focus-visible { background: rgba(255, 255, 255, .32); outline: none; }
.fabby__log { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: .6rem; background: #f6f8fa; overscroll-behavior: contain; }
.fabby__msg { max-width: 86%; padding: .6rem .85rem; border-radius: 16px; font-size: .95rem; line-height: 1.45; overflow-wrap: anywhere; }
.fabby__msg p { margin: 0 0 .45rem; }
.fabby__msg p:last-child, .fabby__msg ul:last-child { margin-bottom: 0; }
.fabby__msg ul { margin: .2rem 0 .45rem; padding-left: 1.15rem; }
.fabby__msg li { margin: .15rem 0; }
.fabby__msg--bot { align-self: flex-start; background: #fff; border: 1px solid #e2e6ea; border-bottom-left-radius: 4px; }
.fabby__msg--bot a { color: var(--fb-blue); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.fabby__msg--me { align-self: flex-end; background: var(--fb-blue); color: #fff; border-bottom-right-radius: 4px; white-space: pre-wrap; }
.fabby__msg--typing { padding: .5rem .8rem; }
.fabby__chips { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .1rem; }
.fabby__chip { border: 1.5px solid var(--fb-blue); background: #fff; color: var(--fb-blue); border-radius: 999px; padding: .38rem .75rem; font: inherit; font-size: .86rem; font-weight: 700; cursor: pointer; }
.fabby__chip:hover, .fabby__chip:focus-visible { background: var(--fb-blue); color: #fff; outline: none; }
.fabby__form { display: flex; gap: .5rem; padding: .7rem; border-top: 1px solid #e2e6ea; background: #fff; }
.fabby__input { flex: 1; min-width: 0; resize: none; font: inherit; font-size: 16px; line-height: 1.35; padding: .6rem .8rem; border: 1px solid #cfd6dc; border-radius: 14px; max-height: 120px; color: #33424a; background: #fff; }
.fabby__input:focus { outline: 2px solid var(--fb-blue); outline-offset: 0; border-color: transparent; }
.fabby__send { flex: 0 0 auto; width: 44px; height: 44px; align-self: flex-end; border-radius: 50%; border: 0; background: var(--wp--preset--color--accent, #e71f68); color: #fff; cursor: pointer; display: grid; place-items: center; }
.fabby__send:disabled { opacity: .5; cursor: default; }
.fabby__note { margin: 0; padding: 0 .9rem .6rem; font-size: .75rem; color: #6a7880; background: #fff; }
.fabby__note a { color: inherit; }
.fabby .screen-reader-text { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Fabby's summary on the search results page */
.fab-search-ai { display: flex; gap: 1rem; align-items: flex-start; margin: 0 0 2.5rem; padding: 1.1rem 1.25rem; border-radius: 18px; background: #fff5f9; border: 1.5px solid #f6c3d6; }
.fab-search-ai[hidden] { display: none; }
.fab-search-ai__face { flex: 0 0 64px; width: 64px; height: 64px; }
.fab-search-ai__face svg { width: 100%; height: 100%; overflow: visible; }
.fab-search-ai__body { flex: 1; min-width: 0; }
.fab-search-ai__label { margin: 0 0 .3rem; font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: #c4145a; }
.fab-search-ai__text p { margin: 0 0 .5rem; font-size: 1.05rem; line-height: 1.55; color: #33424a; }
.fab-search-ai__text a { color: #0e6ea2; font-weight: 700; }
.fab-search-ai__wait { color: #6a7880 !important; font-style: italic; }
.fab-search-ai__more { margin: .2rem 0 .4rem; border: 1.5px solid #e71f68; background: #fff; color: #e71f68; border-radius: 999px; padding: .4rem .9rem; font: inherit; font-weight: 700; font-size: .9rem; cursor: pointer; }
.fab-search-ai__more:hover, .fab-search-ai__more:focus-visible { background: #e71f68; color: #fff; outline: none; }
.fab-search-ai__note { font-size: .78rem !important; color: #6a7880 !important; margin: .2rem 0 0 !important; }

@media (max-width: 600px) {
	.fab-search-ai { padding: .9rem 1rem; gap: .7rem; }
	.fab-search-ai__face { flex-basis: 48px; width: 48px; height: 48px; }
	.fabby { right: 12px; bottom: 12px; }
	.fabby__launch { width: 64px; height: 64px; }
	.fabby__hello { right: 70px; bottom: 20px; }
	.fabby.is-open { left: 0; right: 0; bottom: 0; }
	.fabby__panel { position: fixed; left: 0; right: 0; bottom: 0; width: 100%; max-width: none; height: 88vh; height: 88dvh; border-radius: 20px 20px 0 0; }
}
@media (prefers-reduced-motion: reduce) {
	.fb-float, .fb-blink, .fb-spark, .fb-pop, .fb-dots circle, .fb-z, .fb-snore, .fabby.is-open .fabby__panel { animation: none; }
	/* Still Zs, stepped up and out, instead of floating ones. */
	.fb-z { opacity: .9; }
	.fb-z--2 { transform: translate(14px, -16px); }
	.fb-z--3 { transform: translate(30px, -36px); }
}
@media print { .fabby { display: none; } }
