/*
	Theme Name: LiveBuyers Agent 3
	Theme URI: https://www.livebuyers.net/
	Description: LiveBuyers real estate agent design 3. Child of Hello Elementor. A tokenised design system for agent and team sites, built to run with or without Showcase IDX: every IDX surface has a working fallback, and switches to the live Showcase widget the moment the plugin is connected. Every colour, size and rhythm value is a custom property, so a new agent is a values swap rather than a new stylesheet.
	Author: LiveBuyers
	Author URI: https://www.livebuyers.net/
	Template: hello-elementor
	Version: 1.0.0
	Requires PHP: 7.4
	License: GNU General Public License v3 or later.
	License URI: https://www.gnu.org/licenses/gpl-3.0.html
	Text Domain: lb-agent-3
*/

/* ==========================================================================
   CONTENTS

   1. Tokens              the design system as custom properties
   2. Elementor globals   binds the tokens to Site Settings > Global Colors
   3. Foundations         type scale, measure, base elements
   4. Elementor structure containers, widget bindings, the bare-button reset
   5. Layout              container, section rhythm
   6. Components          header, hero, search, cards, listings, reviews ...
   7. Motion
   8. Accessibility
   9. Agent components    everything specific to this design (end of file)

   Sections 3-5, the header/nav block and most of 7-8 are shared with
   lb-lender-1, where every rule was written against a specific, reproducible
   Elementor or Hello Elementor override. Read those comments before removing
   anything - the failures they prevent are silent.
   ========================================================================== */


/* ==========================================================================
   1. TOKENS
   ========================================================================== */

:root {
	/* --- Colour ---------------------------------------------------------
	   Warm stone neutrals: this is a home, not a bank statement. The ink is a
	   green-black rather than navy so the site does not read as a lender or a
	   franchise default. */

	--lb-paper:        #FAF8F4;  /* page ground */
	--lb-surface:      #FFFFFF;  /* cards, panels */
	--lb-mist:         #F2EEE7;  /* alternating sections */
	--lb-sand:         #E8E1D5;  /* image placeholders, deeper band */
	--lb-rule:         #E2DCD1;  /* hairlines */
	--lb-ash:          #5E625D;  /* secondary text. 6.1:1 on paper */
	--lb-ink:          #23282A;  /* body copy */
	--lb-ink-deep:     #121816;  /* headings, footer ground */

	/* The one hue a site changes, through Elementor's Global Colors (see 2).
	   Evergreen by default: reads as "home and land", not as any franchise's
	   brand colour, so a site that never sets its own still looks deliberate. */
	--lb-accent:       #1F5C4F;
	--lb-accent-hover: #164539;
	--lb-accent-tint:  #E7F0EC;
	--lb-on-accent:    #FFFFFF;
	/* The accent as TEXT on paper. Same as the accent unless a site picks a
	   brand light enough to fail 4.5:1, when inc/colors.php darkens it. */
	--lb-accent-text:  var(--lb-accent);
	/* Below the ink: the far end of the dark panel gradient. */
	--lb-ink-deeper:   #0B1210;
	/* Tick used by .lb-checks and the form confirmation. inc/colors.php
	   redraws it in the site's accent. */
	--lb-check-icon:   url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4L18 8' fill='none' stroke='%231F5C4F' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");

	/* A second, warm metal used sparingly: stars, a rule under a figure, the
	   dot on "new listing". Never for text on paper - it fails contrast. */
	--lb-gold:         #B98A45;

	--lb-positive:     #1F7A55;
	--lb-caution:      #9A6212;

	/* --- Type -----------------------------------------------------------
	   Instrument Serif is a display face: tall, narrow, editorial - the
	   register of a property magazine rather than a brokerage template. It is
	   only used at display sizes. Manrope does everything else; its figures
	   are tabular by default, which prices and bed/bath counts need. */

	--lb-font-display: 'Instrument Serif', 'Iowan Old Style', Georgia, serif;
	--lb-font-text:    'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;

	--lb-text-2xs:  0.75rem;    /* 12px  disclosures, MLS lines */
	--lb-text-xs:   0.8125rem;  /* 13px  labels, meta */
	--lb-text-sm:   0.9375rem;  /* 15px  captions, form labels */
	--lb-text-base: 1.0625rem;  /* 17px  body */
	--lb-text-lg:   1.1875rem;  /* 19px  lead paragraphs */
	--lb-text-xl:   1.375rem;   /* 22px  card headings */

	/* Instrument Serif sets small for its point size, so the display scale
	   runs a step larger than it would for a book face. */
	--lb-display-sm: clamp(1.875rem, 1.3rem + 2.3vw, 2.625rem);
	--lb-display-md: clamp(2.375rem, 1.5rem + 3.6vw, 3.875rem);
	--lb-display-lg: clamp(2.875rem, 1.5rem + 6vw, 5.75rem);

	--lb-figure-lg: clamp(2.5rem, 1.6rem + 3.8vw, 4rem);
	--lb-figure-md: clamp(2rem, 1.4rem + 2.2vw, 2.75rem);

	--lb-leading-tight: 1.02;
	--lb-leading-snug:  1.3;
	--lb-leading-body:  1.65;

	--lb-tracking-display: -0.01em;
	--lb-tracking-label:    0.12em;

	--lb-weight-regular:  400;
	--lb-weight-medium:   500;
	--lb-weight-semibold: 600;
	--lb-weight-bold:     700;

	/* --- Measure & rhythm ----------------------------------------------- */
	--lb-measure:      66ch;
	--lb-measure-lead: 54ch;

	--lb-space-3xs: 0.25rem;
	--lb-space-2xs: 0.5rem;
	--lb-space-xs:  0.75rem;
	--lb-space-sm:  1rem;
	--lb-space-md:  1.5rem;
	--lb-space-lg:  2.25rem;
	--lb-space-xl:  3.5rem;
	--lb-space-2xl: 5.5rem;

	--lb-section-y: clamp(4rem, 8vw, 8rem);
	--lb-gutter:    clamp(1.25rem, 4vw, 3rem);
	--lb-container: 78rem;
	--lb-container-narrow: 46rem;

	/* --- Surface --------------------------------------------------------
	   Softer than the lender design: property photography is the content, and
	   a generous radius frames it the way the listing portals have taught
	   buyers to expect. */
	--lb-radius:      10px;
	--lb-radius-lg:   18px;
	--lb-radius-pill: 999px;

	--lb-shadow-panel: 0 1px 2px rgba(18, 24, 22, 0.04),
	                   0 8px 28px rgba(18, 24, 22, 0.07);
	--lb-shadow-lift:  0 2px 4px rgba(18, 24, 22, 0.05),
	                   0 18px 48px rgba(18, 24, 22, 0.12);

	--lb-hairline: 1px solid var(--lb-rule);

	--lb-ease: cubic-bezier(0.2, 0.6, 0.25, 1);
	--lb-duration: 220ms;

	/* The home hero fills the first screen; the header sits over it. The
	   admin bar, when shown, is in flow above the hero, so it comes off. */
	--lb-hero-min: calc(100vh - var(--wp-admin--admin-bar--height, 0px));
	--lb-head-h: 4.75rem;
}


/* ==========================================================================
   2. ELEMENTOR GLOBALS BRIDGE

   Site Settings > Global Colors compile to --e-global-color-*. Binding the
   tokens to those makes Elementor's colour picker the control surface for a
   site's brand, with no CSS to write per agent.

     Primary   -> brand colour        (buttons, links, accents)
     Secondary -> deep ink            (headings, footer ground)
     Text      -> body copy
     Accent    -> brand hover/pressed

   The tint is derived rather than set, so an agent who picks a brokerage red
   gets a matching pale red without a fifth swatch.

   Declared on body as well as :root: Elementor defines --e-global-color-* on
   body.elementor-kit-N, so a :root-only bridge always fell back to the
   defaults and a changed Global Color never reached the theme.

   Agent Settings > Colors (inc/colors.php) overrides all of this with a
   resolved palette on body.lb-palette, and writes the same colours back into
   the Elementor kit so the editor's swatches agree.
   ========================================================================== */

:root,
body {
	--lb-accent:       var(--e-global-color-primary,   #1F5C4F);
	--lb-accent-hover: var(--e-global-color-accent,    #164539);
	--lb-ink:          var(--e-global-color-text,      #23282A);
	--lb-ink-deep:     var(--e-global-color-secondary, #121816);
	--lb-accent-tint:  color-mix(in srgb, var(--lb-accent) 10%, #FFFFFF);
	--lb-accent-text:  var(--lb-accent);
}

/* ==========================================================================
   3. FOUNDATIONS
   ========================================================================== */

body {
	background-color: var(--lb-paper);
	color: var(--lb-ink);
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	line-height: var(--lb-leading-body);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
	font-family: var(--lb-font-display);
	font-weight: var(--lb-weight-regular);
	line-height: var(--lb-leading-tight);
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-ink-deep);
	text-wrap: balance;
}

h1 { font-size: var(--lb-display-lg); }
h2 { font-size: var(--lb-display-md); }
h3 { font-size: var(--lb-display-sm); }
/* h4 and below are working headings (card titles, form sections), where a
   display face at 22px looks like a wedding invitation. They take the text
   face instead. */
h4 {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xl);
	font-weight: var(--lb-weight-bold);
	line-height: var(--lb-leading-snug);
	letter-spacing: -0.01em;
}

p { max-width: var(--lb-measure); }

a {
	color: var(--lb-accent-text);
	text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
	text-underline-offset: 0.16em;
	text-decoration-thickness: 1px;
	transition: text-decoration-color var(--lb-duration) var(--lb-ease),
	            color var(--lb-duration) var(--lb-ease);
}

a:hover { text-decoration-color: currentColor; }

img { max-width: 100%; height: auto; }

/* Every figure on this site is a number in a column of numbers. */
.lb-nums,
.lb-figure,
table td,
table th {
	font-variant-numeric: tabular-nums lining-nums;
}


/* ==========================================================================
   4. ELEMENTOR & PARENT-THEME STRUCTURE

   Three separate mechanisms fight an ordinary child theme here. All three are
   documented because all three fail SILENTLY - valid CSS, correct classes,
   wrong result.
   ========================================================================== */

/* --- 4a. Containers take layout from custom properties -------------------
   `.e-con` applies display:var(--display), flex-direction:var(--flex-direction),
   width:var(--width), padding-inline:var(--padding-left/right) and so on, and
   reinforces several at two-class specificity:

     .e-con.e-flex{--flex-direction:column}
     .e-con-full.e-flex{flex-direction:var(--flex-direction)}

   A single-class rule loses and the container becomes a full-width vertical
   stack. So container layout is expressed by setting those variables at
   `.e-con.<class>` specificity, AND restated as plain properties, because the
   variable chain has several links and any one of them breaking collapses the
   layout. Belt and braces on purpose. */

/* --- 4b. Widgets bind to the Kit's globals -------------------------------
   Elementor emits, per document:

     .elementor-widget-heading .elementor-heading-title {
         font-size: var(--e-global-typography-primary-font-size);
         color:     var(--e-global-color-primary);
     }

   which makes every heading one size in the brand colour, the nav display-sized,
   and text widgets take the global text colour regardless of their surface.
   The theme owns type and colour; the Kit owns the brand hue that section 2
   reads. So the scale is restated one notch more specific here. */

.elementor-widget-heading h1.elementor-heading-title,
.elementor-widget-heading h2.elementor-heading-title,
.elementor-widget-heading h3.elementor-heading-title,
.elementor-widget-heading h4.elementor-heading-title {
	font-family: var(--lb-font-display);
	font-weight: var(--lb-weight-regular);
	line-height: var(--lb-leading-tight);
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-ink-deep);
}

.elementor-widget-heading h1.elementor-heading-title { font-size: var(--lb-display-lg); }
.elementor-widget-heading h2.elementor-heading-title { font-size: var(--lb-display-md); }
.elementor-widget-heading h3.elementor-heading-title { font-size: var(--lb-display-sm); }
.elementor-widget-heading h4.elementor-heading-title {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xl);
	font-weight: var(--lb-weight-bold);
	line-height: var(--lb-leading-snug);
	letter-spacing: -0.01em;
}

/* Text widgets take their colour from the surface they sit on, not the global.
   Without this, copy on the dark footer renders in the dark body colour. */
.elementor-widget-text-editor { color: inherit; }

/* A wrapper class can set type and hand it down: Elementor puts the widget's
   CSS Classes on the OUTER wrapper, never on the heading inside it. */
.lb-figure.elementor-widget-heading .elementor-heading-title,
.lb-label.elementor-widget-heading .elementor-heading-title,
.lb-brand__name.elementor-widget-heading .elementor-heading-title,
.lb-foot__title.elementor-widget-heading .elementor-heading-title {
	font: inherit;
	color: inherit;
	letter-spacing: inherit;
	font-variation-settings: inherit;
	margin: 0;
}

/* --- 4c. Hello Elementor's bare-button reset -----------------------------
   reset.css styles every unclassed <button>:

     [type=button],button          { border:1px solid #c36; color:#c36 }
     [type=button]:hover,:focus,
     button:hover, button:focus    { background-color:#c36; color:#fff }

   Both properties, on both states. Overriding only the background leaves white
   text on a near-white ground - invisible rather than merely wrong. And :focus
   is NOT covered by a :focus-visible rule: returning focus programmatically
   after a mouse interaction fires :focus while browsers withhold
   :focus-visible, which is exactly when a control seems to disappear.

   Any bare <button> added to this theme needs the same treatment. */

.lb-btn-plain,
.lb-btn-plain:hover,
.lb-btn-plain:focus,
.lb-btn-plain:focus-visible,
.lb-btn-plain:active {
	background-color: transparent;
	background-image: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	text-decoration: none;
	color: inherit;
	font: inherit;
	cursor: pointer;
	padding: 0;
}


/* ==========================================================================
   5. LAYOUT
   ========================================================================== */

.e-con.lb-container {
	--width: 100%;
	--margin-left: auto;
	--margin-right: auto;
	--padding-left: var(--lb-gutter);
	--padding-right: var(--lb-gutter);
	max-width: var(--lb-container);
	margin-inline: auto;
	padding-inline: var(--lb-gutter);
}

.e-con.lb-container--narrow {
	max-width: calc(var(--lb-container-narrow) + var(--lb-gutter) * 2);
}

.e-con.lb-section {
	--padding-top: var(--lb-section-y);
	--padding-bottom: var(--lb-section-y);
	--padding-left: 0px;
	--padding-right: 0px;
	--row-gap: 0px;
	padding-block: var(--lb-section-y);
	padding-inline: 0;
}

.lb-section--mist    { background-color: var(--lb-mist); }
.lb-section--ink     { background-color: var(--lb-ink-deep); color: var(--lb-paper); }
.lb-section--tint    { background-color: var(--lb-accent-tint); }

.lb-section--ink h1,
.lb-section--ink h2,
.lb-section--ink h3,
.lb-section--ink h4,
.lb-section--ink .elementor-heading-title { color: var(--lb-paper); }

/* Grids. Plain elements inside HTML widgets, so ordinary CSS applies. */
.lb-grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: var(--lb-space-xl); }
.lb-grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--lb-space-lg); }
.lb-grid-4 { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: var(--lb-space-lg); }

.e-con.lb-row {
	--flex-direction: row;
	--flex-wrap: wrap;
	--align-items: center;
	--column-gap: var(--lb-space-sm);
	--row-gap: var(--lb-space-sm);
	--width: auto;
	--padding-left: 0px;
	--padding-right: 0px;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lb-space-sm);
	width: auto;
	padding-inline: 0;
}

.e-con.lb-heading {
	--flex-direction: column;
	--row-gap: var(--lb-space-sm);
	--padding-left: 0px;
	--padding-right: 0px;
	--padding-top: 0px;
	--padding-bottom: var(--lb-space-md);
	--margin-bottom: var(--lb-space-xl);
	flex-direction: column;
	gap: var(--lb-space-sm);
	padding: 0 0 var(--lb-space-md);
	margin-bottom: var(--lb-space-xl);
	border-bottom: var(--lb-hairline);
}

@media (min-width: 900px) {
	.e-con.lb-heading--split {
		--flex-direction: row;
		--align-items: baseline;
		--justify-content: space-between;
		--column-gap: var(--lb-space-xl);
		flex-direction: row;
		align-items: baseline;
		justify-content: space-between;
		gap: var(--lb-space-xl);
	}
}

.lb-lead,
.elementor-widget-text-editor.lb-lead {
	font-size: var(--lb-text-lg);
	line-height: 1.5;
	max-width: var(--lb-measure-lead);
	color: var(--lb-ash);
}


/* ==========================================================================
   6. COMPONENTS
   ========================================================================== */

/* --- Label ---------------------------------------------------------------
   The one place tracked-out small caps earn their keep: these mark regulated
   or structural information (licence numbers, listing status, step numbers), where
   the convention is the point. Not used as decorative eyebrows above headings. */

.lb-label {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-ash);
	line-height: 1.2;
}

/* --- Buttons -------------------------------------------------------------
   Elementor prints button styling inline, so these target the inner
   .elementor-button and win on specificity. */

.lb-btn .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--lb-space-2xs);
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0.01em;
	line-height: 1;
	padding: 1.05em 1.9em;
	border: 1px solid var(--lb-accent);
	border-radius: var(--lb-radius);
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
	text-decoration: none;
	transition: background-color var(--lb-duration) var(--lb-ease),
	            border-color var(--lb-duration) var(--lb-ease),
	            color var(--lb-duration) var(--lb-ease);
}

.lb-btn .elementor-button:hover,
.lb-btn .elementor-button:focus-visible {
	background-color: var(--lb-accent-hover);
	border-color: var(--lb-accent-hover);
	color: var(--lb-on-accent);
}

.lb-btn--quiet .elementor-button {
	background-color: transparent;
	border-color: var(--lb-ink-deep);
	color: var(--lb-ink-deep);
}

.lb-btn--quiet .elementor-button:hover,
.lb-btn--quiet .elementor-button:focus-visible {
	background-color: var(--lb-ink-deep);
	border-color: var(--lb-ink-deep);
	color: var(--lb-paper);
}

/* Over the hero video. */
.lb-btn--inverse .elementor-button {
	background-color: var(--lb-surface);
	border-color: var(--lb-surface);
	color: var(--lb-ink-deep);
}

.lb-btn--inverse .elementor-button:hover,
.lb-btn--inverse .elementor-button:focus-visible {
	background-color: transparent;
	border-color: var(--lb-surface);
	color: var(--lb-surface);
}

/* --- Hero ----------------------------------------------------------------
   Markup comes from lb_agent_hero() in inc/hero.php. The poster is a real
   <img> so it can be the LCP element; the Vimeo iframe is layered over it and
   faded in once playing, and is never loaded at all on small screens, under
   reduced motion, or when the browser reports a metered connection. */

.lb-hero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: var(--lb-hero-min);
	overflow: hidden;
	background-color: var(--lb-ink-deep);
	isolation: isolate;
}

.lb-hero__media,
.lb-hero__poster,
.lb-hero__frame {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.lb-hero__poster {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.lb-hero__frame {
	z-index: -1;
	opacity: 0;
	transition: opacity 900ms var(--lb-ease);
	pointer-events: none;
	border: 0;
}

.lb-hero.is-playing .lb-hero__frame { opacity: 1; }

/* Cover an arbitrary hero box with a 16:9 player. */
.lb-hero__frame iframe {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 100vw;
	height: 56.25vw;          /* 16:9 of viewport width */
	min-height: 100%;
	min-width: 177.78vh;      /* 16:9 of hero height */
	transform: translate(-50%, -50%);
	border: 0;
	pointer-events: none;
}

/* Scrim. Strong enough for AA on white display type without flattening the
   footage: darkest at the bottom where the copy sits. */
.lb-hero::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(
		to bottom,
		rgba(15, 27, 45, 0.55) 0%,
		rgba(15, 27, 45, 0.42) 45%,
		rgba(15, 27, 45, 0.68) 100%
	);
	pointer-events: none;
}

.lb-hero__inner {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: var(--lb-container);
	margin-inline: auto;
	padding: var(--lb-space-2xl) var(--lb-gutter);
	color: var(--lb-surface);
}

.lb-hero__eyebrow {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.85);
	margin: 0 0 var(--lb-space-sm);
}

.lb-hero__heading {
	font-family: var(--lb-font-display);
	font-size: var(--lb-display-lg);
	line-height: 1.02;
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-surface);
	margin: 0;
	max-width: 18ch;
	text-wrap: balance;
}

.lb-hero__sub {
	margin-top: var(--lb-space-md);
	font-size: var(--lb-text-lg);
	color: rgba(255, 255, 255, 0.88);
	max-width: 46ch;
}

.lb-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lb-space-sm);
	margin-top: var(--lb-space-lg);
}

/* --- Site header ---------------------------------------------------------
   Containers, so layout is set through Elementor's custom properties AND
   restated as plain properties. See section 4a. */

.e-con.lb-head {
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	background-color: var(--lb-surface);
	border-bottom: var(--lb-hairline);
	padding: 0;
}

.e-con.lb-head__bar {
	--flex-direction: row;
	--align-items: center;
	--justify-content: space-between;
	--flex-wrap: nowrap;
	--column-gap: var(--lb-space-lg);
	--padding-top: var(--lb-space-sm);
	--padding-bottom: var(--lb-space-sm);
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	flex-wrap: nowrap;
	gap: var(--lb-space-lg);
	padding-block: var(--lb-space-sm);
}

.e-con.lb-brand {
	--flex-direction: column;
	--row-gap: 0px;
	--width: auto;
	--align-items: flex-start;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	flex-direction: column;
	align-items: flex-start;
	gap: 0;
	width: auto;
	padding: 0;
}

.lb-brand__name {
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-xl);
	line-height: 1.15;
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-ink-deep);
}

/* The wordmark links home. Two things make it behave like a logo rather than
   a linked word:

   1. A hover state, so it reads as interactive at all.
   2. A stretched hit area. The anchor sits on the name only, but the company
      line beneath it is visually part of the same mark - people click it and
      nothing happens. The pseudo-element expands the anchor over the whole
      brand block, so the entire lockup is one target. */

.e-con.lb-brand { position: relative; }

.lb-brand__name a {
	color: inherit;
	text-decoration: none;
	transition: color var(--lb-duration) var(--lb-ease);
}

.lb-brand__name a::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
}

.lb-brand__name a:hover,
.lb-brand__name a:focus-visible {
	color: var(--lb-accent-text);
}

/* Focus lands on the small anchor, so put the ring around the whole lockup. */
.e-con.lb-brand:focus-within {
	outline: 2px solid var(--lb-accent);
	outline-offset: 6px;
	border-radius: 2px;
}

.lb-brand__name a:focus-visible { outline: none; }

.lb-brand__meta {
	font-size: var(--lb-text-xs);
	line-height: 1.3;
	color: var(--lb-ash);
}

.e-con.lb-head__actions {
	--flex-direction: row;
	--align-items: center;
	--flex-wrap: nowrap;
	--column-gap: var(--lb-space-md);
	--width: auto;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	flex-direction: row;
	align-items: center;
	flex-wrap: nowrap;
	gap: var(--lb-space-md);
	width: auto;
	padding: 0;
}

.lb-head__phone {
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-medium);
	color: var(--lb-ink-deep);
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

/* Elementor's nav widget binds its type to the Kit's primary global, which
   would set the menu in display-sized serif. Restated at matching specificity
   so file order decides, and its pointer pseudo-elements are turned off since
   we draw our own underline. */
.lb-nav { width: auto; }

.lb-nav .elementor-nav-menu .elementor-item {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-medium);
	line-height: 1.2;
	letter-spacing: 0;
	color: var(--lb-ink-deep);
	padding: var(--lb-space-2xs) var(--lb-space-xs);
	background-color: transparent;
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: var(--lb-space-xs) calc(100% - 0.3em);
	background-size: 0% 1px;
	transition: background-size 300ms var(--lb-ease), color 180ms var(--lb-ease);
}

.lb-nav .elementor-nav-menu .elementor-item:hover,
.lb-nav .elementor-nav-menu .elementor-item:focus-visible,
.lb-nav .elementor-nav-menu .elementor-item.elementor-item-active {
	color: var(--lb-accent-text);
	background-size: calc(100% - var(--lb-space-xs) * 2) 1px;
}

.lb-nav .elementor-nav-menu .elementor-item::before,
.lb-nav .elementor-nav-menu .elementor-item::after {
	display: none !important;
}

/* --- Dropdowns -----------------------------------------------------------
   CAREFUL: Elementor puts `elementor-nav-menu--dropdown` on TWO different
   things - the mobile <nav> container, and every desktop <ul class="sub-menu">.
   Hiding the class outright hides every dropdown, which makes the child pages
   unreachable and leaves SmartMenus fighting to open a menu it cannot show.
   Target the mobile container by its second class instead. */

/* Elementor switches between the inline list and the burger at its own
   breakpoint (the widget carries `--dropdown-tablet`). Do NOT hide the toggle
   or the dropdown container here: doing so leaves phones with no navigation at
   all, because the inline list is hidden at that width too. Style them instead
   and let Elementor own the switching. */

.lb-nav .elementor-menu-toggle {
	background-color: transparent;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius);
	color: var(--lb-ink-deep);
	padding: 0.55em;
	cursor: pointer;
}

.lb-nav .elementor-menu-toggle:hover,
.lb-nav .elementor-menu-toggle:focus,
.lb-nav .elementor-menu-toggle:focus-visible {
	background-color: var(--lb-mist);
	border-color: var(--lb-ink-deep);
	color: var(--lb-ink-deep);
}

.lb-nav .elementor-menu-toggle svg {
	width: 1.35em;
	height: 1.35em;
	fill: currentColor;
}

/* The mobile panel. Full width under the header rather than a floating card,
   which is what people expect on a phone and gives the tap targets room. */
.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container {
	background-color: var(--lb-surface);
	border-top: var(--lb-hairline);
	box-shadow: var(--lb-shadow-panel);
}

.lb-nav .elementor-nav-menu--dropdown a.elementor-item,
.lb-nav .elementor-nav-menu--dropdown a.elementor-sub-item {
	padding: 0.95em var(--lb-gutter);
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-medium);
	color: var(--lb-ink-deep);
	border-bottom: var(--lb-hairline);
	background-color: transparent;
	background-image: none;
	white-space: normal;
}

.lb-nav .elementor-nav-menu--dropdown a.elementor-sub-item {
	padding-inline-start: calc(var(--lb-gutter) + var(--lb-space-md));
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-regular);
	color: var(--lb-ash);
}

.lb-nav .elementor-nav-menu--dropdown a.elementor-item:hover,
.lb-nav .elementor-nav-menu--dropdown a.elementor-item:focus,
.lb-nav .elementor-nav-menu--dropdown a.elementor-sub-item:hover,
.lb-nav .elementor-nav-menu--dropdown a.elementor-sub-item:focus {
	background-color: var(--lb-mist);
	color: var(--lb-accent-text);
}

/* Position and appearance only. SmartMenus toggles display inline, so setting
   display here would fight it. */
.lb-nav .elementor-nav-menu--main li { position: relative; }

.lb-nav .elementor-nav-menu--main .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 15rem;
	padding: var(--lb-space-2xs) 0;
	margin: 0;
	list-style: none;
	background-color: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius);
	box-shadow: var(--lb-shadow-panel);
	z-index: 60;
}

.lb-nav .elementor-nav-menu--main .sub-menu .sub-menu {
	top: 0;
	left: 100%;
}

.lb-nav .elementor-sub-item {
	display: block;
	padding: 0.5em var(--lb-space-md);
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-regular);
	line-height: 1.35;
	color: var(--lb-ink);
	text-decoration: none;
	white-space: nowrap;
	background-color: transparent;
	transition: color var(--lb-duration) var(--lb-ease),
	            background-color var(--lb-duration) var(--lb-ease);
}

.lb-nav .elementor-sub-item:hover,
.lb-nav .elementor-sub-item:focus,
.lb-nav .elementor-sub-item:focus-visible,
.lb-nav .elementor-sub-item.elementor-item-active {
	color: var(--lb-accent-text);
	background-color: var(--lb-mist);
}

/* A dropdown cannot escape a clipped ancestor. */
.lb-nav,
.e-con.lb-head,
.e-con.lb-head__bar,
header.elementor-location-header {
	overflow: visible;
}

/* --- Keeping the top row from reflowing ----------------------------------
   Three separate things can change a first-level item's width, and all of
   them present as the same symptom: the row jumps as the pointer moves.

   1. SmartMenus injects <span class="sub-arrow"> into every parent anchor
      after load. That markup does not exist server-side, so the items are
      one width on paint and another once the script runs. The arrow is given
      fixed dimensions here so its arrival cannot resize anything.

   2. Long child labels with white-space:nowrap made the dropdown wider than
      the space to the right of it, pushing past the viewport edge, adding a
      horizontal scrollbar and shifting the entire page. Child labels now wrap
      and the panel is capped.

   3. Flex items grow to fill by default. The top-level items are pinned so
      they cannot.
   -------------------------------------------------------------------------- */

