/**
 * [sl_ai_concierge] — same white/black/grey design tokens as
 * listing-wizard.css and auth.css (soft shadows, black accent), styled
 * as a chat/conversation rather than a form: bubbles, a typing/thinking
 * indicator, and a card grid for results.
 */
.sl-concierge {
	--sl-conc-bg: #fafafa;
	--sl-conc-card: #ffffff;
	--sl-conc-border: #e6e6e6;
	--sl-conc-text: #1a1a1a;
	--sl-conc-text-dim: #767676;
	--sl-conc-black: #111111;
	--sl-conc-shadow: 0 2px 10px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
	--sl-conc-shadow-hover: 0 4px 16px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06);

	position: relative;
	max-width: 960px;
	margin: 0 auto;
	font-family: 'Inter', system-ui, -apple-system, sans-serif;
	color: var(--sl-conc-text);
	background: var(--sl-conc-bg);
	border-radius: 28px;
	overflow: hidden;
	display: flex;
	min-height: 560px;
}
.sl-concierge *, .sl-concierge *::before, .sl-concierge *::after { box-sizing: border-box; }

.sl-concierge__main { flex: 1; min-width: 0; padding: 40px 28px; }

/* Sidebar toggle (hamburger) — visible top-left on mobile/tablet, where
   the sidebar is a closed-by-default overlay. On desktop (900px+) the
   sidebar is pinned open by default (see ai-concierge.js), so this
   button is hidden there rather than floating oddly over the now-pushed-
   over main content at its old top-left position — the header's own
   close button is how it gets dismissed at that width instead. */
.sl-concierge__mobile-topbar {
	position: absolute; top: 16px; left: 16px; z-index: 20;
	display: flex; align-items: center; gap: 10px;
}
.sl-concierge__sidebar-toggle {
	width: 38px; height: 38px; border-radius: 12px; flex-shrink: 0;
	display: flex; align-items: center; justify-content: center;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border);
	color: var(--sl-conc-text); cursor: pointer; box-shadow: var(--sl-conc-shadow);
}
.sl-concierge__sidebar-toggle:hover { box-shadow: var(--sl-conc-shadow-hover); }
.sl-concierge__mobile-logo { object-fit: contain; }

@media (min-width: 900px) {
	/* Unconditionally hidden on desktop, per explicit request — the
	   sidebar already has its own toggle-independent presence there
	   (pinned open by default, with its own logo above "Recent
	   Searches"), so this mobile-style hamburger+logo bar reads as
	   pure clutter duplicating what's already visible in the sidebar
	   itself. Known tradeoff: this removes the only way to REOPEN the
	   sidebar on desktop after manually closing it via its own X
	   button (there is deliberately no other affordance for that here)
	   — acceptable for now since it wasn't raised as a concern; a
	   small edge-tab or similar would be the fix if it comes up later.
	*/
	.sl-concierge__mobile-topbar { display: none; }
}

.sl-concierge__sidebar-backdrop {
	position: fixed; inset: 0; background: rgba(0,0,0,0.35); z-index: 29;
}
.sl-concierge__sidebar-backdrop[hidden] { display: none; }

.sl-concierge__sidebar {
	/* Redeclared here because the sidebar is moved to be a direct child
	   of <body> (see ensureSidebarMoved in ai-concierge.js), so it's no
	   longer a descendant of .sl-concierge and can't inherit that
	   element's custom properties — without this, every var() below
	   would silently fall back to unstyled/transparent. */
	--sl-conc-bg: #fafafa;
	--sl-conc-card: #ffffff;
	--sl-conc-border: #e6e6e6;
	--sl-conc-text: #1a1a1a;
	--sl-conc-text-dim: #767676;
	--sl-conc-black: #111111;
	--sl-conc-shadow: 0 2px 10px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);

	position: fixed; top: 0; left: 0; bottom: 0; z-index: 30;
	width: min(300px, 84vw);
	background: var(--sl-conc-bg); border-right: 1.5px solid var(--sl-conc-border);
	display: flex; flex-direction: column;
	transform: translateX(-100%);
	transition: transform .25s ease;
	padding: 16px;
}
.sl-concierge__sidebar[hidden] { display: flex; visibility: hidden; } /* keep laid out for the slide transition instead of display:none, which would skip the animation entirely */
.sl-concierge__sidebar.is-open { transform: translateX(0); visibility: visible; }

.sl-concierge__sidebar-logo { padding: 4px 0 14px; }
.sl-concierge__sidebar-logo img { object-fit: contain; }
.sl-concierge__sidebar-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.sl-concierge__sidebar-title { font-size: 13px; font-weight: 700; color: var(--sl-conc-text); }
.sl-concierge__sidebar-close {
	width: 30px; height: 30px; border-radius: 10px; border: none; background: transparent;
	color: var(--sl-conc-text-dim); cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.sl-concierge__sidebar-close:hover { background: var(--sl-conc-border); }

.sl-concierge__sidebar-new {
	width: 100%; padding: 11px; margin-bottom: 14px; border-radius: 12px;
	background: var(--sl-conc-black); color: #fff; border: none;
	font-size: 12.5px; font-weight: 700; font-family: inherit; cursor: pointer;
}
.sl-concierge__sidebar-new:hover { opacity: 0.9; }

.sl-concierge__sidebar-list { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; }
.sl-concierge__sidebar-empty { font-size: 12px; color: var(--sl-conc-text-dim); text-align: center; padding: 20px 0; margin: 0; }
.sl-concierge__sidebar-item {
	display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
	width: 100%; text-align: left; padding: 10px 12px; border-radius: 12px;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border);
	cursor: pointer; font-family: inherit;
}
.sl-concierge__sidebar-item:hover { border-color: var(--sl-conc-black); }
.sl-concierge__sidebar-item-category { font-size: 12.5px; font-weight: 700; color: var(--sl-conc-text); }
.sl-concierge__sidebar-item-place { font-size: 11px; color: var(--sl-conc-text-dim); }

/* Sidebar footer — "Add Your Business" CTA + account row, pinned to the
   bottom of the sidebar (sidebar-list above has flex:1, so it naturally
   pushes this down) the same way Claude.ai keeps its own account row
   fixed under the nav list rather than scrolling with it. */
