/**
 * Laydn tour — BOARD SCREEN (Find Loads, list view).
 *
 * Prefix: .flb-  (find-loads board). Every selector below starts with a .flb
 * class or is scoped under .lw-scaler, so nothing reaches the marketing page
 * or another screen.
 *
 * ⚠️ THE APP IS A LIGHT THEME INSIDE A DARK SITE. The marketing body colour is
 *    var(--white) (#F2F2F2) and style.css paints every bare <p> in
 *    var(--muted) (rgba(242,242,242,.55)); inheriting either into a white card
 *    is the documented way to render an invisible screen on this theme. Every
 *    container AND every text element below sets its own colour. The dark hero
 *    card sets a LIGHT colour on itself, so nothing inside it can inherit the
 *    screen's black ink either.
 *
 * ⚠️ Volt #C8F135 is text ONLY on a black surface (hero card, "Interested"
 *    button). On white it is a fill or a border; as text it is #4a6b00/#2d6300.
 *
 * ⚠️ style.css forces 16px !important on every input/select on touch devices
 *    (the iOS focus-zoom guard). It reaches in here on a real phone, so the
 *    controls below are sized to survive 16px text: selects size to their
 *    longest option instead of a fixed width, and grid tracks are minmax(0,…).
 *
 * Palette (shared with laydn-tour.css tokens):
 *    ink #0a0a0a · body #5a6068 · faint #8a909a · line #e3e6ea · hairline #eef0f3
 *    card #fff · ground #f7f8fa · volt #C8F135 · volt-as-text #4a6b00
 *    fire #ff5c35 · amber #fff4e0 / #8a5a00 / #f0dcb8 · cyan #e0f6fb / #0b6b7d
 *
 * Loaded alongside assets/css/laydn-tour.css, which owns .lw-* and the tokens.
 * Rules that compete with .lw-head are written as `.flb .flb-head …` so they
 * win on specificity whichever of the two sheets loads first.
 */

/* [hidden] needs help: several blocks below set display explicitly, and the
   engine reveals states purely by toggling the hidden attribute. */
.flb [hidden] { display: none !important; }