.lb-nav .elementor-nav-menu {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lb-nav .elementor-nav-menu > li {
	flex: 0 0 auto;
	position: relative;
}

.lb-nav .elementor-nav-menu .elementor-item {
	position: relative;
	display: inline-flex;
	align-items: center;
	font-weight: var(--lb-weight-medium);
	letter-spacing: 0;
	white-space: nowrap;
	flex: 0 0 auto;
}

/* THE ARROW MUST NOT BE IN THE FLOW.
   Elementor Pro initialises SmartMenus lazily, and SmartMenus injects
   <span class="sub-arrow"> into each parent anchor at that moment - which is
   the first hover, not page load. An in-flow arrow therefore appears mid
   interaction and widens the item under the pointer, and the rest of the row
   shifts with it. Measured: +15.75px on a 15px item, exactly the arrow plus
   its gap.

   Reserving the space with padding and positioning the arrow into it makes
   the item's width identical whether the arrow exists or not, so nothing can
   move when it arrives. */

/* SmartMenus' arrow is removed from the page entirely rather than styled.

   Anything the script inserts into the anchor participates in layout the
   moment it appears, and it appears after first paint. Sizing it, or taking it
   out of flow, still leaves the browser reflowing that item when the node
   arrives. The only way to guarantee the width never moves is for the injected
   node to occupy no space at all. */
.lb-nav .elementor-item .sub-arrow {
	display: none !important;
}

.lb-nav .elementor-nav-menu--main .sub-menu {
	position: absolute !important;
}

/* ==========================================================================
   THE PADDING JUMP

   Elementor Pro ships this, in one rule:

     .elementor-nav-menu--main .elementor-nav-menu a,
     .elementor-nav-menu--main .elementor-nav-menu a.highlighted,
     .elementor-nav-menu--main .elementor-nav-menu a:focus,
     .elementor-nav-menu--main .elementor-nav-menu a:hover { padding: 13px 20px }

   The selectors in that list carry DIFFERENT specificities, so which one wins
   changes with the element's state:

     at rest   `... a`        is (0,2,1) - loses to our (0,3,0), padding 12px
     on hover  `... a:hover`  is (0,3,1) - BEATS our (0,3,0), padding 20px

   The item therefore grows the moment the pointer touches it and the whole row
   reflows. Nothing appears wrong in either state on its own, which is why
   grepping for "hover rules that change width" found nothing: the hover rule
   does not change the padding, it changes which rule applies.

   The fix is specificity, not a different property. Matching Elementor's
   `a.elementor-item` shape and adding our own class puts these at (0,4,1),
   which outranks the hover variant, and every state is declared so none can
   fall through to it.
   ========================================================================== */

.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item:hover,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item:focus,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item:focus-visible,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item.highlighted,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-item.elementor-item-active {
	padding-block: var(--lb-space-2xs);
	padding-inline-start: var(--lb-space-xs);
	padding-inline-end: var(--lb-space-xs);
	line-height: 1.2;
}

/* Parent items keep the room reserved for the chevron, in every state. */
.lb-nav .elementor-nav-menu--main .elementor-nav-menu li.menu-item-has-children > a.elementor-item,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu li.menu-item-has-children > a.elementor-item:hover,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu li.menu-item-has-children > a.elementor-item:focus,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu li.menu-item-has-children > a.elementor-item.highlighted {
	padding-inline-end: 1.65em;
}

/* Dropdown items are governed by the same Elementor rule, so they get the
   same treatment rather than shifting when you move down the list. */
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:hover,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:focus,
.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item.highlighted {
	padding-block: 0.5em;
	padding-inline: var(--lb-space-md);
}

/* The dropdown indicator is therefore a BACKGROUND IMAGE, not an element.
   Backgrounds are painted, never laid out, so this cannot change the item's
   width under any circumstances. It is present from first paint, so there is
   no before/after state to shift between.

   Elementor's pointer effects own ::before and ::after on these anchors, which
   is why this is a background rather than a pseudo-element - the underline in
   the rule above is a second background layer on the same element. */
.lb-nav .elementor-nav-menu > li.menu-item-has-children > .elementor-item {
	padding-inline-end: 1.65em;
	background-image:
		linear-gradient(currentColor, currentColor),
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235B6779' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat, no-repeat;
	background-position: var(--lb-space-xs) calc(100% - 0.3em), right 0.55em center;
	background-size: 0% 1px, 0.55em 0.34em;
}

.lb-nav .elementor-nav-menu > li.menu-item-has-children > .elementor-item:hover,
.lb-nav .elementor-nav-menu > li.menu-item-has-children > .elementor-item:focus-visible,
.lb-nav .elementor-nav-menu > li.menu-item-has-children > .elementor-item.elementor-item-active {
	background-size: calc(100% - var(--lb-space-xs) - 1.65em) 1px, 0.55em 0.34em;
}

/* The panel may not be wider than the room available to its right. */
.lb-nav .elementor-nav-menu--main .sub-menu {
	max-width: min(20rem, calc(100vw - 2rem));
	box-sizing: border-box;
}

.lb-nav .elementor-sub-item {
	white-space: normal;
	overflow-wrap: break-word;
}

/* The rightmost items open leftwards, so a dropdown near the end of the row
   cannot run off the edge of the page. */
.lb-nav .elementor-nav-menu > li:nth-last-child(-n+2) > .sub-menu {
	left: auto;
	right: 0;
}

.lb-nav .elementor-nav-menu > li:nth-last-child(-n+2) > .sub-menu .sub-menu {
	left: auto;
	right: 100%;
}

@media (max-width: 979px) {
	/* Only the phone number comes out of the bar - the number is repeated in
	   the action bar at the bottom of the screen. Navigation is NOT hidden
	   here; Elementor swaps the inline list for the burger by itself. */
	.lb-head__phone { display: none; }
}

/* ==========================================================================
   MOBILE

   The template was built desktop-first and these are the places that needed
   adjusting for a phone. Each is a specific measurement, not a blanket
   scale-down.
   ========================================================================== */

@media (max-width: 767px) {
	.lb-hero__heading { max-width: none; }

	.lb-hero__actions { gap: var(--lb-space-2xs); }

	.lb-hero__actions .lb-btn-inline,
	.lb-hero__cta {
		flex: 1 1 100%;
		justify-content: center;
	}

	/* Two 20rem columns cannot both fit; one 320px column plus gutters already
	   exceeds a 360px screen. */
	.lb-grid-2 { grid-template-columns: 1fr; gap: var(--lb-space-lg); }

	/* Figures four-across become two-across rather than shrinking to nothing. */
	.lb-figures { grid-template-columns: repeat(2, 1fr); }

	.lb-panel { padding: var(--lb-space-md); }

	/* Buttons in a row become full-width stacked targets. */
	.e-con.lb-row { width: 100%; }

	.e-con.lb-row .elementor-widget-button,
	.e-con.lb-row .lb-btn { width: 100%; }

	.lb-btn .elementor-button { width: 100%; }
}

@media (max-width: 479px) {
	.lb-figures { grid-template-columns: 1fr; }
}

/* ==========================================================================
   MOBILE ACTION BAR

   Home search is majority mobile, and the visitor who is ready to act wants
   to call or text now. A persistent Call / Text / Search bar is the
   highest-value fixed element on a phone.

   Text is included deliberately: agents run most of their business over SMS,
   and a tel: link is useless to someone who would rather type.
   ========================================================================== */

.lb-actionbar {
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	z-index: 90;
	display: none;
	background-color: var(--lb-ink-deep);
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	/* Clears the iOS home indicator. */
	padding-bottom: env(safe-area-inset-bottom, 0px);
	box-shadow: 0 -2px 16px rgba(15, 27, 45, 0.18);
}

.lb-actionbar__inner {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
}

.lb-actionbar__link {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.2em;
	/* Comfortably above the 44px minimum touch target. */
	min-height: 3.6rem;
	padding: 0.5rem 0.25rem;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	line-height: 1;
	color: var(--lb-surface);
	text-decoration: none;
	background-color: transparent;
	border: 0;
	border-inline-start: 1px solid rgba(255, 255, 255, 0.12);
}

.lb-actionbar__link:first-child { border-inline-start: 0; }

.lb-actionbar__link:hover,
.lb-actionbar__link:focus-visible {
	background-color: rgba(255, 255, 255, 0.08);
	color: var(--lb-surface);
}

.lb-actionbar__link--primary {
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-actionbar__link--primary:hover,
.lb-actionbar__link--primary:focus-visible {
	background-color: var(--lb-accent-hover);
	color: var(--lb-on-accent);
}

.lb-actionbar__icon {
	width: 1.25rem;
	height: 1.25rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.7;
	stroke-linecap: round;
	stroke-linejoin: round;
}

@media (max-width: 979px) {
	.lb-actionbar { display: block; }

	/* Stop the bar covering the end of the page, including the disclosure -
	   which must stay readable. */
	body.lb-has-actionbar {
		padding-bottom: calc(3.6rem + env(safe-area-inset-bottom, 0px));
	}
}

@media print {
	.lb-actionbar { display: none; }
}

/* --- Hero wrapper and inline CTAs ----------------------------------------
   The hero is theme-rendered, so its buttons are plain anchors rather than
   Elementor button widgets and need their own styling. */

.e-con.lb-hero-wrap {
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	padding: 0;
}

.lb-btn-inline,
.lb-hero__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	line-height: 1;
	padding: 1.05em 1.9em;
	border: 1px solid var(--lb-surface);
	border-radius: var(--lb-radius);
	background-color: var(--lb-surface);
	color: var(--lb-ink-deep);
	text-decoration: none;
	transition: background-color var(--lb-duration) var(--lb-ease),
	            color var(--lb-duration) var(--lb-ease);
}

.lb-btn-inline:hover,
.lb-btn-inline:focus-visible {
	background-color: var(--lb-accent);
	border-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-btn-inline--ghost {
	background-color: transparent;
	color: var(--lb-surface);
}

.lb-btn-inline--ghost:hover,
.lb-btn-inline--ghost:focus-visible {
	background-color: var(--lb-surface);
	border-color: var(--lb-surface);
	color: var(--lb-ink-deep);
}

/* --- Footer layout ------------------------------------------------------- */

.e-con.lb-foot {
	--padding-top: var(--lb-space-2xl);
	--padding-bottom: var(--lb-space-xl);
	--padding-left: 0px;
	--padding-right: 0px;
	--row-gap: var(--lb-space-xl);
	padding-block: var(--lb-space-2xl) var(--lb-space-xl);
	padding-inline: 0;
}

.e-con.lb-foot__grid {
	--display: grid;
	--row-gap: var(--lb-space-xl);
	--column-gap: var(--lb-space-xl);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
	gap: var(--lb-space-xl);
}

.e-con.lb-foot__col {
	--flex-direction: column;
	--row-gap: var(--lb-space-3xs);
	--width: 100%;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	flex-direction: column;
	gap: var(--lb-space-3xs);
	padding: 0;
}

.lb-foot__name {
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-xl);
	line-height: 1.2;
	color: var(--lb-surface);
}

.lb-foot__copy {
	margin-top: var(--lb-space-md);
	font-size: var(--lb-text-2xs);
	color: rgba(255, 255, 255, 0.55);
}

/* --- Regulatory marks ----------------------------------------------------
   The Equal Housing mark is drawn as inline SVG rather than loaded as an
   image so it inherits currentColor and stays crisp; the licence numbers sit
   beside it because that is how the disclosure is normally read. */

.lb-mark {
	display: inline-flex;
	align-items: center;
	gap: var(--lb-space-2xs);
	font-size: var(--lb-text-2xs);
	color: rgba(255, 255, 255, 0.72);
	font-variant-numeric: tabular-nums;
}

.lb-mark--ehl svg {
	width: 1.9rem;
	height: 1.9rem;
	flex: 0 0 auto;
	color: rgba(255, 255, 255, 0.82);
}

.lb-mark__text { white-space: nowrap; }

.lb-mark--license { white-space: nowrap; }

/* --- Panel ---------------------------------------------------------------
   A bordered surface for content that behaves like a form or a statement:
   calculators, forms, disclosures. */

.lb-panel {
	background-color: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius);
	padding: var(--lb-space-lg);
}

.lb-panel--flush { padding: 0; overflow: hidden; }

/* --- Page head -----------------------------------------------------------
   Interior pages open with a title rather than a hero. Tighter than a normal
   section so the content starts high on the page. */

.e-con.lb-page-head {
	--padding-top: var(--lb-space-xl);
	--padding-bottom: 0px;
	padding-block: var(--lb-space-xl) 0;
	border-bottom: 0;
}

/* --- Prose ---------------------------------------------------------------
   Ported editorial content. The source is ordinary HTML from the old site, so
   this styles element selectors rather than classes - there is nothing to hook
   onto inside it. */

.lb-prose { color: var(--lb-ink); }

.lb-prose > * + * { margin-top: var(--lb-space-md); }

.lb-prose h2 {
	font-size: var(--lb-display-sm);
	margin-top: var(--lb-space-xl);
	margin-bottom: var(--lb-space-2xs);
}

.lb-prose h3 {
	font-size: var(--lb-text-xl);
	margin-top: var(--lb-space-lg);
	margin-bottom: var(--lb-space-2xs);
}

.lb-prose h4 {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
	margin-top: var(--lb-space-md);
}

.lb-prose p { margin: 0 0 var(--lb-space-md); }

.lb-prose ul,
.lb-prose ol {
	margin: 0 0 var(--lb-space-md);
	padding-left: 1.35em;
}

.lb-prose li { margin-bottom: var(--lb-space-2xs); }

.lb-prose li::marker { color: var(--lb-accent-text); }

.lb-prose strong { font-weight: var(--lb-weight-semibold); color: var(--lb-ink-deep); }

.lb-prose img { border-radius: var(--lb-radius); }

.lb-prose blockquote {
	margin: var(--lb-space-lg) 0;
	padding-left: var(--lb-space-md);
	border-left: 3px solid var(--lb-accent);
	color: var(--lb-ash);
}

/* Tables of rates or comparisons scroll rather than forcing the page sideways. */
.lb-prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--lb-text-sm);
	margin-bottom: var(--lb-space-md);
}

.lb-prose th,
.lb-prose td {
	text-align: left;
	padding: var(--lb-space-2xs) var(--lb-space-xs);
	border-bottom: var(--lb-hairline);
}

.lb-prose th { font-weight: var(--lb-weight-semibold); color: var(--lb-ink-deep); }

/* Statutory text: smaller, tighter, and explicitly readable. A privacy policy
   set at 12px grey-on-grey is a compliance problem, not a design decision. */
.lb-prose--legal {
	font-size: var(--lb-text-sm);
	line-height: 1.65;
	color: var(--lb-ink);
}

.lb-prose--legal h2 { font-size: var(--lb-text-xl); margin-top: var(--lb-space-lg); }
.lb-prose--legal h3 { font-size: var(--lb-text-base); }

/* --- FAQ -----------------------------------------------------------------
   Native <details>/<summary> rather than a JavaScript accordion: it is
   keyboard accessible and expandable by default, it survives with JS off, and
   browser find-in-page can open a closed answer. The previous site used an
   Ultimate Addons widget, which is a plugin dependency for something the
   platform does natively. */

.lb-faq {
	border-top: var(--lb-hairline);
}

.lb-faq__item {
	border-bottom: var(--lb-hairline);
}

.lb-faq__q {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--lb-space-md);
	padding: var(--lb-space-md) 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-xl);
	line-height: 1.3;
	color: var(--lb-ink-deep);
}

/* Remove the default disclosure triangle in both engines. */
.lb-faq__q::-webkit-details-marker { display: none; }
.lb-faq__q::marker { content: ''; }

/* A plus that becomes a minus. Drawn in CSS so it takes the accent token. */
.lb-faq__q::after {
	content: '';
	flex: 0 0 auto;
	width: 0.85em;
	height: 0.85em;
	margin-top: 0.2em;
	background-image:
		linear-gradient(currentColor, currentColor),
		linear-gradient(currentColor, currentColor);
	background-size: 100% 1.5px, 1.5px 100%;
	background-position: center, center;
	background-repeat: no-repeat;
	color: var(--lb-accent-text);
	transition: transform 260ms var(--lb-ease);
}

.lb-faq__item[open] .lb-faq__q::after {
	background-size: 100% 1.5px, 0 100%;
	transform: rotate(180deg);
}

.lb-faq__q:hover { color: var(--lb-accent-text); }

.lb-faq__a {
	padding-bottom: var(--lb-space-md);
	color: var(--lb-ash);
	max-width: var(--lb-measure);
}

.lb-faq__a p { margin: 0; }

/* --- Journey -------------------------------------------------------------
   A real sequence, so it is an <ol> and the numbering carries meaning. The
   rule down the left is the thread through it; the marker sits on that line. */

.lb-journey {
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: none;
}

.lb-journey__step {
	position: relative;
	display: grid;
	grid-template-columns: 3.25rem minmax(0, 1fr);
	gap: var(--lb-space-md);
	padding-bottom: var(--lb-space-xl);
}

/* The connector, drawn between markers rather than through them. */
.lb-journey__step::before {
	content: '';
	position: absolute;
	left: 1.55rem;
	top: 3.25rem;
	bottom: 0;
	width: 2px;
	background-color: var(--lb-rule);
}

.lb-journey__step:last-child { padding-bottom: 0; }
.lb-journey__step:last-child::before { display: none; }

.lb-journey__marker {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.25rem;
	height: 3.25rem;
	border-radius: 50%;
	background-color: var(--lb-ink-deep);
	color: var(--lb-surface);
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-bold);
	font-variant-numeric: tabular-nums;
	flex: 0 0 auto;
}

.lb-journey__body { min-width: 0; }

.lb-journey__title {
	font-family: var(--lb-font-display);
	font-size: var(--lb-display-sm);
	line-height: 1.15;
	margin: 0.35rem 0 0;
	color: var(--lb-ink-deep);
}

/* Timing and ownership: the two things buyers and sellers ask that most
   agent pages never answer. */
.lb-journey__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lb-space-2xs) var(--lb-space-sm);
	margin: var(--lb-space-2xs) 0 var(--lb-space-sm);
	font-size: var(--lb-text-xs);
	max-width: none;
}

.lb-journey__when,
.lb-journey__who {
	display: inline-flex;
	align-items: center;
	padding: 0.3em 0.7em;
	border-radius: var(--lb-radius-pill);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0.01em;
}

.lb-journey__when {
	background-color: var(--lb-mist);
	color: var(--lb-ink-deep);
}

.lb-journey__who {
	background-color: var(--lb-accent-tint);
	color: var(--lb-accent-hover);
}

.lb-journey__text {
	margin: 0;
	color: var(--lb-ink);
}

.lb-journey__tip {
	margin: var(--lb-space-sm) 0 0;
	padding-left: var(--lb-space-md);
	border-left: 2px solid var(--lb-accent);
	font-size: var(--lb-text-sm);
	line-height: 1.6;
	color: var(--lb-ash);
	max-width: var(--lb-measure);
}

.lb-journey__link {
	margin: var(--lb-space-sm) 0 0;
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
}

@media (max-width: 599px) {
	.lb-journey__step { grid-template-columns: 2.5rem minmax(0, 1fr); gap: var(--lb-space-sm); }
	.lb-journey__marker { width: 2.5rem; height: 2.5rem; font-size: var(--lb-text-sm); }
	.lb-journey__step::before { left: 1.2rem; top: 2.5rem; }
}

/* --- Contact methods -----------------------------------------------------
   The number is the content here, so it is set at figure size and the label
   above it stays small. Whole card is the tap target - on a phone these are
   the primary actions on the page. */

.lb-contact {
	display: flex;
	flex-direction: column;
	gap: var(--lb-space-3xs);
	padding: var(--lb-space-lg);
	background-color: var(--lb-surface);
	border: var(--lb-hairline);
	border-top: 3px solid var(--lb-accent);
	border-radius: var(--lb-radius);
	text-decoration: none;
	color: inherit;
	transition: box-shadow var(--lb-duration) var(--lb-ease),
	            transform var(--lb-duration) var(--lb-ease);
}

.lb-contact:hover,
.lb-contact:focus-visible {
	box-shadow: var(--lb-shadow-panel);
	transform: translateY(-2px);
	color: inherit;
}

.lb-contact__icon {
	width: 1.6rem;
	height: 1.6rem;
	margin-bottom: var(--lb-space-2xs);
	fill: none;
	stroke: var(--lb-accent);
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lb-contact__label {
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-ash);
}

.lb-contact__value {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xl);
	font-weight: var(--lb-weight-bold);
	line-height: 1.15;
	color: var(--lb-ink-deep);
	font-variant-numeric: tabular-nums;
	/* An email address must be allowed to break rather than widen the card. */
	overflow-wrap: anywhere;
}

.lb-contact__note {
	margin-top: var(--lb-space-2xs);
	font-size: var(--lb-text-sm);
	line-height: 1.5;
	color: var(--lb-ash);
}

.lb-contact__hours {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: baseline;
	gap: var(--lb-space-2xs) var(--lb-space-lg);
	margin: var(--lb-space-md) 0 0;
	padding-top: var(--lb-space-md);
	border-top: var(--lb-hairline);
	font-size: var(--lb-text-sm);
	color: var(--lb-ash);
	text-align: center;
	max-width: none;
}

.lb-contact__hours strong { color: var(--lb-ink-deep); }

/* The office line reads as a quieter fourth card: the cards' label, then the
   number in their ink, and tappable like them. */
.lb-contact__office {
	display: inline-flex;
	align-items: baseline;
	gap: 0.75em;
}

.lb-contact__office-label {
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-ash);
}

.lb-contact__office a {
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-semibold);
	font-variant-numeric: tabular-nums;
	color: var(--lb-ink-deep);
	text-decoration: none;
	transition: color var(--lb-duration) var(--lb-ease);
}

.lb-contact__office a:hover { color: var(--lb-accent-text); }

.lb-contact-methods { display: block; }

/* --- Grouped FAQ --------------------------------------------------------- */

.lb-faq__group + .lb-faq__group { margin-top: var(--lb-space-xl); }

.lb-faq__group-title {
	font-size: var(--lb-text-xl);
	color: var(--lb-ink-deep);
	margin: 0 0 var(--lb-space-2xs);
	padding-bottom: var(--lb-space-2xs);
}

.lb-faq-groups { display: block; }

/* --- Quotes -------------------------------------------------------------- */

.lb-quote {
	margin: 0;
	padding-top: var(--lb-space-sm);
	border-top: 2px solid var(--lb-ink-deep);
}

.lb-quote__text {
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-lg);
	line-height: 1.45;
	color: var(--lb-ink-deep);
	margin: 0;
}

.lb-quote__source {
	margin: var(--lb-space-sm) 0 0;
	font-size: var(--lb-text-sm);
	color: var(--lb-ash);
}

/* --- Build note ----------------------------------------------------------
   Visible instruction to whoever configures a cloned site. Deliberately
   conspicuous: it should be uncomfortable to leave on a live page. */

.lb-note {
	margin-top: var(--lb-space-lg);
	padding: var(--lb-space-sm) var(--lb-space-md);
	border-left: 3px solid var(--lb-caution);
	background-color: #FDF6E7;
	color: #6B4E12;
	font-size: var(--lb-text-sm);
	max-width: var(--lb-measure);
}

/* --- Forms ---------------------------------------------------------------
   Gravity Forms, restyled to look like the rest of the document. */

.lb-form .gform_wrapper .gfield_label {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
}

.lb-form .gform_wrapper input[type="text"],
.lb-form .gform_wrapper input[type="email"],
.lb-form .gform_wrapper input[type="tel"],
.lb-form .gform_wrapper input[type="number"],
.lb-form .gform_wrapper select,
.lb-form .gform_wrapper textarea {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	color: var(--lb-ink);
	background-color: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius);
	padding: 0.7em 0.9em;
	width: 100%;
}

.lb-form .gform_wrapper input:focus,
.lb-form .gform_wrapper select:focus,
.lb-form .gform_wrapper textarea:focus {
	outline: 2px solid var(--lb-accent);
	outline-offset: 1px;
	border-color: var(--lb-accent);
}

.lb-form .gform_wrapper .gform_footer input[type="submit"] {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
	border: 1px solid var(--lb-accent);
	border-radius: var(--lb-radius);
	padding: 1em 2em;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

.lb-form .gform_wrapper .gform_footer input[type="submit"]:hover,
.lb-form .gform_wrapper .gform_footer input[type="submit"]:focus {
	background-color: var(--lb-accent-hover);
	border-color: var(--lb-accent-hover);
	color: var(--lb-on-accent);
}

/* --- Footer & compliance -------------------------------------------------
   Brokerage footers carry required disclosure (brokerage name, licence,
   Equal Housing Opportunity, MLS attribution once IDX is live). It is set
   legibly: an unreadable disclosure is a compliance risk, not a design win. */

.lb-foot {
	background-color: var(--lb-ink-deep);
	color: rgba(255, 255, 255, 0.76);
	font-size: var(--lb-text-sm);
}

.lb-foot a { color: var(--lb-surface); }
.lb-foot a:hover { color: var(--lb-surface); text-decoration-color: currentColor; }

.lb-foot__title {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
	margin-bottom: var(--lb-space-sm);
}

.lb-foot__license {
	font-variant-numeric: tabular-nums;
	color: var(--lb-surface);
}

.lb-disclosure {
	margin-top: var(--lb-space-xl);
	padding-top: var(--lb-space-md);
	border-top: 1px solid rgba(255, 255, 255, 0.16);
	font-size: var(--lb-text-2xs);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.62);
	max-width: 92ch;
}

.lb-disclosure p + p { margin-top: var(--lb-space-2xs); }

/* Equal Housing and licence marks. Kept at a legible size; these are regulatory
   marks, not decorative badges. */
.lb-marks {
	display: flex;
	align-items: center;
	gap: var(--lb-space-md);
	margin-top: var(--lb-space-md);
}

.lb-marks img,
.lb-marks svg { height: 2.75rem; width: auto; opacity: 0.9; }


/* ==========================================================================
   7. MOTION

   One orchestrated moment (the hero video arriving), restrained reveals below
   the fold, and interaction feedback. Hidden states are gated behind `.lb-js`
   so a page with no JavaScript renders complete.
   ========================================================================== */

header.elementor-location-header {
	position: sticky;
	top: 0;
	z-index: 100;
}

/* Suspending stickiness while a scroll lock is applied avoids the engine
   holding a sticky offset computed against a scrolling box that no longer
   exists - which presents as the header vanishing until the next event. */
.lb-scroll-locked header.elementor-location-header { position: static; }

.lb-scroll-locked {
	overflow: hidden;
	padding-right: var(--lb-scrollbar, 0px);
}

.lb-js .lb-reveal {
	opacity: 0;
	transform: translateY(12px);
}

.lb-js .lb-reveal.is-in {
	opacity: 1;
	transform: none;
	transition: opacity 560ms var(--lb-ease) var(--lb-delay, 0ms),
	            transform 560ms var(--lb-ease) var(--lb-delay, 0ms);
}

.lb-motion-off .lb-reveal {
	opacity: 1 !important;
	transform: none !important;
}


/* ==========================================================================
   8. ACCESSIBILITY
   ========================================================================== */

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
	outline: 2px solid var(--lb-accent);
	outline-offset: 3px;
	border-radius: 2px;
}

.lb-hero :focus-visible,
.lb-foot :focus-visible,
.lb-section--ink :focus-visible {
	outline-color: var(--lb-surface);
}

.lb-skip {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 999;
	padding: var(--lb-space-xs) var(--lb-space-md);
	background: var(--lb-ink-deep);
	color: var(--lb-surface);
}

.lb-skip:focus { left: var(--lb-space-sm); top: var(--lb-space-sm); }

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.lb-reveal { opacity: 1 !important; transform: none !important; }
	.lb-path:hover { transform: none; }
}


/* Container the grid HTML widget sits in; the grid inside owns the layout. */
.e-con.lb-grid-host { --padding-left: 0px; --padding-right: 0px; padding-inline: 0; }

/* --- Form tabs -----------------------------------------------------------
   One form on screen at a time. The tab row is a rule with the active tab
   sitting on it, rather than pills: pills read as buttons, and a visitor who
   thinks the tab submits something will not touch it.

   Everything here is scoped so that with no JavaScript the panels simply stack
   with their own headings - .lb-tabs__panel is visible by default and only
   hidden once script has marked the component up as tabs (.is-enhanced). */

.lb-tabs {
	/* Same measure as .lb-container--narrow, so when the section uses that
	   container the heading above and the form below share one left edge. */
	max-width: var(--lb-container-narrow);
	margin-inline: auto;
}

.lb-tabs__list {
	display: none;
	gap: var(--lb-space-md);
	border-bottom: var(--lb-hairline);
	margin-bottom: var(--lb-space-lg);
}

.lb-tabs.is-enhanced .lb-tabs__list { display: flex; }

.lb-tabs__tab {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-semibold);
	line-height: 1.2;
	color: var(--lb-ash);
	text-decoration: none;
	padding: 0 0 var(--lb-space-xs);
	/* The active state adds a 2px border, so the resting state reserves the
	   same 2px in a transparent one. Otherwise the row shifts on every switch -
	   the same class of bug as the nav hover jump. */
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	background: none;
	transition: color 0.18s ease, border-color 0.18s ease;
}

.lb-tabs__tab:hover,
.lb-tabs__tab:focus-visible { color: var(--lb-ink-deep); }

.lb-tabs__tab.is-active {
	color: var(--lb-ink-deep);
	border-bottom-color: var(--lb-accent);
}

.lb-tabs.is-enhanced .lb-tabs__panel[hidden] { display: none; }
.lb-tabs__panel:focus { outline: none; }

.lb-tabs__panel + .lb-tabs__panel { margin-top: var(--lb-space-xl); }
.lb-tabs.is-enhanced .lb-tabs__panel + .lb-tabs__panel { margin-top: 0; }

/* The panel heading repeats its tab, so it is redundant once tabs are on. It
   stays in the markup for the no-script stack and for screen readers reaching
   the panel directly. */
.lb-tabs.is-enhanced .lb-tabs__heading {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.lb-tabs__heading {
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-lg);
	font-weight: 500;
	color: var(--lb-ink-deep);
	margin: 0 0 var(--lb-space-xs);
}

.lb-tabs__note {
	font-size: var(--lb-text-sm);
	color: var(--lb-ash);
	margin: 0 0 var(--lb-space-md);
	max-width: 34rem;
}

@media (max-width: 599px) {
	.lb-tabs__list { gap: var(--lb-space-sm); }
	.lb-tabs__tab { font-size: var(--lb-text-sm); }
}


/* ==========================================================================
   Figures strip  [agent_figures]
   The ink band. Up to four slots, each either a figure the agent supplied
   or something every agent can state truthfully (licence, brokerage, the
   areas they serve, availability). Ruled columns on the ink ground, serif
   numerals at display size, one accent stroke per column that draws in.
   ========================================================================== */

.lb-stats {
	--lb-stats-rule: rgba(255, 255, 255, 0.12);
	--lb-stats-soft: rgba(255, 255, 255, 0.72);
	/* Accent lifted toward white so 12px labels clear 4.5:1 on the ink. */
	--lb-stats-hi: color-mix(in srgb, var(--lb-accent) 62%, #FFFFFF);

	position: relative;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-block: 1px solid var(--lb-stats-rule);
}

.lb-stats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lb-stats--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lb-stats--1 { grid-template-columns: minmax(0, 1fr); }

.lb-stat {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	min-width: 0;
	--lb-stat-inset: var(--lb-space-lg);
	padding: var(--lb-space-lg) var(--lb-space-md) var(--lb-space-lg) var(--lb-stat-inset);
}

.lb-stat + .lb-stat { border-inline-start: 1px solid var(--lb-stats-rule); }

/* The accent stroke on the top rule of each column. */
.lb-stat::before {
	content: '';
	position: absolute;
	top: -1px;
	inset-inline-start: var(--lb-stat-inset);
	width: 2.5rem;
	height: 2px;
	background: var(--lb-accent);
	transform-origin: left center;
}

.lb-js .lb-stat.lb-reveal::before {
	transform: scaleX(0);
	transition: transform 720ms var(--lb-ease) calc(var(--lb-delay, 0ms) + 180ms);
}

.lb-js .lb-stat.lb-reveal.is-in::before { transform: scaleX(1); }

.lb-stat__head {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.lb-stat__icon {
	flex: none;
	width: 1.125rem;
	height: 1.125rem;
	fill: none;
	stroke: var(--lb-stats-hi);
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lb-stat__eyebrow {
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--lb-stats-hi);
}

.lb-stat__value {
	display: block;
	margin-top: var(--lb-space-xs);
	max-width: 100%;
	font-family: var(--lb-font-display);
	--lb-stat-size: clamp(2rem, 1.45rem + 1.4vw, 2.75rem);
	font-size: var(--lb-stat-size);
	font-weight: var(--lb-weight-regular);
	font-variant-numeric: lining-nums tabular-nums;
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--lb-surface);
	overflow-wrap: anywhere;
}

/* A company name rather than a number: smaller, and allowed to wrap. */
.lb-stat__value--text {
	font-size: clamp(1.5rem, 1.2rem + 0.8vw, 1.875rem);
	line-height: 1.15;
	letter-spacing: -0.01em;
	overflow-wrap: normal;
	text-wrap: balance;
	/* Hold the height of a figure and sit on its baseline, so the detail
	   lines stay level across the row. */
	display: flex;
	align-items: flex-end;
	min-height: calc(var(--lb-stat-size) * 1.05);
}

.lb-stat__detail {
	display: block;
	margin-top: var(--lb-space-xs);
	max-width: 24ch;
	font-size: var(--lb-text-sm);
	line-height: var(--lb-leading-snug);
	color: var(--lb-stats-soft);
}

.lb-stat__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.375rem;
	margin: var(--lb-space-xs) 0 0;
	padding: 0;
	list-style: none;
}

.lb-stat__chips--link { text-decoration: none; }

.lb-stat__chips--link .lb-stat__chip {
	transition: border-color var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease);
}

.lb-stat__chips--link:hover .lb-stat__chip,
.lb-stat__chips--link:focus-visible .lb-stat__chip {
	border-color: var(--lb-stats-hi);
	color: var(--lb-surface);
}

.lb-stat__chips--link:focus-visible {
	outline: 2px solid var(--lb-stats-hi);
	outline-offset: 4px;
	border-radius: var(--lb-radius);
}

/* The note under a licence link: quiet, one line if it fits. */
.lb-stat__note {
	display: block;
	margin-top: var(--lb-space-2xs);
	max-width: 26ch;
	font-size: var(--lb-text-xs);
	line-height: var(--lb-leading-snug);
	color: var(--lb-stats-soft);
}

.lb-stat__chip {
	padding: 0.2rem 0.6rem;
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: var(--lb-radius-pill);
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0.08em;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.88);
}

.lb-stat__chip--more {
	border-style: dashed;
	color: var(--lb-stats-soft);
}

.lb-stat__link {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	margin-top: var(--lb-space-xs);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-medium);
	color: var(--lb-stats-hi);
	text-decoration: underline;
	text-decoration-color: transparent;
	text-underline-offset: 0.25em;
	transition: text-decoration-color var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease);
}

.lb-stat__link:hover,
.lb-stat__link:focus-visible {
	color: var(--lb-surface);
	text-decoration-color: currentColor;
}

.lb-stat__link svg {
	width: 0.9em;
	height: 0.9em;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: transform var(--lb-duration) var(--lb-ease);
}

.lb-stat__link:hover svg { transform: translate(2px, -2px); }

.lb-stat .lb-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* Two across: rules between columns and between rows. */
@media (max-width: 979px) {
	.lb-stats,
	.lb-stats--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.lb-stat { --lb-stat-inset: var(--lb-space-md); }
	.lb-stat:nth-child(odd) { border-inline-start: 0; }
	.lb-stat:nth-child(n+3) { border-top: 1px solid var(--lb-stats-rule); }

	/* An odd third item takes the full row rather than leaving a hole. */
	.lb-stats--3 .lb-stat:last-child { grid-column: 1 / -1; }
}

/* One column on a phone: stacked rows, figures still the loudest thing. */
@media (max-width: 479px) {
	.lb-stats,
	.lb-stats--3,
	.lb-stats--2 { grid-template-columns: minmax(0, 1fr); }

	.lb-stat { --lb-stat-inset: var(--lb-space-sm); padding-block: var(--lb-space-md); }
	.lb-stat + .lb-stat { border-inline-start: 0; border-top: 1px solid var(--lb-stats-rule); }
}

