/* Site-wide Layer 1 Concierge — "PropatiRadar" front desk.
   Redesigned 2026-08-15 as a premium, futuristic, light-glass surface with a
   live radar avatar (dark obsidian orb sitting on a light panel — the same
   dark/light contrast a good watch dial or camera module uses against its
   body). Revised same day: light-mode palette, and the open-state launcher
   now reuses the existing close control as a collapse arrow instead of
   fading the whole thing away. UI ONLY — every selector the JS relies on
   ([data-knowledge-*] hooks + generated .pr-knowledge-concierge__* classes)
   is preserved; this file only restyles them. No markup or logic changed. */

/* ------------------------------------------------------------------ *
 * Design tokens — shared by the panel AND the floating launcher, so
 * they live on both roots (the launcher is a sibling of the panel,
 * not a descendant of .pr-knowledge-concierge).
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge,
.pr-knowledge-concierge-float {
	--pr-accent: #e93336;
	--pr-accent-soft: color-mix(in srgb, var(--pr-accent) 45%, transparent);
	--pr-accent-glow: color-mix(in srgb, var(--pr-accent) 25%, transparent);
	--pr-accent-border: color-mix(in srgb, var(--pr-accent) 40%, transparent);

	/* Light base — warm off-white, not stark white */
	--pr-void: #ffffff;
	--pr-panel: #ffffff;
	--pr-panel-2: #f7f7f5;
	--pr-raised: #ffffff;
	--pr-surface: #f7f7f5; /* consumed by .pr-btn--secondary */

	/* Hairlines drawn in ink on light */
	--pr-line: color-mix(in srgb, #1a1a1d 11%, transparent);
	--pr-line-strong: color-mix(in srgb, #1a1a1d 18%, transparent);

	/* Ink ramp on light */
	--pr-ink: #1a1a1d;
	--pr-ink-2: #565a63;
	--pr-ink-3: #8a8e97;

	/* The launcher stays a dark obsidian module deliberately — a light
	   badge would vanish against arbitrary page backgrounds; the dark
	   orb reads as an instrument, not a chat bubble, at any scroll depth. */
	--pr-obsidian: radial-gradient(140% 120% at 30% 20%, #23262f 0%, #101216 60%, #0a0b0e 100%);

	--pr-font-head: 'Cormorant Garamond', Georgia, serif;
	--pr-font-body: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

	--pr-radius: 1.15rem;
	--pr-radius-sm: 0.7rem;
}

/* ================================================================== *
 * PANEL / FULL-PAGE SURFACE
 * ================================================================== */
.pr-knowledge-concierge {
	position: relative;
	box-sizing: border-box;
	width: min(100%, 70rem);
	margin: 0 auto;
	padding: clamp(1.75rem, 5vw, 4.5rem);
	color: var(--pr-ink);
	font-family: var(--pr-font-body);
	background:
		radial-gradient(120% 90% at 85% -10%, color-mix(in srgb, var(--pr-accent) 7%, transparent) 0%, transparent 55%),
		var(--pr-void);
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius);
	overflow: hidden;
}

.pr-knowledge-concierge *,
.pr-knowledge-concierge *::before,
.pr-knowledge-concierge *::after { box-sizing: border-box; }
.pr-knowledge-concierge [hidden] { display: none !important; }

/* ------- Header ------- */
.pr-knowledge-concierge__header {
	max-width: 44rem;
	margin: 0 0 clamp(1.75rem, 4vw, 3rem);
}

.pr-knowledge-concierge__eyebrow {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0 0 1rem;
	color: var(--pr-ink-2);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}
/* The empty <span aria-hidden> becomes a live "signal" dot with a radar ping. */
.pr-knowledge-concierge__eyebrow span {
	position: relative;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: var(--pr-accent);
	box-shadow: 0 0 0.5rem var(--pr-accent-glow);
}
.pr-knowledge-concierge__eyebrow span::after {
	content: "";
	position: absolute;
	inset: -0.25rem;
	border-radius: 50%;
	border: 1px solid var(--pr-accent-soft);
	animation: pr-kc-ping 2.4s var(--pr-ease) infinite;
}

.pr-knowledge-concierge__title {
	margin: 0;
	font-family: var(--pr-font-head);
	font-size: clamp(2.65rem, 6.5vw, 5.25rem);
	font-weight: 600;
	line-height: 0.92;
	letter-spacing: -0.03em;
	color: var(--pr-ink);
}

.pr-knowledge-concierge__lede {
	max-width: 34rem;
	margin: 1.35rem 0 0;
	color: var(--pr-ink-2);
	font-size: 1rem;
	line-height: 1.7;
}

/* ------- Desk (the conversation shell) ------- */
.pr-knowledge-concierge__desk {
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius);
	background: var(--pr-panel);
	overflow: hidden;
	box-shadow: 0 1px 2px rgba(26, 26, 29, 0.03);
}

/* ------- Suggestion rail ------- */
.pr-knowledge-concierge__rail {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.85rem 1rem;
	border-bottom: 1px solid var(--pr-line);
	background: var(--pr-panel-2);
	overflow-x: auto;
	scrollbar-width: none;
}
.pr-knowledge-concierge__rail::-webkit-scrollbar { display: none; }
.pr-knowledge-concierge__rail > span {
	flex: 0 0 auto;
	color: var(--pr-ink-3);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.pr-knowledge-concierge__rail button {
	flex: 0 0 auto;
	border: 1px solid var(--pr-line);
	border-radius: 999px;
	padding: 0.5rem 0.85rem;
	background: #fff;
	color: var(--pr-ink-2);
	font: 600 0.76rem/1 var(--pr-font-body);
	cursor: pointer;
	white-space: nowrap;
	transition: color var(--pr-duration-micro) var(--pr-ease),
		border-color var(--pr-duration-micro) var(--pr-ease),
		background var(--pr-duration-micro) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__rail button:hover,
.pr-knowledge-concierge__rail button:focus-visible {
	color: var(--pr-accent);
	border-color: var(--pr-accent-soft);
	background: color-mix(in srgb, var(--pr-accent) 6%, #fff);
	outline: none;
}
.pr-knowledge-concierge__rail button:active { transform: scale(0.96); }

/* ------- Messages ------- */
.pr-knowledge-concierge__messages {
	display: flex;
	flex-direction: column;
	gap: 0.9rem;
	min-height: 19rem;
	max-height: 28rem;
	overflow-y: auto;
	padding: clamp(1.25rem, 3vw, 2.25rem);
	background: var(--pr-panel);
	scrollbar-width: thin;
	scrollbar-color: var(--pr-line-strong) transparent;
}
.pr-knowledge-concierge__messages::-webkit-scrollbar { width: 8px; }
.pr-knowledge-concierge__messages::-webkit-scrollbar-thumb {
	background: var(--pr-line-strong);
	border-radius: 999px;
	border: 2px solid transparent;
	background-clip: padding-box;
}

.pr-knowledge-concierge__message {
	max-width: min(100%, 40rem);
	font-size: 0.94rem;
	line-height: 1.65;
	animation: pr-kc-rise var(--pr-duration-mid) var(--pr-ease) both;
}
.pr-knowledge-concierge__message p { margin: 0; }
.pr-knowledge-concierge__message--assistant {
	align-self: flex-start;
	position: relative;
	padding: 0.95rem 1.15rem 0.95rem 1.25rem;
	border: 1px solid var(--pr-line);
	border-radius: 0.25rem var(--pr-radius-sm) var(--pr-radius-sm) var(--pr-radius-sm);
	background: var(--pr-panel-2);
	color: var(--pr-ink);
}
.pr-knowledge-concierge__message--assistant::before {
	content: "";
	position: absolute;
	top: 0.95rem;
	bottom: 0.95rem;
	left: 0;
	width: 2px;
	border-radius: 2px;
	background: linear-gradient(180deg, var(--pr-accent), var(--pr-accent-soft));
}
.pr-knowledge-concierge__message--user {
	align-self: flex-end;
	padding: 0.85rem 1.1rem;
	border-radius: var(--pr-radius-sm) 0.25rem var(--pr-radius-sm) var(--pr-radius-sm);
	background: linear-gradient(180deg, var(--pr-accent) 0%, color-mix(in srgb, var(--pr-accent) 85%, #000) 100%);
	color: #fff;
	box-shadow: 0 0.4rem 1.1rem rgba(233, 51, 54, 0.2);
}
.pr-knowledge-concierge__message.is-pending {
	color: var(--pr-ink-3);
	font-style: normal;
}
.pr-knowledge-concierge__message.is-pending p::after {
	content: '';
	display: inline-block;
	margin-left: 0.15rem;
	width: 2.4ch;
	text-align: left;
	animation: pr-kc-dots 1.4s steps(4, end) infinite;
}

/* ------- Inline action links / buttons ------- */
.pr-knowledge-concierge__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.1rem;
	margin-top: 0.15rem;
	animation: pr-kc-rise var(--pr-duration-mid) var(--pr-ease) both;
}
.pr-knowledge-concierge__action {
	position: relative;
	color: var(--pr-accent);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.01em;
	text-decoration: none;
	padding-bottom: 1px;
	background-image: linear-gradient(var(--pr-accent), var(--pr-accent));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 100% 1px;
	transition: color var(--pr-duration-micro) var(--pr-ease),
		background-size var(--pr-duration-mid) var(--pr-ease);
}
.pr-knowledge-concierge__actions button.pr-knowledge-concierge__action {
	border: 0;
	padding: 0 0 1px;
	background-color: transparent;
	font-family: var(--pr-font-body);
	cursor: pointer;
}
.pr-knowledge-concierge__action.is-unavailable,
.pr-knowledge-concierge__result-link.is-unavailable {
	color: var(--pr-ink-3);
	background-image: none;
	cursor: default;
	pointer-events: none;
	text-decoration: none;
}
.pr-knowledge-concierge__action:hover,
.pr-knowledge-concierge__action:focus-visible {
	color: var(--pr-ink);
	background-size: 100% 1px;
	outline: none;
}

/* ------- Result cards (inline) ------- */
.pr-knowledge-concierge__results { display: grid; gap: 0.7rem; margin-top: 0.15rem; }
.pr-knowledge-concierge__result {
	display: grid;
	grid-template-columns: 5rem minmax(0, 1fr);
	overflow: hidden;
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius-sm);
	background: var(--pr-raised);
	transition: border-color var(--pr-duration-micro) var(--pr-ease),
		box-shadow var(--pr-duration-micro) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__result:hover { border-color: var(--pr-line-strong); box-shadow: 0 0.4rem 1rem rgba(26, 26, 29, 0.06); transform: translateY(-1px); }
.pr-knowledge-concierge__result.is-selected {
	border-color: var(--pr-accent);
	box-shadow: 0 0 0 1px var(--pr-accent), 0 0.5rem 1.4rem rgba(233, 51, 54, 0.14);
}
.pr-knowledge-concierge__result .pr-knowledge-concierge__action:disabled {
	color: var(--pr-ink-3);
	background-image: none;
	cursor: default;
}
.pr-knowledge-concierge__result > img {
	width: 100%;
	height: 100%;
	min-height: 8rem;
	object-fit: cover;
	background: var(--pr-panel-2);
}
.pr-knowledge-concierge__result-body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.3rem;
	padding: 0.85rem;
	color: var(--pr-ink-2);
	font-size: 0.75rem;
	line-height: 1.35;
}
.pr-knowledge-concierge__result-body strong { color: var(--pr-ink); font-size: 0.86rem; font-weight: 700; }
.pr-knowledge-concierge__result-price { margin-top: 0.2rem; color: var(--pr-ink); font-size: 0.8rem; font-weight: 800; }
.pr-knowledge-concierge__result-link {
	color: var(--pr-ink-2);
	font-size: 0.72rem;
	text-decoration: none;
	border-bottom: 1px solid var(--pr-line-strong);
	transition: color var(--pr-duration-micro) var(--pr-ease), border-color var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__result-link:hover,
.pr-knowledge-concierge__result-link:focus-visible { color: var(--pr-accent); border-color: var(--pr-accent); }

/* ------- Amenity + feature rails ------- */
.pr-knowledge-concierge__amenity-label,
.pr-knowledge-concierge__feature-label {
	margin: 0.85rem 0 0.3rem;
	color: var(--pr-ink-3);
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.13em;
	line-height: 1.2;
	text-transform: uppercase;
}
.pr-knowledge-concierge__amenities {
	display: flex;
	flex-wrap: nowrap;
	gap: 0.75rem;
	width: 100%;
	margin: 0.18rem 0 0;
	padding: 0 0 0.12rem;
	overflow-x: auto;
	list-style: none;
	scrollbar-width: none;
}
.pr-knowledge-concierge__amenities::-webkit-scrollbar { display: none; }
.pr-knowledge-concierge__amenity {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	gap: 0.35rem;
	color: var(--pr-ink-2);
	font-size: 0.68rem;
	line-height: 1.2;
	white-space: nowrap;
}
.pr-knowledge-concierge__amenity + .pr-knowledge-concierge__amenity { padding-left: 0.75rem; border-left: 1px solid var(--pr-line); }
.pr-knowledge-concierge__amenity svg {
	width: 0.95rem;
	height: 0.95rem;
	flex: 0 0 0.95rem;
	fill: none;
	stroke: var(--pr-accent);
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 1.55;
}
.pr-knowledge-concierge__features { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.12rem; }
.pr-knowledge-concierge__feature {
	padding: 0.35rem 0.55rem;
	border: 1px solid var(--pr-line);
	border-radius: 999px;
	background: var(--pr-panel-2);
	color: var(--pr-ink-2);
	font-size: 0.68rem;
	line-height: 1.1;
}

/* ------- Shortlist modal ------- */
html.pr-knowledge-shortlist-open { overflow: hidden; }
.pr-knowledge-concierge__shortlist {
	width: min(58rem, calc(100vw - 2rem));
	max-height: min(48rem, calc(100dvh - 2rem));
	margin: auto;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--pr-ink);
}
.pr-knowledge-concierge__shortlist::backdrop {
	background: rgba(26, 26, 29, 0.5);
	backdrop-filter: blur(4px);
}
.pr-knowledge-concierge__shortlist-shell {
	max-height: inherit;
	overflow: auto;
	padding: 1.5rem;
	background: var(--pr-panel);
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius);
	box-shadow: 0 2rem 5rem rgba(26, 26, 29, 0.18);
	scrollbar-width: thin;
	scrollbar-color: var(--pr-line-strong) transparent;
}
.pr-knowledge-concierge__shortlist-bar {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1rem;
	border-bottom: 1px solid var(--pr-line);
	padding-bottom: 1.1rem;
}
.pr-knowledge-concierge__shortlist-bar h2 {
	margin: 0.2rem 0 0;
	font-family: var(--pr-font-head);
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	font-weight: 600;
	line-height: 1;
	color: var(--pr-ink);
}
.pr-knowledge-concierge__shortlist-close {
	display: inline-grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border: 1px solid var(--pr-line-strong);
	border-radius: 50%;
	background: #fff;
	color: var(--pr-ink);
	font-size: 1.45rem;
	line-height: 1;
	cursor: pointer;
	transition: border-color var(--pr-duration-micro) var(--pr-ease), color var(--pr-duration-micro) var(--pr-ease), background var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__shortlist-close:hover { border-color: var(--pr-accent); color: var(--pr-accent); background: color-mix(in srgb, var(--pr-accent) 6%, #fff); }
.pr-knowledge-concierge__shortlist-close:focus-visible { outline: 2px solid var(--pr-accent); outline-offset: 3px; }
.pr-knowledge-concierge__shortlist-status { margin: 1.1rem 0; color: var(--pr-ink-2); font-size: 0.82rem; }
.pr-knowledge-concierge__shortlist-results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem; }
.pr-knowledge-concierge__shortlist-card {
	overflow: hidden;
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius-sm);
	background: var(--pr-raised);
	transition: border-color var(--pr-duration-micro) var(--pr-ease), box-shadow var(--pr-duration-micro) var(--pr-ease), transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__shortlist-card:hover { border-color: var(--pr-line-strong); box-shadow: 0 0.6rem 1.4rem rgba(26, 26, 29, 0.08); transform: translateY(-2px); }
.pr-knowledge-concierge__shortlist-card > img { display: block; width: 100%; aspect-ratio: 1.55; object-fit: cover; background: var(--pr-panel-2); }
.pr-knowledge-concierge__shortlist-card-body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.35rem;
	padding: 0.95rem;
	color: var(--pr-ink-2);
	font-size: 0.8rem;
	line-height: 1.35;
}
.pr-knowledge-concierge__shortlist-card-body strong { color: var(--pr-ink); font-weight: 700; }
.pr-knowledge-concierge__shortlist-card-price { color: var(--pr-ink); margin-top: 0.2rem; font-weight: 800; }
.pr-knowledge-concierge__shortlist-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	margin-top: 1.3rem;
	color: var(--pr-ink-2);
	font-size: 0.8rem;
}
@media (max-width: 560px) {
	.pr-knowledge-concierge__shortlist { width: min(100vw - 1rem, 58rem); max-height: calc(100dvh - 1rem); }
	.pr-knowledge-concierge__shortlist-shell { padding: 1.1rem; }
	.pr-knowledge-concierge__shortlist-results { grid-template-columns: 1fr; }
}

/* ------- Composer ------- */
.pr-knowledge-concierge__form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 0.6rem;
	padding: 1rem;
	border-top: 1px solid var(--pr-line);
	background: var(--pr-panel-2);
}
.pr-knowledge-concierge__input {
	min-width: 0;
	border: 1px solid var(--pr-line);
	border-radius: var(--pr-radius-sm);
	padding: 0.95rem 1.1rem;
	background: #fff;
	color: var(--pr-ink);
	font: 500 0.94rem/1.3 var(--pr-font-body);
	transition: border-color var(--pr-duration-micro) var(--pr-ease), box-shadow var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge__input::placeholder { color: var(--pr-ink-3); }
.pr-knowledge-concierge__input:focus-visible {
	outline: none;
	border-color: var(--pr-accent-soft);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--pr-accent) 14%, transparent);
}
/* Icon-only circular send button — the "Ask Concierge" label stays in the
   DOM for the accessible name (sr-only clip, same technique as
   .pr-knowledge-concierge__sr-only) while only the arrow is shown, rotated
   from ↗ to a plain ↑ so it matches the inline concierge's send button. */