.flb { color: #0a0a0a; font-family: 'Inter', system-ui, sans-serif; }


/* ============================================================
 * 1. HEADSTACK — the dark hero card on the light page
 * ========================================================== */

/* .lw-head already gives us #0a0a0a, the volt border, the halo and the shadow. */
.flb .flb-head { padding: 20px 22px 18px; margin-bottom: 18px; color: #F2F2F2; }

.flb-page-head {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
}
.flb-page-head-text { min-width: 0; color: #F2F2F2; }
.flb .flb-head .k { color: rgba(242,242,242,.55); }
.flb .flb-head h1 { color: #F2F2F2; font-size: 34px; line-height: 1.05; margin: 0; }
.flb .flb-head h1 .a { color: #C8F135; }
.flb .flb-head h1 .flb-num { color: #F2F2F2; font-variant-numeric: tabular-nums; }

/* the Filters pill */
.flb-toggle {
	position: relative; flex: none; display: inline-flex; align-items: center; gap: 8px;
	padding: 8px 14px 8px 12px; border-radius: 99px; cursor: pointer;
	background: rgba(200,241,53,.10); border: 1px solid rgba(200,241,53,.45);
	color: #C8F135; font-family: 'Anta', 'Inter', sans-serif; font-size: 11px; line-height: 1.3;
	text-transform: uppercase; letter-spacing: .08em; white-space: nowrap;
}
.flb-toggle > i.fa-solid { font-size: 12px; color: #C8F135; }
.flb-toggle span { color: #C8F135; }
/* The pill can't clip (its aura glows outward), so keep the press ripple
   inside the pill's own box instead of letting a 100px disc spill off it. */
.flb-toggle.lw-rippling::after { max-width: 100%; max-height: 100%; }

/* The collapsed-state aura, breathing so the eye finds it. It only runs while
   the film plays: pause must pause the picture, and a paused or screenshotted
   frame must not depend on wall-clock time. */
.flb-aura {
	position: absolute; inset: -1px; border-radius: 99px; pointer-events: none;
	border: 1px solid #C8F135;
	animation: flb-aura 2.2s ease-in-out infinite;
	animation-play-state: paused;
}
.lw.is-playing .lw-scaler .flb-aura { animation-play-state: running; }
@keyframes flb-aura {
	0%, 100% { box-shadow: 0 0 0 0 rgba(200,241,53,.34); }
	50%      { box-shadow: 0 0 0 7px rgba(200,241,53,0); }
}
@media (prefers-reduced-motion: reduce) { .flb-aura { animation: none; } }


/* ============================================================
 * 2. THE FILTER CARD — translucent, inside the black hero card
 * ========================================================== */

.flb-filters {
	display: flex; flex-direction: column; gap: 14px; margin-top: 16px;
	background: rgba(255,255,255,.03); border: 1px solid rgba(200,241,53,.35);
	border-radius: 12px; padding: 16px; color: rgba(242,242,242,.75);
}
.flb-grid { display: grid; gap: 12px; }
.flb-grid > div { min-width: 0; }
.flb-row-1 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.flb-row-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* Field labels only. Scoped to the grids so it cannot also restyle the
   "Hide my loads" <label> (it used to: uppercase 10px, switch collapsed). */
.flb-filters .flb-grid label {
	display: block; margin-bottom: 6px;
	font-family: 'Inter', system-ui, sans-serif; font-size: 10px; font-weight: 600; line-height: 1.5;
	letter-spacing: .10em; text-transform: uppercase; color: rgba(242,242,242,.75);
}

.flb-filters input[type="text"],
.flb-filters input[type="date"],
.flb-filters select {
	width: 100%; min-width: 0; height: 38px; padding: 0 11px; margin: 0;
	background: #fff; border: 1px solid #d6dae0; border-radius: 7px;
	color: #0a0a0a; font-family: 'Inter', system-ui, sans-serif; font-size: 13px; line-height: 36px;
	-webkit-appearance: none; appearance: none;
}
.flb-filters input::placeholder { color: #a8aeb6; opacity: 1; }
.flb-filters input[type="date"] { min-height: 0; }

/* the volt caret, darkened so it is legible on a white field */
.flb-filters select {
	padding-right: 30px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234a6b00' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 12px center;
}
.flb-filters option,
.flb-filters optgroup,
.flb-sort option { color: #0a0a0a; background: #fff; }

/* Radius select sizes to its longest option ("Within 200 mi"), never below the
   product's 132px — a fixed 132px clipped the text at 16px on touch devices. */
.flb-combo-fields { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.flb-combo-fields select { width: auto; min-width: 132px; }

.flb-resolved {
	display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
	background: #C8F135; color: #0a0a0a; border-radius: 999px;
	padding: 4px 11px; font-size: 11px; font-weight: 600; line-height: 1.4;
}
.flb-resolved i { font-size: 10px; color: #0a0a0a; }

.flb-actions-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.flb-actions-btns { display: flex; align-items: center; gap: 10px; margin-left: auto; }

.flb-submit {
	display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
	background: #C8F135; color: #0a0a0a; border: 0; border-radius: 8px;
	padding: 11px 22px; font-family: 'Anta', 'Inter', sans-serif; font-size: 13px; line-height: 1.3;
	box-shadow: 0 6px 14px rgba(200,241,53,.22);
	position: relative; overflow: hidden;
}
.flb-submit i { color: #0a0a0a; font-size: 12px; }

.flb-clear {
	display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
	background: transparent; border: 1px solid rgba(255,255,255,.18); border-radius: 8px;
	padding: 10px 16px; font-size: 12.5px; line-height: 1.3; color: rgba(242,242,242,.70);
	position: relative; overflow: hidden;
}
.flb-clear i { font-size: 11px; color: rgba(242,242,242,.55); }
.flb-clear.is-disabled { opacity: .40; cursor: default; }

/* iOS-style switch, revealed only when the result set holds your own loads */
.flb-hide-mine {
	display: flex; align-items: center; gap: 9px; margin: 0; cursor: pointer;
	color: rgba(242,242,242,.72); text-transform: none; letter-spacing: 0;
}
.flb-switch { display: block; width: 42px; height: 24px; border-radius: 99px; background: #2a2a2a; position: relative; flex: none; }
.flb-knob { position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 99px; background: #f2f2f2; }
.flb-switch-text { font-size: 12.5px; line-height: 1.3; color: rgba(242,242,242,.72); }


/* ============================================================
 * 2b. THE GATE — a member who hasn't finished compliance
 * The product's .fl-gate-banner: cream card, brown lock tile, volt CTA.
 * ========================================================== */

.flb-gate {
	display: flex; align-items: center; gap: 16px; margin: 0 0 18px; padding: 18px 20px;
	background: #fff7e6; border: 1px solid #f0c674; border-radius: 14px;
	box-shadow: 0 0 0 4px rgba(240,198,116,.10); color: #4a2e00;
}
.flb-gate-icon {
	flex: none; width: 46px; height: 46px; border-radius: 11px; background: #7a4a00;
	display: inline-flex; align-items: center; justify-content: center;
}
.flb-gate-icon i { color: #ffd58a; font-size: 19px; }
.flb-gate-body { flex: 1; min-width: 0; color: #4a2e00; }
.flb-gate-title { margin-bottom: 3px; font-family: 'Anta', 'Inter', sans-serif; font-size: 15px; line-height: 1.3; letter-spacing: .01em; color: #4a2e00; }
.flb-gate-sub { font-size: 13px; line-height: 1.45; color: #6a4400; }
.flb-gate-cta {
	flex: none; display: inline-flex; align-items: center; gap: 7px; padding: 11px 18px;
	background: #C8F135; color: #0a0a0a; border-radius: 9px;
	font-family: 'Anta', 'Inter', sans-serif; font-size: 13px; line-height: 1.3;
	box-shadow: 0 6px 14px rgba(200,241,53,.22); position: relative; overflow: hidden;
}
.flb-gate-cta i { color: #0a0a0a; font-size: 12px; }


/* ============================================================
 * 3. COUNT + VIEW TOGGLE + SORT
 * ========================================================== */

.flb-meta {
	display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
	gap: 12px; margin-bottom: 14px; color: #5a6068;
}
.flb-count { font-size: 13px; color: #5a6068; }
.flb-count strong { color: #0a0a0a; font-weight: 600; font-variant-numeric: tabular-nums; }
.flb-meta-right { display: flex; align-items: center; gap: 14px; min-width: 0; }

.flb-viewtoggle {
	display: inline-flex; gap: 2px; padding: 3px;
	background: #fff; border: 1px solid #d6dae0; border-radius: 9px;
}
.flb-viewtoggle button {
	display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
	background: transparent; border: 0; border-radius: 7px; padding: 6px 13px;
	font-family: 'Anta', 'Inter', sans-serif; font-size: 12px; line-height: 1.3; color: #5a6068;
	position: relative; overflow: hidden;
}
.flb-viewtoggle button i { font-size: 12px; color: #5a6068; }
/* The active pill is a volt layer inside each button, switched by data-when-view,
   so the two hooks stay on the two real buttons in every state. :has() inks the
   label of whichever button's layer is showing. */
.flb-vt-on { position: absolute; inset: 0; border-radius: 7px; background: #C8F135; }
.flb-viewtoggle button > .fa-solid,
.flb-viewtoggle button > span { position: relative; z-index: 1; }
.flb-viewtoggle button:has(> .flb-vt-on:not([hidden])),
.flb-viewtoggle button:has(> .flb-vt-on:not([hidden])) > span,
.flb-viewtoggle button:has(> .flb-vt-on:not([hidden])) > .fa-solid { color: #0a0a0a; }

.flb-sort-wrap { display: flex; align-items: center; gap: 8px; min-width: 0; }
.flb-sort-wrap label { font-size: 12px; color: #5a6068; }
.flb-sort {
	height: 34px; min-width: 0; max-width: 100%; padding: 0 30px 0 11px; cursor: pointer;
	background: #fff; border: 1px solid #d6dae0; border-radius: 8px;
	color: #0a0a0a; font-family: 'Inter', system-ui, sans-serif; font-size: 12.5px;
	-webkit-appearance: none; appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234a6b00' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 11px center;
}


/* ============================================================
 * 4. THE CARDS — the unit of the board
 * ========================================================== */

.flb-list { display: flex; flex-direction: column; gap: 12px; padding-top: 4px; color: #0a0a0a; }

.flb-card {
	background: #fff; color: #0a0a0a; border: 1px solid #e3e6ea; border-radius: 12px;
	padding: 16px 20px; box-shadow: 0 1px 2px rgba(15,18,22,.04);
	/* Hover lift is a film op, not a transition — the engine drives every frame. */
}
/* Cards pass UNDER the header: never raise this above the headstack. */
.flb-card.lw-hover {
	border-color: rgba(200,241,53,.55);
	box-shadow: 0 14px 32px rgba(15,18,22,.10);
	position: relative; z-index: 2;
}

.flb-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.flb-route {
	min-width: 0; margin: 0; font-family: 'Anta', 'Inter', sans-serif; font-size: 18px; line-height: 1.15;
	color: #0a0a0a; font-weight: 400; letter-spacing: 0;
}
.flb-route .pc { color: #8a909a; font-weight: 400; font-size: .75em; }
.flb-arrow { display: inline-block; margin: 0 4px; }
.flb-arrow i { color: #b0b5bc; font-size: 13px; }
.flb-price {
	flex: none; font-family: 'Anta', 'Inter', sans-serif; font-size: 22px; line-height: 1;
	letter-spacing: -.01em; color: #0a0a0a; font-variant-numeric: tabular-nums;
}

.flb-distance { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.flb-dist-pill {
	display: inline-flex; align-items: center; gap: 6px;
	background: rgba(200,241,53,.18); color: #2d6300; border: 1px solid rgba(200,241,53,.40);
	border-radius: 999px; padding: 3px 10px; font-size: 11.5px; font-weight: 600; line-height: 1.4;
}
.flb-dist-pill i { font-size: 9px; color: #2d6300; opacity: .85; }

.flb-specs { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: 13px; color: #5a6068; }
.flb-specs span { display: inline-flex; align-items: center; gap: 7px; color: #5a6068; }
.flb-specs i { font-size: 11px; color: #1a1a1a; opacity: .85; }

/* the amber capability chip (trailer height) — kept for the palette even though
   no fixture row currently carries one */
.flb-spec-req {
	background: #fff4e0; color: #8a5a00; border: 1px solid #f0dcb8;
	border-radius: 99px; padding: 2px 10px; font-size: 11.5px;
}
.flb-spec-req i { color: #8a5a00; }

.flb-times {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 11px;
	background: #f4f6f8; border: 1px solid #e3e6ea; border-radius: 8px; padding: 10px 12px;
	color: #0a0a0a;
}
.flb-times .lbl {
	font-size: 10px; font-weight: 600; letter-spacing: .10em; text-transform: uppercase;
	color: #6a6f78; margin-bottom: 3px;
}
.flb-times .val { font-size: 13px; color: #0a0a0a; }
.flb-times .val span { color: #8a909a; }

.flb-desc { margin-top: 10px; font-size: 14px; line-height: 1.4; color: #0a0a0a; }

.flb-foot {
	display: flex; align-items: center; justify-content: space-between; gap: 14px;
	margin-top: 12px; padding-top: 12px; border-top: 1px solid #e3e6ea; color: #6a6f78;
}
.flb-foot-meta { font-size: 12px; color: #6a6f78; min-height: 16px; }
.flb-card-actions { display: flex; align-items: center; gap: 12px; flex: none; color: #0a0a0a; }

.flb-btn-want {
	display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
	background: #C8F135; color: #0a0a0a; border: 1.5px solid #C8F135; border-radius: 8px;
	padding: 9px 18px; font-family: 'Anta', 'Inter', sans-serif; font-size: 14px; line-height: 1.3;
	white-space: nowrap; position: relative; overflow: hidden;
}
.flb-btn-want i { color: inherit; font-size: 12px; }
.flb-btn-want.is-mine-interested { background: #0a0a0a; color: #C8F135; border-color: #0a0a0a; }

.flb-cta-done { display: inline-flex; align-items: center; gap: 12px; color: #5a6068; }
.flb-interest-by { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: #5a6068; white-space: nowrap; }
.flb-interest-by i { color: #2d6300; font-size: 11px; }

/* Own loads are FIRE on light, not volt — getting this wrong makes your own
   listings look like the primary CTA. Kept here for the day a fixture has one. */
.flb-card.is-mine {
	border-color: rgba(255,92,53,.55);
	background: linear-gradient(135deg, rgba(255,92,53,.05), #fff 45%);
}
.flb-mine-tag, .flb-mine-pill {
	display: inline-flex; align-items: center; gap: 6px;
	background: #ff5c35; color: #fff; border: 1px solid #ff5c35;
	border-radius: 99px; padding: 3px 10px; font-size: 11px; font-weight: 600;
}


/* ============================================================
 * 5. EMPTY BOARD + FEED SENTINEL
 * ========================================================== */

.flb-empty {
	background: #fff; color: #0a0a0a; border: 1px solid #e3e6ea; border-radius: 12px;
	box-shadow: 0 1px 2px rgba(15,18,22,.04);
	padding: 56px 24px; text-align: center;
}
/* Volt glyph on white was a pale smudge; the darkened volt reads as the brand. */
.flb-empty > i { font-size: 36px; color: rgba(74,107,0,.42); }
.flb-empty h2 { font-family: 'Anta', 'Inter', sans-serif; font-size: 22px; line-height: 1.15; color: #0a0a0a; margin: 14px 0 8px; font-weight: 400; }
.flb-empty p { font-size: 14px; line-height: 1.5; color: #5a6068; margin: 0 0 22px; }
.flb-empty-btn {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 11px 20px; border-radius: 8px;
	background: #fff; color: #0a0a0a; border: 1px solid #d6dae0;
	font-family: 'Anta', 'Inter', sans-serif; font-size: 14px; line-height: 1.3;
	position: relative; overflow: hidden;
}

.flb-infinite {
	display: flex; align-items: center; justify-content: center;
	min-height: 46px; padding: 24px 0 10px; color: #8a909a;
}
.flb-spinner { display: flex; color: #4a6b00; font-size: 18px; }
/* Font Awesome's spin is free-running; tie it to playback like the aura. */
.lw-scaler .flb-spinner .fa-spin { animation-play-state: paused; }
.lw.is-playing .lw-scaler .flb-spinner .fa-spin { animation-play-state: running; }
.flb-feed-end { margin: 0; font-size: 12.5px; line-height: 1.5; color: #8a909a; text-align: center; }


/* ============================================================
 * 5b. MAP VIEW — a stylised panel, never tiles
 *
 * Two SVGs stacked in one box, sharing viewBox 0 0 420 580 with "meet": it
 * renders 1:1 in the desk box (952x580, the ground overhangs left and right)
 * and in the phone's immersive box (420x651, overhang top and bottom), so a
 * pin or a label is the same size in both. No element here is animated by
 * CSS; the engine reveals pins and toggles states.
 * ========================================================== */

.flb-mapwrap { position: relative; }
.flb-map {
	position: relative; height: 580px; border-radius: 16px; overflow: hidden;
	background: #e8ebee; box-shadow: 0 1px 2px rgba(15,18,22,.04);
}
/* the product's 1px #e3e6ea edge, drawn over the map so the SVG keeps 952x580 */
.flb-map::after {
	content: ''; position: absolute; inset: 0; z-index: 6; pointer-events: none;
	border: 1px solid #e3e6ea; border-radius: 16px;
}
.flb-map-tiles { position: absolute; inset: 0; }
.flb-map-svg { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: hidden; }
.flb-map-over { z-index: 1; }

/* The ground. A gated member's map is desaturated, exactly the filter the
   product prints for .leaflet-tile-pane only when its gate banner shows. */
.flb:has(> .flb-gate:not([hidden])) .flb-map-tiles { filter: grayscale(.9) brightness(1.06) contrast(.94); }
.flb-map-svg .flb-land { fill: #f1efe9; }
.flb-map-svg .flb-sea { fill: #cfe0ea; }
.flb-map-svg .flb-aroad-case path { fill: none; stroke: #e2cfa8; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.flb-map-svg .flb-aroad path { fill: none; stroke: #fbf2de; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.flb-map-svg .flb-mway-case path { fill: none; stroke: #d7a656; stroke-width: 4.6; stroke-linecap: round; stroke-linejoin: round; }
.flb-map-svg .flb-mway path { fill: none; stroke: #f6d08e; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.flb-map-svg .flb-shield rect { fill: #1d5fa8; stroke: #ffffff; stroke-width: 1; }
.flb-map-svg .flb-shield text { fill: #ffffff; font-family: 'Inter', system-ui, sans-serif; font-size: 8.5px; font-weight: 700; letter-spacing: .02em; }
.flb-map-svg .flb-towns circle { fill: #8a909a; }
.flb-map-svg .flb-towns text {
	fill: #5a6068; font-family: 'Inter', system-ui, sans-serif; font-size: 10.5px; font-weight: 500;
	stroke: #f1efe9; stroke-width: 3px; stroke-linejoin: round; paint-order: stroke;
}
.flb-map-svg .flb-towns text.is-major { fill: #3a3f45; font-size: 11.5px; font-weight: 600; }

/* The markers: the product's radius (cyan ring + anchor dot), the dashed line a
   tapped pin draws to its drop, and the volt teardrop pins. A reveal op scales
   a pin from its tip. */
.flb-map-over .flb-ring { fill: #00C9A7; fill-opacity: .06; stroke: #00C9A7; stroke-opacity: .7; stroke-width: 1.5; }
.flb-map-over .flb-map-line { fill: none; stroke: #C8F135; stroke-opacity: .7; stroke-width: 2; stroke-dasharray: 6 7; stroke-linecap: round; }
.flb-map-over .flb-pin { transform-box: fill-box; transform-origin: 50% 100%; }

/* Leaflet's zoom control, as it draws itself on touch devices. */
.flb-zoom {
	position: absolute; top: 10px; left: 10px; z-index: 3; display: flex; flex-direction: column;
	background: #ffffff; border: 2px solid rgba(0,0,0,.2); border-radius: 4px; background-clip: padding-box;
}
.flb-zoom span {
	display: flex; align-items: center; justify-content: center; width: 30px; height: 30px;
	color: #000000; font: bold 18px/30px 'Lucida Console', Monaco, monospace;
}
.flb-zoom span + span { border-top: 1px solid #cccccc; }

/* desk only: the floating Fullscreen button */
.flb-map-fs {
	position: absolute; top: 14px; right: 14px; z-index: 3; display: inline-flex; align-items: center; gap: 8px;
	padding: 9px 14px 9px 12px; border-radius: 9px; background: #0a0a0a; color: #C8F135; border: 1px solid #C8F135;
	font-family: 'Anta', 'Inter', sans-serif; font-size: 12px; line-height: 1.3; letter-spacing: .03em;
	box-shadow: 0 4px 14px rgba(0,0,0,.25), 0 0 0 3px rgba(200,241,53,.10);
	overflow: hidden;
}
.flb-map-fs i, .flb-map-fs span { color: #C8F135; font-size: 12px; }

/* phone only: the immersive map's floating bar */
.flb-mbar { display: none; }

/* Pin 1's quick look. Desk: the product's right-hand drawer (black, volt edge). */
.flb-qc {
	position: absolute; top: 0; right: 0; bottom: 0; z-index: 4; width: 340px; overflow: hidden;
	padding: 26px 24px; background: #0a0a0a; color: #F2F2F2;
	border-left: 1px solid #C8F135; border-radius: 0 16px 16px 0; box-shadow: -12px 0 36px rgba(0,0,0,.4);
}
.flb-qc-x {
	position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.08); color: #F2F2F2; font-size: 14px;
}
.flb-qc-x i { color: #F2F2F2; }
.flb-qc-route { margin: 0 0 4px; padding-right: 36px; font-family: 'Anta', 'Inter', sans-serif; font-size: 21px; line-height: 1.15; color: #ffffff; }
.flb-qc-route .arr { margin: 0 6px; font-size: 13px; color: rgba(242,242,242,.4); }
.flb-qc-route .arr i { color: rgba(242,242,242,.4); }
.flb-qc-price { margin: 0 0 18px; font-family: 'Anta', 'Inter', sans-serif; font-size: 28px; line-height: 1; color: #C8F135; font-variant-numeric: tabular-nums; }
.flb-qc-rows { display: flex; flex-direction: column; gap: 12px; margin-bottom: 22px; }
.flb-qc-row { display: flex; align-items: flex-start; gap: 12px; font-size: 13.5px; line-height: 1.4; color: rgba(242,242,242,.85); }
.flb-qc-row > i { flex-shrink: 0; width: 16px; margin-top: 3px; text-align: center; font-size: 13px; color: #C8F135; }
.flb-qc-row > div { color: rgba(242,242,242,.85); }
.flb-qc-row .lbl { display: block; margin-bottom: 1px; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: rgba(242,242,242,.45); }
.flb-qc-btn {
	display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 13px;
	background: #C8F135; color: #0a0a0a; border-radius: 9px; font-family: 'Anta', 'Inter', sans-serif; font-size: 14px; line-height: 1.3;
	position: relative; overflow: hidden;
}
.flb-qc-btn i { color: #0a0a0a; font-size: 12px; }


/* =====================================================================
 * 6. NARROW DESIGN SPACE — the app's own phone layout, 420px wide
 *
 * ⚠️ No @media here: the scaler is a fixed-pixel box that is transform-scaled,
 *    so it always reports its design width and width queries never fire. The
 *    engine puts .is-hand on the scaler instead.
 *
 * The shell's gutters leave a 392px content column. Every rule is written
 * `.lw-scaler.is-hand .flb …`, which also outranks the shared
 * `.lw-scaler.is-hand .lw-head …` rules whichever sheet loads first.
 * ===================================================================== */

/* headstack — the Filters pill drops under the title, where the app's
   ≤900px layout puts its filter handle */
.lw-scaler.is-hand .flb .flb-head { padding: 15px 16px 14px; margin-bottom: 14px; border-radius: 14px; }
.lw-scaler.is-hand .flb .flb-page-head { flex-direction: column; align-items: flex-start; gap: 12px; }
.lw-scaler.is-hand .flb .flb-page-head-text { max-width: 100%; }
.lw-scaler.is-hand .flb .flb-head h1 { font-size: 24px; line-height: 1.1; }
.lw-scaler.is-hand .flb .flb-toggle { padding: 7px 13px 7px 11px; }

/* filter card — the 3-up row keeps Vehicle + Body paired and gives the date
   the full width; the 2-up location row stacks */
.lw-scaler.is-hand .flb .flb-filters { margin-top: 14px; padding: 13px; gap: 12px; }
.lw-scaler.is-hand .flb .flb-grid { gap: 10px; }
.lw-scaler.is-hand .flb .flb-row-1 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lw-scaler.is-hand .flb .flb-row-1 > div:last-child { grid-column: 1 / -1; }
.lw-scaler.is-hand .flb .flb-row-2 { grid-template-columns: minmax(0, 1fr); }
.lw-scaler.is-hand .flb .flb-filters .flb-grid label { font-size: 10.5px; letter-spacing: .08em; margin-bottom: 5px; }
.lw-scaler.is-hand .flb .flb-combo-fields select { min-width: 124px; }
.lw-scaler.is-hand .flb .flb-actions-row { flex-direction: column; align-items: stretch; gap: 12px; }
.lw-scaler.is-hand .flb .flb-actions-btns { margin-left: 0; }
.lw-scaler.is-hand .flb .flb-submit { flex: 1 1 auto; justify-content: center; }
.lw-scaler.is-hand .flb .flb-clear { justify-content: center; }

/* meta — the count gets its own line; view toggle and sort share the next */
.lw-scaler.is-hand .flb .flb-meta { flex-direction: column; align-items: stretch; gap: 10px; margin-bottom: 12px; }
.lw-scaler.is-hand .flb .flb-count { font-size: 12.5px; }
.lw-scaler.is-hand .flb .flb-meta-right { justify-content: space-between; gap: 10px; }
.lw-scaler.is-hand .flb .flb-viewtoggle { flex: none; }
.lw-scaler.is-hand .flb .flb-viewtoggle button { padding: 6px 11px; gap: 6px; font-size: 11.5px; }
.lw-scaler.is-hand .flb .flb-viewtoggle button i { font-size: 11px; }
.lw-scaler.is-hand .flb .flb-sort-wrap { flex: 0 1 auto; gap: 6px; }
.lw-scaler.is-hand .flb .flb-sort-wrap label { font-size: 11.5px; }
.lw-scaler.is-hand .flb .flb-sort { height: 32px; font-size: 12px; padding: 0 26px 0 10px; background-position: right 10px center; }

/* cards — same unit, tighter; the price never shrinks, the route wraps */
.lw-scaler.is-hand .flb .flb-list { gap: 10px; padding-top: 0; }
.lw-scaler.is-hand .flb .flb-card { padding: 14px 15px; }
.lw-scaler.is-hand .flb .flb-card-head { gap: 10px; }
.lw-scaler.is-hand .flb .flb-route { font-size: 16px; line-height: 1.2; }
.lw-scaler.is-hand .flb .flb-arrow { margin: 0 3px; }
.lw-scaler.is-hand .flb .flb-arrow i { font-size: 11px; }
.lw-scaler.is-hand .flb .flb-price { font-size: 20px; }
.lw-scaler.is-hand .flb .flb-distance { margin-top: 8px; }
.lw-scaler.is-hand .flb .flb-specs { gap: 5px 14px; margin-top: 9px; font-size: 12.5px; }
.lw-scaler.is-hand .flb .flb-times { gap: 8px; margin-top: 10px; padding: 9px 10px; }
.lw-scaler.is-hand .flb .flb-times .lbl { font-size: 10.5px; letter-spacing: .08em; }
.lw-scaler.is-hand .flb .flb-times .val { font-size: 12px; line-height: 1.4; }
.lw-scaler.is-hand .flb .flb-desc { margin-top: 9px; font-size: 13px; }

/* foot — "Posted …" left, actions right; when the actions outgrow the row
   (the "Joe Halsall interested" + "Interested" pair does at 392px) they wrap
   to a full-width second line, right-aligned, instead of overflowing */
.lw-scaler.is-hand .flb .flb-foot { flex-wrap: wrap; gap: 10px; margin-top: 11px; padding-top: 11px; }
.lw-scaler.is-hand .flb .flb-foot-meta { font-size: 11.5px; }
.lw-scaler.is-hand .flb .flb-card-actions { flex: 1 1 auto; flex-wrap: wrap; justify-content: flex-end; gap: 8px 10px; min-width: 0; }
.lw-scaler.is-hand .flb .flb-cta-done { flex-wrap: wrap; justify-content: flex-end; gap: 8px 10px; }
.lw-scaler.is-hand .flb .flb-interest-by { font-size: 11.5px; }
.lw-scaler.is-hand .flb .flb-btn-want { padding: 8px 15px; font-size: 13px; }

/* empty board + feed sentinel */
.lw-scaler.is-hand .flb .flb-empty { padding: 40px 18px; }
.lw-scaler.is-hand .flb .flb-empty > i { font-size: 30px; }
.lw-scaler.is-hand .flb .flb-empty h2 { font-size: 18px; margin: 12px 0 6px; }
.lw-scaler.is-hand .flb .flb-empty p { font-size: 13px; margin-bottom: 18px; }
.lw-scaler.is-hand .flb .flb-empty-btn { padding: 10px 18px; font-size: 13px; }
.lw-scaler.is-hand .flb .flb-infinite { padding: 18px 0 8px; }
.lw-scaler.is-hand .flb .flb-feed-end { font-size: 12px; }

/* the gate banner — the product's ≤640px stack: text first, CTA full width */
.lw-scaler.is-hand .flb .flb-gate { flex-direction: column; align-items: flex-start; gap: 12px; margin-bottom: 14px; padding: 15px 16px; }
.lw-scaler.is-hand .flb .flb-gate-icon { width: 40px; height: 40px; border-radius: 10px; }
.lw-scaler.is-hand .flb .flb-gate-icon i { font-size: 17px; }
.lw-scaler.is-hand .flb .flb-gate-title { font-size: 14px; }
.lw-scaler.is-hand .flb .flb-gate-sub { font-size: 12.5px; }
.lw-scaler.is-hand .flb .flb-gate-cta { width: 100%; justify-content: center; }

/* MAP VIEW on the phone is immersive, as the product's ≤900px layout: the header
   stack (hero + filters, the gate banner, the count row) tucks away and the map
   runs edge to edge from the topbar to the tab bar (760 − 49 − 60 = 651px), with
   the floating Filters / List bar over it. Flip back with data-lw-m-list. */
.lw-scaler.is-hand .flb:has(> .flb-mapwrap:not([hidden])) > .flb-head,
.lw-scaler.is-hand .flb:has(> .flb-mapwrap:not([hidden])) > .flb-gate,
.lw-scaler.is-hand .flb:has(> .flb-mapwrap:not([hidden])) > .flb-meta { display: none !important; }
.lw-scaler.is-hand .flb .flb-mapwrap { margin: -16px -14px 0; }
.lw-scaler.is-hand .flb .flb-map { height: 651px; border-radius: 0; box-shadow: none; }
.lw-scaler.is-hand .flb .flb-map::after { display: none; }
.lw-scaler.is-hand .flb .flb-zoom { top: 14px; left: 10px; }
.lw-scaler.is-hand .flb .flb-map-fs { display: none; }
.lw-scaler.is-hand .flb .flb-mbar { display: flex; position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 3; gap: 10px; }
.lw-scaler.is-hand .flb .flb-mbar > span {
	flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 16px;
	border-radius: 12px; font-family: 'Anta', 'Inter', sans-serif; font-size: 13px; line-height: 1.3; letter-spacing: .02em;
	box-shadow: 0 8px 24px rgba(0,0,0,.35); position: relative; overflow: hidden;
}
.lw-scaler.is-hand .flb .flb-mbar-filters { background: #C8F135; color: #0a0a0a; }
.lw-scaler.is-hand .flb .flb-mbar-filters i { color: #0a0a0a; }
.lw-scaler.is-hand .flb .flb-mbar > .flb-mbar-list { flex: 0 0 auto; padding: 13px 18px; background: #0a0a0a; color: #F2F2F2; border: 1px solid rgba(255,255,255,.18); }
.lw-scaler.is-hand .flb .flb-mbar-list i { color: #C8F135; }
/* the quick look becomes the product's bottom sheet: 18px above the tab bar,
   over the floating bar */
.lw-scaler.is-hand .flb .flb-qc {
	top: auto; left: 0; right: 0; bottom: 18px; width: auto; padding: 24px 20px;
	border-left: 0; border-top: 1px solid #C8F135; border-radius: 18px 18px 0 0;
	box-shadow: 0 -10px 40px rgba(0,0,0,.5);
}
.lw-scaler.is-hand .flb .flb-qc-x { top: 12px; right: 12px; }
.lw-scaler.is-hand .flb .flb-qc-rows { gap: 10px; margin-bottom: 18px; }
.lw-scaler.is-hand .flb .flb-qc-row { font-size: 13px; }
.lw-scaler.is-hand .flb .flb-qc-price { margin-bottom: 14px; }