@media (prefers-reduced-motion: reduce) {
	.lb-js .lb-stat.lb-reveal::before { transform: none; }
}


/* ==========================================================================
   9. AGENT COMPONENTS

   Everything below is specific to this design. Markup for each block comes
   from a shortcode in inc/ - the comment on each block names it.
   ========================================================================== */

/* --- Icons -------------------------------------------------------------- */

.lb-icon {
	width: 1.25em;
	height: 1.25em;
	flex: none;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
	vertical-align: -0.2em;
}

.lb-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.lb-anchor { display: block; height: 0; scroll-margin-top: var(--lb-head-h); }

.lb-scroll-sentinel {
	position: absolute;
	top: 0;
	left: 0;
	width: 1px;
	height: 48px;
	pointer-events: none;
}

/* --- Eyebrow and section headings ----------------------------------------
   The lender design kept tracked capitals for regulatory labels only. On an
   agent site a short eyebrow above a serif heading is the genre's grammar, so
   it is used - but once per section, never stacked. */

.lb-eyebrow,
.lb-eyebrow.elementor-widget-heading .elementor-heading-title,
.lb-eyebrow.elementor-widget-text-editor {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	margin: 0;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	line-height: 1.2;
	color: var(--lb-accent-text);
}

.lb-eyebrow:not(.elementor-widget)::before,
.lb-eyebrow.elementor-widget-heading .elementor-heading-title::before {
	content: '';
	width: 1.75rem;
	height: 1px;
	background: currentColor;
}

.lb-eyebrow--light,
.lb-section--ink .lb-eyebrow,
.lb-section--ink .lb-eyebrow .elementor-heading-title {
	color: color-mix(in srgb, var(--lb-accent) 45%, #FFFFFF);
}

.lb-eyebrow.elementor-widget-heading .elementor-heading-title { color: var(--lb-accent-text); }

/* Headings with an italic phrase: *like this* in Elementor text becomes <em>
   through the theme, and a plain <em> typed in the editor gets the same. */
h1 em, h2 em, h3 em,
.elementor-heading-title em {
	font-style: italic;
	color: var(--lb-accent-text);
}

.lb-section--ink h2 em,
.lb-section--ink .elementor-heading-title em,
.lb-valueband h2 em {
	color: color-mix(in srgb, var(--lb-accent) 40%, #FFFFFF);
}

/* The lender .lb-heading draws a rule under every section head. Agent pages
   run lighter: the rule is dropped, and the gap does the separating. */
.e-con.lb-heading {
	--padding-bottom: 0px;
	--margin-bottom: var(--lb-space-xl);
	padding-bottom: 0;
	border-bottom: 0;
}

.e-con.lb-heading--center {
	--align-items: center;
	align-items: center;
	text-align: center;
}

.e-con.lb-heading--center .lb-lead,
.e-con.lb-heading--center p { margin-inline: auto; }

/* --- Inline buttons and arrow links ------------------------------------- */

.lb-btn-inline {
	gap: 0.55em;
	border-radius: var(--lb-radius-pill);
	padding: 1em 1.6em;
}

.lb-btn-inline .lb-icon { width: 1.1em; height: 1.1em; }

.lb-btn-inline--solid {
	background-color: var(--lb-accent);
	border-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-btn-inline--solid:hover,
.lb-btn-inline--solid:focus-visible {
	background-color: var(--lb-accent-hover);
	border-color: var(--lb-accent-hover);
	color: var(--lb-on-accent);
}

.lb-btn-inline--line {
	background-color: transparent;
	border-color: var(--lb-rule);
	color: var(--lb-ink-deep);
}

.lb-btn-inline--line:hover,
.lb-btn-inline--line:focus-visible {
	background-color: var(--lb-ink-deep);
	border-color: var(--lb-ink-deep);
	color: var(--lb-paper);
}

/* Elementor button widgets: pill-shaped here, to match. */
.lb-btn .elementor-button { border-radius: var(--lb-radius-pill); padding: 1.05em 1.8em; }

.lb-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	font-weight: var(--lb-weight-bold);
	font-size: var(--lb-text-sm);
	color: var(--lb-ink-deep);
	text-decoration: none;
}

.lb-link-arrow .lb-icon {
	width: 1.05em;
	height: 1.05em;
	color: var(--lb-accent-text);
	transition: transform var(--lb-duration) var(--lb-ease);
}

.lb-link-arrow:hover { color: var(--lb-accent-text); }
.lb-link-arrow:hover .lb-icon { transform: translateX(3px); }

/* --- Header over the hero ------------------------------------------------
   Only on pages whose first element is [agent_hero] (body.lb-has-hero, set
   in functions.php). The header is taken out of flow and laid over the video
   in light type; once the scroll sentinel leaves the viewport (agent.js adds
   .lb-scrolled) it becomes the ordinary solid bar.

   Every other page keeps the sticky solid header from section 7. */

.e-con.lb-head {
	transition: background-color 280ms var(--lb-ease), border-color 280ms var(--lb-ease),
	            box-shadow 280ms var(--lb-ease);
}

.lb-scrolled .e-con.lb-head {
	box-shadow: 0 1px 0 var(--lb-rule), 0 10px 30px rgba(18, 24, 22, 0.06);
	border-bottom-color: transparent;
}

.lb-has-hero header.elementor-location-header {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px);
	left: 0;
	right: 0;
}

.lb-has-hero:not(.lb-scrolled) .e-con.lb-head {
	background-color: transparent;
	border-bottom-color: rgba(255, 255, 255, 0.16);
}

.lb-has-hero:not(.lb-scrolled) .lb-brand__name,
.lb-has-hero:not(.lb-scrolled) .lb-brand__name a,
.lb-has-hero:not(.lb-scrolled) .lb-head__phone,
.lb-has-hero:not(.lb-scrolled) .lb-head__phone a,
.lb-has-hero:not(.lb-scrolled) .lb-nav .elementor-nav-menu--main .elementor-item {
	color: #FFFFFF;
}

.lb-has-hero:not(.lb-scrolled) .lb-brand__meta { color: rgba(255, 255, 255, 0.72); }

.lb-has-hero:not(.lb-scrolled) .lb-nav .elementor-menu-toggle {
	color: #FFFFFF;
	border-color: rgba(255, 255, 255, 0.4);
}

.lb-has-hero:not(.lb-scrolled) .lb-head .lb-btn .elementor-button {
	background-color: #FFFFFF;
	border-color: #FFFFFF;
	color: var(--lb-ink-deep);
}

.lb-has-hero:not(.lb-scrolled) .lb-nav .elementor-nav-menu > li.menu-item-has-children > .elementor-item {
	background-image:
		linear-gradient(currentColor, currentColor),
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23FFFFFF' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.lb-head__phone a { color: inherit; text-decoration: none; }

/* The header is out of flow over the hero; the hero reserves its height. */
.lb-has-hero .lb-hero--home { padding-top: var(--lb-head-h); }

/* --- Home hero  [agent_hero] ---------------------------------------------
   The hero fills the first screen and its content is centred in the space
   below the header, over a scrim that is darkest at the foot. The headline
   is the largest type on the site; the finder panel underneath it is the
   primary action. */

/* svh, so a phone's collapsing toolbar neither hides the finder nor resizes
   the hero mid-scroll. min-height, so a short landscape screen grows the hero
   to fit its content rather than clipping it. */
@supports (height: 100svh) {
	:root { --lb-hero-min: calc(100svh - var(--wp-admin--admin-bar--height, 0px)); }
}

.lb-hero--home {
	min-height: var(--lb-hero-min);
	align-items: center;
}

.lb-hero--home::after {
	background:
		linear-gradient(to top, rgba(12, 16, 15, 0.82) 0%, rgba(12, 16, 15, 0.35) 45%, rgba(12, 16, 15, 0.1) 70%, rgba(12, 16, 15, 0.45) 100%);
}

.lb-hero--home .lb-hero__inner {
	/* Equal top and bottom, so the block centres on its content. */
	padding-top: clamp(2.5rem, 7vh, 5rem);
	padding-bottom: clamp(2.5rem, 7vh, 5rem);
}

.lb-hero__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.7em;
	letter-spacing: var(--lb-tracking-label);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
}

.lb-hero__eyebrow::before {
	content: '';
	width: 2rem;
	height: 1px;
	background: currentColor;
}

.lb-hero__heading {
	font-size: clamp(3rem, 1.6rem + 6.4vw, 7rem);
	line-height: 0.98;
	letter-spacing: -0.015em;
	max-width: 14ch;
}

.lb-hero__heading em {
	font-style: italic;
	color: #FFFFFF;
	/* A hairline under the place name, drawn once. */
	background-image: linear-gradient(color-mix(in srgb, var(--lb-accent) 55%, #FFFFFF), color-mix(in srgb, var(--lb-accent) 55%, #FFFFFF));
	background-repeat: no-repeat;
	background-position: 0 92%;
	background-size: 100% 2px;
}

.lb-js .lb-hero__heading em {
	background-size: 0% 2px;
	animation: lb-underline 1100ms var(--lb-ease) 500ms forwards;
}

@keyframes lb-underline { to { background-size: 100% 2px; } }

.lb-js .lb-hero--home .lb-hero__eyebrow,
.lb-js .lb-hero--home .lb-hero__heading,
.lb-js .lb-hero--home .lb-hero__sub,
.lb-js .lb-hero--home .lb-finder {
	animation: lb-rise 900ms var(--lb-ease) both;
}

.lb-js .lb-hero--home .lb-hero__heading { animation-delay: 90ms; }
.lb-js .lb-hero--home .lb-hero__sub     { animation-delay: 180ms; }
.lb-js .lb-hero--home .lb-finder        { animation-delay: 260ms; }

@keyframes lb-rise {
	from { opacity: 0; transform: translateY(18px); }
	to   { opacity: 1; transform: none; }
}

/* --- Finder (hero search) ----------------------------------------------- */

.lb-finder {
	margin-top: var(--lb-space-lg);
	max-width: 44rem;
}

.lb-finder__modes {
	display: none;
	gap: 0.25rem;
	padding: 0.25rem;
	margin-bottom: var(--lb-space-xs);
	width: max-content;
	border-radius: var(--lb-radius-pill);
	background: rgba(255, 255, 255, 0.14);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}

.lb-finder.is-enhanced .lb-finder__modes { display: inline-flex; }

.lb-finder__mode,
.lb-finder__mode:hover,
.lb-finder__mode:focus {
	padding: 0.55em 1.35em;
	border-radius: var(--lb-radius-pill);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-bold);
	color: rgba(255, 255, 255, 0.86);
}

.lb-finder__mode.is-active,
.lb-finder__mode.is-active:hover,
.lb-finder__mode.is-active:focus {
	background-color: #FFFFFF;
	color: var(--lb-ink-deep);
}

.lb-finder__panel + .lb-finder__panel { margin-top: var(--lb-space-xs); }
.lb-finder.is-enhanced .lb-finder__panel + .lb-finder__panel { margin-top: 0; }
.lb-finder__panel[hidden] { display: none; }

.lb-finder__hint {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.25rem;
	margin: var(--lb-space-sm) 0 0;
	font-size: var(--lb-text-sm);
	max-width: none;
}

.lb-finder__hint a {
	color: rgba(255, 255, 255, 0.86);
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.35);
	text-underline-offset: 0.3em;
}

.lb-finder__hint a:hover { color: #FFFFFF; text-decoration-color: #FFFFFF; }

/* --- Search field ---------------------------------------------------------
   One pill: icon, input, button. Used in the hero, the valuation band, the
   community pages and anywhere [agent_idx_search] falls back. */

.lb-search {
	display: flex;
	align-items: center;
	gap: 0.25rem;
	padding: 0.4rem 0.4rem 0.4rem 1.1rem;
	background: var(--lb-surface);
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius-pill);
	box-shadow: var(--lb-shadow-panel);
	max-width: 44rem;
}

.lb-search:focus-within {
	border-color: var(--lb-accent);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 18%, transparent), var(--lb-shadow-panel);
}

.lb-search--hero {
	border-color: transparent;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}

.lb-search__icon { display: inline-flex; color: var(--lb-ash); }
.lb-search__icon .lb-icon { width: 1.3rem; height: 1.3rem; }

.lb-search__input,
.lb-search__input:focus {
	flex: 1 1 auto;
	min-width: 0;
	height: 3.25rem;
	padding: 0 0.5rem;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	color: var(--lb-ink-deep);
}

.lb-search__input::placeholder { color: color-mix(in srgb, var(--lb-ash) 80%, transparent); }

.lb-search__go,
.lb-search__go:hover,
.lb-search__go:focus {
	flex: none;
	height: 3.25rem;
	padding: 0 1.6rem;
	border-radius: var(--lb-radius-pill);
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
	font-weight: var(--lb-weight-bold);
	font-size: var(--lb-text-sm);
	white-space: nowrap;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

.lb-search__go:hover,
.lb-search__go:focus-visible { background-color: var(--lb-accent-hover); }

@media (max-width: 599px) {
	.lb-search { flex-wrap: wrap; border-radius: var(--lb-radius-lg); padding: 0.5rem; }
	.lb-search__icon { display: none; }
	.lb-search__input { flex-basis: 100%; height: 3rem; padding: 0 0.75rem; }
	.lb-search__go { flex: 1 1 100%; }
}

/* --- Hero agent card and scroll cue ------------------------------------- */

.lb-hero__card {
	position: absolute;
	right: var(--lb-gutter);
	bottom: clamp(2.5rem, 7vh, 5rem);
	z-index: 2;
	display: none;
	align-items: center;
	gap: 0.85rem;
	padding: 0.6rem 0.6rem 0.6rem 0.6rem;
	border-radius: var(--lb-radius-pill);
	background: rgba(255, 255, 255, 0.12);
	border: 1px solid rgba(255, 255, 255, 0.22);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
	color: #FFFFFF;
}

@media (min-width: 1100px) {
	.lb-hero__card { display: flex; }
	.lb-js .lb-hero__card { animation: lb-rise 900ms var(--lb-ease) 520ms both; }
}

/* img.class outranks Elementor's `.elementor img { border-radius: 0; height: auto }`. */
.lb-hero__card img.lb-hero__card-photo {
	flex: none;
	width: 3.25rem;
	height: 3.25rem;
	max-width: none;
	border-radius: 50%;
	object-fit: cover;
	object-position: top;
}

.lb-hero__card-text { display: flex; flex-direction: column; line-height: 1.25; padding-right: 0.4rem; }
.lb-hero__card-name { font-weight: var(--lb-weight-bold); font-size: var(--lb-text-sm); }
.lb-hero__card-role { font-size: var(--lb-text-xs); color: rgba(255, 255, 255, 0.75); }

.lb-hero__card-call {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 50%;
	background: #FFFFFF;
	color: var(--lb-ink-deep);
	transition: transform var(--lb-duration) var(--lb-ease);
}

.lb-hero__card-call:hover { transform: scale(1.06); color: var(--lb-accent-text); }

.lb-hero__scroll {
	position: absolute;
	left: 50%;
	bottom: 1.25rem;
	z-index: 2;
	width: 1.5rem;
	height: 2.4rem;
	margin-left: -0.75rem;
	border: 1.5px solid rgba(255, 255, 255, 0.5);
	border-radius: 1rem;
	display: none;
}

.lb-hero__scroll span {
	position: absolute;
	left: 50%;
	top: 0.45rem;
	width: 3px;
	height: 0.45rem;
	margin-left: -1.5px;
	border-radius: 2px;
	background: #FFFFFF;
	animation: lb-scrollcue 1.8s var(--lb-ease) infinite;
}

@keyframes lb-scrollcue {
	0%   { opacity: 0; transform: translateY(0); }
	30%  { opacity: 1; }
	100% { opacity: 0; transform: translateY(0.8rem); }
}

@media (min-width: 900px) and (min-height: 760px) {
	.lb-hero__scroll { display: block; }
}

/* --- Page head  [agent_page_head] --------------------------------------- */

.lb-pagehead {
	padding: calc(var(--lb-space-xl) + 0.5rem) var(--lb-gutter) var(--lb-space-xl);
	background: var(--lb-mist);
	border-bottom: var(--lb-hairline);
}

.lb-pagehead--paper { background: var(--lb-paper); border-bottom: 0; }

.lb-pagehead--ink {
	background: var(--lb-ink-deep);
	border-bottom: 0;
	color: rgba(255, 255, 255, 0.8);
}

.lb-pagehead--ink .lb-pagehead__title { color: #FFFFFF; }
.lb-pagehead--ink .lb-crumbs a { color: rgba(255, 255, 255, 0.7); }

.lb-pagehead__inner { max-width: var(--lb-container); margin-inline: auto; }

.lb-crumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ash);
	margin-bottom: var(--lb-space-md);
}

.lb-crumbs a { color: var(--lb-ash); text-decoration: none; }
.lb-crumbs a:hover { color: var(--lb-accent-text); }

.lb-pagehead__eyebrow {
	margin: 0 0 var(--lb-space-2xs);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-accent-text);
}

.lb-pagehead__title {
	margin: 0;
	font-size: var(--lb-display-md);
	max-width: 20ch;
}

.lb-pagehead__lead {
	margin: var(--lb-space-sm) 0 0;
	font-size: var(--lb-text-lg);
	color: var(--lb-ash);
	max-width: var(--lb-measure-lead);
}

.lb-pagehead__search { margin-top: var(--lb-space-lg); max-width: 38rem; }

/* "Leave a review" jump on the Client Reviews page (lb_agent_page_head). The
   form stops below the sticky header instead of under it. */
.lb-pagehead__actions { margin: var(--lb-space-lg) 0 0; }
.lb-pagehead__jump .lb-icon { width: 1em; height: 1em; }
#leave-review { scroll-margin-top: calc(var(--lb-head-h) + var(--lb-space-lg)); }

.e-con.lb-pagehead-host { --padding-left: 0px; --padding-right: 0px; --padding-top: 0px; --padding-bottom: 0px; padding: 0; }

/* --- Intro  [agent_intro] ------------------------------------------------ */

.lb-intro {
	display: grid;
	gap: var(--lb-space-xl);
	align-items: center;
}

@media (min-width: 900px) {
	.lb-intro { grid-template-columns: minmax(18rem, 5fr) 7fr; gap: clamp(3rem, 6vw, 6rem); }
}

.lb-intro__photo {
	position: relative;
	margin: 0;
	aspect-ratio: 4 / 5;
	border-radius: var(--lb-radius-lg);
	overflow: visible;
	background: var(--lb-sand);
}

.lb-intro__photo > img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top center;
	border-radius: var(--lb-radius-lg);
	display: block;
}

/* An offset frame behind the portrait - the one decorative flourish in this
   section, and it frames the person rather than competing with them. */
.lb-intro__photo::before {
	content: '';
	position: absolute;
	inset: 1.25rem -1.25rem -1.25rem 1.25rem;
	z-index: -1;
	border: 1px solid color-mix(in srgb, var(--lb-accent) 45%, transparent);
	border-radius: var(--lb-radius-lg);
}

.lb-intro__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	color: color-mix(in srgb, var(--lb-ash) 50%, transparent);
}

.lb-intro__placeholder .lb-icon { width: 4rem; height: 4rem; stroke-width: 1; }

.lb-intro__logo {
	position: absolute;
	left: 1rem;
	bottom: 1rem;
	max-width: 58%;
	padding: 0.7rem 1rem;
	background: rgba(255, 255, 255, 0.94);
	border-radius: var(--lb-radius);
	box-shadow: var(--lb-shadow-panel);
}

.lb-intro__logo img { display: block; max-height: 2.6rem; width: auto; }

.lb-intro__heading {
	margin: var(--lb-space-sm) 0 0;
	font-size: var(--lb-display-md);
}

.lb-intro__role {
	margin: var(--lb-space-xs) 0 0;
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ash);
	max-width: none;
}

.lb-intro__bio {
	margin-top: var(--lb-space-md);
	font-size: var(--lb-text-lg);
	line-height: 1.65;
	color: var(--lb-ink);
}

.lb-intro__bio p { margin: 0 0 var(--lb-space-sm); }

.lb-intro__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lb-space-sm) var(--lb-space-md);
	margin-top: var(--lb-space-lg);
}

.lb-intro .lb-socials { margin-top: var(--lb-space-lg); }

.lb-intro__license {
	margin: var(--lb-space-md) 0 0;
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
	font-variant-numeric: tabular-nums;
}

/* --- Socials ------------------------------------------------------------- */

.lb-socials {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lb-socials a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 1px solid var(--lb-rule);
	color: var(--lb-ink-deep);
	transition: background-color var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease), border-color var(--lb-duration) var(--lb-ease);
}

.lb-socials a:hover,
.lb-socials a:focus-visible {
	background: var(--lb-accent);
	border-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-socials .lb-icon { width: 1.1rem; height: 1.1rem; }

.lb-socials--footer a { border-color: rgba(255, 255, 255, 0.2); color: #FFFFFF; }

/* --- Services  [agent_services] ------------------------------------------ */

.lb-services {
	display: grid;
	gap: var(--lb-space-md);
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
}

@media (min-width: 1100px) {
	.lb-services--4 { grid-template-columns: repeat(4, 1fr); }
	.lb-services--3 { grid-template-columns: repeat(3, 1fr); }
}

.lb-service-card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--lb-space-2xs);
	padding: var(--lb-space-lg);
	background: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
	color: inherit;
	text-decoration: none;
	overflow: hidden;
	isolation: isolate;
	transition: transform 320ms var(--lb-ease), box-shadow 320ms var(--lb-ease), border-color 320ms var(--lb-ease);
}

/* The accent wash rises from the bottom on hover. */
.lb-service-card::after {
	content: '';
	position: absolute;
	inset: auto 0 0 0;
	height: 0;
	z-index: -1;
	background: var(--lb-accent-tint);
	transition: height 420ms var(--lb-ease);
}

.lb-service-card:hover,
.lb-service-card:focus-visible {
	transform: translateY(-4px);
	box-shadow: var(--lb-shadow-lift);
	border-color: transparent;
	color: inherit;
}

.lb-service-card:hover::after { height: 100%; }

.lb-service-card__num {
	position: absolute;
	top: var(--lb-space-md);
	right: var(--lb-space-lg);
	font-family: var(--lb-font-display);
	font-size: 2.5rem;
	line-height: 1;
	color: var(--lb-rule);
}

.lb-service-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3.25rem;
	height: 3.25rem;
	margin-bottom: var(--lb-space-sm);
	border-radius: 50%;
	background: var(--lb-accent-tint);
	color: var(--lb-accent-text);
	transition: background-color 320ms var(--lb-ease), color 320ms var(--lb-ease);
}

.lb-service-card:hover .lb-service-card__icon { background: var(--lb-accent); color: var(--lb-on-accent); }

.lb-service-card__icon .lb-icon { width: 1.5rem; height: 1.5rem; }

.lb-service-card__title {
	font-family: var(--lb-font-display);
	font-size: 1.9rem;
	line-height: 1.05;
	color: var(--lb-ink-deep);
}

.lb-service-card__text { font-size: var(--lb-text-sm); color: var(--lb-ash); line-height: 1.6; }

.lb-service-card__more {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	margin-top: auto;
	padding-top: var(--lb-space-md);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-bold);
	color: var(--lb-accent-text);
}

.lb-service-card__more .lb-icon { transition: transform var(--lb-duration) var(--lb-ease); }
.lb-service-card:hover .lb-service-card__more .lb-icon { transform: translateX(4px); }

/* --- Communities  [agent_communities] ------------------------------------
   Photo cards in a bento grid: the first community takes a double cell, so
   the grid reads as a composition rather than a spreadsheet of thumbnails. */

.lb-areas {
	display: grid;
	gap: var(--lb-space-sm);
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	grid-auto-rows: 17rem;
}

@media (min-width: 900px) {
	.lb-areas { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 15rem; }
	.lb-areas > .lb-area:first-child { grid-column: span 2; grid-row: span 2; }
	.lb-areas--2 > .lb-area:first-child,
	.lb-areas--2 > .lb-area { grid-column: span 2; grid-row: span 2; }
	.lb-areas--3 > .lb-area:nth-child(2),
	.lb-areas--3 > .lb-area:nth-child(3) { grid-column: span 2; }
	.lb-areas--4 > .lb-area:nth-child(4) { grid-column: span 2; }
	.lb-areas--6 > .lb-area:nth-child(6) { grid-column: span 2; }
}

.lb-area {
	position: relative;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	border-radius: var(--lb-radius-lg);
	background: linear-gradient(145deg, color-mix(in srgb, var(--lb-accent) 70%, var(--lb-ink-deeper)), var(--lb-ink-deep));
	color: #FFFFFF;
	text-decoration: none;
	isolation: isolate;
}

.lb-area__img {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 900ms var(--lb-ease);
}

.lb-area::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(to top, rgba(10, 14, 13, 0.78), rgba(10, 14, 13, 0.05) 60%);
}

.lb-area--plain::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	opacity: 0.18;
	background-image: radial-gradient(circle at 1px 1px, #FFFFFF 1px, transparent 0);
	background-size: 18px 18px;
}

.lb-area:hover .lb-area__img { transform: scale(1.05); }

.lb-area__body {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: var(--lb-space-md);
}

.lb-area__name {
	font-family: var(--lb-font-display);
	font-size: clamp(1.75rem, 1.3rem + 1.2vw, 2.5rem);
	line-height: 1;
}

.lb-areas > .lb-area:first-child .lb-area__name { font-size: clamp(2.25rem, 1.5rem + 2vw, 3.5rem); }

.lb-area__blurb { font-size: var(--lb-text-sm); color: rgba(255, 255, 255, 0.82); max-width: 36ch; }

.lb-area__more {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	margin-top: 0.4rem;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	opacity: 0.85;
	transition: gap var(--lb-duration) var(--lb-ease), opacity var(--lb-duration) var(--lb-ease);
}

.lb-area:hover .lb-area__more { gap: 0.7em; opacity: 1; }

/* The card is a link: without this the site's link hover colour (the
   Elementor kit's, often a dark blue) turns the white text unreadable. */
.lb-areas a.lb-area:is(:hover, :focus, :focus-visible, :active) { color: #FFFFFF; }

/* --- Listings  [agent_idx_listings] fallback ----------------------------- */

.lb-listings {
	display: grid;
	gap: var(--lb-space-md);
	grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
}

.lb-listing {
	display: flex;
	flex-direction: column;
	background: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
	overflow: hidden;
	transition: transform 320ms var(--lb-ease), box-shadow 320ms var(--lb-ease);
}

.lb-listing:hover { transform: translateY(-4px); box-shadow: var(--lb-shadow-lift); }

.lb-listing__media {
	position: relative;
	display: block;
	aspect-ratio: 3 / 2;
	background: var(--lb-sand);
	overflow: hidden;
}

.lb-listing__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 900ms var(--lb-ease);
}

.lb-listing:hover .lb-listing__media img { transform: scale(1.04); }

.lb-listing__status {
	position: absolute;
	top: 0.85rem;
	left: 0.85rem;
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	padding: 0.35em 0.8em;
	border-radius: var(--lb-radius-pill);
	background: rgba(255, 255, 255, 0.94);
	color: var(--lb-ink-deep);
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-bold);
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.lb-listing__status::before {
	content: '';
	width: 0.45rem;
	height: 0.45rem;
	border-radius: 50%;
	background: var(--lb-positive);
}

.lb-listing--new .lb-listing__status::before  { background: var(--lb-gold); }
.lb-listing--open .lb-listing__status::before { background: var(--lb-accent); }
.lb-listing--pending .lb-listing__status::before { background: var(--lb-caution); }
.lb-listing--sold .lb-listing__status::before { background: #B3261E; }

.lb-listing__body { padding: var(--lb-space-md); }

.lb-listing__price {
	margin: 0;
	font-family: var(--lb-font-display);
	font-size: 2rem;
	line-height: 1;
	color: var(--lb-ink-deep);
}

.lb-listing__address {
	margin: 0.5rem 0 0;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-bold);
	letter-spacing: 0;
	line-height: 1.3;
}

.lb-listing__address a { color: var(--lb-ink-deep); text-decoration: none; }
.lb-listing__address a::after { content: ''; position: absolute; inset: 0; }
.lb-listing { position: relative; }

.lb-listing__city { margin: 0.15rem 0 0; font-size: var(--lb-text-sm); color: var(--lb-ash); }

.lb-listing__specs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.1rem;
	margin: var(--lb-space-sm) 0 0;
	padding: var(--lb-space-sm) 0 0;
	border-top: var(--lb-hairline);
	list-style: none;
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink);
}

.lb-listing__specs li { display: inline-flex; align-items: center; gap: 0.4em; }
.lb-listing__specs .lb-icon { color: var(--lb-ash); }

/* --- Showcase IDX wrappers ------------------------------------------------
   Showcase renders its own widgets client-side. The wrapper gives them our
   type and room; their internals are deliberately left alone. */

.lb-idx { font-family: var(--lb-font-text); }
.lb-idx--hotsheet,
.lb-idx--map { margin-top: var(--lb-space-md); }
.lb-idx--map { border-radius: var(--lb-radius-lg); overflow: hidden; }

/* A hotsheet with its map switched on (a Showcase setting per hotsheet):
   room between the map and the cards under it, and the cards' rounded
   corners. isolation keeps Leaflet's transformed panes inside the clip. */
.lb-idx--hotsheet .sidx-hotsheet .sidx-map-container {
	margin-bottom: var(--lb-space-lg) !important;
	border-radius: var(--lb-radius-lg) !important;
	overflow: hidden !important;
	isolation: isolate;
}
.lb-idx--hotsheet .sidx-hotsheet .sidx-map-container .sidx-listings-map {
	border-radius: var(--lb-radius-lg) !important;
	overflow: hidden !important;
	isolation: isolate;
}

.lb-finder .lb-idx--search {
	padding: var(--lb-space-sm);
	background: var(--lb-surface);
	border-radius: var(--lb-radius-lg);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
	color: var(--lb-ink);
}

/* State classes for editors: put `lb-idx-only`, `lb-no-idx`,
   `lb-communities` or `lb-featured` on any Elementor element or menu item
   (inc/idx.php). */
.lb-idx-off .lb-idx-only,
.lb-idx-on .lb-no-idx,
.lb-communities-off .lb-communities,
.lb-featured-off .lb-featured { display: none !important; }

/* --- Empty sections collapse --------------------------------------------
   A section whose shortcode had nothing true to show renders an empty host.
   Rather than a padded blank band, the whole section goes. Give the outer
   Elementor section the class `lb-host`. */

.e-con.lb-host:not(:has(.lb-listings, .lb-idx, .lb-areas, .lb-reviews, .lb-stats, .lb-posts, .lb-intro, .lb-contact-methods, .lb-tabs, .lb-guide, .lb-team)) {
	display: none;
}

.elementor-editor-active .e-con.lb-host { display: flex !important; min-height: 6rem; outline: 1px dashed var(--lb-rule); }

/* --- Reviews  [agent_reviews] -------------------------------------------- */

.lb-reviews { position: relative; }

.lb-reviews__track {
	display: grid;
	gap: var(--lb-space-md);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lb-reviews--grid .lb-reviews__track { grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); }

.lb-reviews--carousel .lb-reviews__track {
	grid-auto-flow: column;
	grid-auto-columns: min(26rem, 86%);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: 0;
	padding-bottom: var(--lb-space-sm);
	scrollbar-width: none;
	overscroll-behavior-x: contain;
}

.lb-reviews--carousel .lb-reviews__track::-webkit-scrollbar { display: none; }

/* Whole cards on wider screens - three, then two - so the strip never slices
   a review mid-sentence; the phone keeps the peek that says "swipe". */
@media (min-width: 640px) {
	.lb-reviews--carousel .lb-reviews__track { grid-auto-columns: calc((100% - var(--lb-space-md)) / 2); }
}
@media (min-width: 1024px) {
	.lb-reviews--carousel .lb-reviews__track { grid-auto-columns: calc((100% - 2 * var(--lb-space-md)) / 3); }
}

.lb-review { scroll-snap-align: start; }

.lb-review figure {
	display: flex;
	flex-direction: column;
	height: 100%;
	margin: 0;
	padding: var(--lb-space-lg);
	background: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
}

.lb-section--ink .lb-review figure {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.12);
}

.lb-review__stars { display: inline-flex; gap: 0.15rem; color: var(--lb-gold); }
.lb-review__stars .lb-icon { width: 1rem; height: 1rem; fill: currentColor; stroke: none; }

.lb-review__quote { margin: var(--lb-space-sm) 0 0; flex: 1 1 auto; }

.lb-review__quote p {
	margin: 0;
	font-family: var(--lb-font-display);
	font-size: 1.5rem;
	line-height: 1.3;
	color: var(--lb-ink-deep);
}