.pr-knowledge-concierge__send {
	flex: 0 0 auto;
	width: 3.2rem;
	height: 3.2rem;
	min-height: 3.2rem;
	padding: 0;
	border-radius: 50%;
	white-space: nowrap;
}
.pr-knowledge-concierge__send > span:first-child {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.pr-knowledge-concierge__send span:last-child {
	font-size: 1.25rem;
	line-height: 1;
	transform: rotate(-45deg);
}
.pr-knowledge-concierge__input:disabled,
.pr-knowledge-concierge__send:disabled { cursor: wait; opacity: 0.55; }

.pr-knowledge-concierge__note { margin: 1rem 0 0; color: var(--pr-ink-3); font-size: 0.73rem; line-height: 1.55; }
.pr-knowledge-concierge__sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ================================================================== *
 * FLOATING LAUNCHER — a live radar orb that expands into a labelled
 * pill on hover/focus. When open, the panel's own close control takes
 * over that exact bottom-right slot as a plain collapse arrow — no
 * need to relabel "Ask Concierge" to someone already mid-conversation.
 * ================================================================== */
.pr-knowledge-concierge-float {
	position: fixed;
	z-index: 9999;
	right: 1.5rem;
	bottom: 1.5rem;
	font-family: var(--pr-font-body);
}

.pr-knowledge-concierge-float__launcher {
	display: inline-flex;
	align-items: center;
	height: 3.9rem;
	padding: 0;
	border: 1px solid var(--pr-line-strong);
	border-radius: 999px;
	background: var(--pr-obsidian);
	color: #fff;
	font: 700 0.82rem/1 var(--pr-font-body);
	letter-spacing: 0.02em;
	cursor: pointer;
	overflow: hidden;
	box-shadow: 0 1rem 2.2rem rgba(26, 26, 29, 0.28);
	transition: box-shadow var(--pr-duration-mid) var(--pr-ease),
		border-color var(--pr-duration-mid) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge-float__launcher:hover,
.pr-knowledge-concierge-float__launcher:focus-visible {
	border-color: var(--pr-accent-soft);
	box-shadow:
		0 1.2rem 2.6rem rgba(26, 26, 29, 0.32),
		0 0 0 4px color-mix(in srgb, var(--pr-accent) 14%, transparent);
	outline: none;
}
.pr-knowledge-concierge-float__launcher:active { transform: scale(0.97); }

/* --- The radar avatar (built entirely from the existing empty span) --- */
.pr-knowledge-concierge-float__launcher-mark {
	position: relative;
	flex: 0 0 3.9rem;
	width: 3.9rem;
	height: 3.9rem;
	border-radius: 50%;
	background: radial-gradient(circle at center, #0e1013 0%, #06070a 100%);
	overflow: hidden;
	isolation: isolate;
}
/* concentric radar grid + centre pip */
.pr-knowledge-concierge-float__launcher-mark::before {
	content: "";
	position: absolute;
	inset: 0.7rem;
	border-radius: 50%;
	background:
		radial-gradient(circle at center, transparent 0 1.5px, var(--pr-accent) 1.5px 2.5px, transparent 2.5px) center / 100% 100% no-repeat,
		repeating-radial-gradient(circle at center, transparent 0 0.32rem, rgba(233, 51, 54, 0.28) 0.32rem 0.35rem);
	box-shadow: inset 0 0 0 1px rgba(233, 51, 54, 0.35);
	opacity: 0.85;
}
/* the sweeping beam */
.pr-knowledge-concierge-float__launcher-mark::after {
	content: "";
	position: absolute;
	inset: 0.55rem;
	border-radius: 50%;
	background: conic-gradient(from 0deg,
		transparent 0deg,
		transparent 250deg,
		color-mix(in srgb, var(--pr-accent) 20%, transparent) 320deg,
		var(--pr-accent) 360deg);
	animation: pr-kc-sweep 3.6s linear infinite;
}

/* --- The label (the middle text span, hidden until hover) --- */
.pr-knowledge-concierge-float__launcher > span:nth-of-type(2) {
	max-width: 0;
	overflow: hidden;
	white-space: nowrap;
	opacity: 0;
	transform: translateX(-4px);
	transition: max-width var(--pr-duration-reveal) var(--pr-ease),
		opacity var(--pr-duration-mid) var(--pr-ease),
		transform var(--pr-duration-mid) var(--pr-ease),
		padding var(--pr-duration-reveal) var(--pr-ease);
}
.pr-knowledge-concierge-float__launcher:hover > span:nth-of-type(2),
.pr-knowledge-concierge-float__launcher:focus-visible > span:nth-of-type(2) {
	max-width: 12rem;
	padding: 0 1.15rem 0 0.15rem;
	opacity: 1;
	transform: translateX(0);
}

/* The markup still carries the old ↗ icon span; retired per request —
   the orb + label read cleanly on their own without a trailing arrow. */
.pr-knowledge-concierge-float__launcher-icon { display: none; }

/* When the panel is open, retire the orb — the close button (below)
   takes its exact spot as a plain collapse arrow. */
.pr-knowledge-concierge-float:has([data-knowledge-panel]:not([hidden])) .pr-knowledge-concierge-float__launcher {
	opacity: 0;
	transform: scale(0.9);
	pointer-events: none;
}

/* ------- Floating panel ------- */
.pr-knowledge-concierge-float__panel {
	position: absolute;
	right: 0;
	bottom: calc(100% + 0.9rem);
	width: min(34rem, calc(100vw - 2.5rem));
	max-height: min(46rem, calc(100dvh - 7rem));
	display: flex;
	flex-direction: column;
	border: 1px solid var(--pr-line-strong);
	border-radius: var(--pr-radius);
	box-shadow: 0 1.75rem 4.5rem rgba(26, 26, 29, 0.24);
	background: var(--pr-void);
	overflow: hidden;
	transform-origin: bottom right;
	animation: pr-kc-panel-in var(--pr-duration-mid) var(--pr-ease);
}
.pr-knowledge-concierge-float__panel[hidden] { display: none; }
.pr-knowledge-concierge-float__panel > [data-pr-knowledge-concierge] { display: flex; flex-direction: column; min-height: 0; }
.pr-knowledge-concierge-float__panel .pr-knowledge-concierge__desk { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.pr-knowledge-concierge-float__backdrop { display: none; }

/* The close control ("×" in markup) is repositioned OUT of the panel's
   corner and into the exact fixed slot the launcher orb occupies when
   closed — same size, same obsidian treatment — so opening the panel
   reads as "the orb became an arrow", not "the orb vanished and a new
   X appeared elsewhere". The literal × glyph is visually swapped for a
   drawn chevron via ::after; the button's accessible name (aria-label
   set in markup) is untouched, so this is a pure restyle. */
.pr-knowledge-concierge-float__close {
	position: fixed;
	z-index: 3;
	right: 1.5rem;
	bottom: 1.5rem;
	width: 3.9rem;
	height: 3.9rem;
	display: grid;
	place-items: center;
	border: 1px solid var(--pr-line-strong);
	border-radius: 50%;
	background: var(--pr-obsidian);
	color: transparent;
	font-size: 0;
	cursor: pointer;
	box-shadow: 0 1rem 2.2rem rgba(26, 26, 29, 0.28);
	transition: box-shadow var(--pr-duration-mid) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease),
		border-color var(--pr-duration-mid) var(--pr-ease);
}
.pr-knowledge-concierge-float__close::after {
	content: "";
	position: relative;
	top: 1px;
	width: 0.55rem;
	height: 0.55rem;
	border-style: solid;
	border-color: var(--pr-accent);
	border-width: 0 2px 2px 0;
	transform: rotate(-135deg);
}
.pr-knowledge-concierge-float__close:hover,
.pr-knowledge-concierge-float__close:focus-visible {
	transform: translateY(-2px);
	box-shadow:
		0 1.2rem 2.6rem rgba(26, 26, 29, 0.32),
		0 0 0 4px color-mix(in srgb, var(--pr-accent) 14%, transparent);
}
.pr-knowledge-concierge-float__close:focus-visible { outline: none; }

/* Floating variant tweaks to the shared section */
.pr-knowledge-concierge--floating {
	width: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: var(--pr-void);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__header {
	margin: 0;
	padding: 1.35rem 1.35rem 0.9rem;
	border-bottom: 1px solid var(--pr-line);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__title,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__lede { display: none; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__eyebrow { margin-bottom: 0; font-size: 0.78rem; letter-spacing: 0.14em; color: var(--pr-ink); }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages { flex: 1; min-height: 22rem; max-height: none; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__note { display: none; }

/* ================================================================== *
 * MOTION
 * ================================================================== */
@keyframes pr-kc-sweep { to { transform: rotate(360deg); } }
@keyframes pr-kc-ping {
	0% { transform: scale(0.6); opacity: 0.9; }
	70%, 100% { transform: scale(1.9); opacity: 0; }
}
@keyframes pr-kc-rise {
	from { opacity: 0; transform: translateY(6px); }
	to { opacity: 1; transform: translateY(0); }
}
@keyframes pr-kc-panel-in {
	from { opacity: 0; transform: translateY(10px) scale(0.98); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes pr-kc-dots {
	0% { content: ''; }
	25% { content: '·'; }
	50% { content: '· ·'; }
	75%, 100% { content: '· · ·'; }
}

/* ================================================================== *
 * RESPONSIVE
 * ================================================================== */
@media (max-width: 35rem) {
	.pr-knowledge-concierge { padding: 1.35rem; }
	.pr-knowledge-concierge__title { font-size: clamp(2.6rem, 15vw, 3.9rem); }
	.pr-knowledge-concierge__messages { min-height: 17rem; padding: 1.1rem; }
	.pr-knowledge-concierge__form { grid-template-columns: 1fr; }
	.pr-knowledge-concierge__send { width: 100%; }

	.pr-knowledge-concierge-float { right: 0.9rem; bottom: 0.9rem; }
	/* No hover on touch — keep the label visible so the orb reads clearly. */
	.pr-knowledge-concierge-float__launcher > span:nth-of-type(2) {
		max-width: 12rem;
		padding: 0 0.6rem 0 0.15rem;
		opacity: 1;
		transform: none;
	}
	.pr-knowledge-concierge-float__panel {
		position: fixed;
		right: 0.65rem;
		bottom: 0.65rem;
		width: calc(100vw - 1.3rem);
		max-height: calc(100dvh - 1.3rem);
		overflow: auto;
	}
	.pr-knowledge-concierge-float__close {
		right: 0.9rem;
		bottom: 0.9rem;
		width: 3.4rem;
		height: 3.4rem;
	}
	.pr-knowledge-concierge-float__backdrop {
		position: fixed;
		inset: 0;
		z-index: -1;
		display: block;
		background: rgba(26, 26, 29, 0.4);
		backdrop-filter: blur(2px);
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages { max-height: 46vh; }
}

@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge__rail button,
	.pr-knowledge-concierge-float__launcher,
	.pr-knowledge-concierge-float__close { transition: none; }
	.pr-knowledge-concierge__rail button:active,
	.pr-knowledge-concierge-float__launcher:active { transform: none; }
	.pr-knowledge-concierge-float__launcher-mark::after,
	.pr-knowledge-concierge__eyebrow span::after { animation: none; }
	.pr-knowledge-concierge__message,
	.pr-knowledge-concierge__actions,
	.pr-knowledge-concierge-float__panel { animation: none; }
	.pr-knowledge-concierge__message.is-pending p::after { animation: none; content: ' …'; }
}

/* ================================================================== *
 * FLOATING CONCIERGE - QUIET SERVICE DIRECTION
 * UI-only overrides. Existing data hooks, actions, message handling,
 * property results, capture, and REST behaviour remain unchanged.
 * ================================================================== */
.pr-knowledge-concierge-float__panel {
	bottom: calc(100% + 12px);
	width: min(430px, calc(100vw - 32px));
	height: min(700px, calc(100dvh - 80px));
	max-height: min(700px, calc(100dvh - 80px));
	border-color: #dededb;
	border-radius: 20px;
	background: #fbfbfa;
	box-shadow: 0 1.35rem 3.75rem rgba(25, 27, 31, 0.16), 0 0.2rem 0.7rem rgba(25, 27, 31, 0.06);
}

.pr-knowledge-concierge-float__panel > .pr-knowledge-concierge--floating {
	height: 100%;
	background: #fbfbfa;
}

.pr-knowledge-concierge-float__close {
	position: absolute;
	top: 20px;
	right: 18px;
	bottom: auto;
	width: 41px;
	height: 41px;
	border: 0;
	border-radius: 12px;
	background: transparent;
	box-shadow: none;
	color: #4e5055;
	font: 400 28px/1 var(--pr-font-body);
}

.pr-knowledge-concierge-float__close::after { display: none; }
.pr-knowledge-concierge-float__close:hover,
.pr-knowledge-concierge-float__close:focus-visible {
	transform: none;
	background: #f0f0ee;
	box-shadow: none;
	color: var(--pr-ink);
}
.pr-knowledge-concierge-float__close:focus-visible {
	outline: 2px solid var(--pr-accent);
	outline-offset: 2px;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__header {
	flex: 0 0 auto;
	min-height: 88px;
	padding: 18px 74px 17px 20px;
	background: #fbfbfa;
	border-bottom-color: #e6e6e3;
}

.pr-knowledge-concierge__identity {
	display: flex;
	align-items: center;
	gap: 13px;
}

.pr-knowledge-concierge__identity-title {
	margin: 0;
	color: #222328;
	font: 700 16px/1.25 var(--pr-font-body);
	letter-spacing: -0.018em;
}

.pr-knowledge-concierge__status {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 4px 0 0;
	color: #71747b;
	font: 500 12px/1.2 var(--pr-font-body);
}

.pr-knowledge-concierge__status span {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #37ad62;
	box-shadow: 0 0 0 3px rgba(55, 173, 98, 0.1);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark {
	flex-basis: 42px;
	width: 42px;
	height: 42px;
	background: #17181c;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark::before { inset: 8px; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark::after { inset: 7px; }

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk {
	display: flex;
	flex: 1 1 auto;
	min-height: 0;
	background: #fff;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages {
	order: 1;
	min-height: 0;
	padding: 22px 20px 24px;
	gap: 18px;
	background: #fff;
	scrollbar-width: thin;
	scrollbar-color: #d7d7d3 transparent;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages::-webkit-scrollbar { width: 5px; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages::-webkit-scrollbar-thumb {
	background: #d7d7d3;
	border: 1px solid transparent;
	background-clip: padding-box;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message {
	font-size: 14px;
	line-height: 1.62;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--assistant {
	max-width: 100%;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #34363c;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--assistant::before { display: none; }

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--user {
	max-width: 84%;
	padding: 11px 14px;
	border: 1px solid #f1dfe0;
	border-radius: 14px 4px 14px 14px;
	background: #fff3f3;
	box-shadow: none;
	color: #292a2f;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome {
	align-self: stretch;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	max-width: none;
	text-align: center;
	color: #696c72;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 {
	max-width: 19rem;
	margin: 8px auto 12px;
	color: #222328;
	font: 600 clamp(34px, 4vw, 42px)/0.98 var(--pr-font-head);
	letter-spacing: -0.035em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome > p:last-child {
	max-width: 19.5rem;
	font-size: 14px;
	line-height: 1.55;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-label {
	margin-top: 18px;
	color: #9b7138;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.21em;
	line-height: 1.2;
	text-transform: uppercase;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
	flex-basis: 72px;
	width: 72px;
	height: 72px;
	border: 1px solid #e6e4df;
	background: #fff;
	box-shadow: 0 0.65rem 1.8rem rgba(31, 32, 36, 0.06);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::before {
	inset: 14px;
	background:
		radial-gradient(circle at center, transparent 0 1.5px, #2a2b30 1.5px 2.5px, transparent 2.5px) center / 100% 100% no-repeat,
		repeating-radial-gradient(circle at center, transparent 0 0.38rem, rgba(42, 43, 48, 0.36) 0.38rem 0.42rem);
	box-shadow: inset 0 0 0 1px rgba(42, 43, 48, 0.44);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after {
	inset: 12px;
	background: conic-gradient(from 0deg, transparent 0deg, transparent 250deg, rgba(42, 43, 48, 0.16) 320deg, #2a2b30 360deg);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
	justify-content: center;
	padding-top: 28px;
	padding-bottom: 12px;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--welcome,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__rail {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
	order: 2;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	padding: 7px 20px 22px;
	border: 0;
	background: #fff;
	overflow: visible;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail > span { display: none; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button {
	position: relative;
	min-width: 0;
	min-height: 52px;
	padding: 11px 32px 11px 14px;
	border-color: #e3e2df;
	border-radius: 16px;
	background: #fff;
	color: #4b4d54;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.25;
	text-align: left;
	white-space: normal;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button::after {
	content: '›';
	position: absolute;
	top: 50%;
	right: 13px;
	color: #a77a3c;
	font-size: 18px;
	font-weight: 400;
	transform: translateY(-52%);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:hover,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:focus-visible {
	border-color: #c8b18e;
	background: #fbfaf8;
	color: #24252a;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__form {
	order: 3;
	grid-template-columns: minmax(0, 1fr) 50px;
	align-items: center;
	gap: 9px;
	padding: 14px 16px 16px;
	border-top-color: #e6e6e3;
	background: #faf9f8;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__input {
	height: 58px;
	padding: 0 16px;
	border-color: #dededb;
	border-radius: 16px;
	background: #fff;
	font-size: 14px;
	font-weight: 500;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__input::placeholder { color: #96989d; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__input:focus-visible {
	border-color: rgba(233, 51, 54, 0.48);
	box-shadow: 0 0 0 3px rgba(233, 51, 54, 0.09);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send {
	width: 50px;
	height: 50px;
	min-height: 50px;
	border: 0;
	border-radius: 14px;
	background: #efefed;
	box-shadow: none;
	color: #74767c;
	opacity: 1;
	transition: background var(--pr-duration-micro) var(--pr-ease), color var(--pr-duration-micro) var(--pr-ease), transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send span:last-child {
	font-size: 19px;
	transform: rotate(-45deg);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__form:has(.pr-knowledge-concierge__input:not(:placeholder-shown)) .pr-knowledge-concierge__send:not(:disabled) {
	background: var(--pr-accent);
	color: #fff;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:not(:disabled):active { transform: scale(0.97); }

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result {
	grid-template-columns: 72px minmax(0, 1fr);
	border-color: #e3e2df;
	border-radius: 14px;
	box-shadow: none;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__result-body { padding: 0.78rem; }

@media (max-width: 35rem) {
	.pr-knowledge-concierge-float__panel {
		inset: 8px;
		width: auto;
		height: calc(100dvh - 16px);
		max-height: calc(100dvh - 16px);
		border-radius: 18px;
	}
	.pr-knowledge-concierge-float__close {
		top: 18px;
		right: 16px;
		bottom: auto;
		width: 40px;
		height: 40px;
	}
	.pr-knowledge-concierge--floating { padding: 0; }
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__header { padding-left: 16px; }
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages {
		max-height: none;
		padding-right: 16px;
		padding-left: 16px;
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
		padding-right: 16px;
		padding-left: 16px;
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__form {
		grid-template-columns: minmax(0, 1fr) 50px;
		padding-bottom: max(16px, env(safe-area-inset-bottom));
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__send { width: 50px; }
}

@media (max-width: 24rem) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail { grid-template-columns: 1fr; }
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 { font-size: 32px; }
}

@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after { animation: none; }
}

/* ================================================================== *
 * FLOATING CONCIERGE — CHIDI / NAVIGATION FIRST STATE
 * Visual treatment only. The established data hooks, conversation state,
 * suggestion actions, submission flow, focus behaviour and reduced-motion
 * handling remain unchanged.
 * ================================================================== */
.pr-knowledge-concierge-float__panel {
	width: min(36.5rem, calc(100vw - 2rem));
	height: min(41rem, calc(100dvh - 5rem));
	max-height: min(41rem, calc(100dvh - 5rem));
	border-color: #d8d8d8;
	border-radius: 0.55rem;
	background: #fff;
	box-shadow: 0 1.4rem 4rem rgba(32, 32, 36, 0.18);
}

.pr-knowledge-concierge-float__panel > .pr-knowledge-concierge--floating,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__messages,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
	background: #fff;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__header {
	display: none;
}

.pr-knowledge-concierge-float__close {
	top: 0.85rem;
	right: 0.85rem;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	color: #8d8d92;
	font-size: 1.45rem;
	z-index: 2;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) {
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto auto;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
	justify-content: flex-start;
	padding: 2.15rem 1.85rem 0.75rem;
	overflow: hidden;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome {
	align-items: flex-start;
	justify-content: flex-start;
	text-align: left;
	color: #68686c;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 {
	max-width: none;
	margin: 2.15rem 0 1.75rem;
	color: #202024;
	font: 700 clamp(1.35rem, 3vw, 1.6rem)/1.15 var(--pr-font-body);
	letter-spacing: -0.035em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 span {
	color: var(--pr-accent);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome > p:last-child {
	max-width: 26rem;
	font-size: clamp(1rem, 2.2vw, 1.18rem);
	line-height: 1.45;
	letter-spacing: -0.018em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome strong {
	color: #5d5d61;
	font-weight: 700;
}

/* The existing radar node becomes the compact red PropatiRadar guide mark. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
	position: relative;
	flex: 0 0 auto;
	width: 3.35rem;
	height: 2.25rem;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	overflow: visible;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::before,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after {
	content: "";
	position: absolute;
	left: 0.15rem;
	width: 2.85rem;
	height: 0.72rem;
	border-radius: 999px;
	background: linear-gradient(180deg, #ff4b50 0%, #e91f2d 64%, #c91420 100%);
	box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.55), 0 0.18rem 0.35rem rgba(210, 25, 36, 0.18);
	transform-origin: 48% 50%;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::before {
	top: 0.38rem;
	transform: rotate(-20deg) scaleX(0.9);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after {
	bottom: 0.36rem;
	transform: rotate(20deg) scaleX(0.9);
	animation: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
	grid-template-columns: repeat(3, max-content);
	justify-content: start;
	gap: 0.75rem;
	padding: 0.35rem 1.85rem 1rem;
	overflow-x: auto;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button {
	min-height: 1.9rem;
	padding: 0.42rem 0.82rem;
	border-color: #d2d0d8;
	border-radius: 0.55rem;
	color: #44444b;
	font-size: 0.73rem;
	font-weight: 600;
	white-space: nowrap;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button::after {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__form {
	position: relative;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__navigate-label {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
	display: block;
	height: 9.35rem;
	margin: 0 1.85rem 1.85rem;
	padding: 0;
	border: 1px solid #efd3d5;
	border-radius: 0.65rem;
	background: #fbf6f6;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__input {
	position: absolute;
	top: 1rem;
	left: 1rem;
	right: 1rem;
	width: calc(100% - 2rem);
	height: 2.5rem;
	padding: 0 0 0 0.2rem;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-size: 0.9rem;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__input:focus-visible {
	border: 0;
	box-shadow: none;
	outline: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label {
	position: absolute;
	left: 3rem;
	bottom: 1.25rem;
	display: block;
	color: #b1afb4;
	font-size: 0.82rem;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form::after {
	content: "↗";
	position: absolute;
	left: 1rem;
	bottom: 1.23rem;
	display: grid;
	width: 1.15rem;
	height: 1.15rem;
	place-items: center;
	border: 1px solid #e3dfe1;
	background: #fff;
	color: #c9c5c8;
	font-size: 0.68rem;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send {
	position: absolute;
	right: 1.15rem;
	bottom: 1.15rem;
	width: 3.15rem;
	height: 3.15rem;
	min-height: 3.15rem;
	border-radius: 0.55rem;
	background: var(--pr-accent);
	color: #fff;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send > span:first-child {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send span:last-child {
	font-size: 1.45rem;
	font-weight: 400;
	transform: none;
}

@media (max-width: 35rem) {
	.pr-knowledge-concierge-float__panel {
		inset: 0.4rem;
		height: calc(100dvh - 0.8rem);
		max-height: calc(100dvh - 0.8rem);
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
		padding: 1.75rem 1.4rem 0.6rem;
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
		padding-right: 1.4rem;
		padding-left: 1.4rem;
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
		margin: 0 1.4rem max(1.4rem, env(safe-area-inset-bottom));
	}
}

/* ================================================================== *
 * CHIDI DESIGN SYSTEM - SCALE, MATERIAL, SPACING AND MOTION
 *
 * Component dimensions use em-based tokens on purpose. The host theme uses
 * a reduced root rem scale, so a local medium font context keeps Chidi
 * accessible and consistent without introducing fixed pixel measurements.
 * ================================================================== */
.pr-knowledge-concierge-float {
	--chidi-space-1: 0.25em;
	--chidi-space-2: 0.5em;
	--chidi-space-3: 0.75em;
	--chidi-space-4: 1em;
	--chidi-space-5: 1.25em;
	--chidi-space-6: 1.5em;
	--chidi-space-7: 1.75em;
	--chidi-space-8: 2em;
	--chidi-space-10: 2.5em;
	--chidi-space-12: 3em;
	--chidi-control: 3em;
	--chidi-target: 2.75em;
	--chidi-radius-panel: 0.585em;
	--chidi-radius-card: 0.4875em;
	--chidi-radius-control: 0.40625em;
	--chidi-canvas: #fcfcfd;
	--chidi-surface: #ffffff;
	--chidi-surface-soft: #f7f8fa;
	--chidi-ink: #202126;
	--chidi-ink-muted: #686b73;
	--chidi-ink-faint: #92959d;
	--chidi-line: #e5e6e9;
	--chidi-line-strong: #d7d9de;
	--chidi-red: #ef303b;
	--chidi-red-deep: #db202c;
	--chidi-pink: #fdebec;
	--chidi-pink-soft: #fff7f7;
	--chidi-focus: color-mix(in srgb, var(--chidi-red) 22%, transparent);
	--chidi-shadow: 0 1.5em 4.5em rgba(31, 34, 42, 0.2), 0 0.25em 1em rgba(31, 34, 42, 0.07);
	--chidi-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--chidi-ease-spring: cubic-bezier(0.22, 1.35, 0.36, 1);
	font-size: medium;
}

.pr-knowledge-concierge-float {
	right: var(--chidi-space-6);
	bottom: var(--chidi-space-6);
}

.pr-knowledge-concierge-float__panel {
	right: 0;
	bottom: calc(100% + var(--chidi-space-2));
	width: min(35em, calc(100vw - var(--chidi-space-8)));
	height: min(37em, calc(100dvh - 6.5em));
	max-height: min(37em, calc(100dvh - 6.5em));
	border: thin solid var(--chidi-line);
	border-radius: var(--chidi-radius-panel);
	background: var(--chidi-canvas);
	box-shadow: var(--chidi-shadow);
	animation: chidi-panel-enter 0.42s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge-float__panel > .pr-knowledge-concierge--floating {
	font-size: inherit;
	background: var(--chidi-canvas);
}

.pr-knowledge-concierge-float__close {
	top: var(--chidi-space-3);
	right: var(--chidi-space-3);
	width: var(--chidi-target);
	height: var(--chidi-target);
	border-radius: 50%;
	color: var(--chidi-ink-muted);
	font-size: 1em;
	transition: color 0.18s ease, background-color 0.18s ease, transform 0.18s var(--chidi-ease-out);
}

.pr-knowledge-concierge-float__close:hover,
.pr-knowledge-concierge-float__close:focus-visible {
	background: var(--chidi-surface-soft);
	color: var(--chidi-ink);
	transform: rotate(4deg);
}

.pr-knowledge-concierge-float__close:active {
	transform: scale(0.94);
}

.pr-knowledge-concierge-float__close:focus-visible {
	outline: 0.125em solid var(--chidi-red);
	outline-offset: 0.125em;
}

/* Official Chidi mark. All three existing mark nodes share one asset. */
.pr-knowledge-concierge-float__launcher-mark,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark {
	border: 0;
	background-color: transparent;
	background-image: url('../images/chidi-mark.png');
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	box-shadow: none;
	isolation: auto;
	overflow: visible;
}

.pr-knowledge-concierge-float__launcher-mark::before,
.pr-knowledge-concierge-float__launcher-mark::after,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::before,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark::before,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__brand-mark::after,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::before,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::after {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
	width: 3.7em;
	height: 3.7em;
	flex-basis: 3.7em;
	filter: drop-shadow(0 0.55em 0.75em rgba(239, 48, 59, 0.16));
	animation: chidi-mark-arrive 0.72s var(--chidi-ease-spring) both;
}

/* Welcome state */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) {
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto auto;
	background: var(--chidi-surface);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
	justify-content: flex-start;
	padding: var(--chidi-space-10) var(--chidi-space-8) var(--chidi-space-4);
	background: var(--chidi-surface);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome {
	color: var(--chidi-ink-muted);
	font-size: 1em;
	line-height: 1.55;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 {
	max-width: none;
	margin: var(--chidi-space-8) 0 var(--chidi-space-6);
	color: var(--chidi-ink);
	font: 700 1.55em/1.15 var(--pr-font-body);
	letter-spacing: -0.035em;
	animation: chidi-content-rise 0.55s 0.08s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome > p:last-child {
	max-width: 27em;
	font-size: 1.08em;
	line-height: 1.55;
	letter-spacing: -0.012em;
	text-wrap: pretty;
	animation: chidi-content-rise 0.55s 0.14s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome strong {
	color: var(--chidi-ink-muted);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
	grid-template-columns: repeat(3, max-content);
	justify-content: start;
	gap: var(--chidi-space-3);
	padding: var(--chidi-space-2) var(--chidi-space-8) var(--chidi-space-4);
	background: var(--chidi-surface);
	scroll-padding-inline: var(--chidi-space-8);
	animation: chidi-content-rise 0.55s 0.2s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button {
	min-height: 3.1em;
	padding: var(--chidi-space-2) var(--chidi-space-4);
	border: thin solid var(--chidi-line-strong);
	border-radius: var(--chidi-radius-control);
	background: var(--chidi-surface);
	color: #44464d;
	font-size: 0.78em;
	font-weight: 600;
	transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease, transform 0.2s var(--chidi-ease-out);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:hover,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:focus-visible {
	border-color: color-mix(in srgb, var(--chidi-red) 38%, var(--chidi-line));
	background: var(--chidi-pink-soft);
	color: var(--chidi-ink);
	transform: translateY(-0.1em);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:focus-visible {
	outline: 0.125em solid var(--chidi-focus);
	outline-offset: 0.125em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:active {
	transform: scale(0.97);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
	height: 9.25em;
	margin: 0 var(--chidi-space-8) var(--chidi-space-8);
	border: thin solid color-mix(in srgb, var(--chidi-red) 24%, var(--chidi-line));
	border-radius: var(--chidi-radius-card);
	background: var(--chidi-pink-soft);
	animation: chidi-composer-enter 0.6s 0.26s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__input {
	top: var(--chidi-space-4);
	left: var(--chidi-space-4);
	right: var(--chidi-space-4);
	width: calc(100% - var(--chidi-space-8));
	height: var(--chidi-space-10);
	padding: 0 0 0 var(--chidi-space-1);
	font-size: 0.94em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label {
	left: var(--chidi-space-12);
	bottom: var(--chidi-space-5);
	color: var(--chidi-ink-faint);
	font-size: 0.82em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form::after {
	left: var(--chidi-space-4);
	bottom: var(--chidi-space-5);
	width: 1.2em;
	height: 1.2em;
	border: thin solid var(--chidi-line);
	color: var(--chidi-ink-faint);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send {
	right: var(--chidi-space-5);
	bottom: var(--chidi-space-5);
	width: var(--chidi-control);
	height: var(--chidi-control);
	min-height: var(--chidi-control);
	border-radius: var(--chidi-radius-control);
	background: var(--chidi-red);
	color: #fff;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__form:focus-within {
	border-color: color-mix(in srgb, var(--chidi-red) 65%, var(--chidi-line));
	box-shadow: 0 0 0 0.22em var(--chidi-focus), inset 0 0.0625em 0 rgba(255, 255, 255, 0.8);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__input,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__input:focus-visible {
	color: var(--chidi-ink);
	outline: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__input::placeholder {
	color: var(--chidi-ink-faint);
	opacity: 1;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send {
	font-size: 1em;
	box-shadow: 0 0.45em 1.1em rgba(239, 48, 59, 0.18);
	transition: background-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s var(--chidi-ease-spring), opacity 0.18s ease;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:hover:not(:disabled),
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:focus-visible:not(:disabled) {
	background: var(--chidi-red-deep);
	box-shadow: 0 0.65em 1.4em rgba(239, 48, 59, 0.24);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:focus-visible {
	outline: 0.125em solid var(--chidi-red);
	outline-offset: 0.15em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:disabled {
	background: #eceef1;
	box-shadow: none;
	color: #8c9098;
	cursor: not-allowed;
	opacity: 1;
}

/* Active conversation */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
	min-height: 3.5em;
	padding: var(--chidi-space-3) 4em var(--chidi-space-3) var(--chidi-space-7);
	border-bottom: thin solid var(--chidi-line);
	background: color-mix(in srgb, var(--chidi-surface) 94%, transparent);
	backdrop-filter: blur(1em) saturate(130%);
	-webkit-backdrop-filter: blur(1em) saturate(130%);
	animation: chidi-header-enter 0.38s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity {
	gap: var(--chidi-space-2);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark {
	width: 1.75em;
	height: 1.75em;
	flex-basis: 1.75em;
	filter: drop-shadow(0 0.25em 0.35em rgba(239, 48, 59, 0.14));
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity-title {
	font-size: 0.78em;
	font-weight: 700;
	letter-spacing: 0.045em;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
	padding: var(--chidi-space-8) var(--chidi-space-7) var(--chidi-space-6);
	gap: var(--chidi-space-7);
	background: var(--chidi-surface);
	scroll-padding-block: var(--chidi-space-8);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message {
	font-size: 0.95em;
	line-height: 1.58;
	text-wrap: pretty;
	animation: chidi-message-enter 0.42s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--user {
	max-width: 78%;
	padding: var(--chidi-space-3) var(--chidi-space-4);
	border-radius: var(--chidi-radius-control) var(--chidi-space-1) var(--chidi-radius-control) var(--chidi-radius-control);
	background: var(--chidi-pink);
	color: var(--chidi-ink);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--assistant {
	max-width: 92%;
	color: #303238;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
	height: 5em;
	margin: 0 var(--chidi-space-7) var(--chidi-space-7);
	border: thin solid color-mix(in srgb, var(--chidi-red) 42%, var(--chidi-line));
	border-radius: var(--chidi-radius-card);
	background: var(--chidi-pink-soft);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__input {
	left: var(--chidi-space-4);
	right: 4.75em;
	width: calc(100% - 5.75em);
	height: var(--chidi-space-12);
	padding-left: var(--chidi-space-1);
	font-size: 0.95em;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send {
	right: var(--chidi-space-3);
	width: var(--chidi-control);
	height: var(--chidi-control);
	min-height: var(--chidi-control);
	border-radius: var(--chidi-radius-control);
	background: var(--chidi-red);
}

/* Property context cards */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__results {
	gap: var(--chidi-space-3);
	margin-top: var(--chidi-space-2);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result {
	grid-template-columns: 6.25em minmax(0, 1fr);
	min-height: 7em;
	border: thin solid var(--chidi-line);
	border-radius: var(--chidi-radius-card);
	background: var(--chidi-surface);
	box-shadow: 0 0.4em 1.4em rgba(31, 34, 42, 0.045);
	animation: chidi-card-enter 0.46s var(--chidi-ease-out) both;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result:hover {
	border-color: var(--chidi-line-strong);
	box-shadow: 0 0.8em 2em rgba(31, 34, 42, 0.08);
	transform: translateY(-0.12em);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result > img {
	min-height: 7em;
	background: var(--chidi-surface-soft);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result-body {
	gap: 0.28em;
	padding: var(--chidi-space-3) var(--chidi-space-4);
	color: var(--chidi-ink-muted);
	font-size: 0.76em;
	line-height: 1.35;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result-body strong {
	color: var(--chidi-ink);
	font-size: 1.12em;
	font-weight: 700;
	line-height: 1.28;
	text-wrap: balance;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result-price {
	margin-top: var(--chidi-space-1);
	color: var(--chidi-ink);
	font-size: 1em;
	font-variant-numeric: tabular-nums;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__result .pr-knowledge-concierge__action,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__result-link {
	font-size: 0.94em;
	line-height: 1.35;
}

/* Launcher uses the same quiet material as the panel. */
.pr-knowledge-concierge-float__launcher {
	height: 3.25em;
	min-height: 3.25em;
	border: thin solid color-mix(in srgb, var(--chidi-red) 26%, var(--chidi-line));
	background: color-mix(in srgb, var(--chidi-surface) 92%, transparent);
	backdrop-filter: blur(1em) saturate(150%);
	-webkit-backdrop-filter: blur(1em) saturate(150%);
	color: var(--chidi-ink);
	font-size: 1em;
	box-shadow: 0 0.9em 2.5em rgba(31, 34, 42, 0.16), inset 0 0.0625em 0 rgba(255, 255, 255, 0.9);
}

.pr-knowledge-concierge-float__launcher-mark {
	width: 3.25em;
	height: 3.25em;
	flex-basis: 3.25em;
	padding: 0.48em;
	background-origin: content-box;
	background-clip: content-box;
	filter: drop-shadow(0 0.3em 0.45em rgba(239, 48, 59, 0.16));
}

.pr-knowledge-concierge-float__launcher:hover,
.pr-knowledge-concierge-float__launcher:focus-visible {
	border-color: color-mix(in srgb, var(--chidi-red) 44%, var(--chidi-line));
	box-shadow: 0 1.15em 3em rgba(31, 34, 42, 0.2), 0 0 0 0.22em var(--chidi-focus);
	transform: translateY(-0.15em);
}

.pr-knowledge-concierge-float__launcher:active {
	transform: scale(0.97);
}

.pr-knowledge-concierge-float__launcher > span:nth-of-type(2) {
	color: var(--chidi-ink);
	font-size: 0.86em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send span:last-child {
	font-size: 1.45em;
}

@keyframes chidi-panel-enter {
	from { opacity: 0; transform: translateY(1em) scale(0.975); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes chidi-mark-arrive {
	from { opacity: 0; transform: translateY(0.8em) rotate(-7deg) scale(0.82); }
	to { opacity: 1; transform: translateY(0) rotate(0) scale(1); }
}

@keyframes chidi-content-rise {
	from { opacity: 0; transform: translateY(0.7em); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes chidi-composer-enter {
	from { opacity: 0; transform: translateY(1em) scale(0.985); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes chidi-header-enter {
	from { opacity: 0; transform: translateY(-0.55em); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes chidi-message-enter {
	from { opacity: 0; transform: translateY(0.5em); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes chidi-card-enter {
	from { opacity: 0; transform: translateY(0.65em) scale(0.99); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 35em) {
	.pr-knowledge-concierge-float {
		right: var(--chidi-space-2);
		bottom: var(--chidi-space-2);
	}

	.pr-knowledge-concierge-float__panel {
		inset: var(--chidi-space-1);
		width: auto;
		height: calc(100dvh - var(--chidi-space-2));
		max-height: calc(100dvh - var(--chidi-space-2));
		border-radius: var(--chidi-radius-card);
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) {
		grid-template-rows: minmax(16em, 1fr) auto auto;
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
		padding: var(--chidi-space-8) var(--chidi-space-5) var(--chidi-space-4);
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
		padding-right: var(--chidi-space-5);
		padding-left: var(--chidi-space-5);
		scroll-padding-inline: var(--chidi-space-5);
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
		margin: 0 var(--chidi-space-5) max(var(--chidi-space-5), env(safe-area-inset-bottom));
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
		padding: max(var(--chidi-space-3), env(safe-area-inset-top)) 3.75em var(--chidi-space-3) var(--chidi-space-5);
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
		padding: var(--chidi-space-7) var(--chidi-space-5) var(--chidi-space-5);
		gap: var(--chidi-space-6);
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--user {
		max-width: 86%;
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
		margin: 0 var(--chidi-space-5) max(var(--chidi-space-5), env(safe-area-inset-bottom));
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__result {
		grid-template-columns: 5.5em minmax(0, 1fr);
	}
}

/* Desktop welcome composition: lift the mark and introduction slightly, and
 * give the floating panel a little more breathing room above the fold. */
@media (min-width: 35.01em) {
	.pr-knowledge-concierge-float {
		bottom: calc(var(--chidi-space-6) - 2.5em);
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
		padding-top: calc(var(--chidi-space-10) - 2.8125em);
	}
}

@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge-float__panel,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome > p:last-child,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__form,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__header,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__result {
		animation: none;
	}
}

@media (max-width: 28rem) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail {
		grid-template-columns: max-content max-content max-content;
	}

	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 {
		margin-top: 1.5rem;
	}
}

/* ================================================================== *
 * FLOATING CONCIERGE — ACTIVE CHAT STATE
 * The presence of a user message is the existing, logic-free state signal.
 * No JavaScript state or data hook is added or changed here.
 * ================================================================== */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
	display: flex;
	align-items: center;
	min-height: 3rem;
	padding: 0.7rem 3.7rem 0.65rem 1.6rem;
	border-bottom: 1px solid #e5e5e5;
	background: #fff;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity {
	gap: 0.45rem;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity-title {
	color: #35353a;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: uppercase;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__status {
	display: none;
}

/* Reuse the existing brand-mark node as the compact red Chidi signature. */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark {
	position: relative;
	flex: 0 0 1.35rem;
	width: 1.35rem;
	height: 1.05rem;
	border-radius: 0;
	background: transparent;
	overflow: visible;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::before,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::after {
	content: "";
	position: absolute;
	left: 0;
	width: 1.25rem;
	height: 0.34rem;
	border-radius: 999px;
	background: linear-gradient(180deg, #ff4b50, #e91f2d 68%, #c91420);
	box-shadow: none;
	transform-origin: 48% 50%;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::before {
	top: 0.18rem;
	transform: rotate(-18deg);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::after {
	bottom: 0.17rem;
	transform: rotate(18deg);
	animation: none;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__desk {
	display: flex;
	background: #fff;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
	padding: 2.45rem 1.75rem 1.4rem;
	gap: 2rem;
	background: #fff;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message {
	font-size: 0.91rem;
	line-height: 1.48;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--user {
	max-width: 76%;
	padding: 0.92rem 1rem;
	border: 0;
	border-radius: 0.42rem;
	background: #fdeaea;
	box-shadow: none;
	color: #29292e;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--assistant {
	max-width: 94%;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #2f2f34;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--assistant::before {
	display: none;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
	display: block;
	flex: 0 0 auto;
	height: 5.7rem;
	margin: 0 1.75rem 1.8rem;
	padding: 0;
	border: 1px solid #ef9ca1;
	border-radius: 0.62rem;
	background: #fbf7f7;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__input {
	position: absolute;
	top: 50%;
	left: 1rem;
	right: 4.8rem;
	width: calc(100% - 5.8rem);
	height: 3rem;
	padding: 0 0 0 0.2rem;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-size: 0.92rem;
	transform: translateY(-50%);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__input:focus-visible {
	border: 0;
	box-shadow: none;
	outline: none;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send {
	position: absolute;
	top: 50%;
	right: 0.75rem;
	bottom: auto;
	width: 3rem;
	height: 3rem;
	min-height: 3rem;
	border-radius: 0.55rem;
	background: var(--pr-accent);
	color: #fff;
	transform: translateY(-50%);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send:not(:disabled):active {
	transform: translateY(-50%) scale(0.97);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__navigate-label,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form::after {
	display: none;
}

@media (max-width: 35rem) {
	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
		padding-left: 1.15rem;
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
		padding: 1.75rem 1.15rem 1.2rem;
		gap: 1.5rem;
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--user {
		max-width: 86%;
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
		margin: 0 1.15rem max(1.15rem, env(safe-area-inset-bottom));
	}
}

/* Final active-state alignment. Kept last so the Chidi system wins over the
 * legacy active-chat presentation above without changing any state logic. */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
	min-height: 3.4em;
	padding: var(--chidi-space-3) 4.25em var(--chidi-space-3) var(--chidi-space-7);
	border-bottom: thin solid var(--chidi-line);
	background: color-mix(in srgb, var(--chidi-surface) 94%, transparent);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity {
	gap: var(--chidi-space-2);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__identity-title {
	color: var(--chidi-ink);
	font-size: 0.72em;
	font-weight: 650;
	letter-spacing: 0.025em;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark {
	position: relative;
	flex: 0 0 1.55em;
	width: 1.55em;
	height: 1.55em;
	background: transparent url('../images/chidi-mark.png') center / contain no-repeat;
	filter: drop-shadow(0 0.18em 0.28em rgba(239, 48, 59, 0.18));
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::before,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__brand-mark::after {
	display: none;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
	padding: var(--chidi-space-8) var(--chidi-space-7) var(--chidi-space-6);
	gap: var(--chidi-space-7);
	background: var(--chidi-surface);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message {
	font-size: 0.9em;
	line-height: 1.55;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--user {
	max-width: 78%;
	padding: var(--chidi-space-4) var(--chidi-space-5);
	border-radius: var(--chidi-radius-control);
	background: var(--chidi-pink);
	color: var(--chidi-ink);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--assistant {
	max-width: 94%;
	color: var(--chidi-ink);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
	height: 5em;
	margin: 0 var(--chidi-space-7) var(--chidi-space-7);
	border: thin solid color-mix(in srgb, var(--chidi-red) 42%, var(--chidi-line));
	border-radius: var(--chidi-radius-card);
	background: var(--chidi-pink-soft);
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__input {
	left: var(--chidi-space-4);
	right: 4.75em;
	width: calc(100% - 5.75em);
	height: var(--chidi-space-12);
	padding-left: var(--chidi-space-1);
	font-size: 0.95em;
}

.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send {
	right: var(--chidi-space-3);
	width: var(--chidi-control);
	height: var(--chidi-control);
	min-height: var(--chidi-control);
	border-radius: var(--chidi-radius-control);
	background: var(--chidi-red);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button {
	min-height: 3.55em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form::after {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label {
	left: var(--chidi-space-5);
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:disabled {
	background: var(--chidi-red);
	box-shadow: 0 0.45em 1.1em rgba(239, 48, 59, 0.14);
	color: #fff;
	opacity: 0.62;
}

@media (max-width: 35em) {
	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
		padding: max(var(--chidi-space-3), env(safe-area-inset-top)) 3.75em var(--chidi-space-3) var(--chidi-space-5);
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
		padding: var(--chidi-space-7) var(--chidi-space-5) var(--chidi-space-5);
		gap: var(--chidi-space-6);
	}

	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
		margin: 0 var(--chidi-space-5) max(var(--chidi-space-5), env(safe-area-inset-bottom));
	}
}

/* ================================================================== *
 * AMBIENT INTELLIGENCE LAYER  (added 2026-08-16)
 * A pointer-reactive "aurora mesh" that lives behind the welcome screen,
 * plus a slow idle breath on the guide mark so Chidi reads as awake.
 * The .pr-kc-aurora node is injected by JS (floating variant only) and is
 * NOT referenced by any data hook, conversation state, or submission
 * logic. Appended last on purpose so it layers cleanly over the existing
 * cascade without disturbing established rules. UI only.
 * ================================================================== */
.pr-knowledge-concierge--floating {
	--pr-mx: 0.5; /* cursor X, 0–1, driven by JS (defaults to centre) */
	--pr-my: 0.5; /* cursor Y, 0–1 */
}

/* The field sits behind the content plane. On the welcome screen the desk
   surfaces go transparent so it shows through; content stays above it. */
.pr-kc-aurora {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	border-radius: inherit;
	pointer-events: none;
	opacity: 1;
	transition: opacity 0.7s var(--chidi-ease-out, ease);
}

.pr-kc-aurora__blob {
	position: absolute;
	width: 32rem;
	height: 32rem;
	border-radius: 50%;
	filter: blur(40px);
	will-change: transform;
}

/* Warm accent, cooler off-tints — kept whisper-light so the panel reads as
   soft light in glass, never "colourful". Each leans toward the cursor by a
   different depth and drifts on its own slow cycle. */
.pr-kc-aurora__blob--1 {
	background: radial-gradient(closest-side, rgba(233, 51, 54, 0.22), rgba(233, 51, 54, 0) 72%);
	left: calc(44% + (var(--pr-mx) - 0.5) * 9rem);
	top: calc(-18% + (var(--pr-my) - 0.5) * 7rem);
	animation: pr-kc-drift-a 26s ease-in-out infinite;
}
.pr-kc-aurora__blob--2 {
	background: radial-gradient(closest-side, rgba(255, 178, 120, 0.20), rgba(255, 178, 120, 0) 72%);
	left: calc(-20% + (var(--pr-mx) - 0.5) * 6rem);
	top: calc(50% + (var(--pr-my) - 0.5) * 5rem);
	animation: pr-kc-drift-b 33s ease-in-out infinite;
}
.pr-kc-aurora__blob--3 {
	background: radial-gradient(closest-side, rgba(150, 162, 220, 0.18), rgba(150, 162, 220, 0) 72%);
	left: calc(32% + (var(--pr-mx) - 0.5) * 12rem);
	top: calc(28% + (var(--pr-my) - 0.5) * 9rem);
	animation: pr-kc-drift-c 39s ease-in-out infinite;
}

@keyframes pr-kc-drift-a {
	0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
	50% { transform: translate3d(-2.5rem, 2rem, 0) scale(1.12); }
}
@keyframes pr-kc-drift-b {
	0%, 100% { transform: translate3d(0, 0, 0) scale(1.05); }
	50% { transform: translate3d(2.4rem, -1.6rem, 0) scale(0.92); }
}
@keyframes pr-kc-drift-c {
	0%, 100% { transform: translate3d(0, 0, 0) scale(0.95); }
	33% { transform: translate3d(2rem, 1.6rem, 0) scale(1.1); }
	66% { transform: translate3d(-1.6rem, -2rem, 0) scale(1); }
}

/* Content plane above the field. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk { position: relative; z-index: 1; }

/* Welcome screen only: let the aurora show through the desk surfaces. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child),
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
	background: transparent;
}

/* The composer becomes a soft glass card floating on the field. A single
   crisp hairline (drawn as an inset ring, which renders evenly across all
   four edges even with backdrop-filter) plus a visible border so the bottom
   edge never reads as half-drawn. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
	background: rgba(255, 255, 255, 0.62);
	border: 1px solid rgba(210, 25, 36, 0.24);
	backdrop-filter: blur(9px) saturate(1.05);
	-webkit-backdrop-filter: blur(9px) saturate(1.05);
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55), 0 0.6rem 1.8rem rgba(31, 34, 42, 0.07);
}

/* Centre the greeting block so the vertical space reads as intentional
   breathing room rather than a gap stuck under the heading. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
	justify-content: center;
}

/* Once a conversation starts the field recedes entirely. */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-kc-aurora {
	opacity: 0;
}

/* Living guide mark — keep the official PNG mark (never set `background`
   here, or the shorthand wipes the logo image), and add a slow glow breath
   AFTER the entrance animation so it reads as awake, not printed. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
	animation:
		chidi-mark-arrive 0.72s var(--chidi-ease-spring) both,
		pr-kc-orb-breath 4.6s ease-in-out 0.72s infinite;
}
@keyframes pr-kc-orb-breath {
	0%, 100% { filter: drop-shadow(0 0.55em 0.75em rgba(239, 48, 59, 0.16)); }
	50% { filter: drop-shadow(0 0.4em 1.15em rgba(233, 51, 54, 0.42)); }
}

@media (prefers-reduced-motion: reduce) {
	.pr-kc-aurora__blob,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
		animation: none;
	}
}

/* ================================================================== *
 * CONTROLS, THINKING STATE & LIVE MOTION  (added 2026-08-16)
 * Larger close control + a new refresh/reset control, a "thinking"
 * indicator, a scroll fade so content never butts the input bar, a
 * results scan-in, and a resting launcher pulse. UI only — the reset
 * control is wired in JS to existing state; no data contract changes.
 * ================================================================== */

/* --- Close + Refresh: plain icon controls, no circle/border/fill — just
   the glyph, sized modestly so they never crowd the header's hairline
   below them. Both share one explicit font-size (`em`-based top/right/
   width resolve against THAT element's own font-size, so if the two
   controls don't share a value their box math silently drifts apart —
   this bit us once already). --- */
.pr-knowledge-concierge-float__close,
.pr-knowledge-concierge-float__reset {
	font-size: 1em;
	width: 1.85em;
	height: 1.85em;
	top: 0.5em;
	border: 0;
	border-radius: 0;
	background: transparent;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	box-shadow: none;
	color: var(--chidi-ink-muted, #686b73);
}

.pr-knowledge-concierge-float__close {
	right: 0.5em;
	line-height: 1;
}

/* --- Refresh / start-over control, seated close to Close with a tight,
   deliberate gap between the two. --- */
.pr-knowledge-concierge-float__reset {
	position: absolute;
	right: calc(0.5em + 1.85em + 0.25em);
	display: grid;
	place-items: center;
	padding: 0;
	cursor: pointer;
	z-index: 2;
	transition: color 0.18s ease, transform 0.45s var(--chidi-ease-out, ease);
}
.pr-knowledge-concierge-float__reset svg {
	width: 1em;
	height: 1em;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.pr-knowledge-concierge-float__close:hover,
.pr-knowledge-concierge-float__close:focus-visible,
.pr-knowledge-concierge-float__reset:hover,
.pr-knowledge-concierge-float__reset:focus-visible {
	background: transparent;
	color: var(--chidi-red, #ef303b);
	outline: none;
}
.pr-knowledge-concierge-float__close:hover { transform: rotate(4deg); }
.pr-knowledge-concierge-float__reset:hover,
.pr-knowledge-concierge-float__reset:focus-visible {
	transform: rotate(-180deg);
}
.pr-knowledge-concierge-float__close:focus-visible,
.pr-knowledge-concierge-float__reset:focus-visible {
	outline: 0.125em solid var(--chidi-red, #ef303b);
	outline-offset: 0.14em;
}
.pr-knowledge-concierge-float__close:active { transform: scale(0.9); }
.pr-knowledge-concierge-float__reset:active { transform: rotate(-180deg) scale(0.9); }

/* Only offer "start over" once there is a conversation to reset. */
.pr-knowledge-concierge-float:not(:has(.pr-knowledge-concierge__message--user)) .pr-knowledge-concierge-float__reset {
	display: none;
}

/* --- Header full width fix: the base (non-floating, full-page) header
   carries `max-width: 44rem` for its own layout. The floating variant
   never reset that, so in the active-chat state the header — and its
   border-bottom line — stopped short of the panel edge instead of
   spanning it. Reset it unconditionally for the floating header. --- */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__header {
	width: 100%;
	max-width: none;
}

/* --- Header hairline: a soft gradient divider that fades out at both
   edges instead of a hard-edged border spanning the full width. Every
   existing header rule sets a solid `border-bottom`; overriding it to 0
   here (same selectors, last in source order wins) and drawing the fade
   as a pseudo-element instead. --- */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__header,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__header {
	border-bottom: 0;
	position: relative;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 1px;
	background: linear-gradient(90deg, transparent 0%, var(--chidi-line-strong, #d7d9de) 50%, transparent 100%);
	pointer-events: none;
}

/* --- Scroll fade: content dissolves before it reaches the input bar,
   so a mid-scroll card is never hard-cut flush against it. --- */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__messages {
	-webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 1.5rem, #000 calc(100% - 1.7rem), transparent 100%);
	        mask-image: linear-gradient(to bottom, transparent 0, #000 1.5rem, #000 calc(100% - 1.7rem), transparent 100%);
	scroll-padding-bottom: 1.7rem;
}

/* --- "Thinking" indicator: three pulsing nodes in place of placeholder text --- */
.pr-knowledge-concierge__typing {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	margin: 0;
	padding: 0.1em 0;
}
.pr-knowledge-concierge__typing span {
	width: 0.5em;
	height: 0.5em;
	border-radius: 50%;
	background: var(--chidi-red, #ef303b);
	opacity: 0.3;
	animation: pr-kc-typing 1.15s ease-in-out infinite;
}
.pr-knowledge-concierge__typing span:nth-child(2) { animation-delay: 0.15s; }
.pr-knowledge-concierge__typing span:nth-child(3) { animation-delay: 0.3s; }
@keyframes pr-kc-typing {
	0%, 60%, 100% { opacity: 0.28; transform: translateY(0) scale(0.82); }
	30% { opacity: 1; transform: translateY(-0.3em) scale(1); }
}

/* While composing, the header mark intensifies — Chidi visibly "thinks". */
.pr-knowledge-concierge--floating.is-thinking .pr-knowledge-concierge__brand-mark {
	animation: pr-kc-mark-think 1.1s ease-in-out infinite;
}
@keyframes pr-kc-mark-think {
	0%, 100% { filter: drop-shadow(0 0.18em 0.28em rgba(239, 48, 59, 0.18)); transform: scale(1); }
	50% { filter: drop-shadow(0 0.1em 0.55em rgba(233, 51, 54, 0.6)); transform: scale(1.09); }
}

/* --- Results arrive with a hairline scan sweep — a spatial "found these" cue --- */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__results {
	position: relative;
}
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__results::before {
	content: "";
	position: absolute;
	top: -0.8rem;
	left: 0;
	width: 100%;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(233, 51, 54, 0.5), transparent);
	transform-origin: left center;
	animation: pr-kc-scan 0.85s var(--chidi-ease-out, ease) both;
}
@keyframes pr-kc-scan {
	from { transform: scaleX(0); opacity: 0; }
	to { transform: scaleX(1); opacity: 1; }
}

/* --- Launcher rests with a slow breath so it invites a click --- */
.pr-knowledge-concierge-float:not(:has([data-knowledge-panel]:not([hidden]))) .pr-knowledge-concierge-float__launcher-mark {
	animation: pr-kc-launch-breath 3.8s ease-in-out infinite;
}
@keyframes pr-kc-launch-breath {
	0%, 100% { filter: drop-shadow(0 0.3em 0.45em rgba(239, 48, 59, 0.16)); }
	50% { filter: drop-shadow(0 0.3em 0.78em rgba(233, 51, 54, 0.46)); }
}

@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge__typing span,
	.pr-knowledge-concierge--floating.is-thinking .pr-knowledge-concierge__brand-mark,
	.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__results::before,
	.pr-knowledge-concierge-float:not(:has([data-knowledge-panel]:not([hidden]))) .pr-knowledge-concierge-float__launcher-mark,
	.pr-knowledge-concierge-float__reset {
		animation: none;
	}
	.pr-knowledge-concierge-float__reset:hover,
	.pr-knowledge-concierge-float__reset:active { transform: none; }
}

/* ================================================================== *
 * COMPOSER — PROPORTIONAL, PIXEL-ALIGNED, HOVER-FREE  (added 2026-08-16)
 * The welcome composer was a tall box with the input stranded at the top,
 * a "Navigate" hint, and the send button marooned at the bottom — lots of
 * dead space. Rebuilt here as a single refined row: input vertically
 * centred, send seated on the right, box edges aligned to the content
 * column. The send button loses its hover state entirely (quiet press
 * only; keyboard focus ring kept for accessibility). Appended last so it
 * wins the layered cascade; selectors mirror the existing specificity.
 * UI only — no markup or logic changes. */

/* -- Welcome composer: back to the tall "textarea" proportion (there's
   more coming under the input later), input seated at the top, and a
   footer row — quick-commands trigger + "Navigate" hint on the left,
   send on the right. Left edge aligned to the welcome content column
   (space-8, same inset as the greeting and the chips) so the box lines
   up pixel-for-pixel with everything above it. -- */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form {
	height: 9.25em;
	margin: 0 var(--chidi-space-8) var(--chidi-space-7);
	border-radius: 0.6825em;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__input {
	top: var(--chidi-space-4);
	bottom: auto;
	left: var(--chidi-space-4);
	right: var(--chidi-space-4);
	width: auto;
	height: var(--chidi-space-10);
	padding: 0;
	font-size: 0.98em;
	transform: none;
}

/* Quick-commands trigger — reserved for a future slash-command popover
   (not wired up yet, hence `disabled`; ready to enable later without any
   further markup changes). Sits bottom-left, paired with the existing
   "Navigate" hint label. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__slash-trigger {
	display: none;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__slash-trigger {
	display: grid;
	position: absolute;
	left: var(--chidi-space-4);
	bottom: var(--chidi-space-4);
	place-items: center;
	width: 1.7em;
	height: 1.7em;
	padding: 0;
	border: thin solid var(--chidi-line);
	border-radius: 0.26em;
	background: var(--chidi-surface);
	color: var(--chidi-ink-faint);
	cursor: not-allowed;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__slash-trigger svg {
	width: 0.9em;
	height: 0.9em;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* The outer span stays at the ambient (1em) font-size — the same basis the
   slash-trigger button uses — so its `left` offset lines up exactly with
   the button's right edge. The inner span carries the smaller, muted text
   styling. Splitting these avoids a subtle em pitfall: if the outer span
   itself were sized down (e.g. font-size: 0.82em), THAT smaller size would
   also become the basis for its own `left` calc, silently shrinking the
   gap we're trying to set (this bit us once already, elsewhere). */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label {
	display: block;
	left: calc(var(--chidi-space-4) + 1.7em + 0.65em);
	bottom: var(--chidi-space-4);
	font-size: 1em;
	line-height: 1.7em;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label-text {
	color: var(--chidi-ink-faint);
	font-size: 0.82em;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send {
	top: auto;
	bottom: var(--chidi-space-4);
	right: var(--chidi-space-4);
	width: var(--chidi-target);
	height: var(--chidi-target);
	min-height: var(--chidi-target);
	border-radius: 0.403em;
	transform: none;
}

/* Retire the ghost ↗ affordance — the real quick-commands button replaces it. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form::after {
	display: none;
}

/* -- Conversation composer: same refined send proportion -- */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send {
	width: var(--chidi-target);
	height: var(--chidi-target);
	min-height: var(--chidi-target);
	border-radius: 0.403em;
}
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__input {
	right: calc(var(--chidi-target) + var(--chidi-space-4));
	width: auto;
}

/* The send button reuses the shared `.pr-btn` class (pr-buttons.css), which
   carries its own site-wide hover treatment: a white fill (`::before`,
   translated off-screen and slid in on hover) plus a hover text-color
   swap. That's the actual source of the washed-out white button on
   hover — nothing in this file. Kill both, specifically for this button,
   since pr-buttons.css is a shared dependency other CTAs still rely on
   its hover behaviour for. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send::before {
	content: none;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:hover,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:focus-visible {
	color: #fff;
}

/* -- Send button: fully static. No hover state, no press-scale, no lift —
   it looks and behaves identically at rest, on hover, and while pressed.
   Several earlier rules in this file give it a press-scale on :active
   (some with equal, some with higher selector specificity); each is
   matched and neutralized explicitly below rather than relying on source
   order alone, so none can quietly resurface later in the cascade. The
   keyboard focus ring is kept — that's accessibility, not a hover/press
   interaction. -- */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:hover:not(:disabled),
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:focus:not(:disabled),
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:focus-visible:not(:disabled) {
	background: var(--chidi-red);
	box-shadow: 0 0.4em 1em rgba(239, 48, 59, 0.16);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:not(:disabled):active {
	transform: none;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send:not(:disabled):active,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send:disabled {
	transform: none;
}
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send:not(:disabled):active,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send:disabled {
	transform: translateY(-50%);
}

/* Welcome-only quick actions: one calm horizontal discovery row. The first
 * action remains fully visible; the rest invite an intentional horizontal
 * scroll without affecting the active conversation state. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
	display: flex;
	grid-template-columns: none;
	gap: var(--chidi-space-3);
	overflow-x: auto;
	overflow-y: hidden;
	padding: var(--chidi-space-2) var(--chidi-space-8) var(--chidi-space-4);
	scroll-behavior: smooth;
	scroll-snap-type: x proximity;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail::-webkit-scrollbar {
	display: none;
}

.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail button {
	flex: 0 0 auto;
	min-height: 3.1em;
	padding: var(--chidi-space-2) var(--chidi-space-4);
	white-space: nowrap;
	scroll-snap-align: start;
}

/* ================================================================== *
 * INTERFACE POLISH PASS  (added 2026-08-18)
 *
 * UI ONLY. No data hook, generated class name, markup structure, or
 * conversation logic is touched — this layer restyles what already
 * renders, and every rule here is reachable with the existing DOM.
 *
 * What it addresses, in the order the visitor meets it:
 *   1. Choice chips — the reply action set rendered as bare underlined red
 *      links. Fine for one inline link, but the booking picker emits six
 *      side by side and they read as raw hyperlinks, not a considered set.
 *      They become quiet pills with a real press state.
 *   2. Result cards — "Ask about this property" rendered as a red-outlined
 *      rectangle that reads like a validation error, with "View property"
 *      stacked beneath it in inert grey. They become a proper primary /
 *      secondary pair on one row.
 *   3. Quick-action rail — chips were clipped mid-word at the panel edge.
 *      Now wraps, so nothing is ever cut.
 *   4. Composer — the focus state washed the whole field red. Softened to
 *      a contained ring, and every control gains a visible focus outline.
 *   5. Welcome state — the greeting sat in body sans while the design
 *      system gives headings to Cormorant. Hierarchy handed to the serif.
 *   6. Inline-variant repairs — the non-floating layout never styled the
 *      slash control or its label, so an unsized SVG rendered a ~490px
 *      button and a stray "Navigate" string. Both suppressed there.
 *
 * Tokens only (--chidi-* inside the float, --pr-* on the inline panel),
 * per the radius / ink / motion contract in specs/visual-design-system.md.
 * ================================================================== */

/* ------------------------------------------------------------------ *
 * 1. Choice chips
 * Scoped to __actions so the same class inside a result card and in the
 * shortlist pagination keeps its own treatment (both handled below).
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge .pr-knowledge-concierge__actions {
	gap: 0.5rem;
	margin-top: 0.85rem;
}
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action,
.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action {
	display: inline-flex;
	align-items: center;
	min-height: 2.25rem;
	padding: 0.45rem 0.9rem;
	border: 1px solid var(--pr-line-strong);
	border-radius: 999px;
	background-color: #fff;
	background-image: none; /* clears the inherited underline gradient */
	color: var(--pr-ink);
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.1;
	text-decoration: none;
	transition:
		color var(--pr-duration-micro) var(--pr-ease),
		border-color var(--pr-duration-micro) var(--pr-ease),
		background-color var(--pr-duration-micro) var(--pr-ease),
		box-shadow var(--pr-duration-micro) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:hover,
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:focus-visible,
.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action:hover,
.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action:focus-visible {
	border-color: var(--pr-accent);
	background-color: color-mix(in srgb, var(--pr-accent) 5%, #fff);
	color: var(--pr-accent);
	background-image: none;
	box-shadow: 0 0.35rem 0.9rem color-mix(in srgb, var(--pr-accent) 12%, transparent);
	transform: translateY(-1px);
}
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:active {
	transform: scale(0.98);
	box-shadow: none;
}
/* Spent choices stay legible but clearly closed — never a live-looking pill. */
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action.is-unavailable,
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:disabled,
.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action.is-unavailable {
	border-color: var(--pr-line);
	background-color: transparent;
	color: var(--pr-ink-3);
	box-shadow: none;
	transform: none;
}

/* ------------------------------------------------------------------ *
 * 2. Result cards — rhythm, then a real CTA row
 * The card body is a flat list of siblings (no wrapper element), so the
 * row is built by giving every text node full width and letting only the
 * final button + link share the last line. CSS-only, markup untouched.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge .pr-knowledge-concierge__result {
	grid-template-columns: 6.5rem minmax(0, 1fr);
}
.pr-knowledge-concierge .pr-knowledge-concierge__result-body {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.28rem 0.6rem;
	padding: 0.95rem 1rem;
}
.pr-knowledge-concierge .pr-knowledge-concierge__result-body > strong,
.pr-knowledge-concierge .pr-knowledge-concierge__result-body > span {
	flex: 0 0 100%;
}
.pr-knowledge-concierge .pr-knowledge-concierge__result-body > strong {
	font-size: 0.9rem;
	line-height: 1.25;
	letter-spacing: -0.005em;
}
.pr-knowledge-concierge .pr-knowledge-concierge__result-price {
	margin-top: 0.35rem;
	font-size: 0.85rem;
	font-variant-numeric: tabular-nums;
}
/* Primary: the action that continues the conversation. */
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	min-height: 2.1rem;
	margin-top: 0.55rem;
	padding: 0.4rem 0.85rem;
	border: 1px solid var(--pr-accent);
	border-radius: 999px;
	background-color: var(--pr-accent);
	background-image: none;
	color: #fff;
	font-size: 0.75rem;
	font-weight: 700;
	text-decoration: none;
	transition:
		background-color var(--pr-duration-micro) var(--pr-ease),
		box-shadow var(--pr-duration-micro) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:hover,
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:focus-visible {
	background-color: #d92a2d;
	color: #fff;
	box-shadow: 0 0.4rem 1rem color-mix(in srgb, var(--pr-accent) 26%, transparent);
	transform: translateY(-1px);
}
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:active {
	transform: scale(0.98);
	box-shadow: none;
}
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:disabled,
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action.is-unavailable {
	border-color: var(--pr-line);
	background-color: var(--pr-panel-2);
	color: var(--pr-ink-3);
	box-shadow: none;
	transform: none;
}
/* Secondary: leaving the conversation for the full listing. */
.pr-knowledge-concierge .pr-knowledge-concierge__result-link {
	flex: 0 0 auto;
	margin-top: 0.55rem;
	padding: 0.4rem 0.15rem;
	border-bottom: 0;
	color: var(--pr-ink-2);
	font-size: 0.75rem;
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: var(--pr-line-strong);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.22em;
}
.pr-knowledge-concierge .pr-knowledge-concierge__result-link:hover,
.pr-knowledge-concierge .pr-knowledge-concierge__result-link:focus-visible {
	color: var(--pr-accent);
	text-decoration-color: var(--pr-accent);
}
.pr-knowledge-concierge .pr-knowledge-concierge__result > img {
	min-height: 100%;
}

/* Shortlist pagination keeps a neutral control shape — it is navigation,
   not a choice about a property, so it must not compete with the pills. */
.pr-knowledge-concierge .pr-knowledge-concierge__shortlist-pagination .pr-knowledge-concierge__action {
	min-height: 2.1rem;
	padding: 0.4rem 0.9rem;
	border: 1px solid var(--pr-line-strong);
	border-radius: 999px;
	background-color: #fff;
	background-image: none;
	color: var(--pr-ink);
	font-size: 0.75rem;
	font-weight: 600;
}
.pr-knowledge-concierge .pr-knowledge-concierge__shortlist-pagination .pr-knowledge-concierge__action:hover:not(:disabled) {
	border-color: var(--pr-accent);
	color: var(--pr-accent);
}

/* ------------------------------------------------------------------ *
 * 3. Quick-action rail — wrap instead of clipping mid-word
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
	flex-wrap: wrap;
	overflow-x: visible;
	row-gap: var(--chidi-space-2);
	padding-right: var(--chidi-space-6);
	padding-left: var(--chidi-space-6);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail button {
	min-height: 2.6em;
	padding: var(--chidi-space-2) var(--chidi-space-3);
	font-weight: 600;
}
.pr-knowledge-concierge__rail {
	flex-wrap: wrap;
	row-gap: 0.5rem;
	overflow-x: visible;
}

/* ------------------------------------------------------------------ *
 * 4. Composer — a contained focus ring, not a fully red field
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__form:focus-within {
	border-color: color-mix(in srgb, var(--chidi-red) 34%, var(--chidi-line));
	box-shadow: 0 0 0 0.2em var(--chidi-focus);
}
.pr-knowledge-concierge__send:focus-visible,
.pr-knowledge-concierge__rail button:focus-visible,
.pr-knowledge-concierge-float__launcher:focus-visible,
.pr-knowledge-concierge-float__close:focus-visible,
.pr-knowledge-concierge-float__reset:focus-visible {
	outline: 2px solid var(--pr-accent, #e93336);
	outline-offset: 2px;
}

/* ------------------------------------------------------------------ *
 * 5. Welcome state — give the greeting back to the serif
 * ------------------------------------------------------------------ */
/* The earlier layers set this with a `font:` shorthand at two-class
   specificity, so the family alone cannot win from a single-class rule —
   matched here and re-declared as a shorthand for the same reason. Cormorant
   carries hierarchy at 600; 700 in a serif this size reads heavy. */
.pr-knowledge-concierge__message--welcome h3,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome h3 {
	font: 600 1.95em/1.08 var(--pr-font-head);
	letter-spacing: -0.005em;
}
.pr-knowledge-concierge__message--welcome p {
	max-width: 32ch;
	color: var(--chidi-ink-muted, var(--pr-ink-2));
}

/* ------------------------------------------------------------------ *
 * 6. Inline-variant repairs
 * The slash control is a disabled placeholder with no JS behaviour and
 * no styling outside the floating panel, where an unsized SVG stretched
 * it to ~490px. Its companion label leaked as loose "Navigate" text.
 * Both are suppressed on the inline surface; the floating panel, which
 * styles them deliberately, is unaffected.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__slash-trigger,
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__navigate-label {
	display: none;
}
/* Belt and braces: no icon in this component may size itself off content. */
.pr-knowledge-concierge svg { max-width: 100%; }

/* ------------------------------------------------------------------ *
 * 7. Composer material — quiet field, accent kept for the action
 * Both composer states tinted the whole field pink (--chidi-pink-soft)
 * behind a 24–42% red border, so the input read as the loudest object in
 * a panel whose job is to stay calm. The accent belongs on the send
 * button and the focus ring; the field itself returns to plain surface
 * with a neutral hairline. Same geometry, same states — colour only.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__form,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
	border-color: var(--chidi-line-strong);
	background: var(--chidi-surface);
}

/* Hovering a quick action should warm it, not flood it. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:hover,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:focus-visible {
	border-color: var(--chidi-red);
	background: color-mix(in srgb, var(--chidi-red) 5%, var(--chidi-surface));
	color: var(--chidi-red);
}

/* ------------------------------------------------------------------ *
 * 8. Send control — one clear affordance
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge__send {
	transition:
		background-color var(--pr-duration-micro) var(--pr-ease),
		box-shadow var(--pr-duration-micro) var(--pr-ease),
		transform var(--pr-duration-micro) var(--pr-ease);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:not(:disabled):hover {
	background-color: var(--chidi-red-deep);
	box-shadow: 0 0.45em 1.1em color-mix(in srgb, var(--chidi-red) 30%, transparent);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__send:disabled {
	background-color: color-mix(in srgb, var(--chidi-red) 34%, var(--chidi-surface-soft));
	box-shadow: none;
}

/* ------------------------------------------------------------------ *
 * 9. Card CTA — earned fill, not four solid buttons in a row
 * A result set renders up to four cards, so a solid accent button on each
 * one repeats the loudest colour in the system four times and flattens the
 * hierarchy the design system asks for (§5: solid fill belongs to the
 * single most important click). The card action rests as an accent-tinted
 * outline and fills only on hover/focus, where the intent is real.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action {
	border-color: color-mix(in srgb, var(--pr-accent) 42%, transparent);
	background-color: color-mix(in srgb, var(--pr-accent) 5%, #fff);
	color: var(--pr-accent);
}
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:hover,
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:focus-visible {
	border-color: var(--pr-accent);
	background-color: var(--pr-accent);
	color: #fff;
}
/* The whole card is the hover target, so lift its action with it. */
.pr-knowledge-concierge .pr-knowledge-concierge__result:hover .pr-knowledge-concierge__action:not(:disabled):not(.is-unavailable) {
	border-color: var(--pr-accent);
}

/* ------------------------------------------------------------------ *
 * 10. Focus that reads as focus, not as an alert
 * A 34%-red border plus a ring still tinted the whole composer edge. The
 * hairline stays neutral and the accent ring alone carries the state.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__form:focus-within {
	border-color: var(--chidi-line-strong);
	box-shadow: 0 0 0 0.19em color-mix(in srgb, var(--chidi-red) 16%, transparent);
}

/* ------------------------------------------------------------------ *
 * 11. The disabled slash control
 * It is a placeholder for an unbuilt feature: permanently disabled, no JS
 * behaviour anywhere in the bundle, and labelled "Navigate" beside a send
 * button already labelled "Navigate". A dead control in the most valuable
 * spot of the composer promises something the panel cannot do, so it is
 * hidden on both surfaces. Markup is untouched — delete this block to
 * bring it back the day quick commands actually ship.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge__slash-trigger,
.pr-knowledge-concierge__navigate-label,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__slash-trigger,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__navigate-label {
	display: none;
}

/* ------------------------------------------------------------------ *
 * 12. Inline panel — let the shell hug its resting state
 * The message area holds min-height: 19rem, so the widget opens with a
 * ~300px void beneath a single welcome line and reads unfinished. It now
 * rests compact and takes the full reading height as soon as a real
 * exchange exists, so the panel never resizes mid-conversation.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__messages:not(:has(.pr-knowledge-concierge__message--user)) {
	min-height: 8.5rem;
}

/* ------------------------------------------------------------------ *
 * 13. Send arrow — one direction across both surfaces
 * The base rule rotates the send glyph -45deg, so the inline composer
 * shows an up-LEFT arrow: backwards for a submit control. The floating
 * panel already resets this to a plain vertical arrow; the inline surface
 * now matches it instead of keeping the legacy rotation.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__send span:last-child {
	transform: none;
}

/* ------------------------------------------------------------------ *
 * 14. Reading comfort in the reply
 * Kofe answers in prose, so the assistant message gets a measure and a
 * leading chosen for reading rather than for fitting.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--assistant {
	max-width: 46ch;
	line-height: 1.62;
}
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__message--assistant {
	max-width: 46ch;
}

/* Honour the existing motion contract: every lift/press cue added in this
   layer is a transform, so one query switches them all off. */
@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action,
	.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action,
	.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button {
		transition: none;
	}
	.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:hover,
	.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action:active,
	.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:hover,
	.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action:active,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button:hover {
		transform: none;
	}
}

/* ------------------------------------------------------------------ *
 * 15. Touch targets
 * The chips measure 36px tall, which is comfortable with a mouse and
 * under the 44px guidance for a finger. Traffic here is mobile-first
 * (CLAUDE.md §9), so on a coarse pointer every tappable control in the
 * conversation grows to 44px without changing the desktop proportions.
 * ------------------------------------------------------------------ */
@media (pointer: coarse) {
	.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action,
	.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action,
	.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action,
	.pr-knowledge-concierge .pr-knowledge-concierge__shortlist-pagination .pr-knowledge-concierge__action {
		min-height: 2.75rem;
		padding-right: 1.05rem;
		padding-left: 1.05rem;
	}
	.pr-knowledge-concierge .pr-knowledge-concierge__result-link {
		min-height: 2.75rem;
		display: inline-flex;
		align-items: center;
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail button,
	.pr-knowledge-concierge__rail button {
		min-height: 2.75rem;
	}
}

/* ================================================================== *
 * INTERFACE POLISH PASS 2  (added 2026-08-18)
 *
 * UI ONLY, per the same contract as the pass above: no data hook,
 * generated class name, markup structure, or conversation logic is
 * touched. Four requested changes:
 *   1. Uniform 14px corner radius on every real button in the panel
 *      (send, quick-action chips, reply choice chips, result-card CTA,
 *      shortlist pagination) — replacing the pill/circle shapes with one
 *      consistent radius, per explicit instruction.
 *   2. The active-state composer gains real elevation. It was a flat
 *      white bar with only a 1px border, sitting directly against the
 *      white message list above it with nothing to separate the two.
 *   3. Close control sized up slightly — 29px was a small target next to
 *      the reset control beside it.
 *   4. Composer placeholder reworded to name the site.
 * ================================================================== */

/* ------------------------------------------------------------------ *
 * 1. Uniform button radius — 14px everywhere a button has a visible
 * fill or border. (Close/reset stay icon-only glyphs with no fill, so a
 * corner radius on them would be invisible; left as-is intentionally.)
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge,
.pr-knowledge-concierge-float {
	--pr-btn-radius: 14px;
}

.pr-knowledge-concierge__send,
.pr-knowledge-concierge__rail button,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__rail button,
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__send,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__send,
.pr-knowledge-concierge .pr-knowledge-concierge__actions button.pr-knowledge-concierge__action,
.pr-knowledge-concierge .pr-knowledge-concierge__actions a.pr-knowledge-concierge__action,
.pr-knowledge-concierge .pr-knowledge-concierge__result .pr-knowledge-concierge__action,
.pr-knowledge-concierge .pr-knowledge-concierge__shortlist-pagination .pr-knowledge-concierge__action {
	border-radius: var(--pr-btn-radius) !important;
}

/* ------------------------------------------------------------------ *
 * 2. Composer depth in the active conversation
 * The resting (welcome-only) composer keeps its current quiet, borderless
 * feel — this targets only the state that follows the first message, the
 * one that reads flattest against the white message list above it.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form {
	box-shadow: 0 0.5em 1.4em rgba(31, 34, 42, 0.09), 0 0.05em 0 rgba(255, 255, 255, 0.6) inset;
}
.pr-knowledge-concierge--floating:has(.pr-knowledge-concierge__message--user) .pr-knowledge-concierge__form:focus-within {
	box-shadow: 0 0.6em 1.6em rgba(31, 34, 42, 0.12), 0 0 0 0.19em color-mix(in srgb, var(--chidi-red) 16%, transparent);
}
/* The inline (non-floating) surface uses the same __form structure. */
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__form {
	box-shadow: 0 0.5em 1.4em rgba(31, 34, 42, 0.07);
}
.pr-knowledge-concierge:not(.pr-knowledge-concierge--floating) .pr-knowledge-concierge__form:focus-within {
	box-shadow: 0 0.6em 1.6em rgba(31, 34, 42, 0.1), 0 0 0 3px color-mix(in srgb, var(--pr-accent) 16%, transparent);
}

/* ------------------------------------------------------------------ *
 * 3. Close control — matched to the reset control beside it
 *
 * The previous pass enlarged only .close's own box (2.15em) without
 * touching .reset, so the two drifted out of sync — exactly what the next
 * screenshot showed. Undone: both now share one box size again, sized up
 * together from the original 1.85em, and aligned via the same `right`
 * arithmetic already used for .reset (0.5em gap between them).
 *
 * The visual mismatch this was actually chasing wasn't box size — it was
 * glyph weight. Close rendered as a plain "×" text character, which most
 * typefaces draw thin and small inside its box; reset renders a full-bleed
 * SVG stroke. Same box, wildly different visual weight. The close button's
 * markup (class-pr-knowledge-concierge.php) now carries the same kind of
 * SVG (24x24 viewBox, matching stroke-width/linecap/linejoin) instead of
 * text, so the two controls finally read as one family. Click handler is
 * unaffected — JS binds to [data-knowledge-close], not the glyph.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge-float__close,
.pr-knowledge-concierge-float__reset {
	width: 2.05em;
	height: 2.05em;
}
.pr-knowledge-concierge-float__close {
	right: 0.5em;
}
.pr-knowledge-concierge-float__reset {
	right: calc(0.5em + 2.05em + 0.25em);
}
.pr-knowledge-concierge-float__close svg {
	width: 1em;
	height: 1em;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ------------------------------------------------------------------ *
 * 4. Panel footprint — exact reserve instead of a guessed constant
 *
 * The panel's height was capped at `min(37em, calc(100dvh - 6.5em))`, an
 * approximate margin. The launcher it sits above still occupies its box
 * even while faded out during an open panel (opacity: 0, not display:
 * none — .close:has(...) only fades it, per line ~659), so the true
 * reserve is exactly knowable: wrapper bottom offset (--chidi-space-6,
 * 1.5em) + launcher height (3.25em) + the panel's own gap above it
 * (--chidi-space-2, 0.5em) = 5.25em. 6.5em was already MORE generous than
 * that on paper, so a short window alone shouldn't explain the panel
 * running off the top of the screen — but the margin was thin, guessed
 * rather than derived, and easy for a future edit to erode further. This
 * replaces the guess with the exact reserve plus an explicit 1.5rem safety
 * margin, so the panel's top edge has a real, named floor instead of
 * whatever an approximate constant happens to leave.
 *
 * Positioning strategy is untouched (still position: absolute, still
 * anchored via `bottom` to hug the launcher) — only the height ceiling is
 * corrected, so normal-height screens render identically to before.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge-float__panel {
	height: min(37em, calc(100dvh - 5.25em - 1.5rem));
	max-height: min(37em, calc(100dvh - 5.25em - 1.5rem));
}

/* ------------------------------------------------------------------ *
 * 5. Quick-action rail — one line, not two
 * Four labels ("Request a viewing", "Browse properties", "About
 * PropatiRadar", "Contact us") don't fit one row at the panel's default
 * chip size, so the row wrapped to two lines. Tightened padding, gap and
 * type size so all four sit on a single line at the panel's real width;
 * wrap stays as a fallback for narrower viewports rather than being
 * disabled outright.
 * ------------------------------------------------------------------ */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
	flex-wrap: nowrap;
	gap: 0.4em;
	padding-right: var(--chidi-space-4);
	padding-left: var(--chidi-space-4);
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail button {
	flex: 1 1 auto;
	min-height: 2.35em;
	padding: 0.5em 0.55em;
	font-size: 0.72em;
	white-space: nowrap;
}
/* Touch sizing for this row is already handled at the bottom of the
   earlier (pointer: coarse) block above (2.75rem, root-relative — safe
   from the font-size shrink just above, since rem doesn't inherit it). */

/* ================================================================== *
 * WELCOME GREETING — nudge up (requested 2026-08-18)
 * The greeting + living logo previously sat vertically centred in the
 * message area. Per the target mock-up they belong slightly higher, in
 * the upper portion of the field, with the six quick actions below.
 * Appended last so it wins over the earlier justify-content: center rule
 * (~line 2431) without unpicking that override chain. Welcome state only;
 * once a conversation starts this selector no longer matches.
 * ================================================================== */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__messages {
	justify-content: flex-start;
	padding-top: 18px;
}

/* ================================================================== *
 * QUICK ACTIONS — 3-column grid to match the target mock-up (2026-08-18)
 * Six quick actions now sit in a clean 3x2 grid on the wide panel, even
 * widths (minmax(0,1fr), not max-content, so labels align). Appended last
 * to settle the earlier repeat(2)/repeat(3) override conflict decisively.
 * Narrow panels fall back to 2 columns (3x2 -> 2x3) so no label cramps;
 * the pre-existing <=24rem single-column rule still applies below that.
 * ================================================================== */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}
@media (max-width: 30rem) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 24rem) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__desk:has(.pr-knowledge-concierge__message--welcome:only-child) .pr-knowledge-concierge__rail {
		grid-template-columns: 1fr;
	}
}

/* ================================================================== *
 * KOFE — living logo + greeting-right layout (2026-08-18)
 * Requested: greeting on the left, the Kofe mark up to the right, and
 * the mark ALIVE — a faint tilted orbit with particles drifting around
 * it and a gentle float/glow, per the reference. Built as new child
 * nodes (.welcome-orbit / .welcome-spark) and appended last so it wins
 * cleanly over the earlier ~6 conflicting welcome-mark definitions
 * instead of threading through them. Welcome (floating) state only.
 * ================================================================== */

/* Two columns: copy left, living mark right. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome {
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	justify-content: space-between;
	gap: 1.15rem;
	max-width: none;
	width: 100%;
	padding: 0 2px;
	text-align: left;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome::before { content: none; display: none; }
.pr-knowledge-concierge__welcome-copy { flex: 1 1 auto; min-width: 0; }
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-copy h3 {
	margin: 0 0 0.7rem;
	max-width: none;
	text-align: left;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-copy > p:last-child {
	margin: 0;
	max-width: 21rem;
	text-align: left;
}

/* The living mark: bigger, PNG only, floating up-right. Old lozenge/ring
   pseudo-elements are silenced — the orbit is drawn by the child nodes. */
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark {
	position: relative;
	flex: 0 0 auto;
	width: 8.9rem;
	height: 8.9rem;
	margin: -0.7rem -0.3rem 0 0;
	border: 0;
	border-radius: 0;
	background: url('../images/kofe-mark.png') center / contain no-repeat;
	box-shadow: none;
	overflow: visible;
	animation: pr-kc-orb-float 5.6s ease-in-out infinite, pr-kc-orb-breath 4.6s ease-in-out infinite;
}
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::before,
.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark::after {
	content: none;
	display: none;
}

/* Faint tilted twin orbit rings (static — the calm frame). */
.pr-knowledge-concierge__welcome-orbit {
	position: absolute;
	inset: -13%;
	border-radius: 50%;
	border: 1px solid rgba(233, 51, 54, 0.16);
	transform: rotate(-16deg) scaleY(0.9);
	pointer-events: none;
}
.pr-knowledge-concierge__welcome-orbit::before {
	content: "";
	position: absolute;
	inset: 12%;
	border-radius: 50%;
	border: 1px solid rgba(233, 51, 54, 0.10);
	transform: rotate(24deg) scaleY(0.92);
}

/* Particles: a slowly rotating layer carrying three small dots. */
.pr-knowledge-concierge__welcome-spark {
	position: absolute;
	inset: -13%;
	pointer-events: none;
	transform: rotate(-16deg) scaleY(0.9);
	animation: pr-kc-orbit-spin 15s linear infinite;
}
.pr-knowledge-concierge__welcome-spark::before,
.pr-knowledge-concierge__welcome-spark::after {
	content: "";
	position: absolute;
	width: 0.34rem;
	height: 0.34rem;
	border-radius: 50%;
	background: #e93336;
	box-shadow: 0 0 0.35rem rgba(233, 51, 54, 0.55);
}
.pr-knowledge-concierge__welcome-spark::before { top: 2%; left: 50%; margin-left: -0.17rem; }
.pr-knowledge-concierge__welcome-spark::after {
	bottom: 8%; right: 6%;
	width: 0.24rem; height: 0.24rem;
	background: rgba(233, 51, 54, 0.65);
	box-shadow: -3.4rem 1.2rem 0 -0.04rem rgba(233, 51, 54, 0.45); /* a third, smaller dot */
}

@keyframes pr-kc-orb-float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-0.45rem); }
}
@keyframes pr-kc-orbit-spin {
	to { transform: rotate(344deg) scaleY(0.9); } /* 360 - 16 tilt, keeps the tilt while spinning */
}

/* Narrow panels: stack the mark above the greeting, centred. */
@media (max-width: 26rem) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__message--welcome {
		flex-direction: column-reverse;
		align-items: center;
		text-align: center;
		gap: 0.6rem;
	}
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-copy h3,
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-copy > p:last-child { text-align: center; margin-inline: auto; }
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark { margin: 0 auto; width: 7rem; height: 7rem; }
}

@media (prefers-reduced-motion: reduce) {
	.pr-knowledge-concierge--floating .pr-knowledge-concierge__welcome-mark { animation: none; }
	.pr-knowledge-concierge__welcome-spark { animation: none; }
}