.sl-concierge__sidebar-footer { flex-shrink: 0; padding-top: 10px; margin-top: 10px; border-top: 1px solid var(--sl-conc-border); display: flex; flex-direction: column; gap: 4px; }
.sl-concierge__sidebar-cta {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 9px 8px; border-radius: 10px; border: none; background: transparent;
	color: inherit; text-decoration: none; cursor: pointer; font-family: inherit;
}
.sl-concierge__sidebar-cta:hover { background: var(--sl-conc-border); }
.sl-concierge__sidebar-cta-icon {
	flex-shrink: 0; width: 30px; height: 30px; border-radius: 8px;
	display: flex; align-items: center; justify-content: center;
	background: var(--sl-conc-black); color: #fff;
}
.sl-concierge__sidebar-cta-text { display: flex; flex-direction: column; min-width: 0; }
.sl-concierge__sidebar-cta-text strong { font-size: 12.5px; font-weight: 700; color: var(--sl-conc-text); }
.sl-concierge__sidebar-cta-text small { font-size: 10.5px; color: var(--sl-conc-text-dim); margin-top: 1px; }
.sl-concierge__sidebar-account {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 8px; border-radius: 10px; border: none; background: transparent;
	cursor: default; font-family: inherit;
}
.sl-concierge__sidebar-account--signin { cursor: pointer; }
.sl-concierge__sidebar-account--signin:hover { background: var(--sl-conc-border); }
.sl-concierge__sidebar-avatar {
	flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: var(--sl-conc-black); color: #fff; font-size: 11.5px; font-weight: 700;
}
.sl-concierge__sidebar-avatar--guest { background: var(--sl-conc-border); color: var(--sl-conc-text-dim); }
.sl-concierge__sidebar-account-name { font-size: 12.5px; font-weight: 600; color: var(--sl-conc-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Account dropdown (Claude.ai-style profile menu) ------------------------ */
.sl-concierge__account-menu { position: relative; }
.sl-concierge__account-dropdown {
	position: absolute; left: 0; right: 0; bottom: calc(100% + 6px);
	background: var(--sl-conc-card); border: 1px solid var(--sl-conc-border); border-radius: 14px;
	box-shadow: var(--sl-conc-shadow-hover); padding: 6px; z-index: 5;
}
.sl-concierge__account-dropdown[hidden] { display: none; }
.sl-concierge__account-dropdown-email {
	font-size: 11px; color: var(--sl-conc-text-dim); padding: 8px 10px 6px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sl-concierge__account-dropdown-item {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 9px 10px; border-radius: 9px; border: none; background: transparent;
	color: var(--sl-conc-text); text-decoration: none; font-size: 12.5px; font-weight: 500;
	cursor: pointer; font-family: inherit;
}
.sl-concierge__account-dropdown-item svg { flex-shrink: 0; color: var(--sl-conc-text-dim); }
.sl-concierge__account-dropdown-item:not(.sl-concierge__account-dropdown-item--static):hover { background: var(--sl-conc-border); }
.sl-concierge__account-dropdown-item--static { cursor: default; color: var(--sl-conc-text-dim); }
.sl-concierge__account-dropdown-badge {
	margin-left: auto; font-size: 9.5px; font-weight: 700; text-transform: uppercase;
	letter-spacing: 0.03em; padding: 2px 7px; border-radius: 999px;
	background: var(--sl-conc-border); color: var(--sl-conc-text-dim);
}
.sl-concierge__account-dropdown-chevron { margin-left: auto; color: var(--sl-conc-text-dim); }
.sl-concierge__account-dropdown-divider { height: 1px; background: var(--sl-conc-border); margin: 6px 4px; }

/* Settings / Get Help / Upgrade Plan popup -------------------------------- */
.sl-concierge__util-modal { padding: 28px 24px; }
.sl-concierge__util-pane[hidden] { display: none; }
.sl-concierge__util-pane h3 { font-size: 17px; font-weight: 800; margin: 0 0 12px; color: var(--sl-conc-black); }
.sl-concierge__util-pane p { font-size: 13px; line-height: 1.6; color: var(--sl-conc-text-dim); margin: 0 0 16px; }
.sl-concierge__util-label { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--sl-conc-text-dim) !important; margin: 0 0 8px !important; }
.sl-concierge__util-lang-options { display: flex; flex-direction: column; gap: 8px; }
.sl-concierge__util-lang-btn {
	width: 100%; text-align: left; padding: 12px 14px; border-radius: 12px;
	border: 1.5px solid var(--sl-conc-border); background: var(--sl-conc-card);
	color: var(--sl-conc-text); font-size: 13.5px; font-weight: 600; font-family: inherit;
	cursor: pointer; transition: border-color .15s ease, background .15s ease;
}
.sl-concierge__util-lang-btn:hover { border-color: var(--sl-conc-black); }
.sl-concierge__util-lang-btn.is-active { background: var(--sl-conc-black); border-color: var(--sl-conc-black); color: #fff; }
.sl-concierge__util-pane .sl-btn {
	display: inline-block; padding: 11px 20px; border-radius: 999px;
	background: var(--sl-conc-black); color: #fff; font-size: 13px; font-weight: 700;
	text-decoration: none; border: none; cursor: pointer;
}

/* "Sign In" popup — reuses [sl_auth_form]'s own auth.css styling for the
   tabs/inputs inside; this wrapper only supplies the modal chrome, same
   pattern as the business detail modal above. */
.sl-concierge__signin-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 59; }
.sl-concierge__signin-backdrop[hidden] { display: none; }
.sl-concierge__signin-modal {
	position: fixed; z-index: 60; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: min(420px, 92vw); max-height: 90vh; overflow-y: auto;
	background: var(--sl-conc-bg, #fafafa); border-radius: 20px; box-shadow: 0 20px 60px rgba(0,0,0,0.25);
	padding: 44px 24px 24px;
}
.sl-concierge__signin-modal[hidden] { display: none; }

@media (min-width: 900px) {
	/* On wide desktop viewports the sidebar is pinned open by default
	   (see the matchMedia check in ai-concierge.js), pushing the page's
	   own content over via the "sl-concierge-sidebar-pinned" body class
	   instead of overlaying it, closer to how Claude.ai behaves on
	   desktop — still closeable via the header button, just open by
	   default rather than needing a click first. */
	.sl-concierge__sidebar { box-shadow: var(--sl-conc-shadow); }
	/* pointer-events:none rather than the old position/background trick:
	   with the sidebar pinned open by default, a click anywhere else on
	   the page must NOT reach this backdrop and close it — it's no
	   longer a dismissible overlay at this width, just a full-height
	   visual dimmer that happens to render fully transparent. */
	.sl-concierge__sidebar-backdrop { background: transparent; pointer-events: none; }

	body.sl-concierge-sidebar-pinned { padding-left: 300px; transition: padding-left .25s ease; }
}

/* Hero ---------------------------------------------------------------- */
.sl-concierge__hero { text-align: center; margin-bottom: 32px; transition: opacity .3s ease, max-height .3s ease, margin .3s ease; overflow: hidden; max-height: 300px; }
.sl-concierge__hero.is-collapsed { opacity: 0; max-height: 0; margin: 0; pointer-events: none; }
.sl-concierge__headline { font-size: 26px; font-weight: 800; line-height: 1.3; margin: 0 0 16px; letter-spacing: -0.01em; }
.sl-concierge__brand { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #fff; background: var(--sl-conc-black); border-radius: 999px; padding: 6px 16px; margin-bottom: 10px; }
.sl-concierge__subhead { font-size: 14.5px; color: var(--sl-conc-text-dim); margin: 0; max-width: 480px; margin-left: auto; margin-right: auto; }

/* Language select ------------------------------------------------------- */
.sl-concierge__lang-select { display: flex; justify-content: center; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.sl-concierge__lang-select[hidden] { display: none; }
.sl-concierge__ai-badges { display: flex; justify-content: center; align-items: center; gap: 24px; margin: 0 0 24px; flex-wrap: wrap; }
.sl-concierge__ai-badge { height: 70px; width: auto; max-width: 150px; }
.sl-concierge__lang-btn {
	padding: 14px 28px; border-radius: 999px; border: 1.5px solid var(--sl-conc-border);
	background: var(--sl-conc-card); color: var(--sl-conc-text);
	font-size: 15px; font-weight: 700; font-family: inherit; cursor: pointer;
	box-shadow: var(--sl-conc-shadow);
	transition: box-shadow .15s ease, transform .1s ease, background .15s ease, color .15s ease;
}
.sl-concierge__lang-btn:hover { box-shadow: var(--sl-conc-shadow-hover); transform: translateY(-1px); background: var(--sl-conc-black); color: #fff; }

/* Chat ------------------------------------------------------------------ */
.sl-concierge__chat { display: flex; flex-direction: column; gap: 12px; max-height: 60vh; overflow-y: auto; padding: 4px 2px; }
.sl-concierge__chat[hidden] { display: none; }

.sl-concierge__bubble {
	align-self: flex-start; max-width: 85%;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border);
	border-radius: 16px 16px 16px 4px; padding: 12px 16px;
	font-size: 14.5px; font-weight: 600; color: var(--sl-conc-text);
	box-shadow: var(--sl-conc-shadow);
	animation: sl-concierge-pop .25s ease;
}
@keyframes sl-concierge-pop {
	from { opacity: 0; transform: translateY(6px) scale(.98); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

.sl-concierge__bubble--thinking { display: flex; align-items: center; gap: 5px; padding: 14px 18px; }
.sl-concierge__dot {
	width: 7px; height: 7px; border-radius: 50%; background: var(--sl-conc-text-dim);
	animation: sl-concierge-bounce 1.1s infinite ease-in-out;
}
.sl-concierge__dot:nth-child(2) { animation-delay: .15s; }
.sl-concierge__dot:nth-child(3) { animation-delay: .3s; }
@keyframes sl-concierge-bounce {
	0%, 60%, 100% { transform: translateY(0); opacity: .5; }
	30% { transform: translateY(-4px); opacity: 1; }
}

.sl-concierge__options { display: flex; flex-wrap: wrap; gap: 8px; }

.sl-concierge__section-heading { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-conc-text-dim); margin: 14px 2px 6px; }
.sl-concierge__options--trending {
	padding: 12px; border-radius: 16px;
	background: linear-gradient(135deg, #fafafa, #f0f0f0);
	border: 1.5px dashed var(--sl-conc-black);
}
.sl-concierge__options--trending .sl-concierge__option { background: var(--sl-conc-black); color: #fff; border-color: var(--sl-conc-black); }
.sl-concierge__options--trending .sl-concierge__option:hover:not(:disabled) { opacity: 0.85; }
.sl-concierge__option {
	padding: 10px 16px; border-radius: 999px; border: 1.5px solid var(--sl-conc-border);
	background: var(--sl-conc-card); color: var(--sl-conc-text);
	font-size: 13px; font-weight: 600; font-family: inherit; cursor: pointer;
	box-shadow: var(--sl-conc-shadow);
	transition: box-shadow .15s ease, background .15s ease, color .15s ease, opacity .15s ease;
}
.sl-concierge__option:hover:not(:disabled) { box-shadow: var(--sl-conc-shadow-hover); background: var(--sl-conc-black); color: #fff; }
.sl-concierge__option:disabled { opacity: .45; cursor: default; }
/* The one option actually picked at each step — collapses in from the
   full disabled-but-visible grid lockOptions() used to leave behind.
   Full opacity (overriding the plain :disabled fade above) plus a
   checkmark reads as "this is your answer", not "this button is off". */
.sl-concierge__option.is-selected {
	opacity: 1; background: var(--sl-conc-black); color: #fff; border-color: var(--sl-conc-black);
	display: inline-flex; align-items: center; gap: 6px;
}
.sl-concierge__option.is-selected::before { content: '\2713'; font-weight: 700; }

.sl-concierge__start-over {
	align-self: center; margin-top: 8px; padding: 10px 22px; border-radius: 999px;
	border: 1.5px solid var(--sl-conc-border); background: var(--sl-conc-card); color: var(--sl-conc-text-dim);
	font-size: 12.5px; font-weight: 700; font-family: inherit; cursor: pointer;
}
.sl-concierge__start-over:hover { border-color: var(--sl-conc-text-dim); color: var(--sl-conc-text); }
.sl-concierge__start-over--secondary { background: var(--sl-conc-black); color: #fff; border-color: var(--sl-conc-black); }
.sl-concierge__start-over--secondary:hover { opacity: 0.9; }

.sl-concierge__see-more {
	align-self: flex-start; margin: 4px 0 8px; padding: 8px 18px; border-radius: 999px;
	border: 1.5px dashed var(--sl-conc-border); background: transparent; color: var(--sl-conc-text-dim);
	font-size: 12.5px; font-weight: 700; font-family: inherit; cursor: pointer;
}
.sl-concierge__see-more:hover { border-color: var(--sl-conc-text-dim); color: var(--sl-conc-text); }

/* Recent searches list — ChatGPT-sidebar-style history, adapted to this
   single-column chat layout as a stacked list rather than a sidebar. */
.sl-concierge__recent-heading { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sl-conc-text-dim); margin: 18px 4px 8px; }
.sl-concierge__recent-list { display: flex; flex-direction: column; gap: 6px; }
.sl-concierge__recent-item {
	display: flex; align-items: center; justify-content: space-between; gap: 10px;
	width: 100%; text-align: left; padding: 11px 14px; border-radius: 14px;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border);
	box-shadow: var(--sl-conc-shadow); cursor: pointer; font-family: inherit;
	transition: box-shadow .15s ease, border-color .15s ease;
}
.sl-concierge__recent-item:hover:not(:disabled) { box-shadow: var(--sl-conc-shadow-hover); border-color: var(--sl-conc-black); }
.sl-concierge__recent-item:disabled { opacity: .5; cursor: default; }
.sl-concierge__recent-item-category { font-size: 13px; font-weight: 700; color: var(--sl-conc-black); }
.sl-concierge__recent-item-place { font-size: 11.5px; color: var(--sl-conc-text-dim); flex-shrink: 0; }

/* Search shortcut --------------------------------------------------------- */
.sl-concierge__search-bar { display: flex; gap: 8px; margin-top: 20px; }
.sl-concierge__search-bar[hidden] { display: none; }
.sl-concierge__search-input {
	flex: 1; padding: 13px 16px; border-radius: 999px;
	border: 1.5px solid var(--sl-conc-border); background: var(--sl-conc-card);
	color: var(--sl-conc-text); font-size: 14px; font-family: inherit;
	box-shadow: var(--sl-conc-shadow);
}
.sl-concierge__search-input:focus { outline: none; border-color: var(--sl-conc-black); }
.sl-concierge__search-btn {
	padding: 13px 24px; border-radius: 999px; border: none;
	background: var(--sl-conc-black); color: #fff;
	font-size: 13.5px; font-weight: 700; font-family: inherit; cursor: pointer;
	box-shadow: var(--sl-conc-shadow);
}
.sl-concierge__search-btn:hover { box-shadow: var(--sl-conc-shadow-hover); }

/* Results grid ------------------------------------------------------------ */
.sl-concierge__results { margin-top: 24px; transition: opacity .15s ease; }

/* AI-visibility promo strip — shown under the results once the cascade
   is active, same "Add Your Business" CTA as the sidebar footer but as
   a bigger, centered banner since this is the main content area's own
   pitch rather than a persistent nav item. */
.sl-concierge__ai-promo {
	margin-top: 36px; padding: 28px 24px; border-radius: 20px; text-align: center;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border);
}
.sl-concierge__ai-promo[hidden] { display: none; }
.sl-concierge__ai-promo-headline { font-size: 14.5px; line-height: 1.5; color: var(--sl-conc-black); max-width: 620px; margin: 0 auto 8px; font-weight: 800; }
.sl-concierge__ai-promo-subtext { font-size: 11.5px; line-height: 1.55; color: var(--sl-conc-text-dim); max-width: 580px; margin: 0 auto 16px; font-weight: 500; }
/* Shrunk from the original 14.5px — the new headline above now carries
   that size/weight, so this reads as supporting detail rather than
   competing with it for attention. */
.sl-concierge__ai-promo-text { font-size: 12.5px; line-height: 1.6; color: var(--sl-conc-text); max-width: 620px; margin: 0 auto 20px; font-weight: 500; }
.sl-concierge__ai-promo-cta {
	display: inline-flex; flex-direction: column; align-items: center; gap: 2px;
	padding: 14px 32px; border-radius: 999px; background: var(--sl-conc-black); color: #fff;
	text-decoration: none; box-shadow: var(--sl-conc-shadow); transition: transform .1s ease, box-shadow .15s ease;
	max-width: 100%; box-sizing: border-box;
}
.sl-concierge__ai-promo-cta:hover { box-shadow: var(--sl-conc-shadow-hover); transform: translateY(-1px); }
.sl-concierge__ai-promo-cta span { font-size: 14.5px; font-weight: 800; white-space: nowrap; }
.sl-concierge__ai-promo-cta small { font-size: 11px; font-weight: 500; opacity: 0.8; white-space: nowrap; }

@media (max-width: 600px) {
	.sl-concierge__ai-promo { padding: 22px 16px; }
	.sl-concierge__ai-promo-headline { font-size: 13px; }
	.sl-concierge__ai-promo-subtext { font-size: 10.5px; }
	.sl-concierge__ai-promo-text { font-size: 11.5px; }
	/* The pill button was wide enough on mobile to force its two lines
	   of text (title + subtitle) to wrap awkwardly inside the rounded
	   shape. Letting it grow to the full available width and softening
	   the corners to a regular rounded-rect (instead of a true pill)
	   fixes that without needing to shrink the text further. */
	.sl-concierge__ai-promo-cta { display: flex; width: 100%; border-radius: 16px; padding: 13px 16px; }
	.sl-concierge__ai-promo-cta span { font-size: 13.5px; white-space: normal; }
	.sl-concierge__ai-promo-cta small { white-space: normal; }
}
.sl-concierge__results[hidden] { display: none; }
.sl-concierge__results.is-loading { opacity: 0.55; }
.sl-concierge__results-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }

/* Placed AFTER the base rule above (not inside the earlier 900px block
   near the top of this file) deliberately — with equal specificity,
   CSS gives the win to whichever rule comes LAST in source order, so a
   4-column override written earlier in the file was silently being
   beaten by this base 2-column rule even on wide desktop viewports.
   2 columns reads as a cramped, half-empty page on a 960px-wide
   desktop container; 4 columns actually uses the space. Mobile/tablet
   stay at 2 (and 1 under 380px, further below) where a card needs the
   extra width to stay legible. */
@media (min-width: 900px) {
	.sl-concierge__results-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; }
}
.sl-concierge__live-count { font-size: 11.5px; font-weight: 700; color: var(--sl-conc-text-dim); margin: 0 2px 10px; text-transform: uppercase; letter-spacing: 0.04em; }
.sl-concierge__live-empty { font-size: 12.5px; color: var(--sl-conc-text-dim); text-align: center; padding: 16px 0; margin: 0; }
.sl-concierge__card {
	display: block; width: 100%; text-align: left;
	text-decoration: none; color: inherit;
	background: var(--sl-conc-card); border: 1.5px solid var(--sl-conc-border); border-radius: 18px;
	overflow: hidden; box-shadow: var(--sl-conc-shadow);
	transition: box-shadow .15s ease, transform .1s ease;
	/* This card is a role="button" <div> (it opens the detail modal on
	   click, and also contains its own WhatsApp/Call <a> action links —
	   a real <button> can't legally nest other interactive elements).
	   Reset padding/margin/font/cursor explicitly since a <div> has no
	   button chrome to begin with, but should still look and behave
	   like one. */
	padding: 0; margin: 0; font: inherit; cursor: pointer; appearance: none;
	-webkit-appearance: none;
}
.sl-concierge__card:hover { box-shadow: var(--sl-conc-shadow-hover); transform: translateY(-2px); }
.sl-concierge__card-image { width: 100%; aspect-ratio: 4/3; background: #f0f0f0; background-size: cover; background-position: center; }
.sl-concierge__card-body { padding: 12px 14px; }
/* Name + verified badge on one line — the badge reuses the same mark the
   business detail modal already shows, just smaller, so a verified
   listing is visible right in the results grid, not only after opening
   it. */
.sl-concierge__card-name-row { display: flex; align-items: center; gap: 4px; margin: 0 0 3px; }
.sl-concierge__card-name { font-size: 13.5px; font-weight: 700; margin: 0; color: var(--sl-conc-black); }
.sl-concierge__card-verified { flex-shrink: 0; }
.sl-concierge__card-category { font-size: 11.5px; color: var(--sl-conc-text-dim); margin: 0 0 4px; }
.sl-concierge__card-location {
	display: flex; align-items: center; gap: 3px;
	font-size: 11px; color: var(--sl-conc-text-dim); margin: 0 0 6px;
}
.sl-concierge__card-location svg { flex-shrink: 0; }
.sl-concierge__card-location span { min-width: 0; }
.sl-concierge__card-meta { font-size: 11.5px; font-weight: 700; color: #d97706; }
.sl-concierge__card-price { font-size: 11.5px; font-weight: 700; color: var(--sl-conc-black); margin: 2px 0 0; }
/* Open/closed status — its own line under the meta row (name, category,
   rating), same wording and colour language as the modal's status line,
   rather than a badge stamped over the photo. */
.sl-concierge__card-status {
	/* Smaller than the name/category/rating above it (this is a
	   secondary detail, not a headline), and allowed to wrap onto a
	   second line rather than being clipped with an ellipsis — the
	   full "Closed · Opens 9:00 AM" text should always be readable
	   inside the card instead of cutting off mid-word. */
	margin: 5px 0 0; font-size: 10px; line-height: 1.35; font-weight: 600;
}
.sl-concierge__card-status--open { color: #16a34a; }
.sl-concierge__card-status--closed { color: var(--sl-conc-text-dim); }
.sl-concierge__card-rating-count { font-weight: 600; color: var(--sl-conc-text-dim); }

/* WhatsApp + Call, directly on the result card — white/black/grey only,
   matching the rest of this concierge theme and the same monochrome
   direction used on the profile/archive pages (kept easy to parse for
   AI/crawlers rather than styled with brand colours). */
.sl-concierge__card-actions { display: flex; gap: 8px; margin-top: 10px; }
.sl-concierge__card-cta {
	flex: 1; display: inline-flex; align-items: center; justify-content: center;
	padding: 7px 10px; border-radius: 100px; font-size: 11.5px; font-weight: 700;
	text-decoration: none; text-align: center; line-height: 1.2;
	border: 1.5px solid var(--sl-conc-black); color: var(--sl-conc-black); background: #fff;
	transition: background-color .15s ease, color .15s ease;
}
.sl-concierge__card-cta--whatsapp { background: var(--sl-conc-black); color: #fff; }
.sl-concierge__card-cta--whatsapp:hover { background: #333; }
.sl-concierge__card-cta--call:hover { background: #f0f0f0; }

/* Touch targets — WCAG 2.5.5 recommends at least 44x44px for
   comfortable tapping; the default sizes above (13px text + modest
   padding) compute to roughly 33px tall, noticeably under that, so
   mobile gets more generous padding on every tappable element rather
   than just scaling font sizes down. */
@media (max-width: 600px) {
	.sl-concierge { padding: 28px 16px; border-radius: 20px; }
	.sl-concierge__headline { font-size: 21px; }
	.sl-concierge__lang-select { flex-direction: column; align-items: stretch; }
	.sl-concierge__lang-btn { padding: 15px 20px; font-size: 14px; min-height: 44px; }
	.sl-concierge__option { padding: 12px 18px; font-size: 13.5px; min-height: 44px; }
	.sl-concierge__bubble { max-width: 92%; font-size: 14px; }
	.sl-concierge__search-btn { padding: 13px 18px; min-height: 44px; white-space: nowrap; }
	.sl-concierge__search-input { min-height: 44px; }
	.sl-concierge__start-over { padding: 12px 22px; min-height: 44px; }

	/* The on-screen keyboard shrinks the VISIBLE viewport when the
	   search input is focused, but vh units are computed against the
	   LAYOUT viewport (before the keyboard appears) on most mobile
	   browsers — a fixed 60vh chat area can end up taller than what's
	   actually visible once the keyboard is up, pushing the search bar
	   itself out of view. Capping with px alongside the vh value keeps
	   it from ever exceeding a sane absolute height on small screens. */
	.sl-concierge__chat { max-height: min(60vh, 420px); }
}

/* Extra-small phones (iPhone SE and similar ~320-375px widths) — two
   result-card columns get uncomfortably narrow for a photo + name +
   category + rating to stay legible, so this tier drops to one column
   rather than shrinking text further to force-fit two. */
@media (max-width: 380px) {
	.sl-concierge { padding: 22px 12px; }
	.sl-concierge__headline { font-size: 19px; }
	.sl-concierge__results-grid { grid-template-columns: 1fr; }
	.sl-concierge__card { display: flex; }
	.sl-concierge__card-image { width: 96px; flex-shrink: 0; aspect-ratio: 1; }
	.sl-concierge__card-body { flex: 1; min-width: 0; }
	.sl-concierge__search-bar { flex-direction: column; }
}

/* Long business/category names shouldn't force horizontal scroll or
   break a card's layout — truncate with an ellipsis instead. */
.sl-concierge__card-name, .sl-concierge__card-category, .sl-concierge__card-location span {
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Business detail modal — Google-Business-style popup, works the same
   on mobile (full-screen) and desktop (centered, max-width, scrollable
   body) rather than needing separate mobile/desktop implementations. */
.sl-concierge__modal-backdrop {
	position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 49;
}
.sl-concierge__modal-backdrop[hidden] { display: none; }

.sl-concierge__modal {
	position: fixed; z-index: 50;
	top: 0; left: 0; right: 0; bottom: 0;
	background: var(--sl-conc-bg, #fafafa);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
.sl-concierge__modal[hidden] { display: none; }

.sl-concierge__modal-close {
	position: sticky; top: 14px; left: calc(100% - 52px);
	width: 38px; height: 38px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: rgba(255,255,255,0.9); border: 1px solid #e6e6e6;
	color: #1a1a1a; cursor: pointer; z-index: 2; box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}

.sl-concierge__modal-loading { display: flex; justify-content: center; align-items: center; gap: 6px; padding: 80px 0; }
.sl-concierge__modal-error { text-align: center; padding: 60px 20px; color: #767676; font-size: 13px; }

/* Cover photo + a soft dark gradient at its base so the floating content
   card below reads as a deliberate "sheet" rising over the photo, Airbnb/
   GMB-style, rather than a plain image with content bolted underneath. */
.sl-concierge__modal-cover {
	width: 100%; height: 210px; background: #e6e6e6 center/cover no-repeat;
	margin-top: -38px; position: relative;
}
.sl-concierge__modal-cover::after {
	content: ''; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,0.22) 100%);
}
.sl-concierge__modal-avatar {
	position: absolute; left: 20px; bottom: -34px; z-index: 1;
	width: 78px; height: 78px; border-radius: 50%;
	background: #fff center/cover no-repeat;
	border: 4px solid #fff; box-shadow: 0 6px 18px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.03);
}

/* The content itself floats up over the cover as a rounded, shadowed
   sheet — the "radiance" the design should have instead of the photo
   just ending in a hard edge. */
.sl-concierge__modal-content {
	max-width: 640px; margin: 0 auto; padding: 20px 20px 60px;
	position: relative; background: #fff;
	border-radius: 26px 26px 0 0;
	box-shadow: 0 -12px 32px rgba(0,0,0,0.06);
}
.sl-concierge__modal-content--with-avatar { padding-top: 42px; }
.sl-concierge__modal-name-row { display: flex; align-items: center; gap: 6px; }
.sl-concierge__modal-verified { flex-shrink: 0; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.15)); }
.sl-concierge__modal-name { font-size: 22px; font-weight: 800; margin: 0 0 4px; color: #111; letter-spacing: -0.01em; }
.sl-concierge__modal-category { font-size: 13px; color: #767676; margin: 0 0 10px; font-weight: 600; }

.sl-concierge__modal-stars { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.sl-concierge__star-icon { font-size: 15px; color: #ddd; }
.sl-concierge__star-icon--full { color: #d97706; }
.sl-concierge__star-icon--half { color: #d97706; opacity: 0.5; }
.sl-concierge__modal-rating-value { font-size: 13px; font-weight: 700; color: #111; }
.sl-concierge__modal-rating-count { font-size: 12px; color: #767676; }

.sl-concierge__modal-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.sl-concierge__modal-status {
	font-size: 11.5px; font-weight: 800; padding: 5px 12px; border-radius: 999px;
}
.sl-concierge__modal-status--open { background: #dcf3e6; color: #15803d; }
.sl-concierge__modal-status--closed { background: #f0f0f0; color: #6b6b6b; }

.sl-concierge__modal-actions { margin-bottom: 18px; }
.sl-concierge__modal-action {
	display: flex; align-items: center; gap: 12px;
	width: 100%; padding: 13px 16px; border-radius: 18px;
	text-decoration: none; box-sizing: border-box;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.sl-concierge__modal-action:hover { transform: translateY(-1px); }
.sl-concierge__modal-action--whatsapp {
	background: linear-gradient(135deg, #25d366, #128c4a); color: #fff;
	box-shadow: 0 6px 18px rgba(18,140,74,0.28);
}
.sl-concierge__modal-action--whatsapp:hover { box-shadow: 0 8px 22px rgba(18,140,74,0.36); }
.sl-concierge__modal-action-icon {
	flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%;
	background: rgba(255,255,255,0.2); display: flex; align-items: center; justify-content: center;
}
.sl-concierge__modal-action-text { flex: 1; display: flex; flex-direction: column; gap: 1px; }
.sl-concierge__modal-action-text strong { font-size: 14px; font-weight: 700; }
.sl-concierge__modal-action-text span { font-size: 11.5px; opacity: 0.85; }
.sl-concierge__modal-action-chevron { font-size: 20px; opacity: 0.75; }

/* Contact rows — each now its own soft rounded card with a colour-coded
   icon "badge" (phone/address/website/email/hours/established each get
   their own pastel tint, cycling via nth-of-type) instead of a plain
   bordered list, so the block reads as a set of charming little tiles
   rather than a dense info dump. */
.sl-concierge__modal-contact {
	display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px;
}
.sl-concierge__modal-contact-row {
	display: flex; align-items: center; gap: 14px;
	padding: 12px 14px; text-decoration: none; color: inherit;
	background: #fafafa; border: 1px solid #eee; border-radius: 16px;
	transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
a.sl-concierge__modal-contact-row:hover {
	background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,0.08); transform: translateY(-1px);
}
.sl-concierge__modal-contact-icon {
	flex-shrink: 0; width: 38px; height: 38px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: #eef1f4; color: #556; margin-top: 0;
}
.sl-concierge__modal-contact-row:nth-of-type(1) .sl-concierge__modal-contact-icon { background: #e3edff; color: #2563eb; }
.sl-concierge__modal-contact-row:nth-of-type(2) .sl-concierge__modal-contact-icon { background: #fde3ee; color: #d6336c; }
.sl-concierge__modal-contact-row:nth-of-type(3) .sl-concierge__modal-contact-icon { background: #efe3fd; color: #7c3aed; }
.sl-concierge__modal-contact-row:nth-of-type(4) .sl-concierge__modal-contact-icon { background: #fdecc8; color: #b45309; }
.sl-concierge__modal-contact-row:nth-of-type(5) .sl-concierge__modal-contact-icon { background: #d8f3ee; color: #0f766e; }
.sl-concierge__modal-contact-row:nth-of-type(6) .sl-concierge__modal-contact-icon { background: #f0f0f0; color: #555; }
.sl-concierge__modal-contact-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.sl-concierge__modal-contact-text strong { font-size: 13.5px; font-weight: 700; color: #111; overflow-wrap: anywhere; }
.sl-concierge__modal-contact-text span { font-size: 11px; color: #767676; }
a.sl-concierge__modal-contact-row:hover .sl-concierge__modal-contact-text strong { text-decoration: underline; }

.sl-concierge__modal-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 18px; }
.sl-concierge__modal-tag {
	padding: 6px 13px; border-radius: 999px;
	background: linear-gradient(135deg, #f5f5f5, #ececec); border: 1px solid #e6e6e6;
	font-size: 11px; font-weight: 700; color: #333;
}

.sl-concierge__modal-social { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.sl-concierge__modal-social-link {
	padding: 7px 15px; border-radius: 999px; border: 1px solid #e6e6e6; background: #fff;
	font-size: 12px; font-weight: 700; color: #111; text-decoration: none;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.sl-concierge__modal-social-link:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }

.sl-concierge__modal-about {
	background: linear-gradient(135deg, #fbfbfb, #f3f3f3); border: 1px solid #ededed;
	border-radius: 18px; padding: 16px 18px; margin-bottom: 4px;
}
.sl-concierge__modal-about h3 { font-size: 13px; font-weight: 800; margin: 0 0 8px; text-transform: uppercase; letter-spacing: 0.04em; color: #999; }
.sl-concierge__modal-about p { font-size: 13.5px; line-height: 1.65; color: #333; margin: 0; }

/* "Business Details" card — Business Established, Payment Methods
   Accepted, Distance from Town Center and similar owner-entered facts
   that used to feed only invisible JSON-LD and never appeared here. Same
   soft-card language as the About block just above it. */
.sl-concierge__modal-details {
	background: linear-gradient(135deg, #fbfbfb, #f3f3f3); border: 1px solid #ededed;
	border-radius: 18px; padding: 16px 18px; margin-top: 14px;
}
.sl-concierge__modal-details h3 { font-size: 13px; font-weight: 800; margin: 0 0 10px; text-transform: uppercase; letter-spacing: 0.04em; color: #999; }
.sl-concierge__details-row {
	display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
	padding: 8px 0; border-bottom: 1px solid #e8e8e8; font-size: 12.5px;
}
.sl-concierge__details-row:last-child { border-bottom: none; padding-bottom: 0; }
.sl-concierge__details-label { color: #767676; flex-shrink: 0; }
.sl-concierge__details-value { font-weight: 700; color: #111; text-align: right; overflow-wrap: anywhere; }
.sl-concierge__details-value a { color: #2563eb; text-decoration: none; }
.sl-concierge__details-value a:hover { text-decoration: underline; }

/* Reviews (modal) — same visual language as the rest of the picker/pill
   system elsewhere in this theme. */
.sl-concierge__modal-reviews { margin-top: 20px; padding-top: 16px; border-top: 1px solid #e6e6e6; }
.sl-concierge__modal-reviews h3 { font-size: 15px; font-weight: 700; margin: 0 0 10px; }
.sl-concierge__review-write-toggle {
	font-size: 12px; font-weight: 700; color: #111; background: #f0f0f0;
	border: 1px solid #e6e6e6; border-radius: 999px; padding: 7px 14px; cursor: pointer; margin-bottom: 12px;
}
.sl-concierge__review-form { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; padding: 12px; border-radius: 14px; background: #fff; border: 1px solid #e6e6e6; }
.sl-concierge__review-form[hidden] { display: none; }
.sl-concierge__review-input, .sl-concierge__review-textarea {
	width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid #e6e6e6;
	font-size: 13px; font-family: inherit; box-sizing: border-box; resize: vertical;
}
.sl-concierge__review-stars { display: flex; gap: 4px; }
.sl-concierge__review-star { background: none; border: none; font-size: 22px; color: #ddd; cursor: pointer; padding: 2px; }
.sl-concierge__review-star.is-selected { color: #d97706; }
.sl-concierge__review-submit {
	align-self: flex-start; font-size: 12.5px; font-weight: 700; color: #fff;
	background: #111; border: none; border-radius: 999px; padding: 9px 20px; cursor: pointer;
}
.sl-concierge__review-form-message { font-size: 11.5px; color: #767676; margin: 0; min-height: 14px; }
.sl-concierge__review-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

.sl-concierge__reviews-list { display: flex; flex-direction: column; gap: 10px; }
.sl-concierge__reviews-loading, .sl-concierge__reviews-empty { font-size: 12px; color: #767676; text-align: center; padding: 14px 0; margin: 0; }
.sl-concierge__review-card { padding: 12px; border-radius: 12px; background: #fff; border: 1px solid #e6e6e6; }
.sl-concierge__review-card-header { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 4px; font-size: 12.5px; }
.sl-concierge__review-card-header span { font-size: 10.5px; color: #767676; }
.sl-concierge__review-card-stars span { color: #ddd; font-size: 13px; }
.sl-concierge__review-card-stars span.is-filled { color: #d97706; }
.sl-concierge__review-badges { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0; }
.sl-concierge__review-badge { display: inline-flex; align-items: center; gap: 4px; background: #e6f4ea; color: #1e7e34; border: 1px solid #b7dfc2; border-radius: 999px; padding: 2px 9px; font-size: 10.5px; font-weight: 600; }
.sl-concierge__review-badge::before { content: "\2713"; }
.sl-concierge__review-card p { font-size: 12.5px; line-height: 1.5; color: #333; margin: 6px 0 0; }

.sl-concierge__reviews-load-more {
	display: block; width: 100%; margin-top: 12px; padding: 9px; border-radius: 10px;
	background: #f0f0f0; border: 1px solid #e6e6e6; color: #111; font-size: 11.5px; font-weight: 600; cursor: pointer;
}
.sl-concierge__reviews-load-more[hidden] { display: none; }

/* Modal tabs — Google-My-Business-style horizontal pill row (Overview /
   Pricing / Reviews / Menu / Verification), scrollable on narrow phones
   rather than wrapping, with a soft warm-cream "radiance" glow behind the
   active pill instead of a flat highlight. Panels are all rendered up
   front and just toggled with .is-active, so switching tabs never
   re-fetches or re-renders (Reviews keeps its already-loaded list). */
.sl-concierge__modal-tabs {
	display: flex; gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch;
	margin: 4px 0 20px; padding: 5px; scrollbar-width: none;
	background: #f4f4f4; border-radius: 999px;
}
.sl-concierge__modal-tabs::-webkit-scrollbar { display: none; }
.sl-concierge__modal-tab {
	flex-shrink: 0; white-space: nowrap; cursor: pointer;
	font-family: inherit; font-size: 12px; font-weight: 700; color: #767676;
	background: transparent; border: none; border-radius: 999px;
	padding: 9px 15px; transition: color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.sl-concierge__modal-tab:hover { color: #333; }
.sl-concierge__modal-tab.is-active {
	color: #111; background: #fff;
	box-shadow: 0 3px 10px rgba(0,0,0,0.1), 0 0 0 1px rgba(217,119,6,0.15);
}
.sl-concierge__modal-tab-panel { display: none; animation: sl-conc-fade-in 0.18s ease; }
.sl-concierge__modal-tab-panel.is-active { display: block; }
@keyframes sl-conc-fade-in { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
.sl-concierge__modal-empty { font-size: 13px; color: #767676; text-align: center; padding: 32px 0; margin: 0; }

/* Menu tab action card — same pill/card action language as the WhatsApp
   button, in a warm cream tone instead of solid black so it reads as a
   secondary (not primary contact) action. */
.sl-concierge__modal-action--menu {
	background: linear-gradient(135deg, #fff7ea, #fdecc8);
	border: 1px solid #f3dfa8; color: #6b4a00;
	box-shadow: 0 2px 10px rgba(217,119,6,0.08);
}
.sl-concierge__modal-action--menu .sl-concierge__modal-action-icon { background: rgba(217,119,6,0.12); color: #b45309; }
.sl-concierge__modal-action--menu .sl-concierge__modal-action-text span { opacity: 0.7; }

/* Pricing tab — a soft mint headline chip for the computed min/max range,
   then a clean itemized list card below it. */
.sl-concierge__modal-price-range {
	display: flex; align-items: center; justify-content: space-between;
	padding: 14px 18px; border-radius: 18px; margin-bottom: 16px;
	background: linear-gradient(135deg, #eefaf3, #dcf3e6);
	border: 1px solid #c9ecd7; box-shadow: 0 2px 10px rgba(22,163,74,0.08);
}
.sl-concierge__modal-price-range span { font-size: 11.5px; font-weight: 700; color: #15803d; text-transform: uppercase; letter-spacing: 0.03em; }
.sl-concierge__modal-price-range strong { font-size: 15px; font-weight: 800; color: #14532d; }
.sl-concierge__pricing-list { display: flex; flex-direction: column; gap: 8px; }
.sl-concierge__pricing-row {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
	padding: 12px 14px; border-radius: 14px; background: #fff; border: 1px solid #eee;
}
.sl-concierge__pricing-row-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sl-concierge__pricing-row-text strong { font-size: 13px; font-weight: 700; color: #111; }
.sl-concierge__pricing-row-text span { font-size: 11.5px; color: #767676; }
.sl-concierge__pricing-row-price { flex-shrink: 0; font-size: 13.5px; font-weight: 800; color: #111; white-space: nowrap; }

/* Verification tab — status pill in a pastel tone per state, plus a
   checklist and collapsible history reusing the profile page's own
   wording so both surfaces agree, just restyled for the modal's cards. */
.sl-concierge__verify-status {
	display: inline-block; font-size: 12.5px; font-weight: 800; padding: 8px 16px;
	border-radius: 999px; margin-bottom: 12px;
}
.sl-concierge__verify-status--verified { background: #dcf3e6; color: #15803d; }
.sl-concierge__verify-status--needs_recheck { background: #fdecc8; color: #92600a; }
.sl-concierge__verify-status--not_verified { background: #f0f0f0; color: #6b6b6b; }
.sl-concierge__verify-note { font-size: 12.5px; color: #333; margin: 0 0 10px; line-height: 1.5; }
.sl-concierge__verify-note--muted { color: #767676; font-size: 11.5px; }
.sl-concierge__verify-checklist, .sl-concierge__verify-info { list-style: none; margin: 0 0 14px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.sl-concierge__verify-checklist li {
	font-size: 12.5px; color: #222; padding: 10px 14px; border-radius: 12px;
	background: #f7fbf8; border: 1px solid #e3f0e6;
}
.sl-concierge__verify-method { font-size: 11px; color: #767676; }
.sl-concierge__verify-info li {
	display: flex; align-items: center; gap: 10px; padding: 8px 0;
	border-bottom: 1px solid #f0f0f0; font-size: 12.5px;
}
.sl-concierge__verify-info li:last-child { border-bottom: none; }
.sl-concierge__verify-info-icon { flex-shrink: 0; font-size: 14px; }
.sl-concierge__verify-info-label { flex: 1; color: #767676; }
.sl-concierge__verify-info-value { font-weight: 700; color: #111; text-align: right; }
.sl-concierge__verify-history { margin-top: 8px; border-top: 1px solid #e6e6e6; padding-top: 12px; }
.sl-concierge__verify-history summary {
	cursor: pointer; font-size: 12.5px; font-weight: 700; color: #111; list-style: none;
}
.sl-concierge__verify-history summary::-webkit-details-marker { display: none; }
.sl-concierge__verify-history summary::before { content: '\25B8'; display: inline-block; margin-right: 6px; transition: transform 0.15s ease; }
.sl-concierge__verify-history[open] summary::before { transform: rotate(90deg); }
.sl-concierge__verify-history-list { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.sl-concierge__verify-history-list li { font-size: 11.5px; color: #444; padding: 8px 12px; border-radius: 10px; background: #fafafa; border: 1px solid #eee; }

@media (min-width: 640px) {
	/* Desktop: centered card rather than a full-viewport panel — mobile
	   keeps the full-screen treatment since a centered modal at that
	   width would just be the same width as the viewport anyway. */
	.sl-concierge__modal {
		top: 5vh; left: 50%; right: auto; bottom: auto;
		transform: translateX(-50%);
		width: min(640px, 92vw); max-height: 90vh;
		border-radius: 28px; box-shadow: 0 24px 70px rgba(0,0,0,0.28), 0 0 0 1px rgba(255,255,255,0.06);
	}
	.sl-concierge__modal-content { border-radius: 26px 26px 26px 26px; }
}