.lb-section--ink .lb-review__quote p { color: #FFFFFF; }

/* Every card in the strip is as tall as the tallest, so one long review made
   the whole band that tall. Long quotes stop at eight lines; agent.js adds
   "Read more" to the ones that were cut. */
.lb-reviews--carousel .lb-review__quote p {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 8;
	line-clamp: 8;
	overflow: hidden;
}

.lb-reviews--carousel .lb-review.is-open .lb-review__quote p {
	display: block;
	-webkit-line-clamp: unset;
	line-clamp: none;
	overflow: visible;
}

.lb-review__toggle,
.lb-review__toggle:hover,
.lb-review__toggle:focus {
	display: inline-block;
	margin-top: var(--lb-space-sm);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-bold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
	color: var(--lb-accent-text);
}

.lb-section--ink .lb-review__toggle { color: #FFFFFF; }

.lb-review__toggle[hidden] { display: none; }

.lb-review__who {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-top: var(--lb-space-md);
	padding-top: var(--lb-space-md);
	border-top: var(--lb-hairline);
}

.lb-section--ink .lb-review__who { border-top-color: rgba(255, 255, 255, 0.12); }

.lb-review__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	background: var(--lb-accent-tint);
	color: var(--lb-accent-text);
	font-weight: var(--lb-weight-bold);
}

.lb-review__name { display: block; font-weight: var(--lb-weight-bold); font-size: var(--lb-text-sm); color: var(--lb-ink-deep); }
.lb-section--ink .lb-review__name { color: #FFFFFF; }
.lb-review__detail { display: block; font-size: var(--lb-text-xs); color: var(--lb-ash); }
.lb-section--ink .lb-review__detail { color: rgba(255, 255, 255, 0.65); }

.lb-reviews__nav {
	display: flex;
	gap: 0.5rem;
	justify-content: flex-end;
	margin-top: var(--lb-space-sm);
}

.lb-reviews__nav[hidden] { display: none; }

.lb-reviews__btn,
.lb-reviews__btn:hover,
.lb-reviews__btn:focus {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border: 1px solid var(--lb-rule);
	border-radius: 50%;
	color: var(--lb-ink-deep);
}

.lb-section--ink .lb-reviews__btn { border-color: rgba(255, 255, 255, 0.25); color: #FFFFFF; }

.lb-reviews__btn:hover:not(:disabled) { background: var(--lb-accent); border-color: var(--lb-accent); color: var(--lb-on-accent); }
.lb-reviews__btn:disabled { opacity: 0.35; cursor: default; }

.lb-reviews__embed { margin-top: var(--lb-space-xl); }
.lb-reviews__more { margin: var(--lb-space-md) 0 0; }
.lb-section--ink .lb-link-arrow { color: #FFFFFF; }

/* --- Valuation band  [agent_value_band] ---------------------------------- */

.lb-valueband {
	position: relative;
	display: grid;
	gap: var(--lb-space-xl);
	align-items: center;
	padding: clamp(2.5rem, 6vw, 5rem);
	border-radius: calc(var(--lb-radius-lg) + 6px);
	background:
		radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--lb-accent) 55%, transparent) 0%, transparent 55%),
		var(--lb-ink-deep);
	color: rgba(255, 255, 255, 0.82);
	overflow: hidden;
	isolation: isolate;
}

.lb-valueband::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	opacity: 0.08;
	background-image: radial-gradient(circle at 1px 1px, #FFFFFF 1px, transparent 0);
	background-size: 22px 22px;
	mask-image: linear-gradient(to left, #000, transparent 70%);
}

@media (min-width: 1000px) {
	.lb-valueband { grid-template-columns: 1.05fr 1fr; gap: var(--lb-space-2xl); }
}

.lb-valueband__heading { margin: var(--lb-space-sm) 0 0; color: #FFFFFF; font-size: var(--lb-display-md); }
.lb-valueband__lead { margin: var(--lb-space-md) 0 0; font-size: var(--lb-text-lg); color: rgba(255, 255, 255, 0.78); }

.lb-ticks {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.25rem;
	margin: var(--lb-space-md) 0 0;
	padding: 0;
	list-style: none;
	font-size: var(--lb-text-sm);
	color: rgba(255, 255, 255, 0.8);
}

.lb-ticks li { display: inline-flex; align-items: center; gap: 0.4em; }
.lb-ticks .lb-icon { color: color-mix(in srgb, var(--lb-accent) 40%, #FFFFFF); stroke-width: 2.2; }

/* --- Posts  [agent_posts] ------------------------------------------------ */

.lb-posts {
	display: grid;
	gap: var(--lb-space-xl) var(--lb-space-md);
	grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
}

.lb-post-card { position: relative; }

.lb-post-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	border-radius: var(--lb-radius-lg);
	overflow: hidden;
	background: linear-gradient(145deg, var(--lb-sand), var(--lb-mist));
}

.lb-post-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms var(--lb-ease); }
.lb-post-card:hover .lb-post-card__media img { transform: scale(1.04); }

.lb-post-card__meta { margin: var(--lb-space-sm) 0 0; font-size: var(--lb-text-xs); font-weight: var(--lb-weight-semibold); color: var(--lb-ash); }

.lb-post-card__title {
	margin: 0.35rem 0 0;
	font-family: var(--lb-font-display);
	font-size: 1.75rem;
	line-height: 1.1;
}

.lb-post-card__title a { color: var(--lb-ink-deep); text-decoration: none; }
.lb-post-card__title a::after { content: ''; position: absolute; inset: 0; }
.lb-post-card:hover .lb-post-card__title a { color: var(--lb-accent-text); }

.lb-post-card__text { margin: 0.5rem 0 0; font-size: var(--lb-text-sm); color: var(--lb-ash); }

/* --- Agent card  [agent_card] -------------------------------------------- */

.lb-card-agent {
	padding: var(--lb-space-lg);
	background: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
	box-shadow: var(--lb-shadow-panel);
}

.lb-card-agent__head { display: flex; align-items: center; gap: 0.9rem; }

img.lb-card-agent__photo {
	flex: none;
	width: 4rem;
	height: 4rem;
	border-radius: 50%;
	object-fit: cover;
	object-position: top;
}

.lb-card-agent__name { display: block; font-family: var(--lb-font-display); font-size: 1.6rem; line-height: 1.05; color: var(--lb-ink-deep); }
.lb-card-agent__role { display: block; margin-top: 0.2rem; font-size: var(--lb-text-xs); color: var(--lb-ash); }

.lb-card-agent__text { margin: var(--lb-space-md) 0 0; font-size: var(--lb-text-sm); color: var(--lb-ink); }

.lb-card-agent__actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: var(--lb-space-md); }
.lb-card-agent__actions .lb-btn-inline { padding: 0.8em 1.15em; font-size: var(--lb-text-xs); }

/* --- Singular template (template-parts/single.php) ----------------------- */

/* Hello caps `body:not([class*=elementor-page-]) .site-main` at 1140px, which
   boxes in the full-bleed page head. The inner wraps carry their own measure. */
body main.site-main.lb-single,
body main.site-main.lb-archive {
	max-width: none;
	padding-inline: 0;
}

.lb-single__wrap {
	display: grid;
	gap: var(--lb-space-xl);
	max-width: var(--lb-container);
	margin: 0 auto;
	padding: var(--lb-space-xl) var(--lb-gutter) var(--lb-section-y);
}

@media (min-width: 1000px) {
	.lb-single__wrap { grid-template-columns: minmax(0, 1fr) 20rem; gap: clamp(3rem, 6vw, 6rem); }
	.lb-single__aside { position: sticky; top: calc(var(--lb-head-h) + var(--lb-space-md)); align-self: start; }
}

.lb-single__wrap--solo { max-width: calc(var(--lb-container-narrow) + var(--lb-gutter) * 2); }
@media (min-width: 1000px) { .lb-single__wrap--solo { grid-template-columns: minmax(0, 1fr); } }

.lb-single__content { min-width: 0; font-size: var(--lb-text-lg); }
.lb-single__content > :first-child { margin-top: 0; }

/* Ported WPBakery content leaves spacer paragraphs and horizontal rules
   behind; neither means anything in the new layout. */
.lb-single__content p:empty,
.lb-single__content > hr { display: none; }

.lb-prose h2 { font-size: var(--lb-display-sm); }
.lb-prose h4 { font-size: var(--lb-text-lg); font-weight: var(--lb-weight-bold); }

.lb-single__figure { margin: 0 0 var(--lb-space-lg); }
.lb-single__figure img { width: 100%; border-radius: var(--lb-radius-lg); }

.lb-steps-nav {
	margin-bottom: var(--lb-space-md);
	padding: var(--lb-space-md) var(--lb-space-lg);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
	background: var(--lb-mist);
}

.lb-steps-nav__title { margin: 0 0 var(--lb-space-xs); font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; }
.lb-steps-nav__title a { color: var(--lb-ash); text-decoration: none; }

.lb-steps-nav ol { margin: 0; padding: 0; list-style: none; counter-reset: lb-sn; }

.lb-steps-nav li {
	counter-increment: lb-sn;
	display: grid;
	grid-template-columns: 1.75rem 1fr;
	padding: 0.4rem 0;
	font-size: var(--lb-text-sm);
	line-height: 1.35;
}

.lb-steps-nav li::before {
	content: counter(lb-sn, decimal-leading-zero);
	font-weight: var(--lb-weight-bold);
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
	padding-top: 0.1rem;
}

.lb-steps-nav a { color: var(--lb-ink); text-decoration: none; }
.lb-steps-nav a:hover { color: var(--lb-accent-text); }
.lb-steps-nav li.is-current a { color: var(--lb-accent-text); font-weight: var(--lb-weight-bold); }
.lb-steps-nav li.is-current::before { color: var(--lb-accent-text); }

.lb-single__more { max-width: var(--lb-container); margin: 0 auto; padding: 0 var(--lb-gutter) var(--lb-section-y); }

.lb-single__more .nav-links { display: grid; grid-template-columns: 1fr 1fr; gap: var(--lb-space-md); }
.lb-single__more .nav-links a { display: flex; flex-direction: column; gap: 0.3rem; padding: var(--lb-space-md); border: var(--lb-hairline); border-radius: var(--lb-radius-lg); text-decoration: none; color: var(--lb-ink-deep); font-weight: var(--lb-weight-bold); }
.lb-single__more .nav-next { text-align: right; }

/* Guide pages: the step's timing, who is involved and the tip, carried over
   from the overview so the two never disagree; then previous / next. */
.lb-stepcard {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--lb-space-xs) var(--lb-space-md);
	margin: 0 0 var(--lb-space-lg);
	padding-bottom: var(--lb-space-sm);
	border-bottom: var(--lb-hairline);
}

.lb-stepcard .lb-journey__meta { margin: 0; }
.lb-stepcard__byline { margin: 0; font-size: var(--lb-text-xs); color: var(--lb-ash); max-width: none; }
.lb-stepcard__byline span { margin: 0 0.35em; }

.lb-single__content .lb-guide-tip { margin: var(--lb-space-md) 0 var(--lb-space-lg); font-size: var(--lb-text-base); color: var(--lb-ink); max-width: none; }

/* Answer-first: the one paragraph search engines and AI assistants quote. */
.lb-answer {
	padding: var(--lb-space-md) var(--lb-space-lg);
	border-radius: var(--lb-radius-lg);
	background: var(--lb-mist);
}
.lb-prose .lb-answer p { margin: 0; }
.lb-prose .lb-answer .lb-answer__label { margin-bottom: 0.4rem; font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; color: var(--lb-accent-text); }

.lb-prose h2 + p { margin-top: var(--lb-space-2xs); }

.lb-prose table { width: 100%; border-collapse: collapse; font-size: var(--lb-text-sm); line-height: 1.5; }
.lb-prose th,
.lb-prose td { padding: 0.7rem 0.9rem 0.7rem 0; border-bottom: var(--lb-hairline); text-align: left; vertical-align: top; }
.lb-prose thead th { font-size: var(--lb-text-xs); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; color: var(--lb-ash); }
.lb-prose tbody td:first-child { font-weight: var(--lb-weight-semibold); color: var(--lb-ink-deep); }
@media (max-width: 599px) {
	.lb-prose table { display: block; overflow-x: auto; }
}

.lb-guide-faq { margin-top: var(--lb-space-xl); padding: var(--lb-space-lg); border: var(--lb-hairline); border-radius: var(--lb-radius-lg); }
.lb-prose .lb-guide-faq h2 { margin-top: 0; }
.lb-prose .lb-guide-faq h3 { font-family: var(--lb-font-text); font-size: var(--lb-text-base); font-weight: var(--lb-weight-bold); color: var(--lb-ink-deep); margin: var(--lb-space-md) 0 0.3rem; }
.lb-prose .lb-guide-faq p { margin: 0; font-size: var(--lb-text-base); }

.lb-stepnav .nav-links a { transition: border-color 150ms var(--lb-ease), color 150ms var(--lb-ease); }
.lb-stepnav .nav-links a:hover { border-color: var(--lb-accent); color: var(--lb-accent-text); }
.lb-stepnav .lb-label { font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; color: var(--lb-ash); }

@media (max-width: 599px) {
	.lb-stepnav .nav-links { grid-template-columns: 1fr; }
	.lb-stepnav .nav-next { text-align: left; }
}

/* --- Archive ------------------------------------------------------------- */

.lb-archive__wrap { max-width: var(--lb-container); margin: 0 auto; padding: var(--lb-space-xl) var(--lb-gutter) var(--lb-section-y); }

.lb-pagination .nav-links,
.lb-archive .nav-links { display: flex; gap: 0.5rem; justify-content: center; margin-top: var(--lb-space-xl); }

.lb-archive .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	height: 2.75rem;
	padding: 0 0.9rem;
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-pill);
	color: var(--lb-ink-deep);
	text-decoration: none;
	font-weight: var(--lb-weight-bold);
	font-size: var(--lb-text-sm);
}

.lb-archive .page-numbers.current { background: var(--lb-ink-deep); border-color: var(--lb-ink-deep); color: #FFFFFF; }

.lb-empty { color: var(--lb-ash); }

/* --- Community CTA  [agent_community] fallback --------------------------- */

.lb-community-cta {
	display: grid;
	gap: var(--lb-space-md);
	align-items: center;
	padding: clamp(1.75rem, 4vw, 3rem);
	border-radius: var(--lb-radius-lg);
}

@media (min-width: 900px) { .lb-community-cta { grid-template-columns: 1fr 1fr; gap: var(--lb-space-xl); } }

.lb-community-cta__title { margin: 0 0 var(--lb-space-2xs); font-size: var(--lb-display-sm); }
.lb-community-cta p { margin: 0; color: var(--lb-ash); }

/* --- Contact grid --------------------------------------------------------- */

.lb-contact-grid {
	display: grid;
	gap: var(--lb-space-md);
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
}

.lb-contact { border-radius: var(--lb-radius-lg); border-top-width: 1px; }
.lb-contact__value { font-size: var(--lb-text-lg); }

/* --- Payment estimator  [agent_calc] ------------------------------------- */

.lb-calc {
	display: grid;
	gap: var(--lb-space-md);
	align-items: start;
}

@media (min-width: 900px) { .lb-calc { grid-template-columns: 1.1fr 1fr; gap: var(--lb-space-lg); } }

.lb-calc__inputs {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--lb-space-sm) var(--lb-space-md);
	padding: var(--lb-space-lg);
	background: var(--lb-surface);
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-lg);
}

.lb-calc__field { display: flex; flex-direction: column; gap: 0.35rem; margin: 0; border: 0; padding: 0; min-width: 0; }

.lb-calc__field label,
.lb-calc__field legend { font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); color: var(--lb-ash); padding: 0; }

.lb-calc__control {
	display: flex;
	align-items: center;
	border: var(--lb-hairline);
	border-radius: var(--lb-radius);
	background: var(--lb-paper);
	padding: 0 0.75rem;
}

.lb-calc__control:focus-within { border-color: var(--lb-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--lb-accent) 16%, transparent); }

.lb-calc__control input,
.lb-calc__control input:focus {
	flex: 1 1 auto;
	min-width: 0;
	height: 2.9rem;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	padding: 0 0.3rem;
	font: inherit;
	font-weight: var(--lb-weight-bold);
	color: var(--lb-ink-deep);
	font-variant-numeric: tabular-nums;
}

.lb-calc__affix { font-size: var(--lb-text-sm); color: var(--lb-ash); white-space: nowrap; }

.lb-calc__term { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.lb-calc__term legend { width: 100%; margin-bottom: 0.35rem; }

.lb-calc__chip input { position: absolute; opacity: 0; pointer-events: none; }

.lb-calc__chip span {
	display: inline-flex;
	padding: 0.55em 1.1em;
	border: var(--lb-hairline);
	border-radius: var(--lb-radius-pill);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-bold);
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease);
}

.lb-calc__chip input:checked + span { background: var(--lb-ink-deep); border-color: var(--lb-ink-deep); color: #FFFFFF; }
.lb-calc__chip input:focus-visible + span { outline: 2px solid var(--lb-accent); outline-offset: 2px; }

.lb-calc__result {
	padding: var(--lb-space-lg);
	background: var(--lb-ink-deep);
	color: rgba(255, 255, 255, 0.8);
	border-radius: var(--lb-radius-lg);
}

@media (min-width: 900px) { .lb-calc__result { position: sticky; top: calc(var(--lb-head-h) + 1rem); } }

.lb-calc__label { margin: 0; font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; color: rgba(255, 255, 255, 0.6); }

.lb-calc__total {
	margin: 0.4rem 0 0;
	font-family: var(--lb-font-display);
	font-size: var(--lb-figure-lg);
	line-height: 1;
	color: #FFFFFF;
	font-variant-numeric: tabular-nums;
}

.lb-calc__bar { display: flex; height: 0.6rem; margin: var(--lb-space-md) 0; border-radius: var(--lb-radius-pill); overflow: hidden; background: rgba(255, 255, 255, 0.1); gap: 2px; }
.lb-calc__bar span { flex: 0 0 0; min-width: 0; transition: flex-grow 400ms var(--lb-ease); }

[data-bar="pi"],  [data-key="pi"]  { background: color-mix(in srgb, var(--lb-accent) 60%, #FFFFFF); }
[data-bar="tax"], [data-key="tax"] { background: var(--lb-gold); }
[data-bar="ins"], [data-key="ins"] { background: #8FB3C9; }
[data-bar="hoa"], [data-key="hoa"] { background: #C9A3B8; }
[data-bar="pmi"], [data-key="pmi"] { background: rgba(255, 255, 255, 0.45); }

.lb-calc__rows { margin: 0; }
.lb-calc__rows > div { display: flex; justify-content: space-between; gap: 1rem; padding: 0.45rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); font-size: var(--lb-text-sm); }
.lb-calc__rows > div[hidden] { display: none; }
.lb-calc__rows dt { display: inline-flex; align-items: center; gap: 0.55rem; }
.lb-calc__rows dt i { width: 0.6rem; height: 0.6rem; border-radius: 50%; }
.lb-calc__rows dd { margin: 0; font-weight: var(--lb-weight-bold); color: #FFFFFF; font-variant-numeric: tabular-nums; white-space: nowrap; }

.lb-calc__loan { margin: var(--lb-space-md) 0 0; font-size: var(--lb-text-sm); max-width: none; }
.lb-calc__loan strong { color: #FFFFFF; }
.lb-calc__fine { margin: var(--lb-space-sm) 0 0; font-size: var(--lb-text-2xs); line-height: 1.5; color: rgba(255, 255, 255, 0.5); }

@media (max-width: 479px) { .lb-calc__inputs { grid-template-columns: 1fr; } }

/* Net sheet: the bar is the sale price, with the seller's share first. */
[data-bar="net"] { background: color-mix(in srgb, var(--lb-accent) 60%, #FFFFFF); }
[data-bar="commission"], [data-key="commission"] { background: var(--lb-gold); }
[data-bar="closing"],    [data-key="closing"]    { background: #8FB3C9; }
[data-bar="payoff"],     [data-key="payoff"]     { background: rgba(255, 255, 255, 0.45); }
[data-bar="credits"],    [data-key="credits"]    { background: #C9A3B8; }

.lb-calc__hint { grid-column: 1 / -1; margin: 0; font-size: var(--lb-text-xs); line-height: 1.55; color: var(--lb-ash); max-width: none; }
.lb-calc--net [data-out="short"] { color: var(--lb-gold); }

/* --- Footer -------------------------------------------------------------- */

.lb-footbrand__name {
	margin: 0;
	font-family: var(--lb-font-display);
	font-size: 2.5rem;
	line-height: 1;
	color: #FFFFFF;
}

.lb-footbrand__role { margin: 0.5rem 0 0; font-size: var(--lb-text-sm); color: rgba(255, 255, 255, 0.65); }

.lb-footbrand__logo {
	display: inline-block;
	margin-top: var(--lb-space-md);
	padding: 0.65rem 0.9rem;
	background: #FFFFFF;
	border-radius: var(--lb-radius);
}

.lb-footbrand__logo img { display: block; max-height: 2.5rem; width: auto; }
.lb-footbrand .lb-socials { margin-top: var(--lb-space-md); }

.lb-footcontact { margin: 0; padding: 0; list-style: none; display: grid; gap: 0.7rem; }
.lb-footcontact li { display: grid; grid-template-columns: 1.4rem minmax(0, 1fr); gap: 0.6rem; align-items: start; font-size: var(--lb-text-sm); }
.lb-footcontact .lb-icon { margin-top: 0.15rem; color: color-mix(in srgb, var(--lb-accent) 40%, #FFFFFF); }
.lb-footcontact a { color: rgba(255, 255, 255, 0.86); text-decoration: none; }
/* Long email addresses wrap inside the column (after the @, else anywhere). */
.e-con.lb-foot__col { min-width: 0; }
.lb-footcontact a { overflow-wrap: anywhere; }
.lb-footcontact a:hover { color: #FFFFFF; text-decoration: underline; }

.lb-footlinks { margin: 0; padding: 0; list-style: none; display: grid; gap: 0.55rem; font-size: var(--lb-text-sm); }
.lb-footlinks a { color: rgba(255, 255, 255, 0.86); text-decoration: none; }
.lb-footlinks a:hover { color: #FFFFFF; }

.lb-foot .lb-nav-foot .elementor-nav-menu a.elementor-item { padding: 0.3rem 0; color: rgba(255, 255, 255, 0.86); font-size: var(--lb-text-sm); font-family: var(--lb-font-text); }
.lb-foot .lb-nav-foot .elementor-nav-menu a.elementor-item:hover { color: #FFFFFF; }
.lb-foot .lb-nav-foot .elementor-item::before,
.lb-foot .lb-nav-foot .elementor-item::after { display: none !important; }

.lb-foot__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--lb-space-sm);
	margin-top: var(--lb-space-lg);
	padding-top: var(--lb-space-md);
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	font-size: var(--lb-text-xs);
	color: rgba(255, 255, 255, 0.55);
}

/* Copyright, then the site credit under it: the quietest line on the page.
   The underline draws in on hover and keyboard focus. */
.lb-foot__legal { display: flex; flex-direction: column; gap: 0.35rem; }
.lb-credit { font-size: var(--lb-text-2xs); letter-spacing: 0.02em; color: rgba(255, 255, 255, 0.45); }
.lb-credit a { position: relative; color: rgba(255, 255, 255, 0.72); font-weight: var(--lb-weight-semibold); text-decoration: none; }
.lb-credit a::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: -2px;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.35s var(--lb-ease);
}
.lb-credit a:is(:hover, :focus-visible) { color: #FFFFFF; }
.lb-credit a:is(:hover, :focus-visible)::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .lb-credit a::after { transition: none; } }

.lb-foot__bottom a { color: rgba(255, 255, 255, 0.75); text-decoration: none; }
.lb-foot__bottom a:hover { color: #FFFFFF; }
.lb-foot__bottom nav { display: flex; flex-wrap: wrap; align-items: center; gap: 1.1rem; }

.lb-foot__bottom a.lb-foot__portal {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.35rem 0.9rem;
	border: 1px solid rgba(255, 255, 255, 0.3);
	border-radius: var(--lb-radius-pill);
	color: #FFFFFF;
	font-weight: var(--lb-weight-bold);
	transition: background-color var(--lb-duration) var(--lb-ease), border-color var(--lb-duration) var(--lb-ease);
}

.lb-foot__bottom a.lb-foot__portal:hover { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.55); }

.lb-mark--eho svg { width: 2.2rem; height: 2.2rem; flex: none; color: rgba(255, 255, 255, 0.82); }

/* --- Split: image and text side by side (Elementor containers) ---------- */

.e-con.lb-split {
	--display: grid;
	--column-gap: clamp(2.5rem, 6vw, 6rem);
	--row-gap: var(--lb-space-xl);
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: var(--lb-space-xl) clamp(2.5rem, 6vw, 6rem);
}

@media (min-width: 900px) { .e-con.lb-split { grid-template-columns: 1fr 1fr; } }

.e-con.lb-stack {
	--flex-direction: column;
	--row-gap: var(--lb-space-sm);
	--padding-left: 0px;
	--padding-right: 0px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	flex-direction: column;
	gap: var(--lb-space-sm);
	padding: 0;
}

/* Photo slot with the same frame treatment as the portrait. */
.lb-photo img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: var(--lb-radius-lg);
}

/* Checklist written in an HTML widget. */
.lb-checks { margin: var(--lb-space-md) 0 0; padding: 0; list-style: none; display: grid; gap: 0.7rem; }
.lb-checks li { display: grid; grid-template-columns: 1.6rem 1fr; gap: 0.6rem; }
.lb-checks li::before {
	content: '';
	width: 1.35rem;
	height: 1.35rem;
	margin-top: 0.15rem;
	border-radius: 50%;
	background: var(--lb-accent-tint) var(--lb-check-icon) center / 0.85rem no-repeat;
}

/* --- Elementor: kill the default max-width on boxed containers that sit
   inside our own container, which otherwise double-constrains them. ----- */
.e-con.lb-container > .e-con-inner { max-width: none; padding: 0; }

/* --- Gravity Forms, a touch rounder to match. ----------------------------- */
.lb-form .gform_wrapper input[type="text"],
.lb-form .gform_wrapper input[type="email"],
.lb-form .gform_wrapper input[type="tel"],
.lb-form .gform_wrapper input[type="number"],
.lb-form .gform_wrapper select,
.lb-form .gform_wrapper textarea { border-radius: var(--lb-radius); padding: 0.8em 1em; }

.lb-form .gform_wrapper .gform_footer input[type="submit"],
.lb-form .gform_wrapper .gform_page_footer input[type="button"],
.lb-form .gform_wrapper .gform_page_footer input[type="submit"] {
	border-radius: var(--lb-radius-pill);
	padding: 1em 2.2em;
	font-weight: var(--lb-weight-bold);
	background-color: var(--lb-accent);
	border: 1px solid var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-panel { border-radius: var(--lb-radius-lg); }

/* --- Gravity Forms: full theme ------------------------------------------
   Every form the theme places ([agent_form]) sits in .lb-form. These rules
   out-rank Gravity Forms' own theme (.gform_wrapper.gravity-theme ...) by one
   class, so a form looks like the site whatever GF version renders it. */

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) {
	--lb-field-h: 3.25rem;
	margin: 0;
	font-family: var(--lb-font-text);
	color: var(--lb-ink);
	text-align: left;
}

.lb-form__head { margin: 0 0 var(--lb-space-md); }
.lb-form__title { margin: 0; font-family: var(--lb-font-display); font-size: var(--lb-display-sm); line-height: 1.15; color: var(--lb-ink-deep); }
.lb-form__intro { margin: 0.4rem 0 0; font-size: var(--lb-text-sm); color: var(--lb-ash); max-width: none; }

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_heading { margin: 0; padding: 0; }
/* The asterisk key stays for screen readers; sighted users read the asterisks. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_required_legend {
	position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}

/* Steps: numbered, named, with the current one in accent. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_page_steps {
	display: flex;
	gap: var(--lb-space-sm);
	margin: 0 0 var(--lb-space-md);
	padding: 0 0 var(--lb-space-sm);
	border-bottom: var(--lb-hairline);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	height: auto;
	opacity: 1;
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ash);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_number {
	display: inline-grid;
	place-items: center;
	width: 1.75rem;
	height: 1.75rem;
	border: 1px solid var(--lb-rule);
	border-radius: 50%;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
	color: var(--lb-ash);
	background: transparent;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_label { padding: 0; font-size: inherit; color: inherit; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_active { color: var(--lb-ink-deep); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_active .gf_step_number { background: var(--lb-accent); border-color: var(--lb-accent); color: var(--lb-on-accent); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_completed .gf_step_number { background: var(--lb-accent-tint); border-color: var(--lb-accent-tint); color: var(--lb-accent-hover); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_completed .gf_step_number::before,
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_completed .gf_step_number::after { display: none; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_clear { display: none; }

/* A percentage bar, if a form uses one: a thin accent rule, no number. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_progressbar_title { margin: 0 0 0.4rem; font-size: var(--lb-text-xs); font-weight: var(--lb-weight-bold); letter-spacing: var(--lb-tracking-label); text-transform: uppercase; color: var(--lb-ash); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_progressbar { height: 4px; margin: 0 0 var(--lb-space-md); padding: 0; border-radius: var(--lb-radius-pill); background: var(--lb-mist); box-shadow: none; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_progressbar_percentage { height: 4px; border-radius: var(--lb-radius-pill); background: var(--lb-accent); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_progressbar_percentage span { display: none; }

/* Fields */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_fields { row-gap: var(--lb-space-sm); column-gap: var(--lb-space-sm); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield { margin: 0; padding: 0; }

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_label,
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) legend.gfield_label {
	display: block;
	margin: 0 0 0.4rem;
	padding: 0;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
	text-align: left;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_required { margin-left: 0.15em; padding: 0; color: var(--lb-accent-text); font-size: inherit; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_required .gfield_required { margin: 0; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_required_text { font-size: var(--lb-text-2xs); font-weight: var(--lb-weight-regular); color: var(--lb-ash); }

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_description,
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform-field-label--type-sub {
	padding: 0.35rem 0 0;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-regular);
	color: var(--lb-ash);
}

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="url"], input[type="password"], select, textarea) {
	width: 100%;
	min-height: var(--lb-field-h);
	margin: 0;
	padding: 0.75rem 1rem;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	line-height: 1.3;
	color: var(--lb-ink-deep);
	background-color: var(--lb-paper, #FFFFFF);
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius);
	box-shadow: none;
	transition: border-color var(--lb-duration) var(--lb-ease), box-shadow var(--lb-duration) var(--lb-ease);
}
/* One height for every single-line control, whatever size the form set (small/medium/large). */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]), select) {
	width: 100%;
	max-width: none;
	height: var(--lb-field-h);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) textarea { min-height: 8rem; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) ::placeholder { color: var(--lb-ash); opacity: 0.8; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(input, select, textarea):hover { border-color: color-mix(in srgb, var(--lb-ink) 35%, transparent); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(input, select, textarea):focus {
	outline: none;
	border-color: var(--lb-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--lb-accent) 16%, transparent);
}

.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) select {
	-webkit-appearance: none;
	appearance: none;
	padding-right: 2.5rem;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.9rem center;
	background-size: 1rem;
	cursor: pointer;
	text-overflow: ellipsis;
}

/* Name: First / Last side by side, labels under. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex { display: grid; grid-template-columns: 1fr 1fr; gap: var(--lb-space-sm); margin: 0; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex > span { width: auto; max-width: none; margin: 0; padding: 0; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) fieldset.gfield { border: 0; }

/* Address: street across the top, then City | State | ZIP. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_container_address { grid-template-columns: minmax(0, 2fr) minmax(0, 1.4fr) minmax(0, 1fr); row-gap: var(--lb-space-xs); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex > .ginput_full { grid-column: 1 / -1; }
/* GF's theme spaces address parts with percentage padding and negative margins; the grid gap does that job here. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex.ginput_container_address { margin: 0; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex.ginput_container_address > span.gform-grid-col { width: auto; max-width: none; margin: 0; padding: 0; flex: none; }

/* Google's address suggestions, dressed to match the fields. */
.pac-container {
	margin-top: 4px;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius);
	box-shadow: 0 12px 32px rgba(20, 24, 22, 0.12);
	font-family: var(--lb-font-text);
	z-index: 100000;
}
.pac-container::after { margin: 0.25rem 0.5rem; }
.pac-item { padding: 0.55rem 0.9rem; border-top-color: var(--lb-mist); font-size: var(--lb-text-sm); color: var(--lb-ash); cursor: pointer; }
.pac-item:first-child { border-top: 0; }
.pac-item:hover,
.pac-item-selected { background: var(--lb-mist); }
.pac-item-query { font-size: var(--lb-text-sm); color: var(--lb-ink-deep); }
.pac-matched { font-weight: var(--lb-weight-bold); }

/* Consent: a real checkbox in the accent, the legal text readable but quiet. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield--type-consent legend.gfield_label {
	position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_container_consent { display: grid; grid-template-columns: auto 1fr; gap: 0.75rem; align-items: start; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(.ginput_container_consent, .gfield_checkbox, .gfield_radio) input:is([type="checkbox"], [type="radio"]) {
	width: 1.15rem; height: 1.15rem; margin: 0.15rem 0 0; accent-color: var(--lb-accent); cursor: pointer;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_consent_label {
	margin: 0;
	font-size: var(--lb-text-xs);
	line-height: 1.55;
	font-weight: var(--lb-weight-regular);
	color: var(--lb-ash);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_consent_label a { color: var(--lb-ink-deep); text-decoration: underline; text-underline-offset: 2px; }

/* Buttons: primary fills the row; Previous is a quiet outline beside it. */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(.gform_footer, .gform_page_footer) {
	display: flex;
	gap: var(--lb-space-sm);
	margin: var(--lb-space-md) 0 0;
	padding: 0;
	border: 0;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(.gform_footer, .gform_page_footer) :is(input[type="submit"], input[type="button"], button) {
	flex: 1 1 auto;
	min-height: var(--lb-field-h);
	margin: 0;
	padding: 0.9rem 1.8rem;
	font-family: var(--lb-font-text);
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-bold);
	line-height: 1;
	color: var(--lb-on-accent);
	background: var(--lb-accent);
	border: 1px solid var(--lb-accent);
	border-radius: var(--lb-radius-pill);
	box-shadow: none;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease), border-color var(--lb-duration) var(--lb-ease);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(.gform_footer, .gform_page_footer) :is(input[type="submit"], input[type="button"], button):is(:hover, :focus-visible) {
	background: var(--lb-accent-hover);
	border-color: var(--lb-accent-hover);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_page_footer :is(input, button).gform_previous_button {
	flex: 0 0 auto;
	color: var(--lb-ink-deep);
	background: transparent;
	border-color: var(--lb-rule);
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_page_footer :is(input, button).gform_previous_button:is(:hover, :focus-visible) { color: var(--lb-ink-deep); background: var(--lb-mist); border-color: var(--lb-rule); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) :is(.gform_footer, .gform_page_footer) :focus-visible { outline: 2px solid var(--lb-accent); outline-offset: 2px; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_ajax_spinner { align-self: center; width: 1.25rem; height: 1.25rem; }

/* Validation */
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_validation_errors {
	margin: 0 0 var(--lb-space-md);
	padding: var(--lb-space-sm) var(--lb-space-md);
	border: 1px solid color-mix(in srgb, #B42318 30%, transparent);
	border-radius: var(--lb-radius);
	background: #FEF3F2;
	box-shadow: none;
}
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_validation_errors > h2 { margin: 0; font-family: var(--lb-font-text); font-size: var(--lb-text-sm); font-weight: var(--lb-weight-semibold); color: #B42318; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gform_validation_errors > h2 .gform-icon { display: none; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_error :is(input, select, textarea) { border-color: #B42318; }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_error .gfield_label { color: var(--lb-ink-deep); }
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gfield_validation_message,
.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .validation_message {
	margin: 0.35rem 0 0;
	padding: 0;
	font-size: var(--lb-text-xs);
	color: #B42318;
	background: none;
	border: 0;
}

/* Thank-you message, when a form confirms in place. */
.lb-form .gform_confirmation_message {
	padding: var(--lb-space-md) var(--lb-space-md) var(--lb-space-md) 3.25rem;
	border-radius: var(--lb-radius);
	background: var(--lb-accent-tint) var(--lb-check-icon) 1.1rem 1.15rem / 1.3rem no-repeat;
	color: var(--lb-ink-deep);
	font-size: var(--lb-text-base);
}

@media (max-width: 479px) {
	.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_complex { grid-template-columns: 1fr; }
	.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_container_address { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
	.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .ginput_container_address .address_city { grid-column: 1 / -1; }
	.lb-form .gform_wrapper:is(.gravity-theme, .gform-theme) .gf_step_label { font-size: var(--lb-text-xs); }
}

/* --- Reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
	.lb-js .lb-hero__heading em { background-size: 100% 2px; animation: none; }
	.lb-js .lb-hero--home .lb-hero__eyebrow,
	.lb-js .lb-hero--home .lb-hero__heading,
	.lb-js .lb-hero--home .lb-hero__sub,
	.lb-js .lb-hero--home .lb-finder,
	.lb-js .lb-hero__card { animation: none; }
	.lb-hero__scroll span { animation: none; }
	.lb-service-card:hover,
	.lb-listing:hover { transform: none; }
}

/* --- Template notice (lbagent3 only) ------------------------------------- */
.lb-template-note {
	position: fixed;
	left: 50%;
	bottom: 1rem;
	z-index: 95;
	transform: translateX(-50%);
	width: max-content;
	max-width: calc(100vw - 2rem);
	padding: 0.55rem 1.1rem;
	border-radius: var(--lb-radius-pill);
	background: rgba(18, 24, 22, 0.88);
	color: rgba(255, 255, 255, 0.88);
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-semibold);
	text-align: center;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	pointer-events: none;
}

@media (max-width: 979px) { .lb-has-actionbar .lb-template-note { bottom: calc(4.4rem + env(safe-area-inset-bottom, 0px)); } }

/* --- Header pieces  [agent_brand] [agent_head_actions] ------------------- */

.lb-brand { position: relative; }
.lb-brand .lb-brand__name { margin: 0; font-size: 1.75rem; line-height: 1; }
.lb-brand .lb-brand__meta { margin: 0.2rem 0 0; font-size: var(--lb-text-2xs); font-weight: var(--lb-weight-semibold); letter-spacing: 0.04em; }

.lb-head__actions { display: flex; align-items: center; gap: var(--lb-space-md); }

.lb-head__phone {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	text-decoration: none;
	font-weight: var(--lb-weight-bold);
}

.lb-head__phone .lb-icon { width: 1.05em; height: 1.05em; }

.lb-head__cta { padding: 0.85em 1.4em; font-size: var(--lb-text-sm); }

.lb-has-hero:not(.lb-scrolled) .lb-head__cta {
	background-color: #FFFFFF;
	border-color: #FFFFFF;
	color: var(--lb-ink-deep);
}

.lb-has-hero:not(.lb-scrolled) .lb-head__cta:hover { background-color: var(--lb-accent); border-color: var(--lb-accent); color: #FFFFFF; }

@media (max-width: 599px) { .lb-head__cta { display: none; } }

/* Logo mode (Pro Settings > Header shows > My logo). [agent_brand] prints
   the white and regular logos plus the wordmark; the header state shows one.
   The wordmark stands in wherever the variant a state needs is missing. */
.lb-brand--logo .lb-brand__logo { display: block; }

/* Up to 3.75rem tall and 16rem wide (13rem below 1200px), whichever comes
   first: squarish marks and stacked logos get their height, long wordmarks
   their width. */
.lb-brand--logo .lb-brand__img {
	display: none;
	width: auto;
	height: auto;
	max-height: 3.75rem;
	max-width: 16rem;
}

@media (max-width: 1199px) {
	.lb-brand--logo .lb-brand__img { max-width: 13rem; }
}

.lb-brand--logo .lb-brand__text { display: none; }

/* White header: the regular logo, else the wordmark. */
.lb-brand--has-dark .lb-brand__img--dark { display: block; }
.lb-brand--logo:not(.lb-brand--has-dark) .lb-brand__text { display: block; }
.lb-brand--logo:not(.lb-brand--has-dark) .lb-brand__logo { display: none; }

/* Over the hero: the white logo, else the wordmark. */
.lb-has-hero:not(.lb-scrolled) .lb-brand--logo .lb-brand__img--dark { display: none; }
.lb-has-hero:not(.lb-scrolled) .lb-brand--has-light .lb-brand__logo { display: block; }
.lb-has-hero:not(.lb-scrolled) .lb-brand--has-light .lb-brand__img--light { display: block; }
.lb-has-hero:not(.lb-scrolled) .lb-brand--has-light .lb-brand__text { display: none; }
.lb-has-hero:not(.lb-scrolled) .lb-brand--logo:not(.lb-brand--has-light) .lb-brand__text { display: block; }
.lb-has-hero:not(.lb-scrolled) .lb-brand--logo:not(.lb-brand--has-light) .lb-brand__logo { display: none; }

@media (max-width: 600px) {
	.lb-brand--logo .lb-brand__img {
		max-height: 2.75rem;
		max-width: 11rem;
	}
}

/* With a logo the bar trims its padding, so a 3.75rem logo keeps the
   header at its 4.75rem height. */
.e-con.lb-head__bar:has(.lb-brand--logo) { --padding-top: 0.5rem; --padding-bottom: 0.5rem; padding-block: 0.5rem; }

/* The shortcode widgets that carry these must not add their own box. */
.lb-head .elementor-widget-shortcode,
.lb-head .elementor-shortcode { width: auto; }

/* --- Footer value prompt ------------------------------------------------- */

.lb-footvalue__text { margin: 0 0 var(--lb-space-sm); font-size: var(--lb-text-sm); color: rgba(255, 255, 255, 0.72); }
.lb-search--footer { box-shadow: none; border-color: transparent; padding: 0.3rem 0.3rem 0.3rem 0.9rem; }
.lb-search--footer .lb-search__input,
.lb-search--footer .lb-search__go { height: 2.75rem; }
.lb-search--footer .lb-search__go { padding: 0 1.1rem; }
/* The footer column is narrow: address on one line, the button under it. */
.lb-search--footer { flex-wrap: wrap; border-radius: var(--lb-radius-lg); padding: 0.35rem 0.35rem 0.35rem 0.9rem; }
.lb-search--footer .lb-search__input { flex: 1 1 0; min-width: 0; }
.lb-search--footer .lb-search__go { flex: 1 1 100%; justify-content: center; margin-left: -0.55rem; }

/* --- Guide index  [agent_children] --------------------------------------- */

.lb-guide {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
	gap: 0 var(--lb-space-lg);
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: var(--lb-hairline);
}

.lb-guide li { border-bottom: var(--lb-hairline); }

.lb-guide__item {
	display: grid;
	grid-template-columns: 2.75rem 1fr auto;
	align-items: center;
	gap: 0.75rem;
	padding: 1.15rem 0;
	color: var(--lb-ink-deep);
	text-decoration: none;
}

.lb-guide__num { font-family: var(--lb-font-display); font-size: 1.75rem; line-height: 1; color: var(--lb-accent-text); }
.lb-guide__title { font-weight: var(--lb-weight-bold); line-height: 1.3; }
.lb-guide__item .lb-icon { color: var(--lb-ash); transition: transform var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease); }
.lb-guide__item:hover { color: var(--lb-accent-text); }
.lb-guide__item:hover .lb-icon { transform: translateX(4px); color: var(--lb-accent-text); }

/* --- Section modifiers used by the page layouts --------------------------- */

.e-con.lb-section--tight {
	--padding-top: var(--lb-space-xl);
	--padding-bottom: var(--lb-space-xl);
	padding-block: var(--lb-space-xl);
}

.e-con.lb-section--flush-top {
	--padding-top: var(--lb-space-lg);
	padding-top: var(--lb-space-lg);
}

.e-con.lb-split--top { align-items: start; }

/* The intro sits on paper with the figures directly under it; give the
   portrait's offset frame room so it does not touch the band. */
.e-con.lb-host + .e-con.lb-section--ink { margin-top: 0; }

/* --- Promise grid (About) -------------------------------------------------- */

.lb-promise {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: var(--lb-space-lg) var(--lb-space-xl);
	counter-reset: lb-pr;
}

.lb-promise > div {
	counter-increment: lb-pr;
	padding-top: var(--lb-space-md);
	border-top: var(--lb-hairline);
}

.lb-promise > div::before {
	content: counter(lb-pr, decimal-leading-zero);
	display: block;
	margin-bottom: var(--lb-space-sm);
	font-family: var(--lb-font-display);
	font-size: 2rem;
	line-height: 1;
	color: var(--lb-accent-text);
}

.lb-promise h3 { margin: 0 0 var(--lb-space-2xs); font-family: var(--lb-font-text); font-size: var(--lb-text-lg); font-weight: var(--lb-weight-bold); letter-spacing: 0; }
.lb-promise p { margin: 0; color: var(--lb-ash); font-size: var(--lb-text-sm); }

/* --- Header bar alignment --------------------------------------------------- */

.e-con.lb-head__bar { --min-height: var(--lb-head-h); min-height: var(--lb-head-h); }
.e-con.lb-head__bar > .elementor-widget-nav-menu { margin-left: auto; }
.e-con.lb-head__bar > .elementor-widget { flex: 0 0 auto; }

@media (max-width: 1024px) {
	/* Burger sits at the far right, after the actions. */
	.e-con.lb-head__bar > .elementor-widget-nav-menu { order: 3; margin-left: 0; }
	.e-con.lb-head__bar > .lb-head__right { margin-left: auto; }
}

@media (max-width: 1024px) {
	/* A long company name must not push the burger off screen: the brand
	   gives way first, its lines ending in an ellipsis. */
	.e-con.lb-head__bar > .lb-head__brand { flex: 0 1 auto; min-width: 0; overflow: hidden; }
	.lb-head__brand :is(.lb-brand__name, .lb-brand__meta) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

@media (max-width: 979px) {
	.lb-head__phone span { display: none; }
	.lb-head__phone {
		width: 2.6rem;
		height: 2.6rem;
		justify-content: center;
		border: 1px solid var(--lb-rule);
		border-radius: 50%;
	}
	.lb-has-hero:not(.lb-scrolled) .lb-head__phone { border-color: rgba(255, 255, 255, 0.4); }
}

/* Lender rule hid the phone under 980px; here it becomes an icon instead. */
@media (max-width: 979px) { .lb-head__phone { display: inline-flex; } }

/* Footer brand column takes more room on wide screens. */
@media (min-width: 1100px) {
	.e-con.lb-foot__grid { grid-template-columns: 1.35fr 0.8fr 1.5fr 1.25fr; }
}


/* --- Fixes from the first visual pass ------------------------------------ */

/* Elementor's kit colours every heading widget; on the ink bands the plain
   part of a heading rendered dark-on-dark, leaving only the <em> visible. */
.lb-section--ink .elementor-widget-heading .elementor-heading-title,
.lb-section--ink .elementor-widget-text-editor { color: #FFFFFF; }
.lb-section--ink .lb-lead,
.lb-section--ink .elementor-widget-text-editor.lb-lead { color: rgba(255, 255, 255, 0.72); }

/* Hello's reset gives every input a border and focus ring; the pill owns both. */
.lb-search input.lb-search__input,
.lb-search input.lb-search__input:focus,
.lb-search input.lb-search__input:focus-visible {
	border: 0;
	outline: 0;
	box-shadow: none;
	border-radius: 0;
	background: transparent;
}

/* A split heading's link stays on one line. */
.e-con.lb-heading--split > .elementor-widget-shortcode { flex: none; white-space: nowrap; }

/* --- Home Value plugin, restyled to the search pill ---------------------- */

.lb-valuepanel { padding: clamp(1.5rem, 3vw, 2.5rem); box-shadow: var(--lb-shadow-lift); border: 0; }
.lb-valuepanel__title { margin: 0; font-family: var(--lb-font-display); font-size: 2rem; line-height: 1.05; color: var(--lb-ink-deep); }
.lb-valuepanel__note { margin: 0.5rem 0 var(--lb-space-md); font-size: var(--lb-text-sm); color: var(--lb-ash); }

.lb-idx--value form {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0;
}

.lb-idx--value .form_item label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.lb-idx--value .form_item.address { flex: 1 1 16rem; }

.lb-idx--value input.address {
	width: 100%;
	height: 3.4rem;
	padding: 0 1.2rem;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius-pill);
	background: var(--lb-paper);
	font: inherit;
	font-size: var(--lb-text-base);
	color: var(--lb-ink-deep);
}

.lb-idx--value input.address:focus {
	outline: 0;
	border-color: var(--lb-accent);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 18%, transparent);
}

.lb-idx--value input[type="submit"],
.lb-idx--value input[type="submit"]:hover,
.lb-idx--value input[type="submit"]:focus {
	height: 3.4rem;
	padding: 0 1.8rem;
	border: 0;
	border-radius: var(--lb-radius-pill);
	background: var(--lb-accent);
	color: var(--lb-on-accent);
	font: inherit;
	font-weight: var(--lb-weight-bold);
	font-size: var(--lb-text-sm);
	cursor: pointer;
}

.lb-idx--value input[type="submit"]:hover { background: var(--lb-accent-hover); }

@media (max-width: 599px) { .lb-idx--value .form_item_submit, .lb-idx--value input[type="submit"] { width: 100%; } }

/* --- Page head aligns with the content column ---------------------------- */
.lb-pagehead { padding-inline: 0; }
.lb-pagehead__inner { padding-inline: var(--lb-gutter); }

/* --- Disclosure spans the footer; its paragraphs keep a reading measure. -- */
.lb-foot .lb-disclosure { max-width: none; }
.lb-foot .lb-disclosure p { max-width: 110ch; }

/* --- No sideways scroll on phones ----------------------------------------
   The licence line was nowrap (inherited from the lender NMLS mark) and a
   long brokerage name pushed the page to 568px wide at a 390px viewport.
   `clip` rather than `hidden`: it does not create a scroll container, so the
   sticky header keeps working. */
.lb-marks { flex-wrap: wrap; }
.lb-mark--license,
.lb-mark__text { white-space: normal; }
html, body { overflow-x: clip; }

/* ==========================================================================
   DESKTOP DROPDOWNS

   SmartMenus writes `width: auto; min-width: 10em` inline on every open
   panel. Inline beats the min-width above, and an auto width on an absolute
   box shrinks to its parent item, so "Knowledge Center" opened a 170px panel
   with every label wrapped. The panel is sized to its content instead, with
   labels on one line and descriptions (functions.php) wrapping under them.

   Elementor also gives these panels `elementor-nav-menu--dropdown`, the phone
   menu's class, which is where the hairline under each item came from.
   ========================================================================== */

@media (min-width: 1025px) {
	.lb-nav .elementor-nav-menu--main .sub-menu {
		width: max-content !important;
		min-width: 15rem !important;
		max-width: min(24rem, calc(100vw - 2rem)) !important;
		margin-top: 0.4rem !important;
		padding: 0.4rem;
		border: var(--lb-hairline);
		border-top: 2px solid var(--lb-accent);
		border-radius: 0 0 var(--lb-radius) var(--lb-radius);
		box-shadow: 0 12px 32px rgba(15, 27, 45, 0.14), 0 2px 6px rgba(15, 27, 45, 0.06);
	}

	/* Bridges the gap above the panel, so the pointer can travel into it
	   without the menu closing. */
	.lb-nav .elementor-nav-menu--main .sub-menu::before {
		content: '';
		position: absolute;
		left: 0;
		right: 0;
		bottom: 100%;
		height: calc(0.4rem + 2px);
	}

	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item,
	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:hover,
	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:focus,
	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item.highlighted {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 0.15rem;
		padding: 0.7em 1em;
		border: 0;
		border-radius: calc(var(--lb-radius) - 1px);
		font-size: var(--lb-text-sm);
		font-weight: var(--lb-weight-medium);
		line-height: 1.3;
		white-space: nowrap;
	}

	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item { color: var(--lb-ink-deep); }

	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:hover,
	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:focus-visible,
	.lb-nav .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item.elementor-item-active {
		background-color: var(--lb-mist);
		color: var(--lb-accent-text);
	}

	.lb-nav .lb-sub-desc {
		font-size: var(--lb-text-xs);
		font-weight: var(--lb-weight-regular);
		line-height: 1.4;
		color: var(--lb-ash);
		white-space: normal;
		text-wrap: pretty;
	}
}

/* The phone menu stays a compact list. */
.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container .lb-sub-desc { display: none; }

/* ==========================================================================
   MOBILE MENU

   Ported from LB Lender 1, where the same Elementor menu had the same faults.
   Elementor swaps the inline menu for the burger at its tablet breakpoint
   (1024px; the widget carries `--dropdown-tablet`).

   1. The desktop row rule `.lb-nav .elementor-nav-menu { display: flex }`
      also matches the <ul> inside the phone panel, so the panel opened as a
      sideways strip. Its list is put back to a column.
   2. Parents get a separate open/close toggle - SmartMenus' own .sub-arrow,
      which the desktop rules hide. A tap on the label opens on the first tap
      and follows the link on the second, so a chevron painted on the label
      made "tap to close" a link click.
   ========================================================================== */

@media (max-width: 1024px) {
	/* The panel. Elementor's "stretch" setting already hangs it full width
	   under the header on this design, so only its scrolling is added: it
	   scrolls on its own if the menu is taller than the space above the
	   action bar. */
	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container {
		z-index: 80;
		max-height: calc(100dvh - 9rem);
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.lb-nav .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
		visibility: hidden;
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container > .elementor-nav-menu {
		display: block;
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container li {
		display: block;
		width: 100%;
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-item,
	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-sub-item {
		display: flex;
		align-items: center;
		width: 100%;
		min-height: 3.25rem;
		box-sizing: border-box;
		white-space: normal;
		justify-content: flex-start;
	}

	/* Parents get a separate toggle on the right. It is SmartMenus' own
	   `.sub-arrow`, which the desktop rules hide: SmartMenus treats a tap on
	   it as open/close and never follows the link, whereas a tap on the
	   label opens on the first tap and NAVIGATES on the second. The chevron
	   used to be painted on the label, so "tap the up arrow to close" was a
	   second tap on the link. Out of flow inside the anchor, so it cannot
	   change the row's width. */
	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container li.menu-item-has-children > a {
		position: relative;
		padding-inline-end: calc(var(--lb-gutter) * 2 + 1.5rem);
		background-image: none;
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container .sub-arrow {
		display: block !important;
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		width: calc(var(--lb-gutter) * 2 + 0.8rem);
		margin: 0;
		padding: 0;
		border-inline-start: var(--lb-hairline);
		background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%230F1B2D' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 0.8rem 0.5rem;
		cursor: pointer;
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container .sub-arrow svg { display: none; }

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container a.highlighted > .sub-arrow {
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 5l4-4 4 4' fill='none' stroke='%230F1B2D' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container li.menu-item-has-children > a.highlighted {
		background-color: var(--lb-mist);
	}

	/* Children: an indented list on a tinted band, in the flow. */
	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container .sub-menu {
		position: static !important;
		width: 100% !important;
		max-width: none;
		margin: 0 !important;
		padding: 0;
		border: 0;
		border-radius: 0;
		box-shadow: none;
		background-color: var(--lb-mist);
	}

	.lb-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container a.elementor-sub-item {
		min-height: 2.9rem;
		color: var(--lb-ink);
	}
}

/* ==========================================================================
   SHOWCASE IDX PAGES

   The search app (/properties/) and the listing, map and account screens
   under it. template-parts/single.php gives them this frame instead of the
   article layout, which boxed the app into a 750px prose column beside an
   empty sidebar - one listing card beside a map that overflowed its panel.
   ========================================================================== */

.lb-idx-page {
	max-width: calc(var(--lb-container) + var(--lb-gutter) * 2);
	margin-inline: auto;
	padding: var(--lb-space-lg) var(--lb-gutter) var(--lb-space-2xl);
}

/* Showcase's screens (search, listings, dashboard, saved searches...) open on
   the app itself, with its own headings and account links, so the page head
   band is hidden. Visually only: the heading stays for screen readers. */
.lb-single--idx .lb-pagehead {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* --- Hero search, live ---------------------------------------------------
   [agent_idx_search context="hero"] renders Showcase's streamlined bar (hide=
   "beds,baths,price,streamlined": location field and button). Dressed here as
   the .lb-search pill the Sell tab uses, so Buy and Sell are one control.
   Showcase's own styles are forceful, hence the !important on its parts. */
.lb-finder .lb-idx--hero {
	padding: 0;
	background: none;
	border-radius: 0;
	box-shadow: none;
}

.lb-idx--hero .sidx-basic {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	gap: 0.25rem;
	width: auto !important;
	max-width: 44rem;
	margin: 0 !important;
	padding: 0.4rem 0.4rem 0.4rem 1.1rem !important;
	background: var(--lb-surface);
	border: 1px solid transparent;
	border-radius: var(--lb-radius-pill);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}

.lb-idx--hero .sidx-basic:focus-within {
	border-color: var(--lb-accent);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 18%, transparent), 0 24px 60px rgba(0, 0, 0, 0.28);
}

.lb-idx--hero .sidx-locations-field-wrapper {
	flex: 1 1 auto !important;
	min-width: 0;
	width: auto !important;
	margin: 0 !important;
}

.lb-idx--hero .sidx-suggestions-input {
	align-items: center;
	min-height: 3.25rem;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: var(--lb-ash);
}

.lb-idx--hero .sidx-suggestions-input input,
.lb-idx--hero .sidx-suggestions-input input:focus {
	height: 3.25rem;
	padding: 0 0.5rem !important;
	border: 0 !important;
	outline: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-base) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx--hero .sidx-suggestions-input input::placeholder { color: color-mix(in srgb, var(--lb-ash) 80%, transparent); }

.lb-idx--hero button.sidx-primary {
	flex: none !important;
	width: auto !important;
	height: 3.25rem !important;
	margin: 0 !important;
	padding: 0 1.6rem !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background-color: var(--lb-accent) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	white-space: nowrap;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

.lb-idx--hero button.sidx-primary:hover,
.lb-idx--hero button.sidx-primary:focus-visible { background-color: var(--lb-accent-hover) !important; }

/* Showcase's button is an icon; the pill beside it says what it does. */
.lb-idx--hero button.sidx-primary .sidx-icon { display: none !important; }
.lb-idx--hero button.sidx-primary::after { content: 'Search'; }

.lb-idx--hero .sidx-save-search-pill { display: none !important; }

@media (max-width: 599px) {
	.lb-idx--hero .sidx-basic {
		flex-wrap: wrap !important;
		border-radius: var(--lb-radius-lg);
		padding: 0.5rem !important;
	}

	.lb-idx--hero .sidx-locations-field-wrapper { flex-basis: 100% !important; }
	.lb-idx--hero .sidx-suggestions-input .sidx-icon { display: none !important; }
	.lb-idx--hero .sidx-suggestions-input input { height: 3rem; padding: 0 0.75rem !important; }
	.lb-idx--hero button.sidx-primary { flex: 1 1 100% !important; }
}

/* ==========================================================================
   SHOWCASE IDX, STYLED

   Showcase renders its app client-side with its own stylesheet. Everything
   here is scoped to our wrappers (.lb-idx-page for the app pages, .lb-idx for
   widgets placed with [agent_idx_*]) and leans on !important only where
   Showcase's own rules would otherwise win.
   ========================================================================== */

:is(.lb-idx-page, .lb-idx) .sidx-container,
:is(.lb-idx-page, .lb-idx) .sidx-container button,
:is(.lb-idx-page, .lb-idx) .sidx-container input,
:is(.lb-idx-page, .lb-idx) .sidx-container select {
	font-family: var(--lb-font-text);
	color: var(--lb-ink);
}

/* --- Search page: full-bleed app ----------------------------------------
   Map and results fill the screen under one toolbar. :has() rather than a
   body class because Showcase moves between its screens client-side. */

.lb-idx-page:has(.sidx-search-grid) {
	max-width: none;
	padding: 0;
}

.lb-idx-page:has(.sidx-search-grid) .sidx-main-app-body {
	padding: 0 !important;
	background: var(--lb-paper);
}

.lb-idx-page .sidx-search-grid {
	grid-template-columns: minmax(0, 1fr) clamp(26rem, 44vw, 50rem) !important;
	grid-template-rows: auto minmax(0, 1fr) !important;
	height: calc(100svh - var(--lb-head-h));
	gap: 0 !important;
}

.lb-idx-page .sidx-search-grid__form {
	grid-column: 1 / -1;
	padding: var(--lb-space-sm) var(--lb-gutter);
	background: var(--lb-surface);
	border-bottom: 1px solid var(--lb-rule);
}

.lb-idx-page .sidx-search-grid__map,
.lb-idx-page .sidx-search-grid__map .sidx-map-container,
.lb-idx-page .sidx-search-grid__map .sidx-listings-map {
	height: 100% !important;
	min-height: 0;
}

.lb-idx-page .sidx-search-grid__results {
	height: 100%;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: var(--lb-space-md) var(--lb-space-md) var(--lb-space-lg);
	background: var(--lb-paper);
	border-left: 1px solid var(--lb-rule);
}

.lb-idx-page .sidx-search-results .sidx-grid {
	grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)) !important;
	gap: var(--lb-space-md) !important;
}

/* Results grids everywhere (hotsheets on community pages and the home page
   use the same card): never narrower than a card can hold its facts on one
   line. */
.lb-idx .sidx-grid {
	grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)) !important;
	gap: var(--lb-space-md) !important;
}

/* --- Search bar ---------------------------------------------------------------
   The search page's form (and [agent_idx_search] on Home Search) as one
   control, like the hero pill: location, then Price / Beds / Baths / More as
   segments on hairlines, Save search as the pill at the end. A segment tints
   while its panel is open (Showcase mounts .sidx-floating-menu only then), so
   nothing moves when a panel opens. */

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic {
	display: flex !important;
	flex-wrap: nowrap !important;
	align-items: stretch !important;
	gap: 0 !important;
	width: 100% !important;
	max-width: 62rem;
	height: 3.5rem;
	margin: 0 !important;
	padding: 0.3rem !important;
	background: var(--lb-surface);
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius-pill);
	box-shadow: 0 1px 2px rgba(18, 24, 22, 0.04), 0 8px 24px rgba(18, 24, 22, 0.06);
	box-sizing: border-box;
}

/* Every segment is centred in the bar with an explicit height; Showcase's
   wrappers are left at their natural height, since the filter panels also
   live inside them and must not be squeezed to the bar. */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic > *,
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-beds-and-baths > * {
	display: flex !important;
	align-items: center !important;
	margin: 0 !important;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-beds-and-baths {
	display: flex !important;
	gap: 0 !important;
	width: auto !important;
}

/* Showcase has the beds-and-baths group grow (flex: 2, min-width 20%) and
   the others hold 10% minimums: the spare room pooled before "More". */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic > :is(.sidx-range, .sidx-beds-and-baths, .sidx-streamlined-search) {
	flex: 0 0 auto !important;
	min-width: 0 !important;
}

/* Location: the wide segment. */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic > .sidx-locations-field-wrapper {
	flex: 1 1 auto !important;
	min-width: 12rem;
	width: auto !important;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic > .sidx-locations-field-wrapper > * { width: 100%; }

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic .sidx-suggestions-input {
	display: flex !important;
	align-items: center !important;
	gap: 0.55rem;
	height: 2.8rem;
	min-height: 0;
	padding: 0 0.9rem 0 1.1rem !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	box-shadow: none !important;
	color: var(--lb-ash);
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic .sidx-suggestions-input input {
	height: 2.6rem;
	padding: 0 !important;
	border: 0 !important;
	outline: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic .sidx-suggestions-input input::placeholder { color: color-mix(in srgb, var(--lb-ash) 85%, transparent); }

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic:focus-within { border-color: color-mix(in srgb, var(--lb-accent) 45%, var(--lb-rule)); }

/* Segments: a hairline before each, text only, a tint when hovered or open. */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths > *, .sidx-streamlined-search) {
	position: relative;
	flex: 0 0 auto !important;
	width: auto !important;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths > *, .sidx-streamlined-search)::before {
	content: '';
	position: absolute;
	left: 0;
	top: 22%;
	bottom: 22%;
	width: 1px;
	background: var(--lb-rule);
	pointer-events: none;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths) .sidx-field,
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-streamlined-toggle {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	height: 2.8rem;
	min-height: 0;
	margin: 0 0.15rem !important;
	padding: 0 1.05rem !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	box-shadow: none !important;
	color: var(--lb-ink-deep) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-semibold) !important;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

/* A chevron on Price / Beds / Baths, as More already has. */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths) .sidx-field::after {
	content: '';
	width: 0.6rem;
	height: 0.38rem;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
	opacity: 0.7;
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-streamlined-toggle * { color: inherit !important; font-size: 0.7rem !important; }
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-streamlined-toggle span { font-size: inherit !important; }

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths) .sidx-field:hover,
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths > *):has(.sidx-floating-menu) .sidx-field,
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-streamlined-toggle:hover {
	background: var(--lb-mist) !important;
}

/* Save search: the pill at the end of the bar. */
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-save-search-pill {
	flex: 0 0 auto !important;
	display: inline-flex !important;
	align-items: center;
	height: 2.8rem;
	min-height: 0;
	margin: 0 0 0 auto !important;
	padding: 0 1.4rem !important;
	background: var(--lb-accent) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-save-search-pill * { color: inherit !important; }
:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-save-search-pill:hover { background: var(--lb-accent-hover) !important; }

/* --- Filter panels --------------------------------------------------------- */

:is(.lb-idx-page, .lb-idx) .sidx-basic .sidx-floating-menu {
	margin-top: 0.6rem !important;
	padding: 0.5rem !important;
	min-width: 15rem;
	background: var(--lb-surface) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-lg) !important;
	box-shadow: 0 18px 48px rgba(18, 24, 22, 0.16), 0 0 0 1px rgba(18, 24, 22, 0.06) !important;
	overflow: hidden;
	z-index: 50 !important;
	font-family: var(--lb-font-text);
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-field-dropdown {
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
}

/* Price: Min / Max boxes, then the list. */
:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-range-inputs {
	display: flex !important;
	align-items: center;
	gap: 0.4rem;
	padding: 0.25rem 0.25rem 0.6rem !important;
	border-bottom: 1px solid var(--lb-rule);
	margin-bottom: 0.35rem;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-labeled-input {
	flex: 1 1 0;
	display: flex !important;
	flex-direction: column;
	gap: 0.05rem;
	padding: 0.4rem 0.7rem !important;
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-labeled-input.sidx-active { border-color: var(--lb-accent) !important; box-shadow: 0 0 0 3px color-mix(in srgb, var(--lb-accent) 14%, transparent); }

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-labeled-input label {
	padding: 0 !important;
	background: none !important;
	font-size: 0.6875rem !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ash) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-labeled-input input {
	width: 100% !important;
	min-width: 0;
	height: 1.5rem !important;
	padding: 0 !important;
	border: 0 !important;
	outline: 0 !important;
	box-shadow: none !important;
	background: none !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-input-dash { color: var(--lb-ash) !important; }

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-range-options { max-height: 18rem; overflow-y: auto; }

/* Showcase leaves the price list empty on small screens (typed Min / Max
   only), so the boxes lose their divider there. */
:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-range-inputs:has(+ .sidx-range-options:empty),
:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-range-inputs:last-child { border-bottom: 0; margin-bottom: 0; padding-bottom: 0.25rem !important; }

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-option {
	padding: 0.55rem 0.8rem !important;
	border-radius: var(--lb-radius) !important;
	background: none !important;
	border: 0 !important;
	font-size: var(--lb-text-sm) !important;
	color: var(--lb-ink) !important;
	cursor: pointer;
	font-variant-numeric: tabular-nums;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-option:hover { background: var(--lb-mist) !important; color: var(--lb-ink-deep) !important; }

/* Beds and baths: chips, not a tall list. */
:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-field-dropdown > .sidx-options-list {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.35rem;
	padding: 0.25rem !important;
	min-width: 15rem;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-field-dropdown > .sidx-options-list .sidx-option {
	display: flex !important;
	align-items: center;
	justify-content: center;
	height: 2.5rem;
	padding: 0 !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius-pill) !important;
	font-weight: var(--lb-weight-semibold) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-field-dropdown > .sidx-options-list .sidx-option:hover { border-color: var(--lb-ink-deep) !important; background: var(--lb-surface) !important; }

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-use-exact {
	background: none !important;
	padding: 0.5rem 0.4rem 0.2rem !important;
	border-top: 1px solid var(--lb-rule);
	margin-top: 0.4rem;
}

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-use-exact + .sidx-use-exact { border-top: 0; margin-top: 0; padding-top: 0.2rem !important; }

:is(.lb-idx-page, .lb-idx) .sidx-floating-menu .sidx-use-exact label {
	display: flex !important;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--lb-text-xs) !important;
	color: var(--lb-ink) !important;
	cursor: pointer;
}

.sidx-container input[type="checkbox"] { accent-color: var(--lb-accent); }

/* --- More filters (Showcase's modal) ---------------------------------------- */

.sidx-streamlined-modal-container .ReactModal__Overlay {
	background: rgba(18, 24, 22, 0.5) !important;
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
}

.sidx-streamlined-modal-container .ReactModal__Content { background: none !important; }

.sidx-container .sidx-streamlined-modal {
	background: var(--lb-surface) !important;
	border-radius: var(--lb-radius-lg) !important;
	box-shadow: 0 30px 80px rgba(18, 24, 22, 0.3) !important;
	font-family: var(--lb-font-text) !important;
	color: var(--lb-ink);
	overflow: hidden;
}

.sidx-container .sidx-streamlined-modal .sidx-modal-close {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 2.25rem !important;
	height: 2.25rem !important;
	top: 0.75rem !important;
	right: 0.75rem !important;
	border-radius: 50%;
	background: var(--lb-mist);
	color: var(--lb-ink-deep) !important;
	z-index: 2;
}

.sidx-container .sidx-streamlined-modal .sidx-modal-close i { color: inherit !important; }

.sidx-container .sidx-streamlined-modal .sidx-modal-contents > div { padding: 1.75rem 1.75rem 1.25rem !important; }

.sidx-container .sidx-streamlined-modal :is(.sidx-title, .sidx-streamlined-filter .sidx-title) {
	margin: 0 0 0.5rem !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-bold) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--lb-ink-deep) !important;
}

.sidx-container .sidx-streamlined-modal .sidx-streamlined-filter { margin-bottom: 1.1rem !important; }

/* For Sale / For Rent / All: a segmented switch. */
.sidx-container .sidx-streamlined-types-toggle {
	display: inline-flex !important;
	gap: 0.2rem;
	padding: 0.2rem !important;
	margin-bottom: 1.25rem !important;
	background: var(--lb-mist) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
}

.sidx-container .sidx-streamlined-types-toggle > div {
	padding: 0.45rem 1rem !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background: none !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink) !important;
	cursor: pointer;
}

.sidx-container .sidx-streamlined-types-toggle > .sidx-selected {
	background: var(--lb-surface) !important;
	color: var(--lb-ink-deep) !important;
	box-shadow: 0 1px 3px rgba(18, 24, 22, 0.14);
}

/* Selects, search boxes and number boxes: the site's field. */
.sidx-container .sidx-streamlined-modal .sidx-select-menu-selection,
.sidx-container .sidx-streamlined-modal .sidx-suggestions-input,
.sidx-container .sidx-streamlined-modal .sidx-increment-input input,
.sidx-container .sidx-streamlined-modal input[type="text"] {
	box-sizing: border-box;
	min-height: 2.75rem;
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius) !important;
	box-shadow: none !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	color: var(--lb-ink-deep) !important;
}

.sidx-container .sidx-streamlined-modal .sidx-select-menu-selection {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	padding: 0 0.9rem !important;
}

.sidx-container .sidx-streamlined-modal .sidx-suggestions-input { display: flex !important; align-items: center; gap: 0.5rem; padding: 0 0.8rem !important; }
.sidx-container .sidx-streamlined-modal .sidx-suggestions-input input { min-height: 0; height: 2.6rem; border: 0 !important; padding: 0 !important; }

.sidx-container .sidx-streamlined-modal .sidx-streamlined-range { display: flex !important; align-items: center; gap: 0.4rem; }
.sidx-container .sidx-streamlined-modal .sidx-increment-input { display: flex !important; align-items: center; gap: 0.25rem; }
.sidx-container .sidx-streamlined-modal .sidx-increment-input input { width: 4rem !important; min-width: 0; text-align: center; padding: 0 0.35rem !important; }

.sidx-container .sidx-streamlined-modal :is(.sidx-increment-up, .sidx-increment-down) {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 1.9rem;
	height: 1.9rem;
	border: 1px solid var(--lb-rule);
	border-radius: 50%;
	background: var(--lb-surface);
	cursor: pointer;
}

.sidx-container .sidx-streamlined-modal :is(.sidx-increment-up, .sidx-increment-down) i { color: var(--lb-ink-deep) !important; font-size: 0.7rem !important; }

.sidx-container .sidx-streamlined-modal .sidx-streamlined-range-to { font-size: var(--lb-text-xs) !important; color: var(--lb-ash) !important; }

.sidx-container .sidx-streamlined-modal .sidx-standardized-field label {
	display: flex !important;
	align-items: center;
	gap: 0.55rem;
	padding: 0.3rem 0 !important;
	font-size: var(--lb-text-sm) !important;
	color: var(--lb-ink) !important;
	cursor: pointer;
}

.sidx-container .sidx-streamlined-modal input[type="checkbox"] { width: 1.05rem; height: 1.05rem; margin: 0; }

/* Showcase boxes each field twice: the select menu and unnamed wrappers
   carry their own outline around ours. */
.sidx-container .sidx-streamlined-modal .sidx-select-menu,
.sidx-container .sidx-streamlined-modal .sidx-streamlined-filter div:not([class]) {
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
}

/* MLS number: the field and a quiet Add beside it. */
.sidx-container .sidx-streamlined-modal .sidx-streamlined-filter div:has(> .sidx-add-keyword) {
	display: flex !important;
	align-items: center;
	gap: 0.4rem;
}

.sidx-container .sidx-streamlined-modal .sidx-add-keyword {
	display: inline-flex !important;
	align-items: center;
	height: 2.75rem;
	padding: 0 1.1rem !important;
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-ink-deep) !important;
	border-radius: var(--lb-radius-pill) !important;
	color: var(--lb-ink-deep) !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-bold) !important;
	cursor: pointer;
}

.sidx-container .sidx-streamlined-types-toggle > div { white-space: nowrap; }

.sidx-container .sidx-streamlined-modal .sidx-streamlined-footer {
	display: flex !important;
	justify-content: flex-end;
	padding-top: 1rem !important;
	border-top: 1px solid var(--lb-rule);
}

.sidx-container .sidx-streamlined-modal .sidx-streamlined-done {
	display: inline-flex !important;
	align-items: center;
	height: 2.75rem !important;
	padding: 0 1.6rem !important;
	background: var(--lb-accent) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	cursor: pointer;
}

.sidx-container .sidx-streamlined-modal .sidx-streamlined-done:hover { background: var(--lb-accent-hover) !important; }

/* Showcase's account nav (Dashboard, Listings, Searches, Sign in): a slim
   row above the toolbar, on the page gutter. */
.lb-idx-page .sidx-main-header {
	justify-content: flex-end !important;
	gap: var(--lb-space-md);
	padding: 0 var(--lb-gutter) !important;
	background: var(--lb-surface) !important;
	border-bottom: 1px solid var(--lb-rule);
	font-size: var(--lb-text-xs);
}

.lb-idx-page .sidx-main-header a { color: var(--lb-ash) !important; }
.lb-idx-page .sidx-main-header a:hover { color: var(--lb-ink-deep) !important; }

/* --- Search page: account links in the toolbar ---------------------------
   Showcase renders its account nav (Dashboard, Listings, Searches, Sign in)
   and the search bar in separate branches of its app, so they cannot share a
   flex row. On wide screens the nav is lifted into the toolbar's right end and
   the toolbar reserves that room; below 1400px it stays a slim row of its own. */

.lb-idx-page .sidx-container .sidx-header-link-profile .sidx-signin.sidx-signin {
	display: inline-flex !important;
}

.lb-idx-page .sidx-container .sidx-header-link-profile .sidx-signin.sidx-signin > span { display: inline !important; }

.lb-idx-page .sidx-header-link-profile .sidx-signin {
	align-items: center;
	gap: 0.4rem;
	white-space: nowrap;
	cursor: pointer;
}

@media (min-width: 1400px) {
	.lb-idx-page:has(.sidx-search-grid) .sidx-main-app-body { position: relative; }

	.lb-idx-page:has(.sidx-search-grid) .sidx-main-header {
		position: absolute;
		top: 0;
		right: 0;
		z-index: 3;
		align-items: center !important;
		gap: var(--lb-space-sm);
		height: calc(3.5rem + var(--lb-space-sm) * 2);
		padding: 0 var(--lb-gutter) !important;
		background: none !important;
		border-bottom: 0;
		font-size: var(--lb-text-sm);
	}

	.lb-idx-page:has(.sidx-search-grid) .sidx-search-grid__form {
		padding-right: calc(var(--lb-gutter) + 31rem);
	}

	/* Sign in reads as the action it is. */
	.lb-idx-page:has(.sidx-search-grid) .sidx-header-link-profile {
		margin-left: var(--lb-space-2xs);
		padding-left: var(--lb-space-md);
		border-left: 1px solid var(--lb-rule);
	}

	.lb-idx-page:has(.sidx-search-grid) .sidx-container .sidx-main-header .sidx-header-link:not(.sidx-header-link-profile) > a { padding: 0.5rem 0.4rem !important; }

	.lb-idx-page:has(.sidx-search-grid) .sidx-container .sidx-header-link-profile :is(a, .sidx-signin.sidx-signin) {
		display: inline-flex !important;
		align-items: center;
		max-width: 13rem;
		height: 2.5rem;
		padding: 0 1.1rem !important;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
		color: var(--lb-ink-deep) !important;
		border: 1px solid var(--lb-rule);
		border-radius: var(--lb-radius-pill);
		background: var(--lb-surface);
		font-weight: var(--lb-weight-bold, 600);
		opacity: 1 !important;
	}

	.lb-idx-page:has(.sidx-search-grid) .sidx-container .sidx-header-link-profile :is(a, .sidx-signin.sidx-signin):hover { border-color: var(--lb-ink-deep); }
}

@media (max-width: 1023px) {
	/* Account row: three quiet links, Sign in as a small pill at the end. */
	.lb-idx-page .sidx-main-header {
		align-items: center !important;
		gap: var(--lb-space-xs) !important;
		min-height: 2.9rem;
		padding: 0.35rem var(--lb-gutter) !important;
		overflow-x: auto;
		scrollbar-width: none;
	}

	.lb-idx-page .sidx-main-header .sidx-header-link { flex: 0 0 auto; }

	.lb-idx-page .sidx-main-header .sidx-header-link-profile { margin-left: auto; }

	.lb-idx-page .sidx-container .sidx-header-link-profile .sidx-signin.sidx-signin {
		height: 2.1rem;
		padding: 0 0.75rem !important;
		font-size: var(--lb-text-xs);
		color: var(--lb-ink-deep) !important;
		border: 1px solid var(--lb-rule) !important;
		border-radius: var(--lb-radius-pill) !important;
		opacity: 1 !important;
	}

	/* Map toggle and sort on one line above the results. */
	.lb-idx-page .sidx-container .sidx-search-grid > .sidx-search-grid__results.sidx-search-grid__results {
		display: grid !important;
		grid-template-columns: auto minmax(0, 1fr);
		align-items: center;
		column-gap: var(--lb-space-sm);
	}

	.lb-idx-page .sidx-search-grid__results > * { grid-column: 1 / -1; }

	.lb-idx-page .sidx-search-grid__results > .sidx-listings-controls {
		grid-column: 2;
		grid-row: 1;
		justify-content: flex-end !important;
	}

	.lb-idx-page .sidx-search-grid__results > div:has(> .sidx-open-mobile-map) {
		grid-column: 1;
		grid-row: 1;
		margin-bottom: 0 !important;
	}

	.lb-idx-page .sidx-search-grid__results > .sidx-listings-controls ~ :not(:has(> .sidx-open-mobile-map)) { margin-top: var(--lb-space-sm); }
}

/* --- Results head: sort and pagination ----------------------------------- */

:is(.lb-idx-page, .lb-idx) .sidx-sort-menu-selection {
	display: inline-flex !important;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.5rem;
	padding: 0 1rem !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-surface) !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--lb-space-sm);
	margin-top: var(--lb-space-lg);
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
}

:is(.lb-idx-page, .lb-idx) .sidx-pagination-button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	border: 1px solid var(--lb-rule);
	border-radius: 50%;
	background: var(--lb-surface);
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-pagination-button.disabled { opacity: 0.4; }

/* --- Listing card --------------------------------------------------------- */

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item {
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: var(--lb-surface) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-lg) !important;
	box-shadow: 0 1px 2px rgba(18, 24, 22, 0.05), 0 0 0 1px var(--lb-rule) !important;
	overflow: hidden;
	transition: box-shadow var(--lb-duration) var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:hover {
	box-shadow: 0 14px 34px rgba(18, 24, 22, 0.12), 0 0 0 1px var(--lb-rule) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-content {
	width: 100% !important;
	border: 0 !important;
	background: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-content > a { display: block; color: inherit; }

/* Photo */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-thumbnail {
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 3 / 2;
	background: var(--lb-sand);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-image img {
	max-width: none !important;
	max-height: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-prev,
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-next {
	width: 3rem !important;
	opacity: 0;
	transition: opacity var(--lb-duration) var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:hover :is(.sidx-gallery-prev, .sidx-gallery-next),
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-gallery-prev, .sidx-gallery-next):focus-within { opacity: 1; }

@media (hover: none) {
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-gallery-prev, .sidx-gallery-next) { opacity: 1; }
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-gallery-prev, .sidx-gallery-next) i {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 2rem !important;
	height: 2rem !important;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: var(--lb-ink-deep) !important;
	font-size: 0.8rem !important;
	text-shadow: none !important;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-thumbnail-actions {
	top: auto !important;
	bottom: 0.75rem !important;
	padding: 0 0.75rem !important;
	background: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-position {
	margin-left: auto;
	padding: 0.15rem 0.55rem;
	border-radius: var(--lb-radius-pill);
	background: rgba(18, 24, 22, 0.62);
	color: #FFFFFF !important;
	font-size: 0.6875rem;
	font-weight: var(--lb-weight-semibold);
	font-variant-numeric: tabular-nums;
}

/* Ribbons ("New listing - 3 weeks on site", price changes...) become a tag. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-ribbons {
	position: absolute !important;
	top: 0.75rem;
	left: 0.75rem;
	right: 3.75rem;
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	pointer-events: none;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-ribbon {
	width: auto !important;
	padding: 0.3rem 0.65rem !important;
	border-radius: var(--lb-radius-pill);
	background: var(--lb-accent) !important;
	color: var(--lb-on-accent) !important;
	font-size: 0.6875rem !important;
	font-weight: var(--lb-weight-bold);
	letter-spacing: 0.01em;
	text-transform: none !important;
	line-height: 1.2;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}

/* Details */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-details,
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-primary-details {
	height: auto !important;
	padding: 0 !important;
	border: 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-primary-details {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	padding: 1rem 1.15rem 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-primary-info { width: auto !important; padding: 0 !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-price {
	font-family: var(--lb-font-display) !important;
	font-size: 1.875rem !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-ink-deep) !important;
	font-variant-numeric: lining-nums;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-blocks {
	order: 2;
	display: flex !important;
	flex-wrap: wrap;
	gap: 0.2rem 0.9rem;
	width: auto !important;
	margin: 0.15rem 0 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-block {
	display: inline-flex !important;
	align-items: baseline;
	gap: 0.25rem;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-value {
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	color: var(--lb-ink-deep) !important;
	font-variant-numeric: tabular-nums;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-title {
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-regular) !important;
	letter-spacing: 0 !important;
	text-transform: lowercase !important;
	color: var(--lb-ash) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading {
	order: 3;
	height: auto !important;
	max-height: none !important;
	margin: 0.35rem 0 0 !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-medium) !important;
	line-height: 1.4 !important;
	color: var(--lb-ink) !important;
	letter-spacing: 0 !important;
	white-space: normal !important;
	text-overflow: clip !important;
	overflow: visible !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading em,
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading small {
	font-style: normal;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-regular);
	color: var(--lb-ash);
}

/* Sale type and status share one quiet line. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-mls-details {
	order: 4;
	display: flex !important;
	flex-wrap: wrap;
	gap: 0 0.5rem;
	width: auto !important;
	padding: 0 !important;
	font-size: var(--lb-text-xs) !important;
	color: var(--lb-ash) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-sale-type, .sidx-mls-info) {
	font-size: var(--lb-text-xs) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--lb-ash) !important;
	font-weight: var(--lb-weight-regular) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-mls-info {
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink) !important;
}

/* MLS attribution: required on every card, so kept, just quiet. It sits in
   an unclassed wrapper, which is what takes the order. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-primary-details > div:not([class]) { order: 5; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-disclaimer {
	order: 5;
	margin: 0.6rem 0 0 !important;
	padding: 0.6rem 0 0 !important;
	border-top: 1px solid var(--lb-rule);
	font-size: var(--lb-text-2xs) !important;
	font-style: normal !important;
	line-height: 1.4 !important;
	color: var(--lb-ash) !important;
}

/* Actions: save goes onto the photo; the rest are a quiet row. */
/* The card is a flex container, so Showcase's z-index: 0 on this row makes
   it a stacking layer below the photo's (z-index: 1): the save button placed
   over the photo was drawn beneath it and could not be clicked. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions {
	position: static !important;
	z-index: 2 !important;
	display: flex !important;
	align-items: center;
	left: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	height: 3rem !important;
	padding: 0 0.9rem !important;
	justify-content: flex-end !important;
	gap: 0.35rem;
	background: none !important;
	border: 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:hover { background: var(--lb-mist); }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions i {
	width: auto !important;
	height: auto !important;
	font-size: 1rem !important;
	line-height: 1 !important;
	color: var(--lb-ash) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:first-child {
	position: absolute;
	top: 0.6rem;
	right: 0.6rem;
	bottom: auto;
	z-index: 20;
	background: rgba(255, 255, 255, 0.94);
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:first-child i { color: var(--lb-ink-deep) !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:first-child:hover { background: #FFFFFF; }

/* --- Phones --------------------------------------------------------------- */

@media (max-width: 1023px) {
	.lb-idx-page .sidx-search-grid {
		display: block !important;
		height: auto;
	}

	.lb-idx-page .sidx-search-grid__results {
		height: auto;
		overflow: visible;
		border-left: 0;
		padding: var(--lb-space-sm) var(--lb-gutter) var(--lb-space-lg);
	}

	.lb-idx-page .sidx-search-results .sidx-grid { grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)) !important; }

	/* The bar becomes a card: location across the top, the segments as a
	   row under it, Save search across the bottom. */
	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic {
		flex-wrap: wrap !important;
		height: auto;
		padding: 0.35rem !important;
		border-radius: var(--lb-radius-lg);
	}

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-basic > .sidx-locations-field-wrapper {
		flex: 1 1 100% !important;
		height: 2.9rem;
		border-bottom: 1px solid var(--lb-rule);
	}

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-streamlined-search),
	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-beds-and-baths {
		flex: 1 1 auto !important;
		height: 2.9rem;
	}

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-beds-and-baths > * { flex: 1 1 0 !important; }

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-range::before { display: none; }

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) :is(.sidx-range, .sidx-beds-and-baths) .sidx-field,
	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-streamlined-toggle {
		width: calc(100% - 0.3rem);
		padding: 0 0.6rem !important;
		font-size: var(--lb-text-xs) !important;
	}

	:is(.lb-idx-page, .lb-idx:not(.lb-idx--hero)) .sidx-save-search-pill {
		flex: 1 1 100% !important;
		justify-content: center;
		height: 2.75rem;
		margin: 0.3rem 0 0 !important;
	}

	.lb-idx-page .sidx-main-header { justify-content: space-between !important; gap: var(--lb-space-xs); }
}

/* Showcase's Map / List toggle on small screens, as an outlined pill. */
:is(.lb-idx-page, .lb-idx) .sidx-open-mobile-map {
	display: inline-flex !important;
	align-items: center;
	min-height: 2.5rem;
	padding: 0 1.1rem !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-surface) !important;
	color: var(--lb-ink-deep) !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
}

/* --- Sign-in fly-in ---------------------------------------------------------
   lb_agent_signin_flyin() (inc/idx.php), behaviour in agent.js section 9.
   The Google button follows Google's branding rules: white fill, #747775
   outline, the four-colour mark, "Sign in with Google" in Roboto Medium. */

.lb-flyin {
	position: fixed;
	top: calc(var(--lb-head-h) + 0.75rem);
	right: var(--lb-gutter);
	z-index: 95;
	width: min(22rem, calc(100vw - 1.5rem));
	padding: 1.25rem 1.25rem 1rem;
	background: var(--lb-surface);
	border-radius: var(--lb-radius-lg);
	box-shadow: 0 24px 60px rgba(18, 24, 22, 0.22), 0 0 0 1px rgba(18, 24, 22, 0.06);
	opacity: 0;
	transform: translateY(-0.9rem);
	transition: opacity 320ms var(--lb-ease), transform 320ms var(--lb-ease);
}

.lb-flyin[hidden] { display: none; }

.lb-flyin.is-open {
	opacity: 1;
	transform: none;
}

.lb-flyin__close {
	position: absolute;
	top: 0.6rem;
	right: 0.6rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	color: var(--lb-ash);
}

.lb-flyin__close:hover,
.lb-flyin__close:focus-visible {
	background: var(--lb-mist);
	color: var(--lb-ink-deep);
}

.lb-flyin__close svg {
	width: 1rem;
	height: 1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
}

.lb-flyin__title {
	margin: 0 2rem 0.35rem 0;
	font-family: var(--lb-font-display);
	font-size: 1.5rem;
	line-height: 1.1;
	letter-spacing: var(--lb-tracking-display);
	color: var(--lb-ink-deep);
}

.lb-flyin__text {
	margin: 0 0 1rem;
	font-size: var(--lb-text-sm);
	line-height: 1.5;
	color: var(--lb-ash);
}

.lb-flyin__google {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.65rem;
	width: 100%;
	height: 2.75rem;
	padding: 0 0.9rem;
	background: #FFFFFF;
	border: 1px solid #747775;
	border-radius: var(--lb-radius-pill);
	color: #1F1F1F;
	font-family: 'Roboto', var(--lb-font-text);
	font-size: 0.9375rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease), box-shadow var(--lb-duration) var(--lb-ease);
}

.lb-flyin__google:hover { background: #F8F9FA; box-shadow: 0 1px 3px rgba(60, 64, 67, 0.2); }

.lb-flyin__google:focus-visible {
	outline: 2px solid var(--lb-accent);
	outline-offset: 2px;
}

.lb-flyin__g { width: 1.15rem; height: 1.15rem; flex: none; }

.lb-flyin__email {
	display: block;
	margin: 0.7rem auto 0;
	padding: 0.25rem 0.5rem;
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.lb-flyin__email:hover,
.lb-flyin__email:focus-visible { color: var(--lb-ink-deep); }

/* "Use email instead" on a page with the form inline: the card grows into it. */
.lb-flyin--form {
	width: min(26rem, calc(100vw - 1.5rem));
	max-height: calc(100svh - var(--lb-head-h) - 1.5rem);
	overflow-y: auto;
}

.lb-flyin--form :is(.lb-flyin__google, .lb-flyin__email) { display: none; }

.lb-flyin__auth .sidx-modal {
	position: static !important;
	inset: auto !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	box-shadow: none !important;
	background: none !important;
}

.lb-flyin__auth .sidx-modal-padding { padding: 0 !important; }

/* The Google button Showcase shows after "Sign in with Google" sent the
   visitor here from a page without Showcase. */
.sidx-social-login.sidx-google.lb-sidx-suggested {
	outline: 3px solid color-mix(in srgb, var(--lb-accent) 45%, transparent);
	outline-offset: 3px;
}

@media (max-width: 599px) {
	.lb-flyin {
		top: calc(var(--lb-head-h) + 0.5rem);
		right: 0.75rem;
		left: 0.75rem;
		width: auto;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lb-flyin { transform: none; transition: opacity 120ms linear; }
}

/* --- Showcase sign-up / sign-in form -----------------------------------------
   The same form appears in Showcase's own modal (save star, Sign in link) and
   inside the fly-in; both get the site's fields and buttons. */

.sidx-container .sidx-signup {
	font-family: var(--lb-font-text) !important;
	color: var(--lb-ink);
}

.sidx-container .sidx-signup__title {
	font-family: var(--lb-font-display) !important;
	font-size: 1.875rem !important;
	font-weight: 400 !important;
	line-height: 1.1 !important;
	letter-spacing: var(--lb-tracking-display) !important;
	color: var(--lb-ink-deep) !important;
}

.sidx-container .sidx-signup__description {
	font-size: var(--lb-text-sm) !important;
	line-height: 1.5 !important;
	letter-spacing: 0 !important;
	color: var(--lb-ash) !important;
}

/* Showcase pulls the field group 5px past each side, where the form's
   overflow trims the fields' sides and corners off. */
.sidx-container .sidx-signup .sidx-form-fields {
	width: auto !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* Showcase sizes these at 100% plus padding, so they overran the card and
   were clipped to bare lines. */
.sidx-container .sidx-signup input.sidx-modal-input {
	box-sizing: border-box !important;
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: 2.9rem !important;
	margin: 0 0 0.6rem !important;
	padding: 0 0.95rem !important;
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius) !important;
	box-shadow: none !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	letter-spacing: 0 !important;
	color: var(--lb-ink-deep) !important;
}

.sidx-container .sidx-signup input.sidx-modal-input:focus {
	outline: 0 !important;
	border-color: var(--lb-accent) !important;
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 16%, transparent) !important;
}

.sidx-container .sidx-signup input.sidx-modal-input::placeholder { color: color-mix(in srgb, var(--lb-ash) 85%, transparent); }

.sidx-container .sidx-signup__section label,
.sidx-container .sidx-signup__section label span {
	font-size: var(--lb-text-2xs) !important;
	line-height: 1.5 !important;
	letter-spacing: 0 !important;
	color: var(--lb-ash) !important;
}

.sidx-container .sidx-signup input[type="checkbox"] {
	width: 1rem;
	height: 1rem;
	margin: 0.1rem 0.5rem 0 0;
	accent-color: var(--lb-accent);
}

.sidx-container .sidx-signup .sidx-modal-main-button {
	display: block !important;
	width: 100% !important;
	height: 2.9rem !important;
	margin: 0.5rem 0 0 !important;
	padding: 0 1.25rem !important;
	background: var(--lb-accent) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	letter-spacing: 0 !important;
}

.sidx-container .sidx-signup .sidx-modal-main-button:hover { background: var(--lb-accent-hover) !important; }

.sidx-container .sidx-signup__hr-separator {
	font-size: var(--lb-text-2xs) !important;
	letter-spacing: 0.04em !important;
	color: var(--lb-ash) !important;
}

.sidx-container .sidx-social-signup {
	display: grid !important;
	grid-template-columns: 1fr 1fr;
	gap: 0.6rem;
}

.sidx-container .sidx-social-login {
	display: flex !important;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	width: auto !important;
	height: 2.75rem !important;
	margin: 0 !important;
	padding: 0 0.75rem !important;
	background: #FFFFFF !important;
	border: 1px solid #747775 !important;
	border-radius: var(--lb-radius-pill) !important;
	box-shadow: none !important;
	color: #1F1F1F !important;
	font-family: 'Roboto', var(--lb-font-text) !important;
	font-size: 0.875rem !important;
	font-weight: 500 !important;
	cursor: pointer;
}

.sidx-container .sidx-social-login:hover { background: #F8F9FA !important; }

.sidx-container .sidx-signup__footer {
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-regular) !important;
	color: var(--lb-ash) !important;
}

.sidx-container .sidx-signup__footer .sidx-link {
	font-style: normal !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-accent-text) !important;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Showcase's own modal: the site's corners and shadow. */
.sidx-container .sidx-modal:not(.sidx-widget) {
	border-radius: var(--lb-radius-lg) !important;
	box-shadow: 0 30px 80px rgba(18, 24, 22, 0.3) !important;
	overflow: hidden;
}

/* Inside the fly-in the card already has a title; Showcase's repeats it. */
.lb-flyin--form .lb-flyin__text { display: block; margin-bottom: 0.75rem; }
.lb-flyin__auth .sidx-signup__title,
.lb-flyin__auth .sidx-signup__description { display: none !important; }
.lb-flyin__auth .sidx-signup { background: none !important; }

/* --- Listing page ----------------------------------------------------------
   Showcase's listing detail (.sidx-listing-details): a summary column and a
   gallery-and-details column. Restyled, not rebuilt: the markup is theirs. */

.lb-idx-page:has(.sidx-listing-details) { padding-top: var(--lb-space-md); }

.lb-idx-page:has(.sidx-listing-details) .sidx-main-app-body { background: none !important; }

.lb-idx-page .sidx-listing-details { font-family: var(--lb-font-text); color: var(--lb-ink); }

.lb-idx-page .sidx-listing-details .sidx-columns { gap: clamp(1.5rem, 3vw, 3rem); }

/* One action bar is enough: the sidebar's first. The repeats go. */
.lb-idx-page .sidx-left-column > .sidx-primary-actions ~ .sidx-primary-actions,
.lb-idx-page .sidx-right-column > .sidx-primary-jumbo,
.lb-idx-page .sidx-left-column > .sidx-photo-array {
	display: none !important;
}

/* --- Summary card --------------------------------------------------------- */

.lb-idx-page .sidx-left-column {
	align-self: flex-start;
	padding: 0 !important;
}

.lb-idx-page .sidx-left-column > :not(.mortgage-calculator):not(.sidx-carousel) {
	box-sizing: border-box !important;
	width: auto !important;
	max-width: 100%;
	background: var(--lb-surface);
	padding-left: 1.5rem !important;
	padding-right: 1.5rem !important;
	margin: 0 !important;
}

.lb-idx-page .sidx-left-column > .sidx-primary-actions {
	padding-top: 1rem !important;
	padding-bottom: 0.25rem !important;
	border-radius: var(--lb-radius-lg) var(--lb-radius-lg) 0 0;
	box-shadow: 0 0 0 1px var(--lb-rule);
	clip-path: inset(-1px -1px 0 -1px);
	justify-content: space-between !important;
}

.lb-idx-page .sidx-left-column > .sidx-call-to-actions {
	padding-bottom: 1.5rem !important;
	border-radius: 0 0 var(--lb-radius-lg) var(--lb-radius-lg);
	box-shadow: 0 0 0 1px var(--lb-rule);
	clip-path: inset(0 -1px -1px -1px);
	margin-bottom: var(--lb-space-lg) !important;
}

.lb-idx-page .sidx-left-column > :not(.sidx-primary-actions):not(.sidx-call-to-actions):not(.mortgage-calculator):not(.sidx-carousel) {
	box-shadow: 1px 0 0 var(--lb-rule), -1px 0 0 var(--lb-rule);
}

/* Save / Ask / Tour / Hide / Share: ink, not blue. */
.lb-idx-page .sidx-primary-action { cursor: pointer; }

.lb-idx-page .sidx-primary-action i,
.lb-idx-page .sidx-primary-action .sidx-icon {
	color: var(--lb-ink-deep) !important;
	font-size: 1.05rem !important;
}

.lb-idx-page .sidx-primary-action-text-container {
	font-size: 0.6875rem !important;
	font-weight: var(--lb-weight-semibold) !important;
	letter-spacing: 0.01em !important;
	text-transform: none !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-primary-action:hover .sidx-primary-action-text-container { color: var(--lb-ink-deep) !important; }

.lb-idx-page .sidx-price-area {
	align-items: center !important;
	justify-content: space-between;
	gap: 0.75rem;
	padding-top: 1.25rem !important;
	border-top: 1px solid var(--lb-rule);
}

.lb-idx-page .sidx-listing-details .sidx-price {
	font-family: var(--lb-font-display) !important;
	font-size: clamp(2.25rem, 1.8rem + 1.2vw, 2.875rem) !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	letter-spacing: var(--lb-tracking-display) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-days-online {
	padding: 0.3rem 0.7rem !important;
	background: var(--lb-mist) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	color: var(--lb-ink) !important;
	font-size: 0.6875rem !important;
	font-weight: var(--lb-weight-semibold) !important;
	white-space: nowrap;
}

.lb-idx-page .sidx-listing-heading h1,
.lb-idx-page .sidx-listing-heading .sidx-address-2 {
	margin: 0.6rem 0 0 !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-lg) !important;
	font-weight: var(--lb-weight-semibold) !important;
	line-height: 1.35 !important;
	letter-spacing: 0 !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-sub-address,
.lb-idx-page .sidx-sub-address span {
	font-size: var(--lb-text-xs) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-sub-address .sidx-pipe-spacer { padding: 0 0.15rem !important; color: var(--lb-rule) !important; }

/* Facts: figures over labels, on hairlines. */
.lb-idx-page .sidx-primary-info { width: 100%; padding: 0 !important; border: 0 !important; }

.lb-idx-page .sidx-primary-info-section {
	display: grid !important;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	gap: 0;
	margin: 0 !important;
	padding: 0.9rem 0 !important;
	border-top: 1px solid var(--lb-rule) !important;
	border-bottom: 0 !important;
}

.lb-idx-page .sidx-primary-info-item {
	width: auto !important;
	padding: 0 !important;
	text-align: left !important;
	font-size: var(--lb-text-lg) !important;
	font-weight: var(--lb-weight-bold) !important;
	line-height: 1.2 !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-primary-info-item :is(.sidx-primary-info-item-title-top, .sidx-primary-info-item-title-bottom) {
	margin-top: 0.15rem;
	font-size: var(--lb-text-2xs) !important;
	font-weight: var(--lb-weight-regular) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-list-items {
	padding-top: 0.9rem !important;
	padding-bottom: 0.5rem !important;
	border-top: 1px solid var(--lb-rule);
}

.lb-idx-page .sidx-list-item { gap: 0.75rem; padding: 0.2rem 0 !important; }

.lb-idx-page .sidx-list-item-label {
	flex: 0 0 9.5rem !important;
	width: auto !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-regular) !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-list-item-value {
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-left-column .sidx-disclaimer {
	padding-bottom: 0.5rem;
	font-size: var(--lb-text-2xs) !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-call-to-actions {
	flex-direction: column;
	gap: 0.6rem;
	padding-top: 0.5rem !important;
}

.lb-idx-page .sidx-call-to-actions .sidx-listing-detail-modal-container { width: 100%; }

.lb-idx-page .sidx-call-to-actions button.sidx-primary {
	width: 100% !important;
	height: 3rem !important;
	margin: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	font-weight: var(--lb-weight-bold) !important;
	letter-spacing: 0 !important;
	box-shadow: none !important;
}

.lb-idx-page .sidx-call-to-actions .sidx-listing-detail-modal-container:first-child button.sidx-primary {
	background: var(--lb-accent) !important;
	border: 0 !important;
	color: var(--lb-on-accent) !important;
}

.lb-idx-page .sidx-call-to-actions .sidx-listing-detail-modal-container:first-child button.sidx-primary:hover { background: var(--lb-accent-hover) !important; }

.lb-idx-page .sidx-call-to-actions .sidx-listing-detail-modal-container + .sidx-listing-detail-modal-container button.sidx-primary {
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-ink-deep) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-call-to-actions button.sidx-primary i { color: inherit !important; margin-right: 0.35rem; }

/* --- Mortgage calculator --------------------------------------------------- */

.lb-idx-page .mortgage-calculator {
	padding: 1.5rem !important;
	background: var(--lb-surface) !important;
	border: 0 !important;
	border-radius: var(--lb-radius-lg) !important;
	box-shadow: 0 0 0 1px var(--lb-rule) !important;
}

.lb-idx-page .mortgage-calculator > * { padding-left: 0 !important; padding-right: 0 !important; }

.lb-idx-page .mortgage-calculator h2,
.lb-idx-page .monthly-payment__title {
	font-family: var(--lb-font-display) !important;
	font-weight: 400 !important;
	letter-spacing: var(--lb-tracking-display) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .mortgage-calculator h2 { font-size: 1.75rem !important; margin: 0 0 1rem !important; }
.lb-idx-page .monthly-payment__title { font-size: 1.375rem !important; }

.lb-idx-page .mortgage-calculator label {
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink) !important;
}

.lb-idx-page .mortgage-calculator :is(input, select) {
	box-sizing: border-box !important;
	width: 100% !important;
	height: 2.75rem !important;
	padding: 0 0.85rem !important;
	background: var(--lb-surface) !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius) !important;
	box-shadow: none !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-sm) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .mortgage-calculator :is(input, select):focus {
	outline: 0 !important;
	border-color: var(--lb-accent) !important;
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 16%, transparent) !important;
}

.lb-idx-page .mortgage-calculator button.sidx-primary {
	width: 100% !important;
	height: 2.9rem !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-accent) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-weight: var(--lb-weight-bold) !important;
}

.lb-idx-page .monthly-payment,
.lb-idx-page .mortgage-calculator__disclaimer {
	background: none !important;
	border: 0 !important;
	border-top: 1px solid var(--lb-rule) !important;
	margin-top: 1.25rem !important;
	padding-top: 1.25rem !important;
}

.lb-idx-page .mortgage-calculator__disclaimer,
.lb-idx-page .mortgage-calculator__disclaimer * {
	font-size: var(--lb-text-2xs) !important;
	color: var(--lb-ash) !important;
	text-align: left !important;
}

/* --- Gallery ---------------------------------------------------------------- */

.lb-idx-page .sidx-carousel-viewport {
	border-radius: var(--lb-radius-lg);
	overflow: hidden;
	background: var(--lb-ink-deep);
}

.lb-idx-page .sidx-carousel-single-image { background-color: var(--lb-ink-deep); }

.lb-idx-page .sidx-carousel :is(.sidx-prev, .sidx-next) {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 2.75rem !important;
	height: 2.75rem !important;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, 0.94) !important;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
	color: var(--lb-ink-deep) !important;
	cursor: pointer;
}

.lb-idx-page .sidx-carousel :is(.sidx-prev, .sidx-next) i { color: var(--lb-ink-deep) !important; text-shadow: none !important; }

.lb-idx-page .sidx-carousel .sidx-prev-nav-container { background: none !important; gap: 0.75rem; }

.lb-idx-page .sidx-carousel .sidx-photo-count {
	padding: 0.25rem 0.7rem !important;
	border-radius: var(--lb-radius-pill);
	background: rgba(18, 24, 22, 0.66) !important;
	color: #FFFFFF !important;
	font-size: var(--lb-text-2xs) !important;
	font-weight: var(--lb-weight-semibold);
	font-variant-numeric: tabular-nums;
}

.lb-idx-page .sidx-carousel .sidx-menu {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	flex-wrap: wrap;
	justify-content: flex-start !important;
	gap: 0.5rem;
	margin-top: 0.75rem;
	border: 0 !important;
	background: none !important;
}

.lb-idx-page .sidx-carousel .sidx-menu-item {
	flex: 0 0 auto !important;
	display: inline-flex !important;
	align-items: center;
	gap: 0.35rem;
	width: auto !important;
	padding: 0.45rem 1rem !important;
	border: 1px solid var(--lb-rule) !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-surface) !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink) !important;
}

.lb-idx-page .sidx-carousel .sidx-menu-item * { color: inherit !important; }

.lb-idx-page .sidx-carousel .sidx-menu-item.sidx-selected {
	background: var(--lb-ink-deep) !important;
	border-color: var(--lb-ink-deep) !important;
	color: #FFFFFF !important;
}

/* --- Description and details --------------------------------------------- */

.lb-idx-page .sidx-listing-description {
	max-width: 66ch !important;
	margin: var(--lb-space-lg) 0 !important;
	font-size: var(--lb-text-base) !important;
	line-height: var(--lb-leading-body) !important;
	letter-spacing: 0 !important;
	color: var(--lb-ink) !important;
}

.lb-idx-page .sidx-right-column :is(.sidx-details-table, .sidx-ldp-section) {
	margin: 0 0 var(--lb-space-lg) !important;
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
}

.lb-idx-page .sidx-right-column .sidx-heading,
.lb-idx-page .sidx-right-column .sidx-ldp-section h2,
.lb-idx-page .sidx-right-column .sidx-ldp-section h3 {
	margin: 0 0 0.75rem !important;
	padding: 0 0 0.6rem !important;
	border-bottom: 1px solid var(--lb-ink-deep) !important;
	background: none !important;
	font-family: var(--lb-font-display) !important;
	font-size: 1.75rem !important;
	font-weight: 400 !important;
	line-height: 1.1 !important;
	letter-spacing: var(--lb-tracking-display) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-right-column .sidx-heading * { font: inherit !important; color: inherit !important; }

.lb-idx-page :is(.sidx-details-single-value, .sidx-details-multi-value) {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 2rem;
	padding: 0 !important;
}

.lb-idx-page .sidx-details-table-item {
	display: flex !important;
	justify-content: space-between;
	gap: 1rem;
	width: auto !important;
	margin: 0 !important;
	padding: 0.6rem 0 !important;
	background: none !important;
	border: 0 !important;
	border-bottom: 1px solid var(--lb-rule) !important;
}

.lb-idx-page .sidx-details-table-item { align-items: flex-start; }

.lb-idx-page .sidx-details-table-item .sidx-key {
	flex: 0 0 auto;
	max-width: 45%;
	width: auto !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-regular) !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-details-table-item .sidx-val {
	flex: 1 1 auto;
	min-width: 0;
	width: auto !important;
	text-align: right;
	overflow-wrap: anywhere;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page .sidx-timeline,
.lb-idx-page .sidx-timeline td {
	border: 0 !important;
	background: none !important;
	font-size: var(--lb-text-xs) !important;
	color: var(--lb-ink) !important;
}

.lb-idx-page .sidx-timeline tr { border-bottom: 1px solid var(--lb-rule); }
.lb-idx-page .sidx-timeline td { padding: 0.55rem 0.5rem !important; }
.lb-idx-page .sidx-timeline em { font-style: normal; color: var(--lb-ash); }

.lb-idx-page .sidx-social-search-box a,
.lb-idx-page .sidx-social-search-box span,
.lb-idx-page .sidx-social-search-box i { color: var(--lb-accent-text) !important; }

.lb-idx-page .sidx-social-search-box { border: 1px solid var(--lb-rule) !important; border-radius: var(--lb-radius) !important; background: var(--lb-surface) !important; }

/* Schools: small cards. */
.lb-idx-page .sidx-schools-list { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }

.lb-idx-page .sidx-school {
	width: auto !important;
	margin: 0 !important;
	padding: 1rem 1.1rem !important;
	background: var(--lb-surface) !important;
	border: 0 !important;
	border-radius: var(--lb-radius) !important;
	box-shadow: 0 0 0 1px var(--lb-rule);
}

.lb-idx-page .sidx-school strong {
	display: block;
	font-size: var(--lb-text-2xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	color: var(--lb-ash) !important;
}

.lb-idx-page .sidx-school .sidx-school-name {
	margin-top: 0.2rem;
	font-family: var(--lb-font-display) !important;
	font-size: 1.375rem !important;
	line-height: 1.15;
	color: var(--lb-ink-deep) !important;
}

.lb-idx-page :is(.sidx-listing-disclaimer, .sidx-listing-disclaimer-center, .sidx-powered-by),
.lb-idx-page :is(.sidx-listing-disclaimer, .sidx-listing-disclaimer-center, .sidx-powered-by) * {
	font-size: var(--lb-text-2xs) !important;
	color: var(--lb-ash) !important;
}

@media (max-width: 767px) {
	.lb-idx-page :is(.sidx-details-single-value, .sidx-details-multi-value) { grid-template-columns: 1fr; }

	/* Phones: Showcase moves the gallery into the summary column. It leads
	   the page instead, full width, ahead of the card. */
	.lb-idx-page .sidx-left-column { display: flex !important; flex-direction: column; }
	.lb-idx-page .sidx-left-column > .sidx-carousel { order: -1; margin: 0 0 1rem !important; }
	.lb-idx-page .sidx-left-column > .sidx-primary-actions { padding-left: 1rem !important; padding-right: 1rem !important; }
	.lb-idx-page .sidx-schools-list { grid-template-columns: 1fr; }
}

/* ==========================================================================
   LUXURY REFINEMENTS (2026-09-24)
   Spec: /claude/servers/docs/superpowers/specs/2026-09-24-lb-agent-3-luxury-refinements-design.md
   Appended last on purpose: these rules override earlier ones by order.
   ========================================================================== */

/* --- Cookie notice --------------------------------------------------------
   The network-wide "Compliance by Hu-manity" plugin prints a full-width
   black bar with inline colours. Here it becomes a small floating card. The
   plugin and its settings are untouched; only this design restyles it. */

#cookie-notice.cn-position-bottom {
	top: auto !important;
	right: auto !important;
	bottom: 24px !important;
	left: 24px !important;
	z-index: 90 !important; /* below the sign-in fly-in (95) and Showcase modals */
	width: 380px !important;
	max-width: calc(100vw - 48px) !important;
	min-width: 0 !important;
	border-radius: var(--lb-radius-lg);
	background: var(--lb-surface) !important;
	color: var(--lb-ink) !important;
	box-shadow: 0 18px 48px rgba(18, 24, 22, 0.18), 0 0 0 1px var(--lb-rule);
	font-family: var(--lb-font-text);
}

/* Dismissed: the plugin only collapses the notice to 0px, which would leave
   the card's shadow ring drawn as a line. */
#cookie-notice.cookie-notice-hidden { display: none !important; }

#cookie-notice .cookie-notice-container {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.85rem;
	padding: 1.25rem 2.75rem 1.25rem 1.25rem !important;
	color: var(--lb-ink) !important;
	text-align: left !important;
}

#cookie-notice #cn-notice-text {
	margin: 0 !important;
	font-size: var(--lb-text-sm) !important;
	line-height: 1.5;
	color: var(--lb-ink) !important;
}

#cookie-notice #cn-notice-buttons { margin: 0 !important; }

#cookie-notice #cn-accept-cookie {
	margin: 0 !important;
	padding: 0.6rem 1.25rem !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-accent) !important;
	color: var(--lb-on-accent) !important;
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-xs) !important;
	font-weight: var(--lb-weight-semibold) !important;
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	line-height: 1 !important;
	box-shadow: none !important;
}

#cookie-notice #cn-close-notice {
	top: 0.9rem !important;
	right: 0.9rem !important;
	width: 1.5rem;
	height: 1.5rem;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important; /* Hello Elementor's #c36 button reset */
	border-radius: 0;
	background: none !important;
	opacity: 0.45;
}

#cookie-notice #cn-close-notice::before,
#cookie-notice #cn-close-notice::after { background-color: var(--lb-ink) !important; }

@media (max-width: 640px) {
	#cookie-notice.cn-position-bottom {
		bottom: 12px !important;
		left: 12px !important;
		width: calc(100vw - 24px) !important;
		max-width: none !important;
	}
}

/* Above the phone/tablet action bar (Call / Text / Home value), the same lift
   the template note uses. */
@media (max-width: 979px) {
	body.lb-has-actionbar #cookie-notice.cn-position-bottom { bottom: calc(4.4rem + env(safe-area-inset-bottom, 0px)) !important; }
}

/* --- Motion ---------------------------------------------------------------
   The reveal (section 7 above, agent.js §4) is a touch longer and softer, and
   now includes section headings. Photo zoom is slower and only on devices
   that can hover, so a tap never leaves a photo stuck zoomed. Reduced motion
   is handled by the global rule in section 8. */

.lb-js .lb-reveal { transform: translateY(16px); }

.lb-js .lb-reveal.is-in {
	transition: opacity 700ms var(--lb-ease) var(--lb-delay, 0ms),
	            transform 700ms var(--lb-ease) var(--lb-delay, 0ms);
}

.lb-area__img,
.lb-listing__media img,
.lb-post-card__media img { transition: transform 1200ms var(--lb-ease); }

.lb-area:hover .lb-area__img { transform: scale(1.04); }

@media (hover: none) {
	.lb-area:hover .lb-area__img,
	.lb-listing:hover .lb-listing__media img,
	.lb-post-card:hover .lb-post-card__media img { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.lb-area:hover .lb-area__img,
	.lb-listing:hover .lb-listing__media img,
	.lb-post-card:hover .lb-post-card__media img,
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:hover .sidx-gallery-image img { transform: none !important; }
}

/* --- Watermark words (opt-in) ---------------------------------------------
   Elementor › Advanced › Attributes: data-lb-watermark|Listings puts a huge,
   faint word behind a section. Decorative only: a pseudo-element, so screen
   readers skip it. Hidden on phones, where it would only be a fragment.
   ::after, not ::before: Elementor draws container background overlays with
   ::before (full width), which would stretch the word and replace overlays. */

[data-lb-watermark] {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}

[data-lb-watermark]::after {
	content: attr(data-lb-watermark);
	position: absolute;
	top: clamp(0.5rem, 3vw, 2.5rem);
	left: 50%;
	z-index: -1;
	width: auto;
	height: auto;
	transform: translateX(-50%);
	font-family: var(--lb-font-display);
	font-size: clamp(5rem, 11vw, 13rem);
	line-height: 0.8;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--lb-ink-deep);
	opacity: 0.045;
	pointer-events: none;
}

.lb-section--ink[data-lb-watermark]::after {
	color: #FFFFFF;
	opacity: 0.05;
}

@media (max-width: 640px) {
	[data-lb-watermark]::after { display: none; }
}

/* --- Listing cards -----------------------------------------------------------
   The photo is the card. Everything that acts on the photo (status, save,
   photo count, react/comment/share/hide) sits on it as dark glass, the same
   glass as the sign-in card. Below it there is no box: the price and the
   figures in the display serif, the address, the MLS line - text on the page.
   Showcase's cards and the agent's own cards share the treatment. */

/* Showcase: shell. The card is a size container so the action layer can be
   exactly the photo's height (4:3 = 75cqw). */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item {
	container-type: inline-size;
	overflow: visible;
	background: transparent !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:hover { box-shadow: none !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-thumbnail {
	aspect-ratio: 4 / 3;
	border-radius: var(--lb-radius-lg);
	overflow: hidden;
	isolation: isolate;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-image img { transition: transform 1200ms var(--lb-ease); }

@media (hover: hover) {
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:hover .sidx-gallery-image img { transform: scale(1.04); }
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-content > a:focus-visible { outline: none; }
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-content > a:focus-visible .sidx-thumbnail {
	outline: 2px solid var(--lb-accent);
	outline-offset: 3px;
}

/* Glass: status, photo count, and every action. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-ribbon, .sidx-gallery-position),
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div {
	background: rgba(12, 22, 38, 0.5) !important;
	-webkit-backdrop-filter: blur(10px) saturate(140%);
	backdrop-filter: blur(10px) saturate(140%);
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16) !important;
	color: #FFFFFF !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-ribbon {
	padding: 0.35rem 0.75rem !important;
	border-radius: var(--lb-radius-pill);
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-2xs) !important;
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0 !important;
	text-transform: none !important;
}

/* Status tags inset to line up with the save button (Showcase pins the
   row to the corner). */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-ribbons {
	top: 0.7rem !important;
	left: 0.7rem !important;
	right: 3.6rem !important;
}

/* Photo count moves to the lower left, ahead of Showcase's (usually empty)
   reactions strip; the actions take the lower right. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-thumbnail-actions { padding: 0 0.7rem !important; bottom: 0.95rem !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-gallery-position {
	order: -1;
	margin: 0 !important;
	padding: 0.25rem 0.6rem !important;
	font-size: 0.6875rem !important;
}

/* Gallery arrows in the same glass. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item :is(.sidx-gallery-prev, .sidx-gallery-next) i {
	background: rgba(12, 22, 38, 0.5) !important;
	-webkit-backdrop-filter: blur(10px) saturate(140%);
	backdrop-filter: blur(10px) saturate(140%);
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16) !important;
	color: #FFFFFF !important;
}

/* The action layer is laid over the photo. Save stays top right; the rest
   gather lower right. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions {
	position: absolute !important;
	top: 0 !important;
	right: 0 !important;
	bottom: auto !important;
	left: 0 !important;
	z-index: 4 !important;
	display: flex !important;
	align-items: flex-end;
	justify-content: flex-end !important;
	gap: 0.4rem;
	height: 75cqw !important;
	padding: 0.7rem !important;
	pointer-events: none;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div {
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 50%;
	pointer-events: auto;
	transition: background-color var(--lb-duration) var(--lb-ease), opacity 320ms var(--lb-ease), transform 320ms var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:hover { background: rgba(12, 22, 38, 0.72) !important; }
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions i { color: #FFFFFF !important; font-size: 0.95rem !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:first-child {
	position: absolute;
	top: 0.7rem;
	right: 0.7rem;
	bottom: auto;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:first-child i { color: #FFFFFF !important; }

@media (hover: hover) {
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:not(:first-child) {
		opacity: 0;
		transform: translateY(4px);
	}

	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item:is(:hover, :focus-within) .sidx-actions > div:not(:first-child) {
		opacity: 1;
		transform: none;
	}
}

/* Rhythm: with no box around a card, the space between rows is what tells
   one listing from the next, so it is about twice the space inside a card.
   Showcase's grid already leaves 24px between rows on wider screens. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item { margin-bottom: 1.5rem !important; }

@media (max-width: 640px) {
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item { margin-bottom: 3rem !important; }
}

/* Touch: no hover to reveal them, so the photo keeps save, share and hide;
   react and comment live on the listing page. */
@media (hover: none) {
	:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-actions > div:is(:nth-child(2), :nth-child(3)) { display: none; }
}

/* Text on the page, no box. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-details {
	position: static;
	margin: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-primary-details {
	gap: 0.25rem;
	padding: 0.8rem 0.15rem 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-price {
	font-size: 1.75rem !important;
	line-height: 1.05 !important;
}

/* Implied by the tag and the listing page. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-mls-details { display: none !important; }

/* Figures: the numbers in the display serif, the words small beside them.
   Spacing separates them; nothing else. Empty values (a listing with no
   square footage says "0") are flagged by agent.js §10 and dropped. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-blocks {
	order: 2;
	min-height: 1.3rem; /* holds the line when a listing has no figures, so rows stay level */
	gap: 0.15rem 1.1rem !important;
	margin: 0.15rem 0 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-block { align-items: baseline; gap: 0.3rem; }
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-block[data-lb-empty] { display: none !important; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-value {
	font-family: var(--lb-font-display) !important;
	font-size: 1.25rem !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-info-title {
	font-family: var(--lb-font-text) !important;
	font-size: var(--lb-text-2xs) !important;
	font-weight: var(--lb-weight-regular) !important;
	letter-spacing: 0 !important;
	text-transform: lowercase !important;
	color: var(--lb-ash) !important;
}

/* Street and city from data attributes (agent.js §10). The original text
   (subdivision, street, city) is visually hidden, not removed. The "/ ''"
   alt text keeps screen readers from reading the address twice. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading {
	order: 3;
	margin: 0.35rem 0 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street] {
	font-size: 0 !important;
	line-height: 0 !important;
}

/* The <em><small> subdivision line carries its own font size. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street] :is(em, small) { display: none; }

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street]::before,
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street]::after {
	display: block;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	font-family: var(--lb-font-text);
	line-height: 1.45;
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street]::before {
	/* First line: browsers without alt-text content. */
	content: attr(data-lb-street);
	content: attr(data-lb-street) / '';
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
}

:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-listing-heading[data-lb-street]::after {
	content: attr(data-lb-city);
	content: attr(data-lb-city) / '';
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
}

/* MLS attribution: required, kept, one quiet line. */
:is(.lb-idx-page, .lb-idx) .sidx-search-result-grid-item .sidx-disclaimer {
	margin: 0.4rem 0 0 !important;
	padding: 0 !important;
	border-top: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	font-size: 0.6875rem !important;
	color: var(--lb-ash) !important;
}

/* The agent's own cards, same language. */
.lb-listing {
	overflow: visible;
	background: transparent;
	border: 0;
	border-radius: 0;
}

.lb-listing:hover { transform: none; box-shadow: none; }

.lb-listing__media {
	aspect-ratio: 4 / 3;
	border-radius: var(--lb-radius-lg);
	isolation: isolate;
}

.lb-listing__status {
	background: rgba(12, 22, 38, 0.5);
	-webkit-backdrop-filter: blur(10px) saturate(140%);
	backdrop-filter: blur(10px) saturate(140%);
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16);
	color: #FFFFFF;
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: 0;
	text-transform: none;
}

.lb-listing__body {
	margin: 0;
	padding: 0.9rem 0.15rem 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.lb-listing:hover .lb-listing__body { box-shadow: none; }

.lb-listing__price { font-size: 1.75rem; line-height: 1.05; }

/* Same reading order as Showcase's cards: price, figures, address. */
.lb-listing__body { display: flex; flex-direction: column; }
.lb-listing__price { order: 1; }
.lb-listing__address { order: 3; margin-top: 0.35rem; }
.lb-listing__city { order: 4; }

.lb-listing__specs {
	order: 2;
	gap: 0.15rem 1.1rem;
	margin: 0.3rem 0 0;
	padding: 0;
	border-top: 0;
}
.lb-listing__specs li { align-items: baseline; gap: 0.3rem; font-size: var(--lb-text-2xs); color: var(--lb-ash); }
.lb-listing__specs .lb-icon { display: none; }

.lb-listing__specs b {
	font-family: var(--lb-font-display);
	font-size: 1.25rem;
	font-weight: 400;
	line-height: 1;
	color: var(--lb-ink-deep);
}

.lb-listing:has(.lb-listing__address a:focus-visible) .lb-listing__media {
	outline: 2px solid var(--lb-accent);
	outline-offset: 3px;
}

/* --- Sign-in fly-in: dark glass ---------------------------------------------
   Quieter than the white card: deep navy glass over whatever is behind it,
   fading in slowly. The Google button stays white (Google's brand rules), and
   the card turns back to white once "Use email instead" opens Showcase's form,
   which is built for a light background. Timing matches agent.js §9 (FADE). */

.lb-flyin:not(.lb-flyin--form) {
	background: rgba(12, 22, 38, 0.62);
	-webkit-backdrop-filter: blur(16px) saturate(140%);
	backdrop-filter: blur(16px) saturate(140%);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28), inset 0 0 0 1px rgba(255, 255, 255, 0.14);
	color: #FFFFFF;
}

/* Over a white page the thin glass reads as grey: richer navy there, the
   lighter glass only while it floats over the hero. */
body:not(.lb-has-hero) .lb-flyin:not(.lb-flyin--form),
body.lb-scrolled .lb-flyin:not(.lb-flyin--form) { background: rgba(12, 22, 38, 0.84); }

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.lb-flyin:not(.lb-flyin--form),
	body .lb-flyin:not(.lb-flyin--form) { background: rgba(12, 22, 38, 0.92); }
}

.lb-flyin {
	transform: translateY(6px);
	transition: opacity 1000ms var(--lb-ease), transform 1000ms var(--lb-ease), background-color 300ms var(--lb-ease);
}

.lb-flyin:not(.lb-flyin--form) .lb-flyin__title { color: #FFFFFF; }
.lb-flyin:not(.lb-flyin--form) .lb-flyin__text { color: rgba(255, 255, 255, 0.78); }
.lb-flyin:not(.lb-flyin--form) .lb-flyin__email { color: rgba(255, 255, 255, 0.8); }
.lb-flyin:not(.lb-flyin--form) .lb-flyin__email:hover,
.lb-flyin:not(.lb-flyin--form) .lb-flyin__email:focus-visible { color: #FFFFFF; }
.lb-flyin:not(.lb-flyin--form) .lb-flyin__close { color: rgba(255, 255, 255, 0.75); }
.lb-flyin:not(.lb-flyin--form) .lb-flyin__close:hover { color: #FFFFFF; }
.lb-flyin:not(.lb-flyin--form) :focus-visible { outline-color: #FFFFFF; }

.lb-flyin .lb-flyin__google { background: #FFFFFF; border-color: #FFFFFF; color: #1F1F1F; }

/* Hello Elementor turns every hovered button's text white; keep Google's
   dark label, and show the hover as Google's light grey. */
.lb-flyin .lb-flyin__google:is(:hover, :focus-visible) {
	background: #EDEEF0;
	border-color: #EDEEF0;
	color: #1F1F1F;
}

/* Phones: a slimmer bar-like card; the one-line pitch is the headline alone. */
@media (max-width: 640px) {
	.lb-flyin:not(.lb-flyin--form) { padding: 0.95rem 1rem 0.8rem; }
	.lb-flyin:not(.lb-flyin--form) .lb-flyin__text { display: none; }
	.lb-flyin:not(.lb-flyin--form) .lb-flyin__title { padding-right: 2rem; font-size: 1.25rem; }
	.lb-flyin:not(.lb-flyin--form) .lb-flyin__google { margin-top: 0.7rem; }
}

@media (prefers-reduced-motion: reduce) {
	.lb-flyin { transform: none; transition: opacity 120ms linear; }
}

/* Movable: drag on desktop, swipe away on touch (agent.js §9). */
@media (min-width: 641px) and (pointer: fine) {
	.lb-flyin:not(.lb-flyin--form) { cursor: grab; }
	.lb-flyin :is(button, a, input, label, [data-lb-flyin-auth]) { cursor: auto; }
	.lb-flyin button { cursor: pointer; }
}

.lb-flyin.is-dragging {
	cursor: grabbing;
	user-select: none;
	transition: none;
}

.lb-flyin:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }

/* Touch: the card follows the finger, so it must not start a page scroll. */
@media (max-width: 640px), (pointer: coarse) {
	.lb-flyin:not(.lb-flyin--form) { touch-action: none; }
}

.lb-flyin.is-swiped { transition: transform 280ms var(--lb-ease), opacity 280ms var(--lb-ease); }

/* Phones: a slim strip above the action bar rather than a card over the
   hero, shown from the second page view (agent.js §9). One line of pitch, a
   round Google button - an icon-only button is within Google's branding
   rules, and its label stays for screen readers - and the close. Showcase's
   form ("Use email instead", #lb-signin) keeps the card above. */
@media (max-width: 640px) {
	.lb-flyin:not(.lb-flyin--form):not([hidden]) {
		display: flex;
		align-items: center;
		gap: 0.6rem;
	}

	.lb-flyin:not(.lb-flyin--form) {
		top: auto;
		bottom: calc(0.6rem + env(safe-area-inset-bottom, 0px));
		left: 0.6rem;
		right: 0.6rem;
		width: auto;
		padding: 0.4rem 0.4rem 0.4rem 1.1rem;
		border-radius: var(--lb-radius-pill);
		transform: translateY(0.75rem);
	}

	body.lb-has-actionbar .lb-flyin:not(.lb-flyin--form) {
		bottom: calc(3.6rem + 0.6rem + env(safe-area-inset-bottom, 0px));
	}

	/* Over page content rather than the hero: the richer glass, always. */
	body .lb-flyin:not(.lb-flyin--form) { background: rgba(12, 22, 38, 0.9); }

	.lb-flyin:not(.lb-flyin--form).is-open { transform: none; }

	.lb-flyin:not(.lb-flyin--form) .lb-flyin__title {
		order: 1;
		flex: 1 1 auto;
		min-width: 0;
		margin: 0;
		padding: 0;
		font-size: 1.05rem;
		line-height: 1.2;
	}

	.lb-flyin:not(.lb-flyin--form) :is(.lb-flyin__text, .lb-flyin__email) { display: none; }

	.lb-flyin:not(.lb-flyin--form) .lb-flyin__google {
		order: 2;
		flex: none;
		width: 2.75rem;
		height: 2.75rem;
		margin: 0;
		padding: 0;
		border-radius: 50%;
	}

	.lb-flyin:not(.lb-flyin--form) .lb-flyin__google span {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}

	/* First in the markup, last in the strip. */
	.lb-flyin:not(.lb-flyin--form) .lb-flyin__close {
		order: 3;
		position: static;
		flex: none;
		width: 2.75rem;
		height: 2.75rem;
		margin-left: -0.25rem;
		background: transparent;
		border: 0;
		border-radius: 50%;
	}

	.lb-flyin:not(.lb-flyin--form) .lb-flyin__close:hover { background: rgba(255, 255, 255, 0.1); }
}

/* --- Page-head search bar (Buying a Home and other guide pages) -----------
   Showcase's search-form widget carries its own search button, which the
   search page's toolbar does not. The 38rem page-head width left it and
   Save Search hanging outside the pill as a blue square. Here the bar is wide
   enough to hold both: the button is a round navy magnifier inside the pill,
   and on phones a full-width "Search" with Save Search outlined beneath. */

.lb-pagehead__search:has(.lb-idx--pagehead) { max-width: 58rem; }

.lb-idx--pagehead .sidx-basic { width: 100%; }

.lb-idx--pagehead .sidx-basic button.sidx-primary {
	flex: none;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	width: 2.8rem !important;
	height: 2.8rem !important;
	min-width: 0 !important;
	margin: 0 0.4rem 0 0.5rem !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50% !important;
	background: var(--lb-accent) !important;
	color: var(--lb-on-accent) !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

.lb-idx--pagehead .sidx-basic button.sidx-primary:hover { background: var(--lb-accent-hover) !important; }
.lb-idx--pagehead .sidx-basic button.sidx-primary:focus-visible { outline: 2px solid var(--lb-accent); outline-offset: 2px; }

.lb-idx--pagehead .sidx-basic button.sidx-primary i {
	margin: 0 !important;
	color: inherit !important;
	font-size: 0.95rem !important;
	line-height: 1 !important;
}

/* The magnifier leads now; Save Search sits right after it. */
.lb-idx--pagehead .sidx-save-search-pill { margin-left: 0 !important; }

@media (max-width: 1023px) {
	.lb-idx--pagehead .sidx-basic button.sidx-primary {
		flex: 1 1 100% !important;
		width: 100% !important;
		height: 2.75rem !important;
		margin: 0.3rem 0 0 !important;
		border-radius: var(--lb-radius-pill) !important;
	}

	.lb-idx--pagehead .sidx-basic button.sidx-primary::after {
		content: 'Search';
		font-family: var(--lb-font-text);
		font-size: var(--lb-text-sm);
		font-weight: var(--lb-weight-bold);
	}

	/* Specific enough to beat the shared phone rule for the pill. */
	.lb-idx.lb-idx--pagehead .sidx-basic .sidx-save-search-pill {
		background: transparent !important;
		box-shadow: inset 0 0 0 1px var(--lb-rule) !important;
		color: var(--lb-ink-deep) !important;
		font-size: var(--lb-text-sm) !important;
	}

	.lb-idx.lb-idx--pagehead .sidx-basic .sidx-save-search-pill:hover { background: var(--lb-mist) !important; }
	.lb-idx.lb-idx--pagehead .sidx-basic .sidx-save-search-pill * { font-size: inherit !important; }
}

/* On the dark glass tag the navy "open house" dot disappears; its light tint
   keeps the colour family. */
.lb-listing--open .lb-listing__status::before { background: var(--lb-accent-tint); }

/* --- Hero: cover at any shape ------------------------------------------------
   Phones now play the video too. The 16:9 player is sized against the hero
   box itself (container units), not the viewport, so it covers a tall phone
   hero as it does a wide desktop one; Hello's `iframe { max-width: 100% }`
   would clamp it back, so that is lifted. The poster gets the same cover,
   against the builder's `img { height: auto }`. Same fix as lb-lender-1. */

.lb-hero__frame { container-type: size; }

@supports (width: 1cqw) {
	.lb-hero__frame iframe {
		width: max(100cqw, 177.78cqh);
		height: max(100cqh, 56.25cqw);
		min-width: 0;
		min-height: 0;
		max-width: none;
	}
}

.lb-hero .lb-hero__poster {
	width: 100%;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
}

/* --- Hero finder: no flash of both panels ------------------------------------
   agent.js (deferred) turns Buy / Sell into a switch and hides the Sell panel;
   until it ran, the home search and the home value box showed stacked. The
   inline gate in <head> marks the page before first paint (.lb-js, or
   .lb-motion-off under reduced motion), so the switched state is drawn from
   the start. With no JavaScript at all neither class is set and both panels
   stay on the page, reachable. */
:is(.lb-js, .lb-motion-off) .lb-finder:not(.is-enhanced) .lb-finder__modes { display: inline-flex; }
:is(.lb-js, .lb-motion-off) .lb-finder:not(.is-enhanced) .lb-finder__panel + .lb-finder__panel { display: none; }

/* --- The map (Showcase: Leaflet over Mapbox street tiles) ---------------------
   A quiet map with the listings as the only colour. The street tiles are
   images, so they are toned down with a filter: a cool, pale blue-grey in the
   navy family (satellite view keeps its colour). Price tags and dots become
   navy pills in the site's type; controls become one family of white buttons.
   Status carries through: new listings ("first look") get a gold ring,
   pending and contingent turn to white with navy text. */

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-container {
	background: #E9EDF1;
	font-family: var(--lb-font-text);
}

/* Toned down by fading the tiles over the pale ground rather than with a
   filter: a filter chain on the tile pane is re-rendered on every frame of a
   pan or zoom, and made the whole map drag. Opacity is composited for free. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-tile-pane {
	opacity: 0.82;
}

/* Price tags. Showcase sizes each 38 x 19 and anchors it by margins; the tag
   now sizes to its text, so it is re-centred on its point with `translate`
   (which composes with Leaflet's own transform). */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-marker-icon[class*="sidx-map-marker-"] {
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	translate: -50% calc(-100% - 7px);
	padding: 0.28rem 0.55rem;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background: var(--lb-accent) !important;
	box-shadow: 0 0 0 1.5px #FFFFFF, 0 2px 5px rgba(12, 22, 38, 0.25);
	color: #FFFFFF !important;
	font-family: var(--lb-font-text) !important;
	font-size: 0.75rem !important;
	font-weight: var(--lb-weight-bold) !important;
	line-height: 1.1 !important;
	letter-spacing: 0.01em;
	white-space: nowrap;
	text-align: center;
}

/* The point. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-marker-icon[class*="sidx-map-marker-"]::after {
	content: '';
	position: absolute;
	left: 50%;
	top: 100%;
	width: 0;
	height: 0;
	margin-left: -5px;
	border: 5px solid transparent;
	border-top-color: var(--lb-accent);
	border-bottom: 0;
}

/* Hover: darker, with a stronger ring and lift. No scale: Leaflet places
   tags with transform, and a scale would multiply that offset and throw the
   tag across the map. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-marker-icon[class*="sidx-map-marker-"]:is(:hover, :focus-visible) {
	z-index: 100000 !important;
	background: var(--lb-ink-deep) !important;
	box-shadow: 0 0 0 2.5px #FFFFFF, 0 8px 18px rgba(12, 22, 38, 0.4) !important;
	outline: none;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-marker-icon[class*="sidx-map-marker-"]:is(:hover, :focus-visible)::after { border-top-color: var(--lb-ink-deep); }

/* New ("first look"): a gold ring. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-marker-for-sale-first-look {
	box-shadow: 0 0 0 2px var(--lb-gold), 0 2px 5px rgba(12, 22, 38, 0.25);
}

/* Pending / contingent: white, quieter. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container :is(.sidx-map-marker-for-sale-pending, .sidx-map-marker-for-sale-contingent) {
	background: #FFFFFF !important;
	box-shadow: 0 0 0 1px rgba(12, 22, 38, 0.18), 0 3px 8px rgba(12, 22, 38, 0.18);
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container :is(.sidx-map-marker-for-sale-pending, .sidx-map-marker-for-sale-contingent)::after { border-top-color: #FFFFFF; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container :is(.sidx-map-marker-for-sale-pending, .sidx-map-marker-for-sale-contingent):is(:hover, :focus-visible) { color: #FFFFFF !important; }

/* Dots, when zoomed out. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container [class*="sidx-map-dot-"] .sidx-dot {
	width: 100% !important;
	height: 100% !important;
	border: 2px solid #FFFFFF !important;
	border-radius: 50% !important;
	background: var(--lb-accent) !important;
	box-shadow: 0 1px 4px rgba(12, 22, 38, 0.35);
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-dot-for-sale-first-look .sidx-dot { background: var(--lb-gold) !important; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container :is(.sidx-map-dot-for-sale-pending, .sidx-map-dot-for-sale-contingent) .sidx-dot {
	border-color: var(--lb-accent) !important;
	background: #FFFFFF !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container [class*="sidx-map-dot-"] {
	width: 12px !important;
	height: 12px !important;
	margin: -6px 0 0 -6px !important;
}

/* Controls: one family of white buttons. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar {
	overflow: hidden;
	border: 0 !important;
	border-radius: var(--lb-radius) !important;
	box-shadow: 0 2px 10px rgba(12, 22, 38, 0.16), 0 0 0 1px rgba(12, 22, 38, 0.06) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar a {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 36px !important;
	height: 36px !important;
	border: 0 !important;
	border-bottom: 1px solid var(--lb-rule) !important;
	border-radius: 0 !important;
	background: #FFFFFF !important;
	color: var(--lb-ink-deep) !important;
	font: var(--lb-weight-semibold) 1.05rem/1 var(--lb-font-text) !important;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar a:last-child { border-bottom: 0 !important; }

/* Draw carries a word, not just an icon. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leafleft-editable-control a {
	gap: 0.4rem;
	width: auto !important;
	padding: 0 0.8rem !important;
	font-size: var(--lb-text-xs) !important;
}
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar a:hover { background: var(--lb-mist) !important; }
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar a i { color: inherit !important; font-size: 0.9rem !important; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-bar a.active {
	background: var(--lb-accent) !important;
	color: #FFFFFF !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-touch .leaflet-bar { border: 0 !important; }
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-left .leaflet-control { margin-left: 12px; }
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-top .leaflet-control { margin-top: 12px; }

/* "Search In Map": a white pill with a real toggle. */
:is(.lb-idx-page, .lb-idx) .sidx-listings-map-controls .sidx-control {
	display: inline-flex !important;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0.9rem !important;
	border: 0 !important;
	border-radius: var(--lb-radius-pill) !important;
	background: #FFFFFF !important;
	box-shadow: 0 2px 10px rgba(12, 22, 38, 0.16), 0 0 0 1px rgba(12, 22, 38, 0.06) !important;
	color: var(--lb-ink-deep) !important;
	font: var(--lb-weight-semibold) var(--lb-text-xs)/1 var(--lb-font-text) !important;
	cursor: pointer;
}

:is(.lb-idx-page, .lb-idx) .sidx-listings-map-controls .sidx-control i { color: var(--lb-accent) !important; font-size: 1rem !important; }

/* Attribution: required, kept small. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-control-attribution {
	padding: 2px 8px !important;
	border-radius: var(--lb-radius-pill) 0 0 0;
	background: rgba(255, 255, 255, 0.72) !important;
	color: var(--lb-ash) !important;
	font-size: 0.625rem !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-control-attribution a { color: inherit !important; }

/* --- Listing page: Prev / 1 of N / Back to Results --------------------------- */

.lb-idx-page .sidx-listing-details .sidx-top-level-nav {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin: 0 0 var(--lb-space-md) !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	color: var(--lb-ash) !important;
	font: var(--lb-text-xs)/1.2 var(--lb-font-text) !important;
}

.lb-idx-page .sidx-listing-details .sidx-top-level-nav > :is(a, span) {
	display: inline-flex;
	align-items: center;
	padding: 0.5rem 0.95rem;
	border-radius: var(--lb-radius-pill);
	box-shadow: inset 0 0 0 1px var(--lb-rule);
	color: var(--lb-ink-deep) !important;
	font-weight: var(--lb-weight-semibold);
	text-decoration: none !important;
	transition: background-color var(--lb-duration) var(--lb-ease);
}

.lb-idx-page .sidx-listing-details .sidx-top-level-nav > a:hover { background: var(--lb-mist); }
.lb-idx-page .sidx-listing-details .sidx-top-level-nav > .sidx-disabled { opacity: 0.4; box-shadow: inset 0 0 0 1px var(--lb-rule); }
.lb-idx-page .sidx-listing-details .sidx-top-level-nav .sidx-jump-to-label { display: inline-flex; align-items: center; gap: 0.4rem; }
.lb-idx-page .sidx-listing-details .sidx-top-level-nav i { font-size: 0.7rem !important; color: inherit !important; }

.lb-idx-page .sidx-listing-details .sidx-top-level-nav a.sidx-blue {
	margin-left: 0.35rem;
	color: var(--lb-accent) !important;
	font-weight: var(--lb-weight-semibold);
	text-decoration: underline !important;
	text-underline-offset: 3px;
}


/* Hover preview on a price tag: the listing card in miniature. */
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-tooltip {
	padding: 0 !important;
	border: 0 !important;
	border-radius: var(--lb-radius-lg) !important;
	background: #FFFFFF !important;
	box-shadow: 0 18px 44px rgba(12, 22, 38, 0.24), 0 0 0 1px rgba(12, 22, 38, 0.06) !important;
	opacity: 1 !important;
	color: var(--lb-ink) !important;
	white-space: normal !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-tooltip:empty { display: none; }
:is(.lb-idx-page, .lb-idx) .sidx-map-container .leaflet-tooltip-top::before { border-top-color: #FFFFFF !important; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup {
	width: 18rem;
	overflow: hidden;
	border-radius: var(--lb-radius-lg);
	font-family: var(--lb-font-text);
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup__thumbnail {
	display: block;
	width: 100% !important;
	height: auto !important;
	max-width: none !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup__content {
	width: auto !important; /* Showcase fixes it at 200px */
	padding: 0.7rem 0.85rem 0.8rem !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup :is(.sidx-mls-details, .sidx-primary-info) { width: 100% !important; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-price {
	font-family: var(--lb-font-display) !important;
	font-size: 1.5rem !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-mls-details {
	display: flex !important;
	flex-wrap: wrap;
	gap: 0 0.4rem;
	margin-top: 0.3rem;
	color: var(--lb-ash) !important;
	font-size: var(--lb-text-2xs) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup :is(.sidx-sale-type, .sidx-mls-info) {
	color: var(--lb-ash) !important;
	font-size: var(--lb-text-2xs) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-primary-info { flex: 1 1 100%; margin-top: 0.45rem; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-info-blocks {
	display: flex !important;
	flex-wrap: wrap;
	gap: 0.1rem 0.75rem;
	padding: 0 !important;
	border: 0 !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-info-block { display: inline-flex !important; align-items: baseline; gap: 0.25rem; padding: 0 !important; border: 0 !important; }

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-info-value {
	font-family: var(--lb-font-display) !important;
	font-size: 1.05rem !important;
	font-weight: 400 !important;
	color: var(--lb-ink-deep) !important;
}

:is(.lb-idx-page, .lb-idx) .sidx-map-container .sidx-map-popup .sidx-info-title {
	font-size: var(--lb-text-2xs) !important;
	letter-spacing: 0 !important;
	text-transform: lowercase !important;
	color: var(--lb-ash) !important;
}

/* ==========================================================================
   THANK-YOU PAGE  [lb_thank_you]  (inc/thank-you.php, ported from LB Lender 1)

   Where the lead forms land; the URL ad campaigns count
   as a conversion. One card: what happens next, then the agent one
   tap away, then something useful to do while waiting.
   ========================================================================== */

.e-con.lb-ty-wrap {
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
	padding: 0;
}

.lb-ty {
	padding-block: clamp(2rem, 6vw, 5rem) clamp(3rem, 7vw, 6rem);
	background:
		radial-gradient(60rem 26rem at 50% -8rem, var(--lb-accent-tint), transparent 70%),
		var(--lb-paper);
}

.lb-ty p { max-width: none; }

.lb-ty__wrap {
	width: 100%;
	max-width: calc(40rem + var(--lb-gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--lb-gutter);
}

.lb-ty__card {
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border-top: 4px solid var(--lb-accent);
	border-radius: 12px;
	background-color: var(--lb-surface);
	box-shadow: 0 1px 2px rgba(15, 27, 45, 0.06),
	            0 30px 70px -28px rgba(15, 27, 45, 0.35);
}

.lb-ty__mark {
	display: grid;
	place-items: center;
	width: 3.4rem;
	height: 3.4rem;
	border-radius: 50%;
	background-color: var(--lb-positive);
	box-shadow: 0 0 0 8px color-mix(in srgb, var(--lb-positive) 14%, transparent);
}

.lb-ty__mark svg {
	width: 1.7rem;
	height: 1.7rem;
	fill: none;
	stroke: #FFFFFF;
	stroke-width: 2.5;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 24;
}

.lb-ty__eyebrow {
	margin: 1.25rem 0 0;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-positive);
}

.lb-ty .lb-ty__title {
	margin: 0.4rem 0 0.7rem;
	font-size: clamp(1.9rem, 1.3rem + 2vw, 2.75rem);
	line-height: 1.08;
	color: var(--lb-ink-deep);
}

.lb-ty__lead {
	margin: 0;
	font-size: var(--lb-text-lg);
	line-height: 1.5;
	color: var(--lb-ink);
}

/* What happens next: a short vertical timeline. */
.lb-ty__steps {
	margin: 1.75rem 0 0;
	padding: 0;
	list-style: none;
	counter-reset: lb-ty;
}

.lb-ty__step {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0 0 1.15rem 2.6rem;
	counter-increment: lb-ty;
}

.lb-ty__step::before {
	content: counter(lb-ty);
	position: absolute;
	left: 0;
	top: -0.1rem;
	display: grid;
	place-items: center;
	width: 1.75rem;
	height: 1.75rem;
	border: 2px solid var(--lb-rule);
	border-radius: 50%;
	background-color: var(--lb-surface);
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-bold);
	color: var(--lb-ash);
}

.lb-ty__step:not(:last-child)::after {
	content: '';
	position: absolute;
	left: calc(0.875rem - 1px);
	top: 1.75rem;
	bottom: 0.1rem;
	width: 2px;
	background-color: var(--lb-rule);
}

.lb-ty__step.is-current::before {
	border-color: var(--lb-accent);
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-ty__step-title {
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
}

.lb-ty__now {
	display: inline-block;
	margin-left: 0.35rem;
	padding: 0.15rem 0.5rem;
	border-radius: var(--lb-radius-pill);
	background-color: var(--lb-accent-tint);
	font-size: var(--lb-text-2xs);
	font-weight: var(--lb-weight-bold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-accent-text);
	vertical-align: 0.15em;
}

.lb-ty__step-text {
	font-size: var(--lb-text-sm);
	line-height: 1.5;
	color: var(--lb-ash);
}

/* The loan officer. */
.lb-ty__officer {
	margin-top: 0.75rem;
	padding: 1.25rem;
	border-radius: 10px;
	background-color: var(--lb-mist);
}

.lb-ty__who {
	display: flex;
	align-items: center;
	gap: 0.9rem;
}

.lb-ty .lb-ty__face {
	width: 3.5rem;
	height: 3.5rem;
	flex: none;
	border: 2px solid var(--lb-surface);
	border-radius: 50% !important;
	object-fit: cover;
	box-shadow: 0 2px 8px rgba(15, 27, 45, 0.15);
}

.lb-ty__name {
	margin: 0;
	font-family: var(--lb-font-display);
	font-size: var(--lb-text-xl);
	line-height: 1.2;
	color: var(--lb-ink-deep);
}

.lb-ty__meta {
	margin: 0.1rem 0 0;
	font-size: var(--lb-text-xs);
	color: var(--lb-ash);
}

.lb-ty__heads-up {
	margin: 1rem 0 0;
	font-size: var(--lb-text-sm);
	line-height: 1.5;
	color: var(--lb-ink);
}

.lb-ty__actions {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(6.5rem, 1fr));
	gap: 0.5rem;
	margin-top: 1rem;
}

.lb-ty__action {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	min-height: 2.9rem;
	padding: 0.6rem 0.8rem;
	border: 1px solid var(--lb-rule);
	border-radius: 8px;
	background-color: var(--lb-surface);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
	text-decoration: none;
	transition: border-color var(--lb-duration) var(--lb-ease), background-color var(--lb-duration) var(--lb-ease), color var(--lb-duration) var(--lb-ease);
}

.lb-ty__action:hover,
.lb-ty__action:focus-visible {
	border-color: var(--lb-accent);
	color: var(--lb-ink-deep);
}

.lb-ty__action svg {
	width: 1.1rem;
	height: 1.1rem;
	flex: none;
	fill: none;
	stroke: var(--lb-accent);
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lb-ty__action--save {
	grid-column: 1 / -1;
	border-color: var(--lb-accent);
	background-color: var(--lb-accent);
	color: var(--lb-on-accent);
}

.lb-ty__action--save svg { stroke: currentColor; }

.lb-ty__action--save:hover,
.lb-ty__action--save:focus-visible {
	background-color: var(--lb-accent-hover);
	border-color: var(--lb-accent-hover);
	color: var(--lb-on-accent);
}

/* While you wait. */
.lb-ty__next { margin-top: 2rem; }

.lb-ty__next-title {
	margin: 0 0 0.75rem;
	font-size: var(--lb-text-xs);
	font-weight: var(--lb-weight-semibold);
	letter-spacing: var(--lb-tracking-label);
	text-transform: uppercase;
	color: var(--lb-ash);
}

.lb-ty__next-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: 0.75rem;
}

.lb-ty__tile {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	padding: 1.1rem 1.2rem;
	border: var(--lb-hairline);
	border-radius: 10px;
	background-color: var(--lb-surface);
	text-decoration: none;
	transition: border-color var(--lb-duration) var(--lb-ease), box-shadow var(--lb-duration) var(--lb-ease), transform var(--lb-duration) var(--lb-ease);
}

.lb-ty__tile:hover,
.lb-ty__tile:focus-visible {
	border-color: var(--lb-accent);
	box-shadow: var(--lb-shadow-panel);
	transform: translateY(-2px);
}

.lb-ty__tile-title {
	font-size: var(--lb-text-base);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
}

.lb-ty__tile-title::after {
	content: ' \2192';
	color: var(--lb-accent-text);
}

.lb-ty__tile-text {
	font-size: var(--lb-text-sm);
	line-height: 1.45;
	color: var(--lb-ash);
}

@media (prefers-reduced-motion: no-preference) {
	.lb-ty__mark { animation: lb-ty-pop 480ms var(--lb-ease) both; }
	.lb-ty__mark svg { animation: lb-ty-tick 420ms var(--lb-ease) 260ms both; }
}

.lb-motion-off .lb-ty__mark,
.lb-motion-off .lb-ty__mark svg { animation: none; }

@keyframes lb-ty-pop {
	from { opacity: 0; transform: scale(0.6); }
	to   { opacity: 1; transform: scale(1); }
}

@keyframes lb-ty-tick {
	from { stroke-dashoffset: 24; }
	to   { stroke-dashoffset: 0; }
}

/* ==========================================================================
   LEAVE A REVIEW  [lb_review_form]  (lb-core/inc/reviews.php)

   One card: stars first (tap to rate), then the review, then the name.
   Submissions wait in Pro Settings > Reviews until approved.
   ========================================================================== */

.lb-rv-host { width: 100%; max-width: 40rem; margin-inline: auto; }

.lb-rv {
	display: grid;
	gap: 1.1rem;
	padding: clamp(1.25rem, 4vw, 2.25rem);
	border: 1px solid var(--lb-rule);
	border-top: 4px solid var(--lb-accent);
	border-radius: var(--lb-radius-lg);
	background: var(--lb-surface);
	box-shadow: var(--lb-shadow-panel);
}

.lb-rv p { max-width: none; margin: 0; }

.lb-rv__label {
	display: block;
	margin-bottom: 0.4rem;
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	color: var(--lb-ink-deep);
}

.lb-rv__opt { font-weight: 400; color: var(--lb-ash); }

.lb-rv__hint { display: block; margin-top: 0.35rem; font-size: var(--lb-text-xs); color: var(--lb-ash); }

.lb-rv :is(input[type="text"], textarea, select) {
	width: 100%;
	padding: 0.75rem 0.9rem;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius);
	background: var(--lb-paper);
	font: inherit;
	font-size: var(--lb-text-base);
	color: var(--lb-ink);
}

.lb-rv :is(input[type="text"], select) { height: 3rem; }
.lb-rv textarea { min-height: 8rem; resize: vertical; line-height: 1.5; }

.lb-rv :is(input[type="text"], textarea, select):focus {
	outline: none;
	border-color: var(--lb-accent);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--lb-accent) 16%, transparent);
	background: var(--lb-surface);
}

.lb-rv__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1.1rem; }

/* Stars: five radios, drawn right to left so "this star and the ones before
   it" is a plain sibling selector. */
.lb-rv__stars { margin: 0; padding: 0; border: 0; min-width: 0; }

.lb-rv__star-row {
	display: inline-flex;
	flex-direction: row-reverse;
	justify-content: flex-end;
	gap: 0.2rem;
}

.lb-rv__star-row input { position: absolute; opacity: 0; width: 1px; height: 1px; }

.lb-rv__star-row label { cursor: pointer; line-height: 0; }

.lb-rv__star-row svg {
	width: 2.25rem;
	height: 2.25rem;
	fill: transparent;
	stroke: var(--lb-rule-strong, #C8CDD3);
	stroke-width: 1.5;
	stroke-linejoin: round;
	transition: fill 0.15s ease, stroke 0.15s ease, transform 0.15s ease;
}

.lb-rv__star-row input:checked ~ label svg,
.lb-rv__star-row label:hover svg,
.lb-rv__star-row label:hover ~ label svg {
	fill: var(--lb-gold, #E0A526);
	stroke: var(--lb-gold, #E0A526);
}

.lb-rv__star-row label:hover svg { transform: scale(1.08); }

.lb-rv__star-row input:focus-visible + label svg { outline: 2px solid var(--lb-accent); outline-offset: 2px; border-radius: 4px; }

.lb-rv__submit {
	justify-self: start;
	min-height: 3rem;
	padding: 0 1.6rem;
	border: 0;
	border-radius: var(--lb-radius-pill);
	background: var(--lb-accent);
	color: var(--lb-on-accent);
	font: inherit;
	font-weight: var(--lb-weight-bold);
	cursor: pointer;
	transition: background-color 0.2s ease;
}

.lb-rv__submit:hover { background: var(--lb-accent-hover); }

.lb-rv__note { font-size: var(--lb-text-xs); color: var(--lb-ash); }

.lb-rv__error {
	padding: 0.7rem 0.9rem;
	border-radius: var(--lb-radius);
	background: #FDECEC;
	color: #9B1C1C;
	font-size: var(--lb-text-sm);
}

/* Honeypot: off screen, not display:none (some bots skip hidden fields). */
.lb-rv__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.lb-rv--done { text-align: center; }
.lb-rv__done-title { font-family: var(--lb-font-display); font-size: var(--lb-text-2xl, 1.75rem); color: var(--lb-ink-deep); }

@media (max-width: 600px) {
	.lb-rv__submit { justify-self: stretch; }
	.lb-rv__star-row svg { width: 2.5rem; height: 2.5rem; }
}

@media (prefers-reduced-motion: reduce) {
	.lb-rv__star-row svg { transition: none; }
}

/* ==========================================================================
   TEAM  [agent_team]  (inc/team.php)
   Cards on About (#team), a compact row on the home page. Team sites only.
   ========================================================================== */

.lb-team--cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
	gap: var(--lb-space-lg);
}

.lb-team__card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius-lg);
	background: var(--lb-surface);
	box-shadow: var(--lb-shadow-panel);
}

.lb-team__photo { margin: 0; aspect-ratio: 4 / 3; background: var(--lb-sand); }
.lb-team .lb-team__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 20%; border-radius: 0; }

.lb-team__body { display: flex; flex-direction: column; gap: 0.5rem; padding: clamp(1.25rem, 3vw, 1.75rem); }

.lb-team .lb-team__name { margin: 0; font-family: var(--lb-font-display); font-size: var(--lb-text-xl); line-height: 1.15; color: var(--lb-ink-deep); }
.lb-team__title { margin: 0; font-size: var(--lb-text-xs); font-weight: var(--lb-weight-semibold); letter-spacing: 0.06em; text-transform: uppercase; color: var(--lb-accent-text); }
.lb-team__bio { font-size: var(--lb-text-sm); line-height: 1.6; color: var(--lb-ink); }
.lb-team__bio p { margin: 0.5rem 0 0; max-width: none; }

.lb-team__actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: auto 0 0; padding-top: 0.75rem; }

.lb-team__action {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	min-height: 2.6rem;
	padding: 0 1rem;
	border: 1px solid var(--lb-rule);
	border-radius: var(--lb-radius-pill);
	color: var(--lb-ink-deep);
	font-size: var(--lb-text-sm);
	font-weight: var(--lb-weight-semibold);
	text-decoration: none;
	transition: border-color 0.2s ease;
}

.lb-team__action:hover { border-color: var(--lb-accent); color: var(--lb-ink-deep); }
.lb-team__action .lb-icon { width: 1rem; height: 1rem; color: var(--lb-accent); }

.lb-team--row { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--lb-space-sm) var(--lb-space-lg); }

.lb-team__mini { display: inline-flex; align-items: center; gap: 0.8rem; color: inherit; text-decoration: none; }
.lb-team__mini:hover .lb-team__name { color: var(--lb-accent-text); }
.lb-team .lb-team__face { width: 3.5rem; height: 3.5rem; border: 2px solid var(--lb-surface); border-radius: 50%; object-fit: cover; box-shadow: 0 2px 8px rgba(15, 27, 45, 0.15); }
.lb-team__mini-text { display: flex; flex-direction: column; gap: 0.1rem; }
.lb-team--row .lb-team__name { font-size: var(--lb-text-lg); }

/* Footer email on one line: it shrinks to fit its column (to 0.8rem), and only
   then breaks after the @ (the <wbr> in [agent_footer_contact]). */
.lb-footcontact__email { container-type: inline-size; }
.lb-footcontact__email a { font-size: min(var(--lb-text-sm), max(0.8rem, calc((100cqi - 2rem) / (var(--lb-len, 24) * 0.56)))); }

/* Showcase's listing carousel (featured homes) lays its cards edge to edge
   and pages by the slot width; padding inside each slot makes the gap
   without changing that width. */
.lb-idx .sidx-grid.sidx-grid-no-gap .sidx-search-result-grid-item.sidx-search-result-grid-item { box-sizing: border-box !important; padding-inline: 0.75rem !important; }
