/**
Theme Name: LaPrima Child
Author: Brainstorm Force
Author URI: http://wpastra.com/about/
Description: Astra is the fastest, fully customizable & beautiful theme suitable for blogs, personal portfolios and business websites. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with schema.org code integrated so search engines will love your site. Astra offers plenty of sidebar options and widget areas giving you a full control for customizations. Furthermore, we have included special features and templates so feel free to choose any of your favorite page builder plugin to create pages flexibly. Some of the other features: # WooCommerce Ready # Responsive # Compatible with major plugins # Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and beautiful theme!
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: laprima-child
Template: astra
*/
/* ============================================
   LaPrima — single brand page
/* --- self-hosted serifs (audition by switching --lps-font-display below) --- */
/* Fraunces VARIABLE (2026-08-21): one file replaces the 400 + 600 statics.
   Live axes: wght 300–700 and opsz 9–144, so a 34px H1 is drawn for 34px
   (the mockup look). SOFT/WONK pinned at the Google-served defaults.
   Built from the upstream repo, latin subset, ~70KB. Self-hosted, GDPR-clean. */
@font-face { font-family:'Fraunces'; font-style:normal; font-weight:300 700; font-display:swap; src:url('fonts/fraunces-v38-latin-variable.woff2') format('woff2'); }
@font-face { font-family:'Fraunces'; font-style:italic; font-weight:300 700; font-display:swap; src:url('fonts/fraunces-v38-latin-italic-variable.woff2') format('woff2'); } /* header tagline (2026-10-24), OFL via Fontsource */

@font-face { font-family:'Lora'; font-style:normal; font-weight:400; font-display:swap; src:url('fonts/lora-v37-latin-regular.woff2') format('woff2'); }
@font-face { font-family:'Lora'; font-style:normal; font-weight:600; font-display:swap; src:url('fonts/lora-v37-latin-600.woff2') format('woff2'); }

@font-face { font-family:'Playfair Display'; font-style:normal; font-weight:400; font-display:swap; src:url('fonts/playfair-display-v40-latin-regular.woff2') format('woff2'); }
@font-face { font-family:'Playfair Display'; font-style:normal; font-weight:600; font-display:swap; src:url('fonts/playfair-display-v40-latin-600.woff2') format('woff2'); }
:root {
    --lps-bg:           #FFFFFF; /* palette committed: white (2026-08-20) */
    --lps-ink:          #3A2E26;
    --lps-ink-soft:     #5A4A3E;
    --lps-origin:       #8A7866;
    --lps-muted:        #A89786;
    --lps-accent:       #B85A38;
    --lps-brandname:    #9C4A22;
    --lps-badge-text:   #8A3E1E;
    --lps-badge-border: #E0B79F;
    --lps-chip-bg:      #EFE6D8;
    --lps-on-dark:      #fff;
    --lps-font-display: 'Fraunces', Georgia, serif;
}

.lps-brand {
    max-width: 1080px;
    margin: 0 auto 2rem;    /* top spacing moved to .lps-brandbanner (2026-08-19) */
    padding: .75rem 2rem 2rem;
    background: var(--lps-bg);
    border-radius: 12px;
    color: var(--lps-ink);
}.lps-brand__title    { font-family:var(--lps-font-display); font-weight:600; font-size:1.9rem; color:var(--lps-brandname); margin:0 0 .75rem; }
.lps-brand__status   { display:inline-block; background:var(--lps-chip-bg); padding:.25rem .75rem; border-radius:4px; font-size:.85rem; color:var(--lps-ink-soft); }
.lps-brand__logo     { margin:1.5rem 0; }
.lps-brand__origin   { font-style:italic; color:var(--lps-origin); }
.lps-brand__cta      { margin:2rem 0 .5rem; }
.lps-brand__button   { display:inline-block; background:var(--lps-accent); color:var(--lps-on-dark); padding:.85rem 1.75rem; border-radius:6px; text-decoration:none; font-weight:500; }
.lps-brand__button:hover { opacity:.9; }
.lps-brand__disclosure   { font-size:.8rem; color:var(--lps-muted); }

.lps-brand__badges   { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 1rem; padding:0; list-style:none; }
.lps-brand__badge    { font-size:.72rem; padding:3px 11px; border-radius:999px; background:#fff; color:var(--lps-badge-text); border:1px solid var(--lps-badge-border); }
/* ===== Products section ===== */
.lps-brand__product-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(170px, 240px));
	gap: 1rem;
}
/* ===== Product card — UI 2.0b (2026-08-21, decisions #6–#15) =====
   ONE card, every grid. Markup: inc/lps-product-card.php. */
.lps-product-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--lps-line, #E8E0D4);
	border-radius: 10px;
	padding: 10px;
	transition: border-color .15s, box-shadow .15s;
}
.lps-product-card:hover,
.lps-product-card:focus-within {
	border-color: var(--terra, #B45734);
	box-shadow: 0 2px 10px rgba(44, 39, 34, .06);
}
.lps-product-card__body,
.lps-product-card__body:hover,
.lps-product-card__body:focus,
.lps-product-card__body:visited {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 0;
	text-decoration: none;
	color: var(--lps-ink, #2C2722);
}
/* Thumb (#7): square white tile, hairline, contain — every width, every grid. */
.lps-product-card__media {
	position: relative;
	display: grid;
	place-items: center;
	aspect-ratio: 1 / 1;
	width: 100%;
	background: #fff;
	border: 1px solid var(--lps-line, #E8E0D4);
	border-radius: 6px;
	overflow: hidden;
	margin: 0 0 9px;
}
.lps-product-card__media img {
	width: 100%;
	height: auto;
	aspect-ratio: 1 / 1; /* own square box: height:100% resolves to auto in an auto grid row, so tall files overflowed (2026-10-18) */
	object-fit: contain;
	border-radius: 0;
}
.lps-product-card__fallback {
	font-family: var(--lps-font-display, Georgia, serif);
	font-weight: 500;
	font-size: 1.4rem;
	color: #B8AD9E;
}
.lps-product-card__pick {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--lps-brandname, #9C4A22);
	margin: 0 0 3px;
}
/* Title (#8): 13.5/1.3, weight 500, 2-line clamp. */
.lps-product-card__name {
	font-size: 13.5px;
	line-height: 1.3;
	font-weight: 500;
	margin: 0 0 3px;
	color: inherit;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
/* Subline (#9): renders only when lps_spec_adds_info() says it adds a token. */
.lps-product-card__dims {
	font-size: 12px;
	color: var(--lps-ink-2, #6B625A);
	margin: 0 0 6px;
}
/* Variants line (option A, 2026-08-21): glyph + "4 colors". Replaces the swatch row. */
.lps-product-card__variants {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	color: var(--lps-ink-2, #6B625A);
	margin: 0 0 6px;
	letter-spacing: .02em;
}
.lps-product-card__variants svg { width: 12px; height: 12px; flex: 0 0 auto; }
/* Foot: chip + dots · price · or the unavailable line. */
.lps-product-card__foot {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	min-height: 18px;
	font-size: 11px;
	color: var(--lps-ink-2, #6B625A);
	letter-spacing: .02em;
}
.lps-product-card__chip { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.lps-product-card__more { display: inline-flex; align-items: center; gap: 3px; }
.lps-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: var(--lps-ink-2, #6B625A); }
.lps-dot--direct  { background: var(--terra, #B45734); }   /* #19 */
.lps-dot--amazon  { background: #FF9900; }
.lps-dot--walmart { background: #0071CE; }
.lps-dot--target  { background: #CC0000; }
.lps-product-card__price {
	margin-left: auto;
	font-size: 13px;
	font-weight: 600;
	color: var(--lps-ink, #2C2722);
	white-space: nowrap;
}
.lps-product-card__price small { font-weight: 400; font-size: 11px; color: var(--lps-ink-2, #6B625A); margin-left: 3px; }
/* 11-05: at every width, not only 2-up — with "also at" dots before it, the full line
   ("● Amazon ● $37.99 · $19.00 ea at Culver") overran the card on desktop grids and the
   brand-page collection panel. The price takes its own line and wraps between its
   pieces, never inside one. Chip-only feet stay on one line. */
.lps-product-card__foot { flex-wrap: wrap; row-gap: 2px; }
.lps-product-card__more + .lps-product-card__price { margin-left: 0; flex-basis: 100%; white-space: normal; }
.lps-product-card__more + .lps-product-card__price small { white-space: nowrap; display: inline-block; }
/* 11-05 (Joe): the lone "also at" dot stranded on the chip line read as a typo. When
   "also at" dots follow the chip, the CHIP takes the first line by itself and the dots
   ride down with the price: "● Amazon" / "● $37.99 · $19.00 ea at Culver". Browsers
   without :has() keep the layout above (dots on the chip line). */
.lps-product-card__chip:has(+ .lps-product-card__more) { flex-basis: 100%; }
.lps-product-card__chip:has(+ .lps-product-card__more) + .lps-product-card__more + .lps-product-card__price { flex-basis: auto; flex: 1 1 0; min-width: 0; }
/* Unit price (1A inline, Joe 2026-08-21): "· $9.50 ea" rides inside the price span, so it
   wraps with the price as one unit at 2-up rather than overflowing the card. */
.lps-product-card__unit { letter-spacing: .02em; }
.lps-product-card__unavail { font-style: italic; font-size: 11.5px; }
/* Unavailable (#15): thumb dims; chip / dots / price hidden by the partial. Save stays. */
.lps-product-card.is-unavailable .lps-product-card__media { opacity: .45; filter: grayscale(1); }
/* Save (#14) = Finds. Full-property pin — Astra button leak, day one. */
.lps-product-card__save,
.lps-product-card__save:hover,
.lps-product-card__save:focus,
.lps-product-card__save:active {
	position: absolute;
	top: 16px;
	right: 16px;
	z-index: 1;
	width: 30px;
	height: 30px;
	margin: 0;
	padding: 0;
	display: grid;
	place-items: center;
	border: 1px solid var(--lps-line, #E8E0D4);
	border-radius: 999px;
	background: rgba(255, 255, 255, .92);
	color: var(--lps-ink-2, #6B625A);
	box-shadow: none;
	line-height: 1;
	cursor: pointer;
}
.lps-product-card__save:hover,
.lps-product-card__save:focus-visible { border-color: var(--terra, #B45734); color: var(--terra-dk, #9E4D2E); }
.lps-product-card__save svg { width: 15px; height: 15px; }
/* Already in Finds: filled terra bookmark (lps-finds.js sets .is-saved + aria-pressed). */
.lps-product-card__save.is-saved,
.lps-product-card__save.is-saved:hover,
.lps-product-card__save.is-saved:focus { border-color: var(--terra, #B45734); color: var(--terra-dk, #9E4D2E); }
.lps-product-card__save.is-saved svg { fill: currentColor; }
/* Play (#16, Joe 2026-08-21): clickable → SIBLING of the link, pinned to the thumb's
   bottom-right. The wrap is a square exactly the thumb's size (10px inset, 1:1), so the
   control lands on the thumb corner at every card width with no JS. Wrap passes clicks
   through; only the control catches them. */
.lps-product-card__playwrap {
	position: absolute;
	top: 10px;
	left: 10px;
	width: calc(100% - 20px);
	aspect-ratio: 1 / 1;
	pointer-events: none;
	z-index: 1;
}
/* Full-property pin — new anchor, Astra reset day one. */
.lps-product-card__play,
.lps-product-card__play:hover,
.lps-product-card__play:focus,
.lps-product-card__play:active,
.lps-product-card__play:visited {
	position: absolute;
	bottom: 6px;
	right: 6px;
	width: 26px;
	height: 26px;
	margin: 0;
	padding: 0;
	display: grid;
	place-items: center;
	border: 1px solid var(--lps-line, #E8E0D4);
	border-radius: 999px;
	background: rgba(255, 255, 255, .92);
	color: var(--terra-dk, #9E4D2E);
	text-decoration: none;
	box-shadow: none;
	line-height: 1;
	pointer-events: auto;
	cursor: pointer;
}
.lps-product-card__play:hover,
.lps-product-card__play:focus-visible { border-color: var(--terra, #B45734); background: #fff; }
.lps-product-card__play svg { width: 12px; height: 12px; margin-left: 1px; }
.lps-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* Phone foot (Joe, 2026-08-21, A+B): at 2-up the "at Culver" tail drops ONLY
   when the chip is the sole destination (price directly follows the chip).
   With "also at" dots between them the tail stays — "$37.99" beside an Amazon
   dot would read as both prices — and the foot wraps it to its own line. */
@media (max-width: 480px) {
	.lps-product-card__chip + .lps-product-card__price .lps-product-card__at { display: none; } /* tail only — the unit price stays (2026-08-21) */
	/* The wrap / own-line / wrap-between-pieces rules moved above the query on 11-05 (all widths). */
}
/* ===== Single product page ===== */
.lps-product {
	max-width: 860px;
	margin: 2rem auto;
	padding: 2rem;
	background: #fff;
	border: 1px solid #E3CDB9;
	border-radius: 12px;
}
.lps-product__breadcrumb {
	font-size: 0.85rem;
	margin: 0 0 1rem;
}
.lps-product__breadcrumb a {
	display: inline-block;
	background: var(--lps-bg);
	color: var(--lps-brandname);
	padding: 0.3rem 0.75rem;
	border-radius: 7px;
	text-decoration: none;
}
.lps-product__split {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 1.5rem;
	align-items: start;
}
.lps-product__main-image img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	border-radius: 10px;
}
.lps-product__thumbs {
	display: flex;
	flex-wrap: wrap; /* many photos + video tiles must never overflow (2026-08-18) */
	gap: 0.5rem;
	margin-top: 0.5rem;
}
.lps-product__thumbs img {
	width: 56px;
	height: 56px;
	object-fit: cover;
	background: #fff;
	border: 1px solid #E3CDB9;
	border-radius: 7px;
}
.lps-product__title {
	font-family: var(--lps-font-display);
	font-size: 1.5rem;
	color: var(--lps-ink);
	margin: 0 0 0.25rem;
	line-height: 1.3;
}
.lps-product__dims-label {
	font-size: 0.85rem;
	color: #8A7A66;
	margin: 0 0 0.75rem;
}
.lps-product__blurb {
	font-size: 0.95rem;
	line-height: 1.55;
	margin: 0 0 1rem;
}
.lps-product__specs {
	background: #fff;
	border: 1px solid #E3CDB9;
	border-radius: 8px;
	padding: 0.7rem 0.9rem;
	margin: 0 0 1rem;
}
.lps-product__spec {
	display: flex;
	justify-content: space-between;
	font-size: 0.85rem;
	padding: 0.15rem 0;
}
.lps-product__spec {
    display: flex;
    justify-content: space-between;
    gap: 0.5em;          /* add this */
    font-size: 0.85rem;
    padding: 0.15rem 0;
}
.lps-product__spec span { color: #8A7A66; }
.lps-product__cta {
	display: block;
	text-align: center;
	background: var(--lps-accent);
	color: #FFF7EF;
	font-size: 1rem;
	font-weight: 600;
	padding: 0.75rem 1rem;
	border-radius: 8px;
	text-decoration: none;
}
.lps-product__disclosure {
	font-size: 0.8rem;
	color: var(--lps-muted, #8A7A66);
	margin: 0.75rem 0 0;
	text-align: center;
}
.lps-brand__products {
	background: #fff;
	border: 1px solid #E3CDB9;
	border-radius: 10px;
	padding: 1.25rem;
}
/* ===== Care & materials attribute strip (PDP) ===== */
.lps-attrs { margin: 1.25rem 0; }
.lps-attrs__heading { font-size: .95rem; font-weight: 600; margin: 0 0 .75rem; }
.lps-attrs__tiles { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
/* Option C icon chips (2026-08-18) — horizontal icon+label, count badge on the chip corner */
.lps-attrs__tile { position: relative; display: inline-flex; flex-direction: row; align-items: center;
  gap: 7px; padding: 7px 12px 7px 9px; border: 1px solid #E7E1D6; border-radius: 9px;
  background: #fff; text-align: left; }
.lps-attrs__tile--group { border-color: #E7C9B8; background: #FCF8F2; }
.lps-attrs__icon { display: inline-flex; color: var(--lps-accent, #B85A38); flex: none; }
.lps-attrs__icon svg { width: 18px; height: 18px; display: block; }
.lps-attrs__count { position: absolute; top: -6px; right: -6px; min-width: 16px; height: 16px;
  line-height: 16px; padding: 0 3px; background: var(--lps-accent, #B85A38); color: #fff;
  font-size: 11px; text-align: center; border-radius: 999px; }
.lps-attrs__label { font-size: 12.5px; line-height: 1.2; }
.lps-attrs__details { margin-top: 1rem; border-top: 1px solid #E7E1D6; padding-top: .75rem; }
.lps-attrs__summary { font-size: 13px; cursor: pointer; }
.lps-attrs__pills { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 7px; }
.lps-attrs__pill { font-size: 12px; color: var(--lps-brandname, #9C4A22); background: #fff;
  border: 1px solid #D8C3A8; border-radius: 999px; padding: 4px 11px; }
.lps-attrs__note { font-size: 11px; color: #9A8C78; margin: .6rem 0 0; }
.lps-attrs__tile--group { cursor: pointer; }
/* ===== Brand hero ===== */
.lps-hero { background: var(--lps-bg, #FAF6EF); text-align: center; padding: 1.6rem 1.5rem 1.2rem; }
.lps-hero__eyebrow { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: #9A8C78; margin: 0 0 .75rem; }
.lps-hero__wordmark { font-family: var(--lps-font-display, Georgia, serif); font-weight: 400; font-size: clamp(2rem, 6vw, 2.75rem); line-height: 1; color: var(--lps-brandname, #9C4A22); margin: 0 0 .6rem; }
.lps-hero__logo-wrap { margin: 0 0 .6rem; }
.lps-hero__logo { max-height: 64px; width: auto; }
.lps-hero__tagline { font-size: 15px; color: #4A4A47; margin: 0 0 .85rem; }
.lps-hero__rule { display: block; width: 44px; height: 2px; background: var(--lps-accent, #B85A38); margin: 0 auto; }

/* ===== Brand body / About / Support ===== */
.lps-brand__body { max-width: 760px; margin: 0 auto; padding: .5rem 1.5rem 1.5rem; }
.lps-brand__intro { font-size: 14px; line-height: 1.6; color: #4A4A47; margin: 0 0 1.1rem; }
.lps-brand__details { border-top: 1px solid #E7E1D6; padding: .7rem 0; }
.lps-brand__details summary { font-size: 14px; color: var(--lps-text, #3A3A38); cursor: pointer; }
.lps-brand__support { display: flex; flex-direction: column; gap: .45rem; margin-top: .65rem; }
.lps-brand__support a { color: var(--lps-brandname, #9C4A22); font-size: 13px; text-decoration: none; }
/* ===== Variation selector ===== */
.lps-variations { margin: .6rem 0 1.1rem; }
.lps-variations__label { font-size: 13px; color: var(--lps-text, #3A3A38); margin: 0 0 .5rem; }
.lps-variations__swatches { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; }
.lps-variations__swatch { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; border: 2px solid #fff; outline: 1px solid #E7E1D6; cursor: pointer; text-decoration: none; font-size: 11px; color: var(--lps-brandname, #9C4A22); }
.lps-variations__swatch.is-current { outline: 2px solid var(--lps-accent, #B85A38); outline-offset: 2px; }
/* text-fallback swatches (no hex): pill, not dot */
.lps-variations__swatch:not([style*="background"]) { width: auto; height: auto; border-radius: 999px; padding: 5px 12px; border: 1px solid #D8C3A8; outline: none; background: #fff; }
.lps-variations__swatch:not([style*="background"]).is-current { border-color: var(--lps-accent, #B85A38); }
/* 2026-08-21: the absolute top-right pick chip moved into the card flow (.lps-product-card__pick) — Save owns that corner now. */
/* === Smart-sticky header ============================================== */
:root { --lps-header-h: 64px; } /* JS overwrites with the measured value */

.lps-header{
	position: sticky; top: 0; z-index: 100;
	background: var(--lps-bg, #FBF5EC);
	border-bottom: 1px solid var(--lps-hairline, rgba(60,40,30,.12));
	transition: transform .25s ease;
}
.lps-header--hidden{ transform: translateY(-100%); }
@media (prefers-reduced-motion: reduce){
	.lps-header{ transition: none; } /* hide/show stays; the slide is dropped */
}

.lps-header__inner{
	display: flex; align-items: center; gap: 18px;
	height: 56px; box-sizing: border-box; /* UI 2.0a: fixed one-row height — the measured --lps-header-h once fed back into itself and inflated the header */
	max-width: none; margin: 0 auto; padding: 0 20px; /* UI 2.0a: fluid, 20px gutters (decision #4) */
}

.lps-header__brand{ display: flex; align-items: center; text-decoration: none; }
.lps-header__wordmark{
	font-family: var(--lps-font-display, Georgia, serif);
	font-weight: 600; font-size: 1.25rem; line-height: 1; letter-spacing: -.01em;
	color: var(--lps-brandname, #9C4A22);
}
.lps-header__nav{ margin-left: auto; } /* UI 2.0a: wordmark · search · [nav · Finds] right-aligned */
.lps-header__logo{ display: block; height: 32px; width: auto; }

.lps-menu{ display: flex; align-items: center; gap: 1.5rem; list-style: none; margin: 0; padding: 0; }
.lps-menu a{
	text-decoration: none; color: var(--lps-ink, #2B2622);
	font-size: .98rem; padding: .25rem 0; border-bottom: 2px solid transparent;
}
.lps-menu a:hover{ color: var(--lps-accent, #B85A38); }
.lps-menu .current-menu-item > a,
.lps-menu .lps-current-scope > a{
	color: var(--lps-accent, #B85A38);
	border-bottom-color: var(--lps-accent, #B85A38);
}

.lps-header__utility{ display: flex; align-items: center; gap: .75rem; }
.lps-header__search-toggle{
	display: none; /* UI 2.0a: mobile-only — shown ≤768px */
	background: none; border: 0; cursor: pointer; padding: .25rem; line-height: 0;
	color: var(--lps-accent, #B85A38);
}
.lps-header__search-toggle:hover{ color: var(--terra-dk, #9E4D2E); }

/* UI 2.0a (2026-08-21): search is a flex item in the one header row.
   Deterministic width so the Algolia mount never renegotiates the row. */
.lps-header__search{ flex: 1 1 auto; max-width: 520px; min-width: 0; }

.lps-header__toggle{ display: none; } /* desktop: hidden */

/* ---- mobile ≤768px ---- */
@media (max-width: 768px){
	.lps-header__toggle{
		display: inline-flex; align-items: center; justify-content: center;
		width: 40px; height: 40px; background: none; border: 0; cursor: pointer;
	}
	.lps-header__bars,
	.lps-header__bars::before,
	.lps-header__bars::after{
		content: ""; display: block; width: 22px; height: 2px; background: var(--lps-ink, #2B2622);
	}
	.lps-header__bars{ position: relative; }
	.lps-header__bars::before{ position: absolute; top: -7px; }
	.lps-header__bars::after { position: absolute; top: 7px; }

	.lps-header__nav{
		position: absolute; left: 0; right: 0; top: 100%; display: none;
		background: var(--lps-bg, #FBF5EC);
		border-bottom: 1px solid var(--lps-hairline, rgba(60,40,30,.12));
	}
	.lps-header--open .lps-header__nav{ display: block; }
	.lps-menu{ flex-direction: column; align-items: stretch; gap: 0; padding: .5rem 1rem; }
	.lps-menu a{ display: block; padding: .65rem 0; }

	/* UI 2.0a mobile: wordmark · search icon · Finds · menu. The search
	   pill drops below the row when the icon is tapped (lps-header.js
	   toggles .lps-header--search-open). Absolute, so the measured
	   header height never changes. */
	.lps-header__search-toggle{ display: inline-flex; }
	.lps-header__search{
		display: none; position: absolute; left: 0; right: 0; top: 100%;
		max-width: none; padding: 8px 12px;
		background: var(--lps-bg, #FFFFFF);
		border-bottom: 1px solid var(--lps-hairline, rgba(60,40,30,.12));
	}
	.lps-header--search-open .lps-header__search{ display: block; }
}

/* ---- 380px floor ---- */
@media (max-width: 480px){
	.lps-header__inner{ gap: .6rem; padding: 0 12px; }
	.lps-header__wordmark{ font-size: 1rem; }
}
/* Sit below the WP admin bar when logged in (no-op for visitors) */
body.admin-bar .lps-header{ top: 32px; }
@media (max-width: 782px){
	body.admin-bar .lps-header{ top: 46px; } /* WP's mobile admin bar is taller */
	}/* === PDP sticky split-scroll gallery (desktop) ======================== */
@media (min-width: 769px){
	.lps-product__media{
		position: sticky;
		top: calc(var(--lps-header-h, 56px) + 8px);
		align-self: start; /* CRITICAL — without this the column stretches to full
		                      row height and sticky silently does nothing */
	}
	/* Clear the WP admin bar while you're logged in (no-op for visitors) */
	body.admin-bar .lps-product__media{
		top: calc(var(--lps-header-h, 56px) + 8px + 32px);
	}
}
/* === PDP "More from [brand]" strip (rides in the pinned media column) === */
.lps-more-from{ margin-top: 1.5rem; }
@media (max-width: 768px){ .lps-more-from{ display: none; } } /* mobile placement TBD */
.lps-more-from__title{
	font-size: .75rem; letter-spacing: .08em; text-transform: uppercase;
	color: var(--lps-muted, #8A7A66); margin: 0 0 .6rem;
}
.lps-more-from__list{ list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.lps-more-from__item a{
	display: flex; align-items: center; gap: .7rem;
	text-decoration: none; color: var(--lps-ink, #2B2622);
	padding: .4rem; border-radius: 8px;
}
.lps-more-from__item a:hover{ background: var(--lps-bg, #FBF5EC); }
.lps-more-from__thumb{
	flex: 0 0 auto; width: 48px; height: 48px;
	border-radius: 6px; object-fit: cover; background: #fff;
}
.lps-more-from__name{ font-size: .9rem; line-height: 1.25; }
.lps-buy-disclosure {
	margin: 12px 0 0;
	max-width: none; /* 10-23: flow the full buy-zone width (was 46ch — forced short lines) */
	font-size: 12.5px;
	line-height: 1.5;
	color: #766c62; /* 11-06: was #857b70 (4.15:1) */
}

/* ===== Brand page: Videos & social strip ===== */
.lps-media { margin: 1.5rem 0 0; }
.lps-media__row { display: flex; gap: 14px; overflow-x: auto; padding: 4px 2px 10px;
  -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.lps-media--few .lps-media__row { overflow-x: visible; flex-wrap: wrap; }
.lps-mcard { flex: 0 0 auto; width: 236px; background: #fff; border: 1px solid #E3CDB9;
  border-radius: 10px; padding: 10px; text-align: left; cursor: pointer;
  text-decoration: none; color: var(--lps-ink, #3A2E26); font: inherit;
  display: flex; flex-direction: column; gap: 8px; transition: transform .15s; }
.lps-mcard:hover { transform: translateY(-2px); }
.lps-media--few .lps-mcard { width: min(300px, 100%); }
.lps-mcard__thumb { position: relative; display: block; aspect-ratio: 16 / 9;
  border-radius: 7px; overflow: hidden; background: var(--lps-chip-bg, #EFE6D8); }
.lps-mcard__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lps-mcard__play { position: absolute; inset: 0; display: flex; align-items: center;
  justify-content: center; font-size: 22px; color: #fff;
  background: rgba(58, 46, 38, .28); }
.lps-mcard__play--link { color: var(--lps-accent, #B85A38); background: none; font-size: 26px; }
.lps-mcard__title { font-size: .88rem; font-weight: 600; line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lps-mcard__src { display: flex; align-items: center; gap: 6px;
  font-size: .76rem; color: var(--lps-ink-soft, #5A4A3E); }
.lps-mcard__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--lps-accent, #B85A38); }
.lps-mcard__dot--yt { background: #FF0000; }
.lps-mcard__dot--vm { background: #1AB7EA; }
.lps-mcard__dot--ig { background: #E1306C; }
.lps-mcard__dot--fb { background: #1877F2; }
.lps-mcard__dot--tt { background: #69C9D0; }

/* ===== Brand page: Our picks + FAQ (reuse the white section card) ===== */
.lps-picks { margin: 1.5rem 0 0; }
.lps-faq { margin: 1.5rem 0 0; }
.lps-faq__item summary { font-weight: 600; }
.lps-faq__answer { font-size: 14px; line-height: 1.6; color: var(--lps-ink-soft, #5A4A3E);
  padding: .5rem 0 .25rem; }

/* ===== Media lightbox (click-to-load embeds) ===== */
.lps-lightbox { position: fixed; inset: 0; z-index: 9999; background: rgba(44, 39, 34, .78);
  display: flex; align-items: center; justify-content: center; padding: 4vmin; }
.lps-lightbox__box { position: relative; width: min(920px, 100%); display: flex; justify-content: center; } /* centers portrait images (2026-10-18) */
.lps-lightbox__media { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 10px;
  background: #000; display: block; }
.lps-lightbox__close { position: absolute; top: -40px; right: 0; background: none; border: 0;
  color: #fff; font-size: 22px; cursor: pointer; padding: 6px; line-height: 1; }


.lps-lightbox__media--img { aspect-ratio: auto; width: auto; max-width: 100%;
  max-height: 88vh; margin: 0 auto; background: #fff; }

/* ===== 60/40 split hero — stage + thumbnail rail (2026-07-13) ===== */
/* Applies only when a brand gallery exists; galleryless brands keep the
   original centered hero untouched. Grid uses the locked minmax pattern. */
.lps-hero--split{
	display: grid;
	grid-template-columns: minmax(0,1.5fr) minmax(0,1fr);
	/* Pre row spans; gallery spans rows 2-3 so its top sits level with the
	   wordmark; Explore fills the left column under the CTA (2026-08-19). */
	grid-template-areas:
		"pre     pre"
		"main    gallery"
		"explore gallery";
	gap: 0 2rem;
	align-items: start;
	text-align: left;
	padding: 2.4rem 1.75rem;
}
.lps-hero__pre{ grid-area: pre; }
.lps-hero--split .lps-hero__main{ grid-area: main; }
.lps-hero--split .lps-hero__gallery{ grid-area: gallery; }
.lps-hero--split .lps-explore{ grid-area: explore; }
.lps-hero__main{ min-width: 0; }
.lps-hero--split .lps-hero__rule{ margin: 1rem 0 0; }

.lps-hero__browse{ margin: .35rem 0 .9rem; }
.lps-hero__cta{
	display: inline-block;
	background: var(--lps-accent);
	color: var(--lps-on-dark);
	padding: .8rem 1.6rem;
	border-radius: 6px;
	text-decoration: none;
	font-weight: 500;
}
.lps-hero__cta:hover{ opacity: .9; color: var(--lps-on-dark); }
.lps-hero__meta{ font-size: .85rem; color: var(--lps-origin); margin: 0; }

.lps-hero__gallery{ min-width: 0; }
.lps-hero__stage{
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	padding: 0;
	border: 1px solid #E3CDB9;
	border-radius: 10px;
	overflow: hidden;
	background: #fff;
	cursor: zoom-in;
}
.lps-hero__stage img{ width: 100%; height: 100%; object-fit: contain; padding: 10px; box-sizing: border-box; display: block; }

.lps-hero__rail{
	display: flex;
	gap: 8px;
	margin-top: 10px;
	overflow-x: auto;
	padding-bottom: 4px;
	-webkit-overflow-scrolling: touch;
}
.lps-hero__thumb{
	flex: 0 0 auto;
	width: 64px;
	height: 64px;
	padding: 0;
	border: 1px solid #E3CDB9;
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
	cursor: pointer;
	opacity: .75;
}
.lps-hero__thumb img{ width: 100%; height: 100%; object-fit: contain; padding: 3px; box-sizing: border-box; display: block; }
.lps-hero__thumb:hover{ opacity: 1; }
.lps-hero__thumb.is-active{ border-color: var(--lps-accent); opacity: 1; }

/* Smooth anchor scroll for the Browse CTA (respects reduced-motion) */
@media (prefers-reduced-motion: no-preference){
	html{ scroll-behavior: smooth; }
}

/* Stack at 760px; rail swipes horizontally. 380px floor holds. */
@media (max-width: 760px){
	.lps-hero--split{
		grid-template-columns: minmax(0,1fr);
		grid-template-areas:
			"pre"
			"main"
			"gallery"
			"explore";
		text-align: center;
		gap: 0;
	}
	.lps-hero--split .lps-hero__gallery{ margin-top: 1.25rem; }
	.lps-hero--split .lps-hero__rule{ margin: 1rem auto 0; }
}

/* ===== "Why we chose them" cream card (brand_why, 2026-07-13) ===== */
.lps-why{
	background: var(--lps-chip-bg);
	border-radius: 12px;
	padding: 1.4rem 1.6rem;
	margin: .9rem 0;
}
.lps-why__eyebrow{
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--lps-brandname);
	margin: 0 0 .7rem;
}
.lps-why__body{
	font-family: var(--lps-font-display);
	font-size: 1.02rem;
	line-height: 1.65;
	color: var(--lps-ink);
}
.lps-why__body p{ margin: 0 0 .8em; }
.lps-why__body p:last-child{ margin-bottom: 0; }
.lps-why__sig{
	font-size: .82rem;
	color: var(--lps-origin);
	margin: .9rem 0 0;
}
/* ===== Split-hero gallery sizing — prototype parity (2026-07-13) ===== */
/* Card already provides 2rem side breathing room; hero adds none. */
.lps-hero--split{ padding: 1.5rem 0 .5rem; }

/* Taller stage: square suits pack shots far better than 4:3 landscape. */
.lps-hero__stage{ aspect-ratio: 1 / 1; }

/* Bigger thumbs, prototype-scale. */
.lps-hero__thumb{ width: 88px; height: 88px; }
/* ===== Neutralize Astra button hover/focus on hero gallery (2026-07-13) ===== */
.lps-hero__stage:hover,
.lps-hero__stage:focus,
.lps-hero__thumb:hover,
.lps-hero__thumb:focus{
	background: #fff;
	border-color: #E3CDB9;
	outline: none;
}
.lps-hero__thumb.is-active,
.lps-hero__thumb.is-active:hover,
.lps-hero__thumb.is-active:focus{ border-color: var(--lps-accent); }

/* Keyboard users still get a visible ring — terracotta, not Astra blue. */
.lps-hero__stage:focus-visible,
.lps-hero__thumb:focus-visible{
	outline: 2px solid var(--lps-accent);
	outline-offset: 2px;
}
/* ===== Hero polish: breadcrumb + availability pills (2026-07-13) ===== */
.lps-hero__crumb{ font-size: .8rem; color: var(--lps-origin); margin: 0 0 .9rem; }
.lps-hero__crumb a{ color: var(--lps-origin); text-decoration: none; }
.lps-hero__crumb a:hover{ color: var(--lps-accent); text-decoration: underline; }

/* Availability pill CSS retired with the render (2026-08-19) — see the
   decision comment in single-brand.php. */
/* ===== Our picks — prototype tidy: count, subline, outline CTA (2026-07-13) ===== */
.lps-picks__sub{ color: var(--lps-ink-soft); font-size: .95rem; margin: .25rem 0 1rem; }
.lps-picks__browse{ margin: 0 0 1.25rem; }
.lps-picks__cta{
	display: inline-block;
	background: #fff;
	border: 1px solid var(--lps-accent);
	color: var(--lps-accent);
	padding: .6rem 1.3rem;
	border-radius: 999px;
	text-decoration: none;
	font-weight: 500;
	font-size: .95rem;
}
.lps-picks__cta:hover{ background: var(--lps-accent); color: var(--lps-on-dark); }
/* ===== Brand collection view — /brands/<slug>/collection/ (2026-07-13) ===== */
.lps-coll__head{ margin: 0 0 1.5rem; }
.lps-coll__back{ font-size: .85rem; margin: 0 0 1rem; }
.lps-coll__back a{ color: var(--lps-origin); text-decoration: none; }
.lps-coll__back a:hover{ color: var(--lps-accent); }
.lps-coll__title{ font-family: var(--lps-font-display); font-weight: 600; font-size: clamp(1.7rem, 4vw, 2.4rem); color: var(--lps-ink); margin: 0 0 .5rem; }
.lps-coll__sub{ color: var(--lps-ink-soft); font-size: .95rem; margin: 0; }
.lps-coll__sub strong{ color: var(--lps-accent); font-weight: 600; }
/* .lps-product-card__chip--pick retired 2026-08-21 → .lps-product-card__pick (in-flow eyebrow) */
/* ===== Collection grid — wider cards, prototype-style fill (2026-07-13) ===== */
.lps-coll .lps-brand__product-grid{
	grid-template-columns: repeat(auto-fill, minmax(min(var(--lps-card-min, 220px), 100%), 1fr));
	gap: 14px; /* UI 2.0a decision #5 */
}
/* ===== Collection swatch rows — one card per design, every color linked ===== */
.lps-swatches {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	padding: 2px 16px 14px;
}
.lps-swatch {
	display: inline-block;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid rgba(44, 39, 34, 0.22);
	box-sizing: border-box;
	text-decoration: none;
}
.lps-swatch:hover {
	border-color: rgba(44, 39, 34, 0.5);
}
.lps-swatch.is-active {
	outline: 2px solid var(--terra, #B45734);
	outline-offset: 2px;
}
.lps-swatch:focus-visible {
	outline: 2px solid var(--terra-dk, #9E4D2E);
	outline-offset: 2px;
}
.lps-swatch--neutral {
	background: var(--cream, #F3E9D9);
}
.lps-swatch--chip {
	width: auto;
	height: auto;
	min-height: 28px;
	border-radius: 999px;
	padding: 3px 12px;
	font-size: 12px;
	line-height: 1.4;
	color: var(--ink, #2C2722);
	background: #fff;
	display: inline-flex;
	align-items: center;
}
/* ===== Neutralize Astra button hover/focus on media cards (2026-07-14) ===== */
/* Video cards are <button>s — same Astra override class as the hero gallery fix. */
button.lps-mcard:hover,
button.lps-mcard:focus,
button.lps-mcard:active{
	background: #fff;
	border-color: #E3CDB9;
	color: var(--lps-ink, #3A2E26);
	outline: none;
}
button.lps-mcard:focus-visible{
	outline: 2px solid var(--lps-accent);
	outline-offset: 2px;
}

/* ===== Share this brand — popover (2026-07-14) ===== */
.lps-share{ position: relative; display: inline-block; margin: 0 0 1.1rem; }
.lps-share__btn{ display: inline-flex; align-items: center; gap: 8px; background: #fff;
	border: 1px solid var(--lps-accent); color: var(--lps-accent); border-radius: 999px;
	padding: 8px 18px; font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; }
.lps-share__btn:hover,
.lps-share__btn:focus{ background: #fff; color: var(--lps-accent);
	border-color: var(--lps-accent); outline: none; }
.lps-share__btn:focus-visible{ outline: 2px solid var(--lps-accent); outline-offset: 2px; }
.lps-share__icon{ flex: 0 0 auto; }
.lps-share__pop{ position: absolute; z-index: 40; top: calc(100% + 8px); left: 0;
	min-width: 232px; background: #fff; border: 1px solid #E3CDB9; border-radius: 12px;
	box-shadow: 0 10px 28px rgba(58, 46, 38, .14); padding: 12px; }
.lps-share__head{ font-size: .7rem; font-weight: 700; letter-spacing: .08em;
	text-transform: uppercase; color: var(--lps-ink-soft, #5A4A3E); margin: 2px 4px 8px; }
.lps-share__item{ display: flex; align-items: center; gap: 10px; width: 100%;
	background: none; border: 0; border-radius: 8px; padding: 8px 6px; font: inherit;
	font-size: .9rem; font-weight: 500; color: var(--lps-ink, #3A2E26);
	text-decoration: none; cursor: pointer; text-align: left; }
.lps-share__item:hover,
.lps-share__item:focus{ background: var(--lps-chip-bg, #EFE6D8);
	color: var(--lps-ink, #3A2E26); outline: none; }
.lps-share__item:focus-visible{ outline: 2px solid var(--lps-accent); outline-offset: -2px; }
.lps-share__note{ font-size: .74rem; color: var(--lps-ink-soft, #5A4A3E);
	border-top: 1px solid #EFE6D8; margin: 8px 4px 0; padding: 8px 0 0; }

/* ===== Brand-footer referral note (2026-07-14) ===== */
.lps-brand__referral{ font-size: .82rem; line-height: 1.55;
	color: var(--lps-ink-soft, #5A4A3E); border-top: 1px solid #E3CDB9;
	margin: 2.25rem 0 0; padding-top: 1rem; }
.lps-brand__referral a{ color: var(--lps-accent); }

/* ===== From the maker — brand voice, attributed (2026-07-14) ===== */
.lps-maker{ margin: 1.4rem 0 0; padding: 1rem 0 0; border-top: 1px solid #E3CDB9; }
.lps-maker__eyebrow{ font-size: .7rem; font-weight: 700; letter-spacing: .1em;
	text-transform: uppercase; color: var(--lps-ink-soft, #5A4A3E); margin: 0 0 .5rem; }
.lps-maker__body{ font-size: 15px; line-height: 1.65; color: var(--lps-ink, #3A2E26); }
.lps-maker__body p{ margin: 0 0 .8em; }
.lps-maker__sig{ font-size: .78rem; color: var(--lps-ink-soft, #5A4A3E); margin: .25rem 0 0; }
/* ============================================================
   Buy zone — Style C (build step 4)
   APPEND-SNIPPET: paste at the END of laprima-child/style.css
   White rows: 6px true-brand-color left stripe.
   Solid terracotta: buy-direct CTA + Owned-lane Amazon only.
   Amazon rows are always price-free.
   ============================================================ */
.lps-buy-zone {
	--bz-terra:    #B45734;
	--bz-terra-dk: #9E4D2E;
	--bz-ink:      #2C2722;
	--bz-amazon:   #FF9900;
	--bz-walmart:  #0071CE;
	--bz-target:   #CC0000;
	display: flex;
	flex-direction: column;
	gap: .65rem;
	margin: 1.5rem 0 .5rem;
	max-width: 420px;
}

.lps-buy-btn {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	padding: .8rem 1.1rem;
	border: 1px solid rgba(44, 39, 34, .18);
	border-left: 6px solid var(--bz-stripe, var(--bz-terra));
	border-radius: 8px;
	background: #fff;
	color: var(--bz-ink);
	text-decoration: none;
	font-weight: 600;
	line-height: 1.25;
	transition: background .15s ease, border-color .15s ease;
}
.lps-buy-btn:hover,
.lps-buy-btn:focus-visible {
	background: #FAF6EE;
	border-color: rgba(44, 39, 34, .35);
	border-left-color: var(--bz-stripe, var(--bz-terra));
}

/* Retailer stripes — true brand colors */
.lps-buy-btn--amazon  { --bz-stripe: var(--bz-amazon); }
.lps-buy-btn--walmart { --bz-stripe: var(--bz-walmart); }
.lps-buy-btn--target  { --bz-stripe: var(--bz-target); }
.lps-buy-btn--direct  { --bz-stripe: var(--bz-terra-dk); }

/* Solid terracotta — buy-direct + Scenario C Amazon only */
.lps-buy-btn--solid {
	background: var(--bz-terra);
	border-color: var(--bz-terra);
	border-left-color: var(--bz-stripe, var(--bz-terra)); /* 10-23: keep the retailer stripe (Style C) — the shorthand above was painting it terracotta */
	color: #fff;
}
.lps-buy-btn--solid:hover,
.lps-buy-btn--solid:focus-visible {
	background: var(--bz-terra-dk);
	border-color: var(--bz-terra-dk);
	border-left-color: var(--bz-stripe, var(--bz-terra-dk));
}
/* Seller line sits tight under the base disclosure, reads as one note (10-23) */
.lps-buy-disclosure + .lps-buy-disclosure { margin-top: 4px; }
/* 11-06: Line 3 (commission) lives inside the direct card, under its buy button (FTC proximity). */
.lps-direct__commission { margin: 8px 0 0; text-align: center; }

/* Primary (resolved destination) gets weight, not color */
.lps-buy-btn.is-primary {
	padding: 1rem 1.2rem;
	font-size: 1.05rem;
}

.lps-buy-btn__price { font-weight: 700; white-space: nowrap; }
.lps-buy-btn__meta  {
	display: block;
	font-weight: 400;
	font-size: .72rem;
	opacity: .75;
	margin-top: 2px;
}

@media (max-width: 420px) {
	.lps-buy-zone { max-width: none; }
}
/* ====================================================================
   Step 6 — Finds-shaped direct block + Finds pill / tray
   APPEND to laprima-child/style.css (do not replace the file)
   ==================================================================== */

/* --- "Direct from the maker" framed block ------------------------- */
.lps-direct {
	border: 1.5px solid var(--terra, #B45734);
	border-radius: 13px;
	background: linear-gradient(180deg, #fff, var(--paper, #FAF6EE));
	padding: 15px 15px 16px;
	margin: 0 0 16px;
	position: relative;
}
.lps-direct__eyebrow {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 10.5px;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--terra-dk, #9E4D2E);
	font-weight: 700;
	margin: 0 0 7px;
}
.lps-direct__leaf { width: 14px; height: 14px; flex: none; }
.lps-direct__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
	margin: 0 0 11px;
}
.lps-direct__nm,
.lps-direct__pr {
	font-family: var(--lps-font-display, Georgia, serif);
	font-size: 18px;
	font-weight: 600;
	color: var(--ink, #2C2722);
}
.lps-direct__buyone {
	display: block;
	width: 100%;
	background: var(--terra, #B45734);
	color: #fff;
	font-weight: 600;
	font-size: 15px;
	text-align: center;
	text-decoration: none;
	border-radius: 10px;
	padding: 12px 14px;
	line-height: 1.3;
}
.lps-direct__buyone:hover,
.lps-direct__buyone:focus-visible {
	background: var(--terra-dk, #9E4D2E);
	color: #fff;
}
.lps-direct__arr { font-weight: 700; }
/* Q4 seller-first (2026-10-23): when LaPrima's Amazon listing leads, the direct
   block is the second option — outline button, so only ONE solid terracotta
   button shows in the zone (Style C). Flips back with LPS_SELLER_AMAZON_FIRST. */
.lps-direct--second .lps-direct__buyone,
.lps-direct--second .lps-direct__buyone:visited {
	background: #fff;
	color: var(--terra-dk, #9E4D2E);
	box-shadow: inset 0 0 0 1.5px var(--terra, #B45734);
}
.lps-direct--second .lps-direct__buyone:hover,
.lps-direct--second .lps-direct__buyone:focus-visible {
	background: var(--cream, #F3E9D9);
	color: var(--terra-dk, #9E4D2E);
}
.lps-direct__save {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	width: 100%;
	margin: 9px 0 0;
	background: #fff;
	border: 1.5px solid var(--terra, #B45734);
	border-radius: 10px;
	padding: 11px 12px;
	cursor: pointer;
	font: inherit;
	text-align: center;
}
.lps-direct__save:hover,
.lps-direct__save:focus-visible { background: var(--cream, #F3E9D9); }
.lps-direct__save-t {
	font-weight: 700;
	font-size: 14.5px;
	color: var(--terra-dk, #9E4D2E);
}
.lps-direct__save small {
	font-weight: 500;
	font-size: 11px;
	color: var(--muted, #6B6259);
	line-height: 1.35;
}
.lps-direct__note {
	font-size: 11px;
	color: var(--muted, #6B6259);
	text-align: center;
	margin: 10px 0 0;
	line-height: 1.45;
}

/* --- Finds info dot + explainer popover --------------------------- */
.lps-finwrap { position: relative; display: inline-flex; margin-left: 2px; }
.lps-finfo {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 1px solid var(--terra, #B45734);
	background: #fff;
	color: var(--terra-dk, #9E4D2E);
	font: 700 10px/1 inherit;
	font-style: normal;
	cursor: pointer;
	padding: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.lps-fincard {
	position: absolute;
	top: 22px;
	left: 50%;
	transform: translateX(-70%);
	width: min(280px, 78vw);
	background: #fff;
	border: 1px solid var(--cream-edge, #E4D5BD);
	border-radius: 12px;
	box-shadow: 0 12px 34px rgba(44, 39, 34, .18);
	padding: 12px 13px;
	z-index: 40;
	text-transform: none;
	letter-spacing: normal;
	font-weight: 400;
	text-align: left;
}
.lps-fincard__hd {
	display: flex;
	align-items: baseline;
	gap: 7px;
	margin: 0 0 6px;
}
.lps-fincard__hd b { font-size: 13px; color: var(--ink, #2C2722); }
.lps-fincard__hd small { font-size: 11px; color: var(--faint, #8C8177); }
.lps-fincard__bd {
	display: block;
	font-size: 12px;
	line-height: 1.55;
	color: var(--muted, #6B6259);
}

/* --- "Also available at" divider + returns strip ------------------ */
.lps-buy-or {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 4px 0 12px;
	color: var(--faint, #8C8177);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.lps-buy-or::before,
.lps-buy-or::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--hair, #E9E1D2);
}
.lps-buy-returns {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	background: var(--cream, #F3E9D9);
	border: 1px solid var(--cream-edge, #E4D5BD);
	border-radius: 9px;
	padding: 9px 12px;
	margin: 12px 0 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--muted, #6B6259);
}
.lps-buy-returns svg { width: 15px; height: 15px; flex: none; margin-top: 1px; }
.lps-buy-returns b { color: var(--terra-dk, #9E4D2E); }
.lps-buy-returns a { color: var(--terra-dk, #9E4D2E); font-weight: 600; }

/* --- Finds pill (interim placement: fixed bottom-left) ------------ */
/* --- Finds pill: header chip; floating variant is the JS fallback --- */
.lps-finds-pill {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	background: var(--paper, #FAF6EE);
	border: 1.5px solid var(--terra, #B45734);
	border-radius: 999px;
	padding: 7px 13px;
	font-family: inherit; font-weight: 600; font-size: 13px; line-height: 1; /* was `font: 600 13px/1 inherit` — invalid shorthand, silently dropped, so the pill inherited Astra's button size (fixed 2026-08-21) */
	color: var(--terra-dk, #9E4D2E);
	cursor: pointer;
}
.lps-finds-pill svg { width: 16px; height: 16px; }
.lps-finds-pill .ct {
	background: var(--terra, #B45734);
	color: #fff;
	border-radius: 999px;
	font-size: 11px;
	padding: 2px 7px;
}
.lps-finds-nav { display: flex; align-items: center; }
.lps-finds-pill.empty .ct { visibility: hidden; }   /* badge slot stays reserved at 0 — display:none grew the pill when the count mounted, shaking the header row (2026-08-20) */
.lps-finds-pill--floating {
	position: fixed;
	left: 14px;
	bottom: 14px;
	z-index: 900;
	box-shadow: 0 8px 24px rgba(44, 39, 34, .16);
	padding: 9px 14px;
}
.lps-finds-pill--floating.empty { display: none; }

/* Admin-bar offset — tray header was hidden under the WP toolbar when logged in */
body.admin-bar .lps-finds-tray { top: 32px; height: calc(100% - 32px); }
@media screen and (max-width: 782px) {
	body.admin-bar .lps-finds-tray { top: 46px; height: calc(100% - 46px); }
}
/* --- Finds tray ---------------------------------------------------- */
.lps-finds-ovl {
	position: fixed;
	inset: 0;
	background: rgba(44, 39, 34, .38);
	z-index: 990;
	display: none;
}
.lps-finds-ovl.show { display: block; }
.lps-finds-tray {
	position: fixed;
	top: 0;
	right: 0;
	height: 100%;
	width: min(400px, 100vw);
	background: var(--paper, #FAF6EE);
	border-left: 1px solid var(--hair, #E9E1D2);
	box-shadow: -18px 0 44px rgba(44, 39, 34, .22);
	z-index: 995;
	display: flex;
	flex-direction: column;
	transform: translateX(102%);
	transition: transform .22s ease;
}
.lps-finds-tray.open { transform: translateX(0); }
.lps-finds-hd {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 10px;
	padding: 16px 18px 12px;
	border-bottom: 1px solid var(--hair, #E9E1D2);
	background: #fff;
}
.lps-finds-hd h2 {
	font-family: var(--lps-font-display, Georgia, serif);
	font-size: 19px;
	margin: 0;
	color: var(--ink, #2C2722);
}
.lps-finds-hd .sub { margin: 3px 0 0; font-size: 12px; color: var(--muted, #6B6259); }
.lps-finds-hd .x {
	border: 0;
	background: var(--cream, #F3E9D9);
	color: var(--ink, #2C2722);
	width: 30px;
	height: 30px;
	border-radius: 50%;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	flex: none;
}
.lps-finds-body { flex: 1; overflow-y: auto; padding: 14px 16px; }
.lps-finds-foot {
	border-top: 1px solid var(--hair, #E9E1D2);
	background: var(--cream, #F3E9D9);
	padding: 12px 16px 14px;
	text-align: center;
}

.fjump { border: 1px solid var(--cream-edge, #E4D5BD); border-radius: 10px; background: #fff; margin: 0 0 12px; }
.fjump summary {
	list-style: none;
	cursor: pointer;
	padding: 11px 13px;
	font-weight: 600;
	font-size: 13px;
	color: var(--ink, #2C2722);
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.fjump summary::-webkit-details-marker { display: none; }
.fjump .jn {
	background: var(--cream, #F3E9D9);
	border-radius: 999px;
	font-size: 11px;
	padding: 2px 8px;
	color: var(--muted, #6B6259);
}
.fjump .jb {
	display: flex;
	justify-content: space-between;
	width: 100%;
	border: 0;
	border-top: 1px solid var(--hair, #E9E1D2);
	background: none;
	padding: 10px 13px;
	box-sizing: border-box;
	align-items: center;
	gap: 10px;
	font-family: inherit;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
	text-align: left;
	color: var(--terra-dk, #9E4D2E);
	cursor: pointer;
}
.fjump .jb span { flex: 0 0 auto; font-weight: 500; color: var(--muted, #6B6259); }
.lps-finds-body { overflow-x: hidden; }

.fgroup {
	background: #fff;
	border: 1px solid var(--cream-edge, #E4D5BD);
	border-radius: 13px;
	padding: 14px 14px 15px;
	margin: 0 0 14px;
}
.fghd { display: flex; justify-content: space-between; align-items: baseline; margin: 0 0 10px; }
.fgb {
	font-family: var(--lps-font-display, Georgia, serif);
	font-size: 17px;
	font-weight: 600;
	color: var(--terra-dk, #9E4D2E);
}
.fgc { font-size: 11.5px; color: var(--faint, #8C8177); }
.fi {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	padding: 8px 0;
	border-bottom: 1px solid var(--hair, #E9E1D2);
}
.fi .fn { font-size: 13.5px; font-weight: 600; color: var(--ink, #2C2722); margin: 0 0 6px; }
.fqty { display: inline-flex; align-items: center; gap: 0; border: 1px solid var(--cream-edge, #E4D5BD); border-radius: 8px; overflow: hidden; }
.fqty button {
	border: 0;
	background: #fff;
	width: 26px;
	height: 24px;
	font: 600 14px/1 inherit;
	color: var(--ink, #2C2722);
	cursor: pointer;
}
.fqty .q { min-width: 26px; text-align: center; font-size: 13px; font-weight: 600; }
.fsent { font-size: 12px; font-weight: 600; color: var(--terra-dk, #9E4D2E); }
.fright { text-align: right; }
.fp { font-size: 13.5px; font-weight: 600; color: var(--ink, #2C2722); margin: 0 0 5px; }
.flink {
	border: 0;
	background: none;
	padding: 0;
	font: 600 12px/1 inherit;
	color: var(--muted, #6B6259);
	text-decoration: underline;
	cursor: pointer;
}
.fgsub {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	padding: 10px 0 0;
	font-size: 12.5px;
	color: var(--muted, #6B6259);
}
.fgsub b {
	font-family: var(--lps-font-display, Georgia, serif);
	font-size: 16px;
	color: var(--ink, #2C2722);
}
.fpeek {
	background: var(--paper, #FAF6EE);
	border: 1px solid var(--hair, #E9E1D2);
	border-radius: 9px;
	padding: 8px 10px;
	margin: 10px 0 0;
	max-height: 74px;
	overflow-y: auto;
}
.fpeek .pk {
	display: block;
	font-size: 9.5px;
	letter-spacing: .08em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--faint, #8C8177);
	margin: 0 0 3px;
}
.fpeek .u {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 10.5px;
	color: var(--terra-dk, #9E4D2E);
	word-break: break-all;
	line-height: 1.5;
}
.fshop {
	display: block;
	width: 100%;
	margin: 11px 0 0;
	border: 0;
	background: var(--terra, #B45734);
	color: #fff;
	font: 600 14.5px/1.3 inherit;
	border-radius: 10px;
	padding: 12px;
	cursor: pointer;
	text-align: center;
}
.fshop:hover, .fshop:focus-visible { background: var(--terra-dk, #9E4D2E); }
.fclear { display: block; margin: 9px auto 0; }
.fempty { text-align: center; padding: 44px 18px; color: var(--muted, #6B6259); }
.fempty h4 {
	font-family: var(--lps-font-display, Georgia, serif);
	font-size: 17px;
	margin: 0 0 6px;
	color: var(--ink, #2C2722);
}
.fempty p { font-size: 13px; line-height: 1.55; margin: 0; }
.fdisc { font-size: 11px; color: var(--faint, #8C8177); line-height: 1.5; margin: 8px 0 0; }

/* --- toast ---------------------------------------------------------- */
.lps-finds-toast {
	position: fixed;
	left: 50%;
	bottom: 64px;
	transform: translateX(-50%) translateY(16px);
	background: var(--ink, #2C2722);
	color: #fff;
	padding: 10px 16px;
	border-radius: 10px;
	font-size: 13px;
	font-weight: 600;
	opacity: 0;
	pointer-events: none;
	transition: opacity .22s, transform .22s;
	z-index: 999;
	max-width: min(420px, 88vw);
	text-align: center;
}
.lps-finds-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

@media (prefers-reduced-motion: reduce) {
	.lps-finds-tray, .lps-finds-toast { transition: none; }
}
/* Finds tray close — beat theme button padding */
.lps-finds-tray .lps-finds-hd .x {
	padding: 0;
	min-width: 0;
	min-height: 0;
	width: 30px;
	height: 30px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: var(--cream, #F3E9D9);
	color: var(--ink, #2C2722);
	font-size: 18px;
	line-height: 1;
}
/* Finds tray item polish — thumb + compact stepper (beat theme button padding) */
.fi { align-items: flex-start; }
.fthumb {
	width: 46px;
	height: 46px;
	flex: none;
	border-radius: 9px;
	background: var(--cream, #F3E9D9);
	border: 1px solid var(--cream-edge, #E4D5BD);
	overflow: hidden;
}
.fthumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fmeta { flex: 1; min-width: 0; }
.lps-finds-tray .fqty button {
	padding: 0;
	min-width: 0;
	min-height: 0;
	width: 26px;
	height: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	background: #fff;
	color: var(--terra-dk, #9E4D2E);
	font-weight: 700;
	line-height: 1;
}
.lps-finds-tray .flink {
	padding: 0;
	min-height: 0;
	background: none;
	border: 0;
	font-size: 12px;
	font-weight: 600;
	color: var(--muted, #6B6259);
	text-decoration: underline;
}
/* ===== 380px mobile pass fixes (2026-07-17) ===== */
/* WP's admin bar goes position:absolute at <=600px and scrolls away;
   the sticky header must pin to the true viewport top there, or a
   46px see-through band opens above it (logged-in only). */
@media screen and (max-width: 600px) {
	body.admin-bar .lps-header { top: 0; }
}

/* Neutralize Astra button hover/focus on the hamburger (same cure as
   the hero gallery, 2026-07-13) - kills the blue square, keeps a
   terracotta ring for keyboard users. */
.lps-header__toggle:hover,
.lps-header__toggle:focus {
	background: transparent;
	border-color: transparent;
	outline: none;
}
.lps-header__toggle:focus-visible {
	outline: 2px solid var(--lps-accent, #B45734);
	outline-offset: 2px;
}

/* Wordmark must never wrap; below 420px trim wordmark + pill so the
   row still fits once the Finds badge appears (2026-07-17). */
.lps-header__wordmark { white-space: nowrap; }
@media (max-width: 420px){
	.lps-header__inner{ gap: .45rem; }
	.lps-header__wordmark{ font-size: .95rem; }
	.lps-finds-pill{ padding: 6px 10px; gap: 5px; }
}
/* Header wordmark registered mark */
.lps-header__reg {
	font-size: .62em;
	margin-left: 1px;
	line-height: 0;      /* don't let the sup inflate the header row height */
	vertical-align: super;
}
/* Solid buy rows — hover/focus: hold white text (Astra link-color leak) + darken */
.lps-buy-btn--solid:hover,
.lps-buy-btn--solid:focus-visible {
	background: var(--terra-dk, #9E4D2E);
}
.lps-buy-btn--solid:hover,
.lps-buy-btn--solid:hover .lps-buy-btn__cta,
.lps-buy-btn--solid:hover .lps-buy-btn__meta,
.lps-buy-btn--solid:focus,
.lps-buy-btn--solid:focus .lps-buy-btn__cta,
.lps-buy-btn--solid:focus .lps-buy-btn__meta {
	color: #fff;
}
/* 11-06 WCAG AA pass (axe-core 4.10.3 on Kinsta) */
.lps-buy-btn--solid .lps-buy-btn__meta { opacity: 1; }            /* white at .75 on terra read 3.2:1 */
.ast-footer-copyright p, .ast-footer-copyright a { color: #62718a; } /* Astra default #67768e = 4.38:1 */

/* Buy zone — all buy points paused (link-health render gate) */
.lps-buy-unavailable {
	margin: 1rem 0;
	padding: .65rem .9rem;
	background: var(--cream, #F3E9D9);
	border-radius: 8px;
	color: #6b6156;
	font-size: .95rem;
}
/* ============================================================
   Collection facet rail (FacetWP) v2 — appended 2026-07-19
   REPLACES the v1 "Collection facet bar" block — delete that
   whole block (its banner comment through its last rule) before
   appending this one.
   Sticky left rail on desktop; "Filters" toggle button ≤900px.
   FacetWP auto-hides empty facets (.facetwp-hidden).
   ============================================================ */

/* --- Two-column layout: rail + results --- */
.lps-coll__layout {
	display: grid;
	grid-template-columns: 200px minmax( 0, 1fr ); /* UI 2.0a: compact sidebar (decision #3) */
	gap: 24px;
	align-items: start;
}

.lps-coll__layout--norail {
	grid-template-columns: minmax( 0, 1fr );
}

/* --- Left rail (sticky) --- */
.lps-coll__rail {
	position: sticky;
	top: calc( var( --lps-header-h, 56px ) + 12px ); /* UI 2.0a: reads the measured header, no magic number */
	padding: 0; /* UI 2.0a: bare rail, no card chrome (mockup .side) */
	background: transparent;
	border: 0;
	border-radius: 0;
}

.lps-coll__facet {
	margin: 0 0 12px;
}

.lps-coll__facet:last-of-type {
	margin-bottom: 6px;
}

.lps-coll__facetlbl {
	display: block;
	margin: 0 0 4px;
	font-size: 10.5px; /* UI 2.0a: tracked micro-label */
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var( --lps-ink-2, #6B625A );
}

.lps-coll__railclear {
	margin: 4px 0 0;
	font-size: 12.5px;
}

.lps-coll__railclear a {
	color: var( --terra, #B45734 );
	text-decoration: underline;
	text-underline-offset: 2px;
}

.lps-coll__railclear a:hover {
	color: var( --terra-dk, #9E4D2E );
}

/* --- fSelect skin, rail-sized --- */
.lps-coll__rail .facetwp-facet {
	margin: 0;
}

.lps-coll__rail .fs-wrap {
	width: 100%;
}

.lps-coll__rail .fs-label-wrap,
.lps-coll__sortrow .facetwp-facet select {
	border: 1px solid rgba( 44, 39, 34, 0.22 );
	border-radius: 8px;
	background: #fff;
	color: var( --ink, #2C2722 );
}

.lps-coll__rail .fs-label-wrap .fs-label {
	padding: 7px 26px 7px 10px; /* UI 2.0a: 34px select */
	font-size: 13px;
	min-height: 34px;
	box-sizing: border-box;
}

.lps-coll__rail .fs-dropdown {
	border: 1px solid rgba( 44, 39, 34, 0.22 );
	border-radius: 8px;
	box-shadow: 0 8px 22px rgba( 44, 39, 34, 0.12 );
}

.lps-coll__rail .fs-option.selected,
.lps-coll__rail .fs-option:hover {
	background: var( --cream, #F3E9D9 );
}

/* --- Checkbox facets (2.0c chrome, 2026-08-22; density mockup .fx) ---
   FacetWP "checkboxes" type. Full-property overrides on FacetWP's own
   front.css (sprite checkbox, "(12)" counters). Counts are stripped of
   their parentheses server-side (lps_facetwp_bare_counts). */
.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0 0 5px;
	padding: 0;
	background: none;
	font-size: 12.5px;
	line-height: 1.3;
	color: var( --ink, #2C2722 );
	cursor: pointer;
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox::before {
	content: "";
	flex: none;
	width: 14px;
	height: 14px;
	box-sizing: border-box;
	border: 1px solid rgba( 44, 39, 34, 0.38 );
	border-radius: 3px;
	background: #fff;
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox:hover::before {
	border-color: var( --terra, #B45734 );
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox.checked::before {
	border-color: var( --terra, #B45734 );
	background: var( --terra, #B45734 ) url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E" ) center / 11px 11px no-repeat;
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox.disabled {
	opacity: 0.45;
	cursor: default;
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-counter {
	margin-left: auto;
	padding-left: 8px;
	font-size: 11px;
	color: var( --lps-ink-2, #6B625A );
}

/* "⌄ See 6 more" / "⌃ See less" — FacetWP's default wording (the
   sidebar convention: Amazon, Walmart, Home Depot), chevron drawn here.
   The second toggle is "See less". Anchor → full-property Astra reset. */
.lps-coll__rail .facetwp-toggle {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	margin: 2px 0 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: 11.5px;
	font-weight: 400;
	line-height: 1.3;
	color: var( --terra-dk, #9E4D2E );
	text-decoration: none;
	cursor: pointer;
}

.lps-coll__rail .facetwp-toggle::before {
	content: "";
	width: 7px;
	height: 7px;
	border: solid currentColor;
	border-width: 0 0 1.5px 1.5px;
	transform: translateY( -2px ) rotate( -45deg );
}

.lps-coll__rail .facetwp-toggle + .facetwp-toggle::before {
	transform: translateY( 2px ) rotate( 135deg ); /* "See less" points up */
}

.lps-coll__rail .facetwp-toggle:hover {
	color: var( --terra, #B45734 );
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* Only one toggle shows at a time — FacetWP's .facetwp-hidden must win
   over the inline-flex above (it lost on specificity, so both rendered). */
.lps-coll__rail .facetwp-toggle.facetwp-hidden {
	display: none;
}

/* --- Loading state D (mockup 2026-08-22, approved) ---
   lps-header.js adds html.lps-fwp-loading between FacetWP's
   facetwp-refresh and facetwp-loaded events, and .lps-busy to the
   checkbox / sort control that started it. Hairline under the sticky
   header is visible at every width; the ring is feedback at the finger. */
html.lps-fwp-loading::before {
	content: "";
	position: fixed;
	top: var( --lps-header-h, 56px );
	left: -40%;
	width: 40%;
	height: 2px;
	z-index: 101;
	background: var( --terra, #B45734 );
	border-radius: 2px;
	pointer-events: none;
	animation: lps-hairline 1s cubic-bezier( 0.4, 0, 0.2, 1 ) infinite;
}

@keyframes lps-hairline {
	to { left: 100%; }
}

@keyframes lps-spin {
	to { transform: rotate( 360deg ); }
}

.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox.lps-busy::before {
	border-color: rgba( 180, 87, 52, 0.25 );
	border-top-color: var( --terra, #B45734 );
	border-radius: 50%;
	background: transparent;
	animation: lps-spin 0.8s linear infinite;
}

.lps-titlebar__tools .facetwp-facet {
	position: relative;
}

.lps-titlebar__tools .facetwp-facet.lps-busy::after {
	content: "";
	position: absolute;
	top: 50%;
	right: -18px;
	width: 12px;
	height: 12px;
	margin-top: -6px;
	border: 2px solid rgba( 180, 87, 52, 0.25 );
	border-top-color: var( --terra, #B45734 );
	border-radius: 50%;
	animation: lps-spin 0.8s linear infinite;
}

/* FacetWP dims facets to 60% during refresh; with the hairline + ring that
   reads as two signals. Keep facets fully legible, just not clickable. */
.lps-coll__rail .facetwp-facet.is-loading {
	opacity: 1;
}

@media ( prefers-reduced-motion: reduce ) {
	html.lps-fwp-loading::before,
	.lps-coll__rail .facetwp-type-checkboxes .facetwp-checkbox.lps-busy::before,
	.lps-titlebar__tools .facetwp-facet.lps-busy::after {
		animation-duration: 2.5s;
	}
}

/* --- Applied-filter pills under the title bar (density mockup .applied) ---
   FacetWP selections + our Clear all. The row hides itself when nothing is
   selected (:has — no-:has browsers see an empty row with Clear all only). */
.lps-applied {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: -4px 0 12px;
}

.lps-applied:not( :has( .facetwp-selections li ) ) {
	display: none;
}

.lps-applied .facetwp-selections {
	display: contents;
}

.lps-applied .facetwp-selections ul {
	display: contents;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lps-applied .facetwp-selections li {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 3px 8px 3px 10px;
	border: 1px solid var( --ink, #2C2722 );
	border-radius: 999px;
	background: transparent;
	font-size: 12px;
	line-height: 1.2;
	color: var( --ink, #2C2722 );
}

.lps-applied .facetwp-selection-label {
	display: none; /* "Pack size:" — the value alone reads, as in the mockup */
}

.lps-applied .facetwp-selection-value {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0;
	background: none;
	cursor: pointer;
}

.lps-applied .facetwp-selections .facetwp-selection-value {
	background-image: none; /* FacetWP's own close icon -- ours is the ::after below (10-15: was showing both) */
	padding-right: 0;
	margin-right: 0;
}

.lps-applied .facetwp-selection-value::after {
	content: "\00D7"; /* × */
	font-size: 13px;
	line-height: 1;
	color: var( --lps-ink-2, #6B625A );
}

.lps-applied .facetwp-selection-value:hover::after {
	color: var( --terra-dk, #9E4D2E );
}

/* Clear all — anchor → full-property Astra reset (standing rule). */
.lps-applied__clear {
	display: inline-block;
	margin: 0 0 0 4px;
	padding: 0;
	border: 0;
	background: none;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.2;
	color: var( --terra-dk, #9E4D2E );
	text-decoration: underline;
	text-underline-offset: 2px;
	cursor: pointer;
}

.lps-applied__clear:hover,
.lps-applied__clear:focus {
	color: var( --terra, #B45734 );
	text-decoration: underline;
}

/* --- Sort row (top of results column) --- */
.lps-coll__sortrow {
	display: flex;
	justify-content: flex-end;
	margin: 0 0 12px;
}

.lps-coll__sortrow .facetwp-facet {
	margin: 0;
}

.lps-coll__sortrow .facetwp-facet select {
	padding: 8px 12px;
	font-size: 0.9rem;
	max-width: 100%;
}

/* --- "Showing X of Y" line (inside the refresh zone) --- */
.lps-coll__showing {
	margin: 0 0 14px;
	font-size: 0.85rem;
	color: rgba( 44, 39, 34, 0.72 );
}

.lps-coll__showing a {
	color: var( --terra, #B45734 );
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* --- Empty filtered result --- */
.lps-coll__empty {
	margin: 30px 0;
	padding: 22px;
	background: var( --cream, #F3E9D9 );
	border-radius: 10px;
	color: var( --ink, #2C2722 );
	font-size: 0.95rem;
}

.lps-coll__empty a {
	color: var( --terra, #B45734 );
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* --- Filters toggle button (mobile only) --- */
.lps-coll__filters-btn {
	display: none;
	margin: 0 0 14px;
	padding: 9px 18px;
	border: 1px solid var( --terra, #B45734 );
	border-radius: 8px;
	background: #fff;
	color: var( --terra, #B45734 );
	font-size: 0.9rem;
	font-weight: 600;
	cursor: pointer;
}

.lps-coll__filters-btn[aria-expanded="true"] {
	background: var( --terra, #B45734 );
	color: #fff;
}

/* --- Mobile ≤900px: single column, collapsible rail (380px floor) --- */
@media ( max-width: 900px ) {
	.lps-coll__layout {
		grid-template-columns: minmax( 0, 1fr );
		gap: 0;
	}

	.lps-coll__filters-btn {
		display: inline-block;
	}

	.lps-coll__rail {
		display: none;
		position: static;
		max-height: none;
		overflow-y: visible;
		margin: 0 0 18px;
	}

	.lps-coll__rail.is-open {
		display: block;
	}

	.lps-coll__sortrow {
		justify-content: flex-start;
	}
}
/* --- Collection grid: 2-up on mobile, 360px floor (matches search + department) --- */
@media ( max-width: 640px ) {
	.lps-coll .lps-brand__product-grid {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
		gap: 10px;
	}

	.lps-coll .lps-product-card__name {
		font-size: 0.85rem;
		line-height: 1.35;
	}

	.lps-coll .lps-product-card__dims {
		font-size: 0.75rem;
	}
}
/* ===================================================================
   Header search pill — UI 2.0a (2026-08-21), replaces the cream band.
   36px pill, terra hairline, Search button inside (mockup .srch).
   The pill frame is the FORM; the native input and the Algolia mount
   are borderless twins inside it, so pre-mount and post-mount boxes
   are identical (same CLS discipline as 2026-08-20).
   Phase D adds Ask-LaPrima toggle / camera / mic behind render gates.
   =================================================================== */
:root{ --lps-cream:#F3E9D9; --lps-cream-edge:#E5D9C5; }

.lps-search__form{
	display: flex; align-items: center; gap: 6px;
	width: 100%; height: 36px; box-sizing: border-box;
	border: 1.5px solid var(--terra, #B45734); border-radius: 999px;
	background: #fff; padding: 0 4px 0 12px;
}
.lps-search__form:focus-within{ outline: 2px solid var(--terra-dk, #9E4D2E); outline-offset: 1px; }

/* native input — visible only pre-mount / no-JS fallback */
.lps-search__input{
	flex: 1 1 280px; min-width: 0; height: 32px; box-sizing: border-box;
	border: 0; background: transparent; padding: 0; font-size: 14px;
	color: var(--lps-ink, #3A2E26);
}
.lps-search__input:focus{ outline: none; } /* focus ring lives on the pill */

/* the Algolia mount takes the input’s place in the flex row — twin basis */
.lps-search__form .lps-autocomplete{ flex: 1 1 280px; min-width: 0; }

.lps-search__go{
	flex: none; height: 28px; border: 0; border-radius: 999px;
	background: var(--terra, #B45734); color: #fff;
	font-weight: 600; font-size: 13px; padding: 0 14px; cursor: pointer;
}
.lps-search__go:hover{ background: var(--terra-dk, #9E4D2E); }
.lps-search__go:visited{ color: #fff; }

/* Algolia classic theme inside the pill: strip its frame + shrink its
   44px default height to the pill's 32px inner. Specificity (4 classes)
   beats the template's .lps-autocomplete .aa-Form skin, which prints
   later in the document. */
.lps-header .lps-search__form{ --aa-search-input-height: 32px; --aa-input-border-color-rgb: 0, 0, 0; }
.lps-header .lps-search__form .lps-autocomplete .aa-Form{
	border: 0; border-radius: 0; background: transparent; min-height: 0; height: 32px;
}
.lps-header .lps-search__form .lps-autocomplete .aa-Form:focus-within{ outline: none; box-shadow: none; }
.lps-header .lps-search__form .lps-autocomplete .aa-InputWrapper,
.lps-header .lps-search__form .lps-autocomplete .aa-InputWrapperPrefix,
.lps-header .lps-search__form .lps-autocomplete .aa-InputWrapperSuffix{ height: 32px; min-height: 0; }
.lps-header .lps-search__form .lps-autocomplete .aa-InputWrapperPrefix{ order: 0; }
.lps-header .lps-search__form .lps-autocomplete .aa-Input{ height: 32px; font-size: 14px; }
.lps-header .lps-search__form .lps-autocomplete .aa-SubmitButton{ width: 28px; height: 32px; padding: 0; }
.lps-header .lps-search__form .lps-autocomplete .aa-SubmitIcon{ width: 16px; height: 16px; }
.lps-header .lps-search__form .lps-autocomplete .aa-ClearButton{ height: 32px; width: 28px; padding: 0; }
/* Autocomplete panel: let it grow wider than the input for long titles */
.aa-Panel{ min-width: 480px; max-width: calc(100vw - 24px); }
/* Autocomplete: long product titles wrap to a second line instead of clipping */
.aa-Panel .suggestion-link{ align-items: flex-start; white-space: normal; }
.aa-Panel .suggestion-post-attributes{ min-width: 0; flex: 1 1 auto; }
.aa-Panel .suggestion-post-title{ white-space: normal; overflow-wrap: anywhere; display: block; }
/* One bar, not two: strip Astra's input chrome off the Algolia inputs */
.lps-autocomplete .aa-Input,
.aa-Panel ~ * .aa-Input{
	border: 0 !important; outline: none !important; box-shadow: none !important;
	background: transparent;
}
.lps-autocomplete .aa-Input:focus{ outline: none !important; }
/* focus state lives on the frame (already styled): .aa-Form:focus-within */

/* Panel width: replaces the earlier min/max pair — min() prevents the
   480px floor from overflowing small screens (why mobile titles clipped) */
.aa-Panel{ min-width: min(480px, calc(100vw - 24px)); max-width: calc(100vw - 24px); }
/* (persistent / reveal search modes retired — UI 2.0a, 2026-08-21) */
/* ============================================================
   Homepage hub (front-page.php) — mobile-first, existing tokens.
   ============================================================ */

.lps-home{ max-width:1080px; margin:0 auto; padding:1rem 1rem 3rem; color:var(--lps-ink); }

/* --- Hero --- */
.lps-home__hero{ background:var(--lps-bg); border:1px solid var(--lps-badge-border); border-radius:14px; padding:2rem 1.4rem; margin:1rem 0 1.75rem; }
.lps-home__hero--has-img{ display:grid; grid-template-columns:1fr; gap:1.25rem; align-items:center; }
.lps-home__eyebrow{ font-size:.72rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--lps-badge-text); margin:0 0 .5rem; }
.lps-home__headline{ font-family:var(--lps-font-display); font-weight:600; font-size:clamp(1.8rem,5.5vw,2.6rem); line-height:1.12; letter-spacing:-.01em; color:var(--lps-brandname); margin:0 0 .6rem; }
.lps-home__subhead{ font-size:1rem; color:var(--lps-ink-soft); margin:0 0 1.1rem; max-width:34em; }
.lps-home__cta{ display:inline-block; background:var(--terra,#B45734); color:#fff; text-decoration:none; font-weight:600; font-size:.95rem; border-radius:11px; padding:.85rem 1.6rem; }
.lps-home__cta:hover{ background:var(--terra-dk,#9E4D2E); color:#fff; }
.lps-home__trustline{ font-size:.8rem; color:var(--lps-origin); margin:.85rem 0 0; }
.lps-home__hero-media img{ display:block; width:100%; height:auto; border-radius:11px; }

/* --- Section chrome --- */
.lps-home__section{ margin:0 0 2rem; }
.lps-home__h2{ font-family:var(--lps-font-display); font-weight:600; font-size:clamp(1.35rem,4vw,1.7rem); letter-spacing:-.01em; margin:0 0 .35rem; }
.lps-home__sub{ font-size:.9rem; color:var(--lps-muted); margin:0 0 1rem; }
.lps-home__row{ display:flex; align-items:baseline; gap:.75rem; margin-bottom:1rem; }
.lps-home__all{ margin-left:auto; color:var(--terra-dk,#9E4D2E); font-weight:600; font-size:.85rem; text-decoration:none; }

/* --- Departments --- */
.lps-home__dept-grid{ display:grid; grid-template-columns:1fr; gap:.85rem; }
.lps-home__dept{ position:relative; border:1px solid var(--lps-badge-border); border-radius:13px; background:#fff; padding:1.15rem 1.1rem; }
.lps-home__dept.is-live{ border-color:var(--terra,#B45734); }
.lps-home__dept.is-coming{ background:var(--lps-chip-bg); }
.lps-home__dept-pill{ position:absolute; top:.85rem; right:.9rem; font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; border-radius:20px; padding:.2rem .6rem; background:var(--cream,#F3E9D9); color:var(--lps-badge-text); }
.lps-home__dept.is-live .lps-home__dept-pill{ background:var(--terra,#B45734); color:#fff; }
.lps-home__dept-name{ font-family:var(--lps-font-display); font-weight:600; font-size:1.25rem; margin:0 0 .3rem; }
.lps-home__dept-meta{ font-size:.85rem; color:var(--lps-muted); margin:0 0 .6rem; }
.lps-home__dept-go{ font-weight:600; font-size:.88rem; color:var(--terra-dk,#9E4D2E); text-decoration:none; }
.lps-home__dept-go.is-muted{ color:var(--lps-muted); font-weight:500; }

/* --- Brand grid --- */
.lps-home__brand-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem; }
.lps-home__brand-card{ display:flex; flex-direction:column; gap:.5rem; border:1px solid var(--lps-badge-border); border-radius:13px; background:#fff; padding:1.05rem 1rem; text-decoration:none; }
.lps-home__brand-card:hover{ border-color:var(--terra,#B45734); }
.lps-home__brand-name{ font-family:var(--lps-font-display); font-weight:600; font-size:1.05rem; color:var(--lps-brandname); }
.lps-home__brand-go{ margin-top:auto; font-size:.82rem; font-weight:600; color:var(--terra-dk,#9E4D2E); }

/* --- Featured products — cards are the 2.0b partial; grid stays 2-up / 4-up (2026-08-21) --- */
.lps-home__prod-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }

/* --- Guides teaser --- */
.lps-home__guide-grid{ display:grid; grid-template-columns:1fr; gap:.85rem; }
.lps-home__guide-card{ display:flex; flex-direction:column; gap:.5rem; border:1px solid var(--lps-badge-border); border-radius:13px; background:#fff; padding:1.05rem 1rem; text-decoration:none; }
.lps-home__guide-title{ font-family:var(--lps-font-display); font-weight:600; font-size:1.05rem; color:var(--lps-ink); }
.lps-home__guide-go{ font-size:.82rem; font-weight:600; color:var(--terra-dk,#9E4D2E); }

/* --- Trust band --- */
.lps-home__trustband{ background:var(--lps-chip-bg); border-radius:13px; padding:1.25rem 1.2rem; }
.lps-home__trust-body{ font-size:.92rem; color:var(--lps-ink-soft); margin:0; max-width:48em; }

/* --- ≥700px --- */
@media (min-width:700px){
	.lps-home{ padding:1rem 1.5rem 4rem; }
	.lps-home__hero{ padding:2.75rem 2.5rem; }
	.lps-home__hero--has-img{ grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); }
	.lps-home__dept-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
	.lps-home__brand-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
	.lps-home__prod-grid{ grid-template-columns:repeat(4,minmax(0,1fr)); }
	.lps-home__guide-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
/* (Palette tester + audition overrides removed — UI 2.0a, 2026-08-21.
   White is committed at the bottom of this file.) */

/* --- Horizon department card + flexible grid --- */
.lps-home__dept-grid{ grid-template-columns:1fr; }
.lps-home__dept--horizon{ background:#F6F1E7; border-style:dashed; }
.lps-home__dept--horizon .lps-home__dept-pill{ background:#fff; }
@media (min-width:700px){
	.lps-home__dept-grid{ grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); }
}
/* --- Department archive (taxonomy-department.php) --- */
/* .lps-dept__head card retired by the UI 2.0a title bar (2026-08-21); rule kept for the no-FacetWP fallback only. */
.lps-dept__head{ background:var(--lps-bg); border:1px solid var(--lps-badge-border); border-radius:14px; padding:1.6rem 1.4rem; margin:1rem 0 1.5rem; }
.lps-dept__title{ font-family:var(--lps-font-display); font-weight:600; font-size:clamp(1.7rem,5vw,2.3rem); color:var(--lps-brandname); margin:0 0 .3rem; }
.lps-dept__sub{ font-size:.95rem; color:var(--lps-ink-soft); margin:0; }
.lps-dept__empty{ color:var(--lps-muted); }
.lps-dept .navigation.pagination{ margin-top:1.5rem; }
.lps-dept .nav-links{ display:flex; gap:.4rem; flex-wrap:wrap; }
.lps-dept .page-numbers{ border:1px solid var(--lps-badge-border); background:#fff; color:var(--lps-ink-soft); border-radius:9px; padding:.45rem .8rem; font-size:.85rem; font-weight:600; text-decoration:none; }
.lps-dept .page-numbers.current{ background:var(--terra,#B45734); border-color:var(--terra,#B45734); color:#fff; }
/* (2026-07-21 .lps-home__prod-card visited guard retired 2026-08-21 — class no longer rendered; the 2.0b card pins its own states) */
/* Department archive — FacetWP rail additions (2026-07-21) */
.lps-dept .lps-coll__sortrow{ justify-content:space-between; align-items:center; }
.lps-dept__count{ font-size:.85rem; color:var(--lps-muted,#8A7A66); }
.lps-dept__loadmore .facetwp-load-more{
	display:block; margin:1.5rem auto 0;
	border:1.5px solid var(--terra,#B45734); border-radius:9px;
	background:#fff; color:var(--terra-dk,#9E4D2E);
	font-weight:600; font-size:.95rem; padding:.65rem 1.6rem; cursor:pointer;
}
.lps-dept__loadmore .facetwp-load-more:hover{ background:var(--terra,#B45734); color:#fff; }
/* Curated "Load more designs" + collection sortrow counts (2026-07-21) */
.lps-curated-more{
	display:block; margin:1.5rem auto 0;
	border:1.5px solid var(--terra,#B45734); border-radius:9px;
	background:#fff; color:var(--terra-dk,#9E4D2E);
	font-weight:600; font-size:.95rem; padding:.65rem 1.6rem; cursor:pointer;
}
.lps-curated-more:hover{ background:var(--terra,#B45734); color:#fff; }
a.lps-curated-more, a.lps-curated-more:visited{ width:fit-content; text-align:center; text-decoration:none; color:var(--terra-dk,#9E4D2E); }
a.lps-curated-more:hover{ color:#fff; }
.lps-curated-more[aria-busy="true"]{ opacity:.6; cursor:progress; }
.single-brand .lps-coll__sortrow{ justify-content:space-between; align-items:center; }
/* Collection flat view — container-less grid, matches search + department (2026-07-21) */
.lps-brand__products.lps-coll{ background:transparent; border:0; border-radius:0; padding:0; }

/* (2026-07-21 4:3 mobile thumb retired 2026-08-21 — square thumbs site-wide, decision #7) */
/* Visited-link guard — house buttons and cards keep their own colors (Astra a:visited) (2026-07-21) */
.lps-home__cta:visited{ color:#fff; }
.lps-home__brand-card:visited,
.lps-home__guide-card:visited{ color:inherit; }
.lps-home__dept-go:visited{ color:var(--terra-dk,#9E4D2E); }

/* ============================================================
 * Collection width tokens - locked 2026-08-17.
 * Fluid cap + card floor. Search adopts now; department
 * archives + brand directory adopt in the polish bundle.
 * ============================================================ */
:root {
    --lps-collection-max: 100%; /* UI 2.0a (2026-08-21, decision #4): fluid, no cap — a cap only changes screens wider than the cap */
    --lps-card-min: 220px;      /* decision #5 */
    --lps-line: #E8E0D4;        /* mockup --line: card + control hairline */
    --lps-ink-2: #6B625A;       /* mockup --ink-2: secondary text */
}

/* Search pages only: release Astra's content clamp so the fluid
 * token governs. #content scoping leaves header/footer alone;
 * reading surfaces (PDP, guides) keep their widths. */
body.search #content .ast-container {
    max-width: 100%;
}

/* --- PDP Features collapsible (product_bullets) 2026-08-17 --- */
.lps-feats { margin: 1.1rem 0 0; border: 1px solid #E3CDB9; border-radius: 10px; background: #fff; }
.lps-feats__summary { cursor: pointer; padding: .8rem 1rem; font-weight: 600; color: var(--lps-ink, #3A2E26); list-style: none; }
.lps-feats__summary::-webkit-details-marker { display: none; }
.lps-feats__summary::after { content: "+"; float: right; color: var(--lps-accent, #B85A38); font-weight: 600; }
.lps-feats[open] .lps-feats__summary::after { content: "\2013"; }
.lps-feats__list { margin: 0; padding: 0 1.25rem .9rem 2.2rem; color: var(--lps-ink-soft, #5A4A3E); font-size: .95rem; }
.lps-feats__list li { margin: 0 0 .35rem; }


/* Brand collection view (/collection endpoint) adopts the fluid token;
 * the editorial brand view keeps its 1080px reading card. 2026-08-17 */
.lps-brand--coll {
    max-width: var(--lps-collection-max, 1080px);
    padding: 14px 20px 40px; /* UI 2.0a: 20px gutters, no reading-card chrome */
    background: transparent;
    border-radius: 0;
}
body.single-brand #content .ast-container {
    max-width: 100%;
}


/* ============================================================
 * Department archives adopt the fluid collection tokens
 * (2026-08-17). Scoped via the .lps-dept combo + .lps-dept__grid
 * so the home page (.lps-home alone) keeps its 1080px layout.
 * ============================================================ */
body.tax-department #content .ast-container {
    max-width: 100%;
}
.lps-home.lps-dept {
    box-sizing: border-box;
    width: 100%;
    max-width: var(--lps-collection-max, 1080px);
    padding: 14px 20px 40px; /* UI 2.0a: 20px gutters */
}
.lps-dept__grid {
    display: grid; /* 2.0b: no longer piggybacks on .lps-home__prod-grid */
    grid-template-columns: repeat(auto-fill, minmax(min(var(--lps-card-min, 220px), 100%), 1fr));
    gap: 14px; /* UI 2.0a decision #5 */
}
/* 2-up on phones (360px floor), matching search + brand collections */
@media (max-width: 640px) {
    .lps-dept__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }
}

/* ============================================================
   360px header fit (2026-08-17) — S25-class phones are 360 CSS px.
   Header row overflowed 33px at 360, growing Android's layout
   viewport to 393px: page panned sideways and ALL fixed elements
   (Finds tray/overlay/toast) anchored 33px off-screen right.
   ============================================================ */
@media (max-width: 380px){
	.lps-header__inner{ gap: .4rem; padding: 0 .65rem; }
	.lps-header__utility{ gap: .4rem; }
	.lps-header__wordmark{ font-size: .9rem; }
	.lps-header__toggle{ width: 36px; }
	.lps-finds-pill{ padding: 5px 8px; gap: 4px; }
}
/* (hardcoded Contact anchor removed from the header markup — UI 2.0a) */
/* Guard: any future overflow must never expand the mobile layout
   viewport again — clip (not hidden) adds no scroll container,
   so sticky/fixed behavior is untouched. */
html{ overflow-x: clip; }
html body{ overflow-x: clip; } /* upstream body{overflow-x:hidden} went live once html left `visible` and killed position:sticky; clip = same guard, no scroll container (2026-08-19) */

/* ===== Brand page Explore row (Taxonomy Spec v0.1 step 7, 2026-08-18) =====
   House convention: every var() carries a hex fallback -- the bare tokens
   (--terra, --cream, ...) are not defined at :root in this theme. */
.lps-explore { margin: 36px 0; }
.lps-explore .lps-brand__section-title { font-family: var(--lps-font-display, Georgia, serif); font-weight: 600; font-size: clamp(1.4rem, 3vw, 1.7rem); color: var(--lps-ink, #3A2E26); margin: 0 0 .25rem; }
.lps-explore__sub { margin: 0 0 16px; font-size: 14px; color: var(--lps-ink-soft, #5A4A3E); }
.lps-explore__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.lps-tcard { display: flex; flex-direction: column; background: var(--cream, #F3E9D9); border: 1px solid rgba(180,87,52,.18); border-radius: 10px; overflow: hidden; text-decoration: none; color: inherit; transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.lps-tcard:hover, .lps-tcard:focus-visible { transform: translateY(-2px); border-color: var(--terra, #B45734); box-shadow: 0 4px 14px rgba(44,39,34,.08); }
.lps-tcard:focus-visible { outline: 2px solid var(--terra, #B45734); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
	.lps-tcard { transition: none; }
	.lps-tcard:hover, .lps-tcard:focus-visible { transform: none; }
}
.lps-tcard__media { display: block; aspect-ratio: 16 / 11; }
.lps-tcard__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lps-tcard__body { display: flex; flex-direction: column; flex: 1; padding: 12px 13px 13px; }
.lps-tcard__eyebrow { font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: rgba(44,39,34,.55); margin: 0 0 3px; }
.lps-tcard__eyebrow--lic { color: var(--terra-dk, #9E4D2E); }
.lps-tcard__name { font-family: var(--lps-font-display, Georgia, serif); font-weight: 600; font-size: 18.5px; line-height: 1.22; color: var(--terra, #B45734); margin: 0 0 4px; }
.lps-tcard__blurb { font-size: 12.5px; color: var(--lps-ink-soft, #5A4A3E); margin: 0 0 10px; }
.lps-tcard__foot { margin-top: auto; padding-top: 6px; display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 12.5px; }
.lps-tcard__count { color: rgba(44,39,34,.62); }
.lps-tcard__go { color: var(--terra-dk, #9E4D2E); font-weight: 600; white-space: nowrap; }

/* ===== Term archives (series / occasion / theme) — collection-layout reuse ===== */
.lps-tarch__eyebrow { font-size: 11.5px; letter-spacing: .11em; text-transform: uppercase; color: var(--terra-dk, #9E4D2E); margin: 0 0 2px; }
.lps-tarch .lps-coll__sub a { color: var(--terra-dk, #9E4D2E); font-weight: 600; }
/* Astra's separate/two-container layout renders .ast-container as a flex
 * row, so the archive article must be told to fill it — same fix the
 * department archives use (.lps-home.lps-dept). Max-width still comes
 * from .lps-brand--coll's fluid token. 2026-08-18 */
.lps-tarch { box-sizing: border-box; width: 100%; }
/* Release Astra's content clamp for the three term archives — the same
 * house pattern as search / brand collections / department archives above.
 * The .lps-brand--coll class on the archive article then caps it at the
 * fluid --lps-collection-max token. 2026-08-18 */
body.tax-lps_series #content .ast-container,
body.tax-lps_occasion #content .ast-container,
body.tax-lps_theme #content .ast-container {
    max-width: 100%;
}

/* --- Visited/focus guard: brand hero + buy zone (2026-08-18) ---
   Same bug class as the 2026-07-21 home guard: Astra a:visited purples
   link-styled buttons; Astra's global button:focus repaints Save-to-Finds
   after a mouse click (plain :focus was unstyled — only :focus-visible was). */
.lps-hero__cta:visited { color: var(--lps-on-dark); }
.lps-direct__buyone:visited { color: #fff; }
.lps-buy-btn:visited { color: var(--bz-ink); }
.lps-buy-btn--solid:visited { color: #fff; }
.lps-direct__save:focus { background: var(--cream, #F3E9D9); }

/* Finds tray: saved items link back to their PDP (2026-08-18) */
.lps-finds-tray .fn a { color: inherit; text-decoration: none; }
.lps-finds-tray .fn a:hover,
.lps-finds-tray .fn a:focus-visible { color: var(--terra-dk, #9E4D2E); text-decoration: underline; }
.lps-finds-tray .fn a:visited { color: inherit; }
.lps-finds-tray .fthumb a { display: block; }
/* ===== PDP enrichment — series chips, guides doclink, care text (2026-08-18) ===== */
.lps-series-chips { margin: 0 0 1rem; display: flex; flex-wrap: wrap; gap: 8px; }
.lps-series-chip { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px;
  border: 1px solid #E7C9B8; border-radius: 999px; background: #FCF8F2;
  color: var(--lps-badge-text, #8A3E1E); font-size: .8rem; font-weight: 600; text-decoration: none; }
.lps-series-chip:visited { color: var(--lps-badge-text, #8A3E1E); }
.lps-series-chip:hover, .lps-series-chip:focus-visible { background: #F8EFE3; }
.lps-docs { margin: 0 0 1rem; }
.lps-docs__label { font-size: .72rem; letter-spacing: .05em; text-transform: uppercase;
  color: var(--lps-origin, #8A7866); margin: 0 0 .4rem; }
.lps-doclink { display: flex; align-items: center; gap: 10px; padding: .65rem .8rem;
  background: #fff; border: 1px solid #E3CDB9; border-radius: 8px; text-decoration: none;
  color: var(--lps-ink, #3A2E26); }
.lps-doclink:visited { color: var(--lps-ink, #3A2E26); }
.lps-doclink:hover, .lps-doclink:focus-visible { border-color: var(--lps-badge-border, #E0B79F); }
.lps-doclink__ic { display: inline-flex; color: var(--lps-accent, #B85A38); flex: none; }
.lps-doclink__ic svg { width: 22px; height: 22px; display: block; }
.lps-doclink__t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.lps-doclink__t b { font-size: .9rem; }
.lps-doclink__t small { font-size: .75rem; color: var(--lps-origin, #8A7866); }
.lps-doclink__arw { width: 16px; height: 16px; margin-left: auto; color: var(--lps-origin, #8A7866); flex: none; }
.lps-attrs__care { margin: .75rem 0 0; font-size: .85rem; line-height: 1.55; }
.lps-attrs__details--solo { border-top: 0; padding-top: 0; margin: 1rem 0; }

/* ===== PDP video thumb tile + series-chip column toggle (2026-08-18) ===== */
.lps-thumb-video { position: relative; width: 56px; height: 56px; padding: 0; overflow: hidden;
  background: var(--lps-cream, #F3E9D9); border: 1px solid #E3CDB9; border-radius: 7px; cursor: pointer; }
/* Astra button guard — cover plain :focus too (see 2026-08-18 handoff §1.7) */
.lps-thumb-video:hover, .lps-thumb-video:focus, .lps-thumb-video:focus-visible {
  background: var(--lps-cream, #F3E9D9); border-color: var(--lps-accent, #B85A38); outline: none; }
.lps-thumb-video:focus-visible { outline: 2px solid var(--lps-accent, #B85A38); outline-offset: 2px; }
.lps-thumb-video__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lps-thumb-video__play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -58%);
  width: 26px; height: 26px; border-radius: 50%; background: var(--lps-accent, #B85A38);
  color: #FFF7EF; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 1px 5px rgba(0,0,0,.3); }
.lps-thumb-video__play svg { width: 13px; height: 13px; margin-left: 1px; }
.lps-thumb-video:hover .lps-thumb-video__play { background: #9E4D2E; }
.lps-thumb-video__lbl { position: absolute; left: 0; right: 0; bottom: 0;
  background: rgba(58, 46, 38, .82); color: #FFF7EF; font-size: 8.5px; font-weight: 700;
  letter-spacing: .03em; text-transform: uppercase; text-align: center; padding: 2px 0; }
.lps-thumb-video--series { border-color: #D9A27F; background: #E8DECE; }
.lps-series-chips--media { display: none; margin: 1rem 0 0; }
@media (min-width: 769px) {
  .lps-series-chips--media { display: flex; }
  .lps-series-chips--info { display: none; }
}

/* ===== Series split pill — play segment + archive link (2026-08-18) ===== */
.lps-series-split { display: inline-flex; align-items: stretch; border: 1px solid #E7C9B8;
  border-radius: 999px; background: #FCF8F2; overflow: hidden; }
/* Astra button guard — plain :focus covered */
.lps-series-split__play { display: inline-flex; align-items: center; justify-content: center;
  padding: 0 11px 0 13px; border: 0; border-right: 1px solid #E7C9B8; background: #FCF8F2;
  cursor: pointer; }
.lps-series-split__play:hover, .lps-series-split__play:focus, .lps-series-split__play:focus-visible {
  background: #F3E4D2; border-right-color: #E7C9B8; outline: none; }
.lps-series-split__play:focus-visible { outline: 2px solid var(--lps-accent, #B85A38); outline-offset: -2px; }
.lps-series-split__dot { width: 20px; height: 20px; border-radius: 50%;
  background: var(--lps-accent, #B85A38); color: #FFF7EF; display: flex; align-items: center;
  justify-content: center; }
.lps-series-split__dot svg { width: 10px; height: 10px; margin-left: 1px; display: block; }
.lps-series-split__go { display: inline-flex; align-items: center; gap: 5px; padding: 5px 13px;
  background: #FCF8F2; color: var(--lps-badge-text, #8A3E1E); font-size: .8rem; font-weight: 600;
  text-decoration: none; }
.lps-series-split__go:visited { color: var(--lps-badge-text, #8A3E1E); }
.lps-series-split__go:hover, .lps-series-split__go:focus-visible { background: #F8EFE3; }
/* Returns strip links — visited guard for policy + Email support (2026-08-18) */
.lps-buy-returns a { color: var(--terra-dk, #9E4D2E); font-weight: 600; }
.lps-buy-returns a:visited { color: var(--terra-dk, #9E4D2E); }

/* ===== Brand banner + hero video (2026-08-19) =====
   Banner: Direct-lane brand-supplied wide art above the hero (render is
   lane-gated in single-brand.php; the field itself is unconditional).
   Hero video: one video tile on the gallery rail; the player mounts as a
   sibling DIV reusing .lps-hero__stage box styles -- never inside the
   stage <button> (interactive-in-button breaks the DOM). */
.lps-brandbanner{
	width: var(--lps-collection-max, min(94vw, 1800px));
	margin: 16px 0 22px calc((100% - var(--lps-collection-max, min(94vw, 1800px))) / 2);
}
.lps-brandbanner__img{ display: block; width: 100%; height: auto; border-radius: 12px; border: 1px solid rgba(180,87,52,.16); }
@media (max-width: 480px){ .lps-brandbanner__img{ border-radius: 8px; } }

.lps-hero__stage[hidden]{ display: none; } /* .lps-hero__stage{display:block} would beat the hidden attr */
.lps-hero__videobox{ background: #000; overflow: hidden; cursor: default; }
.lps-hero__videobox iframe, .lps-hero__videobox video{ width: 100%; height: 100%; border: 0; display: block; }

.lps-hero__thumb--video{ position: relative; background: var(--lps-ink, #2C2722); }
.lps-hero__thumb--video img{ object-fit: cover; padding: 0; }
.lps-hero__thumb-play{ position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 15px; color: #FFF; background: rgba(44,39,34,.34); pointer-events: none; border-radius: inherit; }

/* Hero rail video tile — leads the rail; caption chip matches PDP video chips. */
.lps-hero__thumb--video { position: relative; overflow: hidden; }
.lps-hero__thumb-cap {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	background: rgba(44, 39, 34, .82);
	color: #fff;
	font-size: .58rem;
	letter-spacing: .14em;
	text-align: center;
	padding: .18rem 0;
	pointer-events: none;
}
/* ===== Explore-in-hero: compact cards + desktop scroll (2026-08-19) =====
   Explore renders inside the brand hero (grid area `explore`). Split-hero
   compact variant: 2-across, no blurb, no term image. `is-scroll` (>4
   cards, set by the template) enables a desktop-only vertical scroll:
   two rows plus a peeking third under a fade. Mobile flows with the
   page — no nested touch scrolling. Height dial: max-height below. */
.lps-hero .lps-explore{ text-align: left; }
.lps-hero--split .lps-explore{ margin: 1.5rem 0 0; }
.lps-hero--split .lps-explore .lps-brand__section-title{ font-size: 1.35rem; }
.lps-hero--split .lps-explore__sub{ margin-bottom: 12px; }
.lps-hero--split .lps-explore__grid{ grid-template-columns: repeat(2, minmax(0,1fr)); }
.lps-hero--split .lps-tcard__media{ display: none; }
.lps-hero--split .lps-tcard__blurb{ display: none; }
.lps-hero--split .lps-tcard__body{ padding: 9px 11px 10px; }
.lps-hero--split .lps-tcard__name{ font-size: 16.5px; margin-bottom: 2px; }

@media (min-width: 761px){
	.lps-hero--split .lps-explore__wrap.is-scroll{ position: relative; }
	.lps-hero--split .lps-explore__wrap.is-scroll .lps-explore__grid{
		max-height: 13.5rem; /* the dial: raise to show more before the fade */
		overflow-y: auto;
		padding-right: .4rem;
		scrollbar-width: thin;
		scrollbar-color: var(--lps-accent, #B45734) var(--cream, #F3E9D9);
	}
	.lps-hero--split .lps-explore__wrap.is-scroll .lps-explore__grid::-webkit-scrollbar{ width: 7px; }
	.lps-hero--split .lps-explore__wrap.is-scroll .lps-explore__grid::-webkit-scrollbar-thumb{ background: var(--lps-accent, #B45734); border-radius: 4px; }
	.lps-hero--split .lps-explore__wrap.is-scroll .lps-explore__grid::-webkit-scrollbar-track{ background: var(--cream, #F3E9D9); border-radius: 4px; }
	.lps-hero--split .lps-explore__wrap.is-scroll::after{
		content: ""; position: absolute; left: 0; right: .9rem; bottom: 0; height: 2.2rem;
		pointer-events: none;
		background: linear-gradient(rgba(250,246,239,0), var(--lps-bg, #FAF6EF));
	}
}

/* Outline buy rows — hold ink text vs Astra link-color leak (2026-08-19).
   Third instance of the 07-21/08-18 bug class: hover/visited guards only
   covered the --solid variant; the first live OUTLINE marketplace row
   (Culver Amazon secondary) surfaced hover-blue / visited-purple. */
a.lps-buy-btn:not(.lps-buy-btn--solid),
a.lps-buy-btn:not(.lps-buy-btn--solid):visited,
a.lps-buy-btn:not(.lps-buy-btn--solid):hover,
a.lps-buy-btn:not(.lps-buy-btn--solid):focus,
a.lps-buy-btn:not(.lps-buy-btn--solid) .lps-buy-btn__cta,
a.lps-buy-btn:not(.lps-buy-btn--solid) .lps-buy-btn__meta,
a.lps-buy-btn:not(.lps-buy-btn--solid):visited .lps-buy-btn__cta,
a.lps-buy-btn:not(.lps-buy-btn--solid):visited .lps-buy-btn__meta,
a.lps-buy-btn:not(.lps-buy-btn--solid):hover .lps-buy-btn__cta,
a.lps-buy-btn:not(.lps-buy-btn--solid):hover .lps-buy-btn__meta,
a.lps-buy-btn:not(.lps-buy-btn--solid):focus .lps-buy-btn__cta,
a.lps-buy-btn:not(.lps-buy-btn--solid):focus .lps-buy-btn__meta {
	color: var(--bz-ink);
}
/* Product gallery thumbs became swap buttons (2026-08-19) — strip button
   chrome so they render like the plain imgs they replaced; active/hover
   mirrors the brand-hero rail treatment. */
.lps-product__thumb {
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	line-height: 0;
	border-radius: 7px;
}
.lps-product__thumb img { display: block; }
.lps-product__thumb:hover img { border-color: var(--terra); }
.lps-product__thumb.is-active img { border-color: var(--terra); }
.lps-product__thumb:focus-visible {
	outline: 2px solid var(--terra-dk);
	outline-offset: 2px;
}
.lps-product__main-image[data-lps-image] { cursor: zoom-in; }

/* Stage swap must never re-balance the split (2026-08-19): grid items carry
   an implicit min-width:auto floor, so a swapped image's intrinsic width was
   resizing the media track and reflowing the title column. Zero the floor —
   both tracks hold their equal share no matter which photo is on stage. */
.lps-product__split > * { min-width: 0; }

/* Square stage, enforced at the CONTAINER (2026-08-19): the long-standing
   aspect-ratio rule on the img itself never actually took effect (images
   have always rendered at natural ratio), which let tonight's portrait
   swaps grow the whole card. The frame is now a fixed square and the image
   is absolutely positioned inside it — no img-level rule can move the
   shell again. */
.lps-product__main-image {
	position: relative;
	aspect-ratio: 1 / 1;
	background: #fff;
	border-radius: 10px;
}
.lps-product__main-image img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
	border-radius: 10px;
}
/* Card width must be deterministic (2026-08-20): .lps-product is a flex item
   inside Astra's ast-container, so with no width it shrink-to-fits its
   content — sparse pages collapsed the split to one column and every page
   jittered on load as images renegotiated the width. Fill the container;
   the 860px cap and auto margins still center it. */
.lps-product { width: 100%; }

/* Refresh jitter kill (2026-08-20): on reload the page is briefly short, the
   classic scrollbar vanishes, and the centered layout shifts right-then-left
   as it reappears. Reserve the gutter permanently. Overlay scrollbars
   (mobile, macOS) ignore this — desktop-only effect, exactly where the
   jitter lives. */
html { scrollbar-gutter: stable; }

/* Search band geometry lock (2026-08-20): the Algolia mount briefly leaves
   the row with no full-height child (native input hidden before aa-Form
   paints) — content below hopped up then down. Pin the row to the mounted
   height (measured: 46px) and hide the empty mount target so the native
   input pre-mount occupies the exact slot the widget will take. */
.lps-search__form { min-height: 36px; } /* UI 2.0a: pill height (was 46px band) */
.lps-search__input { height: 32px; box-sizing: border-box; }
.lps-search__form .lps-autocomplete:not(:has(.aa-Form)) { display: none; } /* :empty failed — mount div ships with whitespace inside, so it stayed visible pre-mount and split the row with the native input (2026-08-20) */

/* Astra link-ink leak #4 guard (2026-08-20) retired 2026-08-21 — .lps-home__prod-card
   is gone; .lps-product-card__body pins base/hover/focus/visited in the 2.0b block. */

/* Palette COMMITTED: white (2026-08-20, chosen via the header tester).
   Replicates exactly what data-lps-palette="white" applied, minus the
   attribute gate. The tester (functions.php ~line 459) and its audition
   CSS (~line 1729) are now redundant — remove both in the hygiene pass.
   !important mirrors the tester's needs vs Astra's dynamic CSS order. */
body { background-color: #FFFFFF !important; }
#page, #content, .site-content,
.ast-separate-container .ast-article-single { background-color: transparent !important; }
/* ============================================================
   UI 2.0a — title bar (2026-08-21, decision #2). Shared by the brand
   collection (single-brand.php), department (taxonomy-department.php)
   and search (instantsearch-modern.php). Crumb → H1 + inline dynamic
   count → [direct pill] → Filters (≤900) + Sort right-aligned.
   Mobile floor is 360px (Joe, 2026-08-21).
   H1 is Fraunces 500 with live optical sizing (variable font, see the
   @font-face block at the top of this file).
   ============================================================ */
.lps-titlebar__crumbs{ display:flex; align-items:center; gap:10px; margin:0 0 2px; font-size:12.5px; color:var(--lps-ink-2,#6B625A); }
.lps-titlebar__crumb{ color:inherit; text-decoration:none; }
.lps-titlebar__crumb:hover{ color:var(--terra,#B45734); }
.lps-titlebar__alt{ margin-left:auto; color:var(--terra-dk,#9E4D2E); font-weight:600; text-decoration:none; }
.lps-titlebar__alt:hover{ text-decoration:underline; }
.lps-titlebar__alt.is-muted{ color:var(--lps-ink-2,#6B625A); font-weight:400; }
.lps-titlebar__blurb{ font-size:13.5px; color:var(--lps-ink-2,#6B625A); margin:-6px 0 12px; max-width:70ch; }

.lps-titlebar{ display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin:4px 0 12px; }
.lps-titlebar__h1{ font-family:var(--lps-font-display); font-weight:500; font-size:34px; line-height:1.1; letter-spacing:-.01em; margin:0; color:var(--lps-ink,#3A2E26); }
.lps-titlebar__h1 em{ font-style:normal; color:var(--terra-dk,#9E4D2E); }
.lps-titlebar__count{ font-size:14px; color:var(--lps-ink-2,#6B625A); }
.lps-titlebar__count .facetwp-counts,
.lps-titlebar__count .ais-Stats{ display:inline; position:static !important; margin:0; padding:0; font-size:inherit; color:inherit; }
.lps-titlebar__count .ais-Stats-text{ font-size:inherit; }

.lps-titlebar__direct{ display:inline-flex; align-items:center; gap:6px; align-self:center; font-size:12px; color:var(--lps-ink-2,#6B625A); border:1px solid var(--lps-line,#E8E0D4); border-radius:999px; padding:3px 9px; white-space:nowrap; }
.lps-titlebar__direct i{ width:8px; height:8px; border-radius:50%; background:var(--terra,#B45734); display:inline-block; }

.lps-titlebar__tools{ margin-left:auto; display:flex; align-items:center; gap:8px; align-self:center; }
.lps-titlebar__tools .facetwp-facet{ margin:0; }
.lps-titlebar__tools select,
.lps-titlebar__tools .ais-SortBy-select{
	font:inherit; font-size:13px; height:34px; min-width:0; max-width:100%;
	border:1px solid var(--lps-line,#E8E0D4); border-radius:8px; padding:0 28px 0 10px;
	background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%232C2722' stroke-width='1.5'/></svg>") no-repeat right 10px center;
	-webkit-appearance:none; appearance:none; color:var(--lps-ink,#3A2E26); cursor:pointer;
}
.lps-titlebar__tools .lps-coll__filters-btn,
.lps-titlebar__tools .lps-srch__filters-btn{ margin:0; height:34px; padding:0 12px; font-size:13px; border-color:var(--lps-line,#E8E0D4); color:var(--lps-ink,#3A2E26); }
.lps-titlebar__tools .lps-coll__filters-btn[aria-expanded="true"],
.lps-titlebar__tools .lps-srch__filters-btn[aria-expanded="true"]{ background:var(--terra,#B45734); border-color:var(--terra,#B45734); color:#fff; }

/* Rail selects share the 34px control look (fSelect + native) */
.lps-coll__rail .fs-label-wrap{ border-color:var(--lps-line,#E8E0D4); }

@media (max-width:760px){
	.lps-titlebar{ gap:10px; margin:2px 0 10px; }
	.lps-titlebar__h1{ font-size:26px; }
	.lps-titlebar__tools{ margin-left:0; width:100%; justify-content:space-between; }
}

/* ============================================================
   Astra button leak, 5th instance (2026-08-21). The hamburger, the
   search icon and the Finds pill are <button>s, so Astra's global
   button styles (padding, white fill, shadow, min-height, font-size)
   paint through any property the reset didn't pin — the "white pill
   behind the hamburger" at 360px. Pin every property, at .lps-header
   specificity, across every state. Mockup tokens: icon buttons bare,
   Finds pill 34px.
   ============================================================ */
.lps-header .lps-header__toggle,
.lps-header .lps-header__search-toggle,
.lps-header .lps-header__toggle:hover,
.lps-header .lps-header__toggle:focus,
.lps-header .lps-header__toggle:active,
.lps-header .lps-header__search-toggle:hover,
.lps-header .lps-header__search-toggle:focus,
.lps-header .lps-header__search-toggle:active{
	-webkit-appearance: none; appearance: none;
	margin: 0; min-height: 0; min-width: 0;
	background: transparent; border: 0; border-radius: 0; box-shadow: none;
	box-sizing: border-box; text-shadow: none;
}
.lps-header .lps-header__toggle{ width: 40px; height: 40px; padding: 0; line-height: 0; }
.lps-header .lps-header__search-toggle{ width: 32px; height: 32px; padding: 0; line-height: 0; display: none; align-items: center; justify-content: center; }
.lps-header .lps-header__toggle:focus-visible,
.lps-header .lps-header__search-toggle:focus-visible{ outline: 2px solid var(--terra, #B45734); outline-offset: 2px; border-radius: 6px; }
@media (max-width: 768px){
	.lps-header .lps-header__search-toggle{ display: inline-flex; }
}

.lps-header .lps-finds-pill,
.lps-header .lps-finds-pill:hover,
.lps-header .lps-finds-pill:focus,
.lps-header .lps-finds-pill:active{
	-webkit-appearance: none; appearance: none;
	box-sizing: border-box; margin: 0; min-height: 0; height: 34px;
	padding: 0 12px 0 10px; gap: 6px;
	font-family: inherit; font-weight: 600; font-size: 14px; line-height: 1;
	background: #fff; border: 1.5px solid var(--terra, #B45734); border-radius: 999px;
	box-shadow: none; text-shadow: none; color: var(--terra-dk, #9E4D2E);
}
.lps-header .lps-finds-pill:hover{ background: var(--paper, #FAF6EE); }
.lps-header .lps-finds-pill:focus-visible{ outline: 2px solid var(--terra, #B45734); outline-offset: 2px; }
.lps-header .lps-finds-pill svg{ width: 16px; height: 16px; }
.lps-header .lps-finds-pill .ct{
	display: grid; place-items: center; min-width: 18px; height: 18px;
	padding: 0 5px; font-size: 11px; line-height: 1;
}
/* ≤480px: Option A (Joe, 2026-08-21, side-by-side) — 28px pill, 12px
   label, keeps the word "Finds" in front of first-time visitors. Icon-only
   (Option B) rejected for vocabulary reasons. */
@media (max-width: 480px){
	.lps-header .lps-finds-pill{ height: 28px; padding: 0 9px 0 7px; font-size: 12px; gap: 4px; }
	.lps-header .lps-finds-pill svg{ width: 14px; height: 14px; }
	.lps-header .lps-finds-pill .ct{ min-width: 16px; height: 16px; padding: 0 4px; font-size: 11px; }
}

/* ============================================================
   Designs | All products toggle (2026-08-22, mockup option B):
   the title-bar count is the control. Anchor → full-property
   Astra reset (standing rule). Active side = plain ink text.
   ============================================================ */
.lps-titlebar__count .lps-titlebar__view{ font:inherit; font-size:inherit; line-height:inherit; color:var(--lps-ink-2,#6B625A); background:none; border:0; padding:0; margin:0; box-shadow:none; text-decoration:none; white-space:nowrap; }
.lps-titlebar__count a.lps-titlebar__view{ color:var(--terra-dk,#9E4D2E); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; cursor:pointer; }
.lps-titlebar__count a.lps-titlebar__view:hover,
.lps-titlebar__count a.lps-titlebar__view:focus-visible{ color:var(--terra,#B45734); text-decoration-thickness:2px; background:none; box-shadow:none; }
.lps-titlebar__count .lps-titlebar__view.is-on{ color:var(--lps-ink,#3A2E26); font-weight:600; }
.lps-titlebar__count a.lps-titlebar__view.lps-busy{ color:var(--terra,#B45734); text-decoration-thickness:2px; }



/* ============================================================
   HOME 2.1 — step 1 (2026-08-22, v2 branch). Mockup
   laprima-home-2-1-mockup.html layout A; placement note
   2026-08-22_1845 D3–D7, D10–D11, D15.
   Root is .lps-hub (not .lps-home — the department archives still
   use .lps-home.lps-dept; the old home-only .lps-home__* rules above
   are now dead on the front page and get swept in a later cleanup).
   ============================================================ */

/* House tokens — every earlier use carries these exact fallbacks, so
   defining them once changes nothing and lets new rules drop the fallbacks. */
:root{
	--terra:#B45734; --terra-dk:#9E4D2E; --paper:#FAF6EE; --cream:#F3E9D9; /* 11-06: terra was #BC5E3A (4.37:1 on white) -> #B45734 (4.82:1) for WCAG AA */
	--faint:#7A7067; /* 11-06: was the #8C8177 fallback (3.8:1) */
	--violet:#7C5CD0; --violet-soft:#EFE9FB;
	--amazon:#FF9900; --walmart:#0071CE; --target:#CC0000;
	--lps-gut:20px;
}

/* Astra clamp release — same pattern as search / brand / department. */
body.home #content .ast-container{ max-width:100%; }

.lps-hub{ box-sizing:border-box; width:100%; margin:0; padding:0 0 40px; color:var(--lps-ink); font-size:14px; line-height:1.45; }
.lps-hub *, .lps-hub *::before, .lps-hub *::after{ box-sizing:border-box; }

/* --- Section chrome (.sec / .sec__head) --- */
.lps-hub__sec{ padding:34px var(--lps-gut) 6px; scroll-margin-top:calc(var(--lps-header-h,56px) + 12px); }
.lps-hub__sec--brands{ padding-top:16px; }
.lps-hub__head{ display:flex; align-items:baseline; gap:14px; margin:0 0 14px; }
.lps-hub__sec--brands .lps-hub__head{ margin-bottom:10px; }
.lps-hub__h2{ font-family:var(--lps-font-display); font-weight:500; font-size:26px; line-height:1.1; letter-spacing:-.01em; margin:0; color:var(--lps-ink); }
.lps-hub__sub{ color:var(--lps-ink-2); font-size:13.5px; }
.lps-hub__swipe{ display:none; font-size:11.5px; color:var(--lps-ink-2); letter-spacing:.04em; }
/* "All brands →" — anchor → full-property Astra reset (standing rule). */
.lps-hub__all, .lps-hub__all:hover, .lps-hub__all:focus, .lps-hub__all:active, .lps-hub__all:visited{
	margin:0 0 0 auto; padding:0; border:0; background:none; box-shadow:none; text-shadow:none;
	font:inherit; font-size:13.5px; font-weight:500; color:var(--terra-dk); text-decoration:none; white-space:nowrap;
}
.lps-hub__all:hover, .lps-hub__all:focus-visible{ text-decoration:underline; text-underline-offset:3px; }

/* --- Hero: full-width paper banner, centered (layout A) --- */
.lps-hub__hero{
	background:var(--paper); padding:26px var(--lps-gut) 24px; margin:0;
	/* Bleed the paper + hairline to the viewport edges without touching
	   layout or horizontal scroll: spread shadow, clipped. */
	box-shadow:0 0 0 100vmax var(--paper), 0 1px 0 100vmax var(--lps-line);
	clip-path:inset(0 -100vmax);
}
.lps-hub__hero-text{ max-width:820px; margin:0 auto; text-align:center; }
.lps-hub__eyebrow{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--terra-dk); font-weight:600; margin:0 0 8px; }
.lps-hub__h1{ font-family:var(--lps-font-display); font-weight:500; font-size:clamp(34px,3.4vw,50px); line-height:1.04; margin:0 0 10px; letter-spacing:-.015em; color:var(--terra-dk); }
.lps-hub__lead{ font-size:16.5px; color:var(--lps-ink-2); margin:0 auto 16px; max-width:34em; }
.lps-hub__cta{ display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; }
/* Primary button — anchor → full-property Astra reset. */
.lps-hub__btn, .lps-hub__btn:hover, .lps-hub__btn:focus, .lps-hub__btn:active, .lps-hub__btn:visited{
	display:inline-flex; align-items:center; justify-content:center; height:42px; margin:0; padding:0 20px;
	border:0; border-radius:10px; background:var(--terra); color:#fff; box-shadow:none; text-shadow:none;
	font:inherit; font-weight:600; font-size:14.5px; line-height:1; text-decoration:none; cursor:pointer;
}
.lps-hub__btn:hover, .lps-hub__btn:focus-visible{ background:var(--terra-dk); color:#fff; }
.lps-hub__btn:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }

/* --- Pills (D15: House line is the only lane pill) --- */
.lps-pill{ display:inline-flex; align-items:center; height:20px; padding:0 8px; border:1px solid var(--lps-line); border-radius:999px; font-size:11px; line-height:1; color:var(--lps-ink-2); background:var(--lps-bg,#fff); white-space:nowrap; }
.lps-pill--house{ border-color:var(--terra); color:var(--terra-dk); }

/* --- The brands: 4+3 below 1700px, 7-across above (D6) --- */
/* Centered, fixed-width cards (Joe, 2026-08-22) — the Featured finds pattern: as
   many as fit per row, row centered, so 2 brands or 12 both read as a composition.
   Retires D6's 4+3 / 7-across breakpoints (placement note). */
.lps-hub__brands{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,340px)); gap:14px; justify-content:center; }

/* --- Brand card (inc/lps-brand-card.php) — the whole card is the link.
       Anchor → full-property Astra reset. Fixed rows so every card aligns:
       name 2 lines · pill row · why 3 lines · thumbs · where · foot. --- */
.lps-brand-card, .lps-brand-card:hover, .lps-brand-card:focus, .lps-brand-card:active, .lps-brand-card:visited{
	display:flex; flex-direction:column; gap:8px; min-width:0; margin:0; padding:14px;
	border:1px solid var(--lps-line); border-radius:12px; background:var(--lps-bg,#fff);
	box-shadow:none; text-shadow:none; color:var(--lps-ink); font:inherit; font-size:14px; line-height:1.45; text-decoration:none;
	transition:border-color .15s;
}
.lps-brand-card:hover, .lps-brand-card:focus-visible{ border-color:var(--terra); }
.lps-brand-card:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
.lps-brand-card__name{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; height:2.2em; font-family:var(--lps-font-display); font-weight:500; font-size:20px; line-height:1.1; letter-spacing:-.01em; color:var(--terra-dk); }
.lps-brand-card__lane{ height:20px; display:flex; align-items:center; }
.lps-brand-card__why{ display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; height:4.2em; margin:0; font-size:13px; line-height:1.4; color:var(--lps-ink-2); }
.lps-brand-card__strip{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.lps-brand-card--wide .lps-brand-card__strip{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.lps-brand-card__th{ display:block; aspect-ratio:1/1; border-radius:7px; background:#fff; border:1px solid var(--lps-line); overflow:hidden; }
.lps-brand-card__th img{ display:block; width:100%; height:100%; object-fit:contain; padding:4px; }
/* Fewer thumbs than tiles: real thumbs only, same tile size, centered (Joe 10-13). */
.lps-brand-card__strip--few{ display:flex; justify-content:center; }
.lps-brand-card__strip--few .lps-brand-card__th{ flex:0 0 calc((100% - 12px) / 3); }
.lps-brand-card--wide .lps-brand-card__strip--few .lps-brand-card__th{ flex-basis:calc((100% - 24px) / 4); }
.lps-brand-card__where{ display:flex; align-items:center; gap:6px; min-height:18px; padding-top:2px; font-size:11.5px; color:var(--lps-ink-2); }
.lps-brand-card__where-lbl{ margin-right:2px; }
.lps-brand-card__where .lps-dot{ width:9px; height:9px; flex:none; border:1px solid rgba(44,39,34,.12); }
.lps-brand-card__foot{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; padding-top:2px; font-size:12.5px; color:var(--lps-ink-2); }
.lps-brand-card__foot b{ color:var(--terra-dk); font-weight:600; white-space:nowrap; }
.lps-brand-card__foot span{ white-space:nowrap; }

/* --- Featured finds: the 2.0b card, centered, fixed-width (D5) --- */
.lps-hub__finds{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,250px)); gap:14px; justify-content:center; }

/* --- Shop by department (renders only with 2+ live; D1) --- */
.lps-hub__depts{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.lps-hub__dept, .lps-hub__dept:hover, .lps-hub__dept:focus, .lps-hub__dept:active, .lps-hub__dept:visited{
	display:flex; flex-direction:column; gap:6px; margin:0; padding:14px; border:1px solid var(--lps-line); border-radius:12px;
	background:var(--lps-bg,#fff); color:var(--lps-ink); box-shadow:none; text-shadow:none; font:inherit; text-decoration:none;
}
.lps-hub__dept:hover, .lps-hub__dept:focus-visible{ border-color:var(--terra); }
.lps-hub__dept-name{ font-family:var(--lps-font-display); font-weight:500; font-size:20px; color:var(--terra-dk); }
.lps-hub__dept-meta{ font-size:13px; color:var(--lps-ink-2); }
.lps-hub__dept-go{ margin-top:auto; font-size:12.5px; font-weight:600; color:var(--terra-dk); }

/* --- Phase 4 slot wrappers (empty until hooked) --- */
.lps-hub__fitwrap{ padding:0 var(--lps-gut); }

/* --- Mobile (≤600px = the 360 frame) --- */
@media (max-width:600px){
	.lps-hub__hero{ padding:22px var(--lps-gut) 20px; }
	.lps-hub__h1{ font-size:34px; }
	.lps-hub__lead{ font-size:15px; }
	.lps-hub__sec{ padding:26px var(--lps-gut) 0; }
	.lps-hub__head{ flex-wrap:wrap; gap:6px 12px; }
	.lps-hub__h2{ font-size:22px; }
	.lps-hub__sub{ flex-basis:100%; order:3; }
	.lps-hub__swipe{ display:inline; margin-left:auto; }
	.lps-hub__swipe + .lps-hub__all{ margin-left:12px; }
	/* Brands become a swipe row: 78% peek, snap, no scrollbar. */
	.lps-hub__brands{ display:flex; justify-content:flex-start; overflow-x:auto; scroll-snap-type:x mandatory; gap:10px; padding:2px var(--lps-gut) 10px; margin:0 calc(-1 * var(--lps-gut)); scrollbar-width:none; -webkit-overflow-scrolling:touch; }
	.lps-hub__brands::-webkit-scrollbar{ display:none; }
	.lps-hub__brands .lps-brand-card{ flex:0 0 78%; scroll-snap-align:start; }
	.lps-hub__finds{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px; }
}
@media (prefers-reduced-motion:reduce){ .lps-brand-card{ transition:none; } }


/* ============================================================
   HOME 2.1 — step 2 (2026-08-22, v2): What we curate tiles, trust
   band, newsletter slot, where-to-buy legend. Mockup D9, D10, D14.
   ============================================================ */

/* --- What we curate: 4-across, wraps, never a horizontal scroll on desktop (D9) --- */
/* Centered, fixed-width tiles (Joe, 2026-08-22) — same rule as the brands row. */
.lps-hub__types{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,340px)); gap:14px; justify-content:center; }
/* Tile — anchor → full-property Astra reset. */
.lps-hub__type, .lps-hub__type:hover, .lps-hub__type:focus, .lps-hub__type:active, .lps-hub__type:visited{
	display:grid; grid-template-columns:64px minmax(0,1fr); gap:12px; align-items:center; min-width:0; margin:0; padding:10px;
	border:1px solid var(--lps-line); border-radius:12px; background:var(--lps-bg,#fff); color:var(--lps-ink);
	box-shadow:none; text-shadow:none; font:inherit; font-size:14px; line-height:1.45; text-decoration:none; transition:border-color .15s;
}
.lps-hub__type:hover, .lps-hub__type:focus-visible{ border-color:var(--terra); }
.lps-hub__type:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
.lps-hub__type-th{ display:grid; place-items:center; width:64px; height:64px; border-radius:10px; background:#fff; border:1px solid var(--lps-line); overflow:hidden; }
.lps-hub__type-th img{ display:block; width:100%; height:100%; object-fit:contain; padding:3px; }
.lps-hub__type-mono{ font-family:var(--lps-font-display); font-weight:600; font-size:18px; color:var(--terra-dk); background:var(--cream); width:100%; height:100%; display:grid; place-items:center; }
.lps-hub__type-txt{ display:block; min-width:0; }
.lps-hub__type-n{ display:block; font-family:var(--lps-font-display); font-weight:500; font-size:17px; line-height:1.15; }
.lps-hub__type-c{ display:block; margin-top:3px; font-size:12px; color:var(--lps-ink-2); }

/* --- Trust band (dark, rounded, centered statements) --- */
.lps-hub__band{ display:flex; justify-content:center; flex-wrap:wrap; gap:clamp(24px,5vw,64px); margin:40px var(--lps-gut) 0; padding:26px 20px; border-radius:18px; background:#2B2623; color:#fff; text-align:center; }
.lps-hub__band-it b{ display:block; font-family:var(--lps-font-display); font-weight:500; font-size:20px; margin-bottom:2px; color:#fff; }
.lps-hub__band-it span{ font-size:12.5px; color:#D9D0C4; }
.lps-hub__band-it a, .lps-hub__band-it a:visited{ color:#F3D9CB; text-decoration:none; border-bottom:1px solid rgba(243,217,203,.4); }
.lps-hub__band-it a:hover, .lps-hub__band-it a:focus-visible{ color:#fff; border-bottom-color:#fff; }

/* --- Newsletter (Phase D; renders only when a form is hooked) --- */
.lps-hub__news{ margin:18px var(--lps-gut) 0; padding:26px 20px; border:1px solid var(--lps-line); border-radius:18px; background:var(--cream); text-align:center; }
.lps-hub__news-h{ font-family:var(--lps-font-display); font-weight:500; font-size:22px; margin:0 0 4px; color:var(--lps-ink); }
.lps-hub__news-p{ margin:0 0 14px; font-size:13.5px; color:var(--lps-ink-2); }
.lps-hub__news-f{ max-width:460px; margin:0 auto; }

/* --- Where-to-buy legend: pills, centered, above the footer (D10) --- */
.lps-hub__legend{ display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; margin:22px var(--lps-gut) 0; padding-top:16px; border-top:1px solid var(--lps-line); font-size:12px; color:var(--lps-ink-2); }
.lps-hub__legend-lbl{ font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; margin-right:4px; }
.lps-hub__lg{ display:inline-flex; align-items:center; gap:6px; height:24px; padding:0 10px; border:1px solid var(--lps-line); border-radius:999px; background:var(--lps-bg,#fff); white-space:nowrap; }
.lps-hub__lg .lps-dot{ width:9px; height:9px; border:1px solid rgba(44,39,34,.12); }

/* --- Product-type term archives (/type/…): same clamp release as the SOT archives --- */
body.tax-lps_product_type #content .ast-container{ max-width:100%; }

/* --- Mobile --- */
@media (max-width:600px){
	.lps-hub__types{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px; }
	.lps-hub__types .lps-hub__type{ grid-template-columns:48px minmax(0,1fr); gap:10px; padding:8px; }
	.lps-hub__type-th{ width:48px; height:48px; }
	.lps-hub__type-n{ font-size:15px; }
	.lps-hub__band{ display:grid; grid-template-columns:1fr 1fr; gap:14px 22px; margin:28px var(--lps-gut) 0; padding:20px 16px; }
	.lps-hub__band-it b{ font-size:17px; }
	.lps-hub__news{ padding:20px 16px; }
}
@media (prefers-reduced-motion:reduce){ .lps-hub__type{ transition:none; } }



/* ============================================================
   BRANDS 2.1 (2026-08-22, v2). Mockup laprima-brands-2-1-mockup.html;
   placement note 2026-08-22_1845 D2, D4, D7, D15–D19.
   The wide card is an <article>; "whole card is the link" is the
   stretched View-brand anchor (::after over the card). Chips, social
   icons and Share sit above it (z-index) so they stay clickable.
   ============================================================ */

body.post-type-archive-brand #content .ast-container{ max-width:100%; }

.lps-brands{ box-sizing:border-box; width:100%; margin:0; padding:0 var(--lps-gut) 40px; color:var(--lps-ink); font-size:14px; line-height:1.45; }
.lps-brands *, .lps-brands *::before, .lps-brands *::after{ box-sizing:border-box; }

/* --- Head: aligned to the 1600 list (D4) --- */
.lps-brands__head{ max-width:1600px; margin:0 auto; padding:30px 0 18px; }
.lps-brands__headin{ display:flex; align-items:flex-end; gap:24px; flex-wrap:wrap; }
.lps-brands__h1{ font-family:var(--lps-font-display); font-weight:500; font-size:clamp(32px,3vw,46px); line-height:1.04; letter-spacing:-.015em; margin:0 0 8px; color:var(--lps-ink); }
.lps-brands__sub{ margin:0; font-size:15.5px; color:var(--lps-ink-2); max-width:64ch; }
.lps-brands__aside, .lps-brands__aside:hover, .lps-brands__aside:focus, .lps-brands__aside:active, .lps-brands__aside:visited{
	margin:0 0 0 auto; padding:0 0 4px; border:0; background:none; box-shadow:none; text-shadow:none;
	font:inherit; font-size:13.5px; font-weight:500; color:var(--terra-dk); text-decoration:none; white-space:nowrap;
}
.lps-brands__aside:hover, .lps-brands__aside:focus-visible{ text-decoration:underline; text-underline-offset:3px; }

/* --- Department scope bar (renders at 2+ visible departments) --- */
.lps-brands__scope{ display:flex; gap:6px; flex-wrap:wrap; margin-top:14px; }
.lps-brands__scopebtn, .lps-brands__scopebtn:hover, .lps-brands__scopebtn:focus, .lps-brands__scopebtn:active, .lps-brands__scopebtn:visited{
	display:inline-flex; align-items:center; gap:6px; height:28px; margin:0; padding:0 12px; border:1px solid var(--lps-line); border-radius:999px;
	background:var(--lps-bg,#fff); color:var(--lps-ink); box-shadow:none; text-shadow:none; font:inherit; font-size:12.5px; font-weight:600; text-decoration:none; white-space:nowrap;
}
.lps-brands__scopebtn:hover, .lps-brands__scopebtn:focus-visible{ border-color:var(--terra); color:var(--terra-dk); }
.lps-brands__scopebtn.is-on{ background:var(--terra); border-color:var(--terra); color:#fff; }
.lps-brands__pv{ font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; opacity:.75; }

/* --- The list: capped 1600, centered --- */
.lps-brands__list{ display:grid; gap:14px; max-width:1600px; margin:0 auto; }
.lps-brands__empty{ max-width:1600px; margin:0 auto; color:var(--lps-ink-2); }

/* --- Wide card --- */
/* Doubled selector: the compact card's :hover/:focus rule (0,2,0) re-asserts
   flex/padding on hover; this must win at the same weight, later in source. */
.lps-brand-card.lps-brand-card--wide, .lps-brand-card.lps-brand-card--wide:hover, .lps-brand-card.lps-brand-card--wide:focus, .lps-brand-card.lps-brand-card--wide:active, .lps-brand-card.lps-brand-card--wide:visited{
	position:relative; display:grid; grid-template-columns:minmax(240px,300px) minmax(0,1fr) minmax(300px,440px); gap:24px; align-items:stretch;
	padding:18px 20px; border:1px solid var(--lps-line); border-radius:14px; background:var(--lps-bg,#fff); min-width:0; transition:border-color .15s;
}
.lps-brand-card.lps-brand-card--wide:hover, .lps-brand-card.lps-brand-card--wide:focus-within{ border-color:var(--terra); }
/* The stretched link: the View-brand anchor covers the whole card. */
.lps-brand-card__view, .lps-brand-card__view:hover, .lps-brand-card__view:focus, .lps-brand-card__view:active, .lps-brand-card__view:visited{
	position:static; display:inline-flex; align-items:center; justify-content:center; height:38px; margin:0; padding:0 16px;
	border:0; border-radius:10px; background:var(--terra); color:#fff; box-shadow:none; text-shadow:none;
	font:inherit; font-weight:600; font-size:14px; line-height:1; text-decoration:none; white-space:nowrap;
}
.lps-brand-card__view::after{ content:""; position:absolute; inset:0; border-radius:14px; z-index:1; }
.lps-brand-card__view:hover, .lps-brand-card__view:focus-visible{ background:var(--terra-dk); color:#fff; }
.lps-brand-card__view:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
/* Controls that must beat the stretched link. */
.lps-brand-card__lk, .lps-brand-card__so{ position:relative; z-index:2; }

/* Identity column */
.lps-brand-card__id{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; min-width:0; }
.lps-brand-card--wide .lps-brand-card__name{ display:block; height:auto; -webkit-line-clamp:unset; font-size:28px; line-height:1.05; letter-spacing:-.015em; }
.lps-brand-card--wide .lps-brand-card__lane{ height:auto; }
.lps-brand-card__links{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.lps-brand-card__lk, .lps-brand-card__lk:hover, .lps-brand-card__lk:focus, .lps-brand-card__lk:active, .lps-brand-card__lk:visited{
	display:inline-flex; align-items:center; gap:4px; height:24px; margin:0; padding:0 9px; border:1px solid var(--lps-line); border-radius:999px;
	background:var(--lps-bg,#fff); color:var(--lps-ink); box-shadow:none; text-shadow:none; font:inherit; font-size:11.5px; line-height:1; text-decoration:none; white-space:nowrap;
}
.lps-brand-card__lk:hover, .lps-brand-card__lk:focus-visible{ border-color:var(--terra); color:var(--terra-dk); }
.lps-brand-card__ext{ font-size:10px; color:var(--lps-ink-2); }
.lps-brand-card__social{ display:flex; align-items:center; gap:8px; margin-top:6px; }
.lps-brand-card__so, .lps-brand-card__so:hover, .lps-brand-card__so:focus, .lps-brand-card__so:active, .lps-brand-card__so:visited{
	display:grid; place-items:center; width:32px; height:32px; margin:0; padding:0; border:1px solid var(--lps-line); border-radius:50%;
	background:var(--lps-bg,#fff); color:var(--lps-ink-2); box-shadow:none; text-decoration:none;
}
.lps-brand-card__so:hover, .lps-brand-card__so:focus-visible{ border-color:var(--terra); color:var(--terra-dk); }
.lps-brand-card__so svg{ width:16px; height:16px; }
/* Share — the brand page's .lps-share popover (single-brand.php, 2026-07-14),
   fitted to the card: pill sized to the mockup, wrap above the stretched link. */
.lps-brand-card__sharewrap.lps-share{ position:relative; z-index:3; margin:8px 0 0; }
.lps-brand-card__sharewrap.lps-share.is-open{ z-index:50; } /* open popover over sibling cards (js/lps-share.js adds is-open) */
.lps-brand-card__sharewrap .lps-share__btn,
.lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-brand-card__sharewrap .lps-share__btn:focus{
	height:30px; padding:0 12px; gap:7px; border:1.5px solid #E0BBA8; border-radius:999px; background:transparent;
	color:var(--terra-dk); font-size:12.5px; font-weight:600; line-height:1; box-shadow:none; text-shadow:none;
}
.lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-brand-card__sharewrap .lps-share__btn:focus-visible{ border-color:var(--terra); }
.lps-brand-card__sharewrap .lps-share__btn:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
.lps-brand-card__sharewrap .lps-share__icon{ width:13px; height:13px; }

/* Story column: block centered, text left (D18) */
.lps-brand-card__story{ align-self:center; justify-self:center; width:100%; max-width:58ch; min-width:0; }
.lps-brand-card__why{ margin:0 0 10px; font-size:14px; line-height:1.5; color:var(--lps-ink); }
.lps-brand-card__known{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:12px; color:var(--lps-ink-2); }
.lps-brand-card__known-lbl{ white-space:nowrap; }
.lps-brand-card__k{ display:inline-flex; align-items:center; height:22px; padding:0 9px; border-radius:999px; background:var(--cream); color:var(--terra-dk); font-size:11.5px; font-weight:600; white-space:nowrap; }

/* Goods column */
.lps-brand-card__goods{ display:flex; flex-direction:column; gap:10px; min-width:0; }
.lps-brand-card--wide .lps-brand-card__strip{ grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.lps-brand-card--wide .lps-brand-card__th{ border-radius:8px; }
.lps-brand-card__foot--wide{ justify-content:flex-start; gap:12px; margin-top:auto; padding-top:0; }
.lps-brand-card__cnt{ font-size:12.5px; color:var(--lps-ink-2); white-space:nowrap; }
.lps-brand-card__foot--wide .lps-brand-card__where{ margin-left:auto; padding-top:0; }

/* --- Vendor line (D19) --- */
.lps-brands__vendor{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; max-width:1600px; margin:22px auto 0; padding:16px 20px; border:1px dashed var(--lps-line); border-radius:14px; background:var(--paper); }
.lps-brands__vendor b{ font-family:var(--lps-font-display); font-weight:500; font-size:18px; color:var(--lps-ink); }
.lps-brands__vendor span{ font-size:13px; color:var(--lps-ink-2); }
.lps-brands__vendor a, .lps-brands__vendor a:hover, .lps-brands__vendor a:focus, .lps-brands__vendor a:active, .lps-brands__vendor a:visited{
	margin:0 0 0 auto; padding:0; border:0; background:none; box-shadow:none; text-shadow:none; font:inherit; font-size:13.5px; font-weight:500; color:var(--terra-dk); text-decoration:none; white-space:nowrap;
}
.lps-brands__vendor a:hover, .lps-brands__vendor a:focus-visible{ text-decoration:underline; text-underline-offset:3px; }

/* --- ≤1100px: identity + story, goods below --- */
@media (max-width:1100px){
	.lps-brand-card.lps-brand-card--wide, .lps-brand-card.lps-brand-card--wide:hover, .lps-brand-card.lps-brand-card--wide:focus, .lps-brand-card.lps-brand-card--wide:active, .lps-brand-card.lps-brand-card--wide:visited{ grid-template-columns:minmax(200px,240px) minmax(0,1fr); }
	.lps-brand-card__goods{ grid-column:1 / -1; }
	.lps-brand-card__story{ justify-self:start; align-self:start; }
	.lps-brand-card--wide .lps-brand-card__strip{ max-width:520px; }
}
/* --- ≤600px: one column --- */
@media (max-width:600px){
	.lps-brands__head{ padding:22px 0 12px; }
	.lps-brands__aside{ margin-left:0; }
	.lps-brand-card.lps-brand-card--wide, .lps-brand-card.lps-brand-card--wide:hover, .lps-brand-card.lps-brand-card--wide:focus, .lps-brand-card.lps-brand-card--wide:active, .lps-brand-card.lps-brand-card--wide:visited{ grid-template-columns:1fr; gap:12px; padding:14px; }
	.lps-brand-card--wide .lps-brand-card__name{ font-size:24px; }
	.lps-brand-card__why{ font-size:13.5px; }
	.lps-brand-card--wide .lps-brand-card__strip{ gap:6px; max-width:none; }
	.lps-brand-card__foot--wide{ gap:10px; }
	.lps-brand-card__view{ flex:1 1 100%; }
	.lps-brand-card__foot--wide .lps-brand-card__where{ margin-left:0; }
	.lps-brands__vendor a{ margin-left:0; }
}


/* ============================================================
   BRAND PAGE 2.1 (2026-08-23, v2). Mockup laprima-brand-page-2-1-mockup.html
   (r5, approved); placement note 2026-08-22_2245 D36–D44.
   The <article class="lps-brand lps-brand--2-1"> is the @container ("page");
   .lps-brand__grid is ONE grid, DOM in priority order, column spans +
   auto-placement. An absent section = a modifier on the article + one rule.
   Breakpoints (Joe's words): wide ≥1440 → 3 columns · laptop <1440 → 2 ·
   ≤900 stack · ≤600 mobile (the 360 frame). Shell cap 1760, gutters 24/16.
   REUSES (restyled under the .lps-brand--2-1 scope, nothing ported):
   .lps-hero__gallery/__stage/__rail/__thumb (lps-brand-media.js hooks),
   .lps-hero__crumb/__eyebrow/__wordmark/__tagline/__meta, .lps-why, .lps-maker,
   .lps-tcard, .lps-mcard, .lps-faq__item/__answer, .lps-hub__head/__h2/__sub/
   __all/__btn (section chrome), .lps-brand-card__lk/__so/__ext (chips, social),
   .lps-share via lps_share_popover() (lps-share.js). The old .lps-hero--split
   rules are dead on this page (no .lps-hero in the 2.1 markup) — cleanup later.
   ============================================================ */
.lps-brand--2-1{
	max-width:none; width:100%; flex:1 1 100%; margin:0; padding:0 0 40px; background:transparent; border-radius:0;
	container-type:inline-size; container-name:page; /* flex item in .ast-container: width or it collapses (the .lps-product lesson) */
	--lps-bp-gut:24px; --lps-bp-colgap:clamp(24px,3cqw,56px);
	color:var(--lps-ink); font-size:14px; line-height:1.45;
}
.lps-brand--2-1 *, .lps-brand--2-1 *::before, .lps-brand--2-1 *::after{ box-sizing:border-box; }

/* --- The grid (laptop = the base: 2 columns) --- */
.lps-brand__grid{
	display:grid; max-width:1760px; margin:0 auto; padding:22px var(--lps-bp-gut) 0;
	grid-template-columns:minmax(0,1fr) minmax(300px,460px);
	grid-template-rows:auto auto 1fr; /* pre · identity · Why(flex) — spanning items give their slack to row 3, not row 2 */
	column-gap:var(--lps-bp-colgap); row-gap:0; align-items:start;
}
.lps-brand--2-1 .lps-brand__pre, .lps-brand--2-1 .lps-brand__ed, .lps-brand--2-1 .lps-explore, .lps-brand--2-1 .lps-picks,
.lps-brand--2-1 .lps-media, .lps-brand--2-1 .lps-faq, .lps-brand--2-1 .lps-brand__referral{ grid-column:1 / -1; min-width:0; }
.lps-brand--2-1 .lps-brand__id{ grid-column:1; grid-row:2; min-width:0; }
.lps-brand--2-1 .lps-brand__gal{ grid-column:2; min-width:0; }
.lps-brand--no-gallery .lps-brand__id{ grid-column:1 / -1; }
/* Sections below the hero: margin rhythm; drop the old white-box chrome. */
.lps-brand--2-1 .lps-explore, .lps-brand--2-1 .lps-picks, .lps-brand--2-1 .lps-media, .lps-brand--2-1 .lps-faq{
	margin:34px 0 0; padding:0; background:transparent; border:0; border-radius:0;
}
.lps-brand--2-1 #media, .lps-brand--2-1 #faq{ scroll-margin-top:calc(var(--lps-header-h,56px) + 12px); }
.lps-brand--2-1 .lps-brand__referral{ margin:34px 0 0; text-align:center; } /* centered (Joe, 2026-08-23) */

/* --- Section chrome (shared .lps-hub__* chrome, sized to the page) --- */
.lps-brand--2-1 .lps-hub__head{ margin:0 0 14px; flex-wrap:wrap; gap:4px 14px; } /* narrow column: title, then sub + link */
.lps-brand--2-1 .lps-hub__h2{ font-size:24px; }

/* --- pre: crumb + eyebrow --- */
.lps-brand--2-1 .lps-brand__pre{ display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 18px; margin:0 0 10px; font-size:12.5px; color:var(--lps-ink-2); }
.lps-brand--2-1 .lps-hero__crumb{ margin:0; font-size:12.5px; color:var(--lps-ink-2); }
.lps-brand--2-1 .lps-hero__crumb a, .lps-brand--2-1 .lps-hero__crumb a:visited{ color:var(--lps-ink-2); text-decoration:none; }
.lps-brand--2-1 .lps-hero__crumb a:hover, .lps-brand--2-1 .lps-hero__crumb a:focus-visible{ color:var(--terra-dk); text-decoration:none; }
.lps-brand--2-1 .lps-hero__eyebrow{ margin:0; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--terra-dk); font-weight:600; }

/* --- identity --- */
.lps-brand--2-1 .lps-hero__wordmark{ font-family:var(--lps-font-display); font-weight:600; font-size:clamp(38px,3.6cqw,56px); line-height:.98; letter-spacing:-.015em; color:var(--terra-dk); margin:0 0 10px; overflow-wrap:break-word; }
.lps-brand--2-1 .lps-hero__logo-wrap{ margin:0 0 10px; }
.lps-brand--2-1 .lps-hero__tagline{ font-family:var(--lps-font-display); font-weight:400; font-size:clamp(17px,1.25cqw,20px); line-height:1.35; margin:0 0 18px; max-width:44ch; color:var(--lps-ink); }
.lps-brand--2-1 .lps-brand__browse{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:0 0 14px; }
.lps-brand--2-1 .lps-hub__btn{ white-space:nowrap; }
.lps-brand--2-1 .lps-brand__count{ font-size:12.5px; color:var(--lps-ink-2); }
.lps-brand--2-1 .lps-hero__meta{ font-size:12.5px; color:var(--lps-ink-2); margin:0 0 14px; }
.lps-brand--2-1 .lps-brand__status{ margin:0 0 14px; }
.lps-brand--2-1 .lps-brand__links{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:0 0 6px; }
/* Chips + social circles: the Brands-card controls at the page's 26px size (D44). */
.lps-brand--2-1 .lps-brand__links .lps-brand-card__lk{ height:26px; padding:0 11px; gap:5px; font-size:12.5px; }
.lps-brand--2-1 .lps-brand__links .lps-brand-card__ext{ font-size:11px; }
.lps-brand--2-1 .lps-brand__links .lps-brand-card__so{ width:26px; height:26px; }
.lps-brand--2-1 .lps-brand__links .lps-brand-card__so svg{ width:13px; height:13px; }
/* Share: the popover wrap, pill-sized to the chips (beats the card-scoped 30px). */
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap.lps-share{ margin:0; }
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap .lps-share__btn,
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap .lps-share__btn:focus{
	height:26px; padding:0 11px; gap:6px; border:1px solid var(--lps-line); background:var(--lps-bg,#fff); font-size:12.5px;
}
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-brand--2-1 .lps-brand__links .lps-brand-card__sharewrap .lps-share__btn:focus-visible{ border-color:var(--terra); }

/* --- gallery: square stage + 60px rail (lps-brand-media.js swaps the stage) --- */
.lps-brand--2-1 .lps-hero__stage, .lps-brand--2-1 .lps-hero__stage:hover, .lps-brand--2-1 .lps-hero__stage:focus{ aspect-ratio:1 / 1; border:1px solid var(--lps-line); border-radius:14px; }
.lps-brand--2-1 .lps-hero__rail{ gap:8px; margin-top:10px; padding-bottom:2px; }
.lps-brand--2-1 .lps-hero__thumb, .lps-brand--2-1 .lps-hero__thumb:hover, .lps-brand--2-1 .lps-hero__thumb:focus{ width:60px; height:60px; border:1px solid var(--lps-line); border-radius:10px; opacity:1; }
.lps-brand--2-1 .lps-hero__thumb.is-active, .lps-brand--2-1 .lps-hero__thumb.is-active:hover, .lps-brand--2-1 .lps-hero__thumb.is-active:focus{ border-color:var(--terra); box-shadow:0 0 0 1px var(--terra) inset; }

/* --- editorial: Why (paper, column 1) + From {brand} (D40 amended by D53) ---
   D53 (Joe, 2026-08-23): Why sits UNDER the identity block in column 1 — the
   opinion right beneath the name. It is a direct child of the page grid; the
   gallery (and From, at wide) span TWO rows so Why slots in below the identity
   without stretching anything. Laptop: Why beside the gallery, From full row. */
.lps-brand--2-1 .lps-brand__gal{ grid-row:2 / span 2; } /* explicit: auto-placement never backs up */
.lps-brand--2-1 .lps-brand__why{ grid-column:1; grid-row:3; min-width:0; margin:22px 0 0; }
.lps-brand--no-gallery .lps-brand__why{ grid-column:1 / -1; }
.lps-brand--2-1 .lps-brand__ed{ margin-top:26px; }
.lps-brand--2-1 .lps-why{ background:var(--paper); border:1px solid var(--lps-line); border-radius:16px; padding:20px 22px 16px; }
.lps-brand--2-1 .lps-why__eyebrow{ font-size:11px; letter-spacing:.12em; color:var(--terra-dk); margin:0 0 10px; }
.lps-brand--2-1 .lps-why__body{ font-size:16.5px; line-height:1.5; }
.lps-brand--2-1 .lps-why__body p{ margin:0 0 8px; }
.lps-brand--2-1 .lps-why__sig{ font-size:12.5px; color:var(--lps-ink-2); margin:6px 0 0; }
/* Sig → How We Curate (11-10): reads as the same line, underline says it's a door. */
.lps-why__sig a{ color:inherit; text-decoration:underline; text-decoration-color:rgba(44,39,34,.35); text-underline-offset:2px; }
.lps-why__sig a:hover{ color:var(--terra,#B45734); text-decoration-color:currentColor; }
.lps-brand--2-1 .lps-maker{ margin:0; padding:6px 0 0; border:0; min-width:0; }
.lps-brand--2-1 .lps-maker__eyebrow{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--terra-dk); font-weight:600; margin:0 0 8px; }
.lps-brand--2-1 .lps-maker__body{ font-size:14.5px; line-height:1.6; }
.lps-brand--2-1 .lps-maker__body p{ margin:0 0 8px; }
.lps-brand--2-1 .lps-maker__sig{ font-size:12.5px; color:var(--lps-ink-2); margin:6px 0 0; }
/* "Read more" fold for the_content — spacing on the details selector (the fold trap). */
details.lps-brand__more{ margin:12px 0 0; padding:0; border:1px solid var(--lps-line); border-radius:10px; background:var(--lps-bg,#fff); }
details.lps-brand__more summary{ cursor:pointer; padding:9px 12px; font-weight:600; font-size:13.5px; list-style:none; color:var(--lps-ink); }
details.lps-brand__more summary::-webkit-details-marker{ display:none; }
details.lps-brand__more summary::after{ content:"+"; float:right; color:var(--terra); }
details.lps-brand__more[open] summary::after{ content:"\2013"; }
.lps-brand__more-body{ padding:0 12px 10px; color:var(--lps-ink-2); font-size:13.5px; line-height:1.6; }
.lps-brand__more-body p{ margin:0 0 .8em; }
.lps-brand__more-body p:last-child{ margin-bottom:0; }

/* --- Explore: two-row column-flow track, scroll-snap sideways (D42) --- */
.lps-explore__arrows{ display:flex; gap:6px; margin-left:auto; }
.lps-explore__arrows[hidden]{ display:none; }
/* Arrow buttons — full-property Astra reset (standing rule). */
.lps-explore__arrow, .lps-explore__arrow:hover, .lps-explore__arrow:focus, .lps-explore__arrow:active{
	display:grid; place-items:center; width:30px; height:30px; margin:0; padding:0;
	border:1px solid var(--lps-line); border-radius:50%; background:var(--lps-bg,#fff); color:var(--terra-dk);
	box-shadow:none; text-shadow:none; font:inherit; font-size:18px; line-height:1; cursor:pointer;
}
.lps-explore__arrow:hover, .lps-explore__arrow:focus-visible{ border-color:var(--terra); }
.lps-explore__arrow:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
/* D70 (2026-08-24): Explore = Numerals. The count is the art; no media slot,
   no scroller -- the grid wraps and the D42 arrows simply never fire. The
   D69 photo cascade stays computed in the template, dormant. The .lps-tcard
   rules (here and the 2026-08-18 block above) are now dead -- cleanup pass. */
.lps-brand--2-1 .lps-explore__grid{
	display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:12px;
	padding:2px;
}
/* Numeral tile -- anchor -> full-property Astra reset (standing rule). */
.lps-ncard, .lps-ncard:hover, .lps-ncard:focus, .lps-ncard:active, .lps-ncard:visited{
	display:flex; flex-direction:column; min-width:0; margin:0; padding:14px 14px 13px;
	border:1px solid var(--lps-line); border-radius:12px; background:var(--lps-bg,#fff);
	box-shadow:none; text-shadow:none; color:var(--lps-ink); font:inherit; font-size:14px;
	line-height:1.45; text-decoration:none; transition:border-color .15s;
}
.lps-ncard:hover, .lps-ncard:focus-visible{ border-color:var(--terra); }
.lps-ncard:focus-visible{ outline:2px solid var(--terra); outline-offset:2px; }
/* 10-27 (Culver demo): name first, then "22 products" -- the 40px numeral on top read like a calendar. */
.lps-ncard__name{ font-family:var(--lps-font-display); font-weight:600; font-size:18px; line-height:1.2; color:var(--lps-ink); margin:0 0 4px; overflow-wrap:break-word; }
.lps-ncard__ct{ display:flex; align-items:baseline; gap:5px; margin:0 0 5px; font-size:13px; color:var(--lps-ink-2); }
.lps-ncard__n{ font-family:var(--lps-font-display); font-weight:600; font-size:18px; line-height:1; color:var(--terra); }
.lps-ncard--lic .lps-ncard__n{ color:var(--terra-dk); }
@media (min-width:900px){ .lps-ncard__name, .lps-ncard__n{ font-size:20px; } }
.lps-ncard__eb{ font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--lps-ink-2); }
.lps-ncard--lic .lps-ncard__eb{ color:var(--terra); }
@media (prefers-reduced-motion:reduce){ .lps-ncard{ transition:none; } }
/* 10-15: "Shop by type" row (plain groups first) + series one-line description. */
.lps-ncard__desc{ display:block; margin-top:6px; font-size:12.5px; line-height:1.35; color:var(--lps-ink-2); }
@container page (min-width:1440px){ .lps-brand--2-1 .lps-explore.lps-explore--types{ grid-column:1 / -1; } }

/* --- picks / the collection (D43): four 2.0b cards --- */
.lps-brand--2-1 .lps-picks .lps-brand__product-grid{ grid-template-columns:repeat(auto-fill,minmax(200px,260px)); gap:14px; }
.lps-brand--collection .lps-picks .lps-brand__product-grid{ justify-content:center; } /* centered in its span (D21) */

/* --- Videos & social: grid of 16:10 cards (mobile: a strip) --- */
.lps-brand--2-1 .lps-media__row{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; overflow:visible; padding:0; }
.lps-brand--2-1 .lps-mcard, .lps-brand--2-1 .lps-mcard:hover, .lps-brand--2-1 .lps-mcard:focus{ width:auto; max-width:340px; padding:0; gap:0; border:1px solid var(--lps-line); border-radius:14px; background:var(--lps-bg,#fff); overflow:hidden; transform:none; }
.lps-brand--2-1 .lps-mcard:hover, .lps-brand--2-1 .lps-mcard:focus-visible{ border-color:var(--terra); }
.lps-brand--2-1 .lps-mcard__thumb{ aspect-ratio:16 / 10; border-radius:0; background:var(--lps-ink,#2B2623); }
.lps-brand--2-1 .lps-mcard--link .lps-mcard__thumb{ background:var(--cream); }
.lps-brand--2-1 .lps-mcard__title{ padding:10px 12px 3px; font-size:13.5px; }
.lps-brand--2-1 .lps-mcard__src{ padding:0 12px 12px; font-size:12px; color:var(--lps-ink-2); }

/* --- Q&A: hairline rows, + / – --- */
.lps-brand--2-1 details.lps-faq__item{ margin:0; padding:0; border:0; border-top:1px solid var(--lps-line); }
.lps-brand--2-1 details.lps-faq__item:last-of-type{ border-bottom:1px solid var(--lps-line); }
.lps-brand--2-1 details.lps-faq__item summary{ cursor:pointer; padding:13px 0; font-weight:600; font-size:14.5px; list-style:none; display:flex; justify-content:space-between; gap:16px; color:var(--lps-ink); }
.lps-brand--2-1 details.lps-faq__item summary::-webkit-details-marker{ display:none; }
.lps-brand--2-1 details.lps-faq__item summary::after{ content:"+"; color:var(--terra); flex:none; }
.lps-brand--2-1 details.lps-faq__item[open] summary::after{ content:"\2013"; }
.lps-brand--2-1 .lps-faq__answer{ padding:0 0 14px; font-size:14px; line-height:1.6; color:var(--lps-ink-2); }
.lps-brand--2-1 .lps-faq__answer p{ margin:0 0 .7em; }
.lps-brand--2-1 .lps-faq__answer p:last-child{ margin-bottom:0; }

/* --- WIDE ≥1440: 3 columns; editorial joins the hero; explore | picks, media | faq share rows --- */
@container page (min-width:1440px){
	.lps-brand__grid{ grid-template-columns:minmax(0,1fr) minmax(300px,460px) minmax(340px,440px); }
	.lps-brand--2-1 .lps-brand__ed{ grid-column:3; grid-row:2 / span 2; margin-top:0; }
	.lps-brand--2-1 .lps-explore{ grid-column:1 / 3; }
	.lps-brand--2-1 .lps-picks{ grid-column:3; }
	.lps-brand--2-1 .lps-media{ grid-column:1 / 3; }
	.lps-brand--2-1 .lps-faq{ grid-column:3; }
	/* Absences — one rule each; they compose. */
	.lps-brand--no-explore .lps-picks{ grid-column:1 / -1; }
	.lps-brand--no-media .lps-faq{ grid-column:1 / -1; }
	.lps-brand--no-faq .lps-media{ grid-column:1 / -1; }
	.lps-brand--no-gallery .lps-brand__id, .lps-brand--no-gallery .lps-brand__why{ grid-column:1 / 3; }
	.lps-brand--no-from .lps-brand__id, .lps-brand--no-from .lps-brand__why{ grid-column:1 / 3; }
	.lps-brand--no-from .lps-brand__gal{ grid-column:3; }
	.lps-brand--no-gallery.lps-brand--no-from .lps-brand__id, .lps-brand--no-gallery.lps-brand--no-from .lps-brand__why{ grid-column:1 / -1; }
	.lps-brand--2-1 .lps-hero__wordmark{ font-size:clamp(44px,3.2cqw,60px); }
	.lps-brand--2-1 .lps-picks .lps-brand__product-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
	.lps-brand--no-explore .lps-picks .lps-brand__product-grid{ grid-template-columns:repeat(auto-fill,minmax(200px,260px)); }
	/* D70: numeral tiles wrap on their own -- the D56 track tuning is retired. */
}

/* --- TABLET ≤900: stack --- */
@container page (max-width:900px){
	.lps-brand__grid{ grid-template-columns:minmax(0,1fr); grid-template-rows:auto; }
	.lps-brand--2-1 .lps-brand__id, .lps-brand--2-1 .lps-brand__gal, .lps-brand--2-1 .lps-brand__why{ grid-column:1; }
	.lps-brand--2-1 .lps-brand__id, .lps-brand--2-1 .lps-brand__gal, .lps-brand--2-1 .lps-brand__why, .lps-brand--2-1 .lps-brand__ed{ grid-row:auto; } /* one column: DOM order */
	.lps-brand--2-1 .lps-brand__gal{ margin-top:18px; max-width:460px; }
}

/* --- MOBILE ≤600 (the 360 frame) --- */
@container page (max-width:600px){
	.lps-brand__grid{ padding:16px 16px 0; }
	.lps-brand--2-1 .lps-brand__pre{ gap:6px 14px; }
	.lps-brand--2-1 .lps-hero__wordmark{ font-size:34px; }
	.lps-brand--2-1 .lps-hero__tagline{ font-size:16.5px; }
	.lps-brand--2-1 .lps-brand__gal{ max-width:none; }
	.lps-brand--2-1 .lps-brand__ed{ margin-top:22px; }
	.lps-brand--2-1 .lps-why{ padding:16px 16px 12px; }
	.lps-brand--2-1 .lps-explore, .lps-brand--2-1 .lps-picks, .lps-brand--2-1 .lps-media, .lps-brand--2-1 .lps-faq{ margin-top:26px; }
	.lps-brand--2-1 .lps-hub__head{ flex-wrap:wrap; gap:4px 12px; }
	.lps-brand--2-1 .lps-hub__h2{ font-size:21px; }
	.lps-brand--2-1 .lps-explore__grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } /* D70: numerals 2-across at 360 */
	.lps-brand--2-1 .lps-explore__arrows{ display:none; }                                   /* never on mobile (D42) */
	.lps-brand--2-1 .lps-picks .lps-brand__product-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
	.lps-brand--2-1 .lps-media__row{ display:flex; overflow-x:auto; gap:10px; padding-bottom:4px; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
	.lps-brand--2-1 .lps-mcard, .lps-brand--2-1 .lps-mcard:hover, .lps-brand--2-1 .lps-mcard:focus{ flex:0 0 236px; }
}

/* --- Collection panel, full row: one-row clip (the D46 technique, 2026-08-23) ---
   Server renders up to 8 designs; the grid shows what one row holds at any width
   (6 at the 1760 cap, 4 at laptop). Mobile lifts the clip and shows 2x3. The
   clipped cards get inert + aria-hidden from the [data-lps-onerow] helper in
   js/lps-header.js. PDP "More from" reuses both. */
.lps-picks--onerow .lps-brand__product-grid{ grid-template-rows:auto; grid-auto-rows:0; row-gap:0; overflow:hidden; }
@container page (max-width:600px){
	.lps-picks--onerow .lps-brand__product-grid{ grid-auto-rows:auto; row-gap:10px; overflow:visible; }
	.lps-picks--onerow .lps-brand__product-grid > :nth-child(n+7){ display:none; }
}

/* ============================================================
   PDP 2.1 (2026-08-23, v2). Mockup laprima-pdp-2-1-mockup.html (r9, approved);
   placement note 2026-08-22_2245 D45–D52 (D46 clip first landed on the brand
   page, D55). Same model as Brand page 2.1: the <article class="lps-product
   lps-product--2-1"> is the @container ("page"); .lps-product__grid is ONE grid,
   DOM in priority order (pre · media · buy · details). Breakpoints (Joe's
   words): wide ≥1440 → media | buy | details · laptop <1440 → media | buy +
   details · ≤900 stack, image first · ≤600 mobile (the 360 frame). Shell cap
   1760, gutters 24/16. Buy column caps at 480 so Style C buttons never stretch;
   the image takes what is left (stage capped 640). "More from {brand}" is a
   sibling section AFTER the grid — Chromium lets sticky grid items ride past
   their row (D46).
   REUSES (restyled under the .lps-product--2-1 scope, nothing ported):
   .lps-hero__gallery/__stage/__rail/__thumb (lps-brand-media.js hooks),
   .lps-thumb-video, .lps-series-chips / .lps-series-split, .lps-variations,
   .lps-buy-zone (Style C — untouched), .lps-attrs (pills, D48), .lps-feats,
   .lps-docs/.lps-doclink, .lps-brand-card__lk/__so (chips, social), .lps-share
   via lps_share_popover() (lps-share.js), .lps-hub__head/__h2/__all,
   .lps-picks--onerow + .lps-brand__product-grid (the one-row clip).
   The old .lps-product__split / __info / __thumbs / __main-image /
   __breadcrumb rules and the .lps-more-from strip are dead on this page —
   cleanup later (queue #8).
   ============================================================ */
.lps-product--2-1{
	max-width:none; width:100%; flex:1 1 100%; margin:0; padding:0 0 40px; background:transparent; border:0; border-radius:0;
	container-type:inline-size; container-name:page; /* flex item in .ast-container: width or it collapses (D59) */
	--lps-bp-gut:24px; --lps-bp-colgap:clamp(24px,3cqw,56px);
	color:var(--lps-ink); font-size:14px; line-height:1.45;
}
.lps-product--2-1 *, .lps-product--2-1 *::before, .lps-product--2-1 *::after{ box-sizing:border-box; }

/* --- The grid (laptop = the base: media | buy + details) --- */
.lps-product__grid{
	display:grid; max-width:1760px; margin:0 auto; padding:18px var(--lps-bp-gut) 0;
	grid-template-columns:minmax(0,1fr) minmax(360px,520px);
	column-gap:var(--lps-bp-colgap); row-gap:0; align-items:start;
}
.lps-product--2-1 .lps-product__pre{ grid-column:1 / -1; min-width:0; }
.lps-product--2-1 .lps-product__media{ grid-column:1; min-width:0; }
.lps-product--2-1 .lps-product__buy, .lps-product--2-1 .lps-product__det{ grid-column:2; min-width:0; }
.lps-product--2-1 .lps-product__det{ margin-top:26px; }

/* --- pre: back link (D50, retargeted by lps-header.js) + crumb on the right --- */
.lps-product--2-1 .lps-product__pre{ display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 18px; margin:0 0 14px; font-size:12.5px; color:var(--lps-ink-2); }
.lps-product--2-1 .lps-product__back, .lps-product--2-1 .lps-product__back:hover, .lps-product--2-1 .lps-product__back:focus, .lps-product--2-1 .lps-product__back:active, .lps-product--2-1 .lps-product__back:visited{
	display:inline; margin:0; padding:0; border:0; background:none; box-shadow:none; text-shadow:none;
	font:inherit; font-size:15px; font-weight:500; color:var(--terra-dk); text-decoration:none;
}
.lps-product--2-1 .lps-product__back:hover, .lps-product--2-1 .lps-product__back:focus-visible{ text-decoration:underline; text-underline-offset:3px; }
.lps-product--2-1 .lps-product__crumb{ margin-left:auto; }
.lps-product--2-1 .lps-product__crumb a, .lps-product--2-1 .lps-product__crumb a:visited{ color:var(--lps-ink-2); text-decoration:none; }
.lps-product--2-1 .lps-product__crumb a:hover, .lps-product--2-1 .lps-product__crumb a:focus-visible{ color:var(--terra-dk); text-decoration:none; }

/* --- media: square stage (cap 640) + 60px rail; sticky from laptop up (D52: header + 16, admin bar carried) --- */
.lps-product--2-1 .lps-product__media{ position:sticky; top:calc(var(--lps-header-h,56px) + 16px); align-self:start; }
body.admin-bar .lps-product--2-1 .lps-product__media{ top:calc(var(--lps-header-h,56px) + 16px + 32px); }
.lps-product--2-1 .lps-hero__stage, .lps-product--2-1 .lps-hero__stage:hover, .lps-product--2-1 .lps-hero__stage:focus{
	display:block; width:100%; max-width:640px; aspect-ratio:1 / 1; margin:0; padding:0;
	border:1px solid var(--lps-line); border-radius:14px; background:var(--lps-bg,#fff); box-shadow:none; cursor:zoom-in;
}
.lps-product--2-1 .lps-hero__rail{ max-width:640px; gap:8px; margin-top:10px; padding-bottom:2px; }
.lps-product--2-1 .lps-hero__thumb, .lps-product--2-1 .lps-hero__thumb:hover, .lps-product--2-1 .lps-hero__thumb:focus{ width:60px; height:60px; border:1px solid var(--lps-line); border-radius:10px; opacity:1; }
.lps-product--2-1 .lps-hero__thumb.is-active, .lps-product--2-1 .lps-hero__thumb.is-active:hover, .lps-product--2-1 .lps-hero__thumb.is-active:focus{ border-color:var(--terra); box-shadow:0 0 0 1px var(--terra) inset; }
.lps-product--2-1 .lps-thumb-video, .lps-product--2-1 .lps-thumb-video:hover, .lps-product--2-1 .lps-thumb-video:focus{ flex:0 0 auto; width:60px; height:60px; border-radius:10px; }
.lps-product--2-1 .lps-thumb-video:hover, .lps-product--2-1 .lps-thumb-video:focus-visible{ border-color:var(--terra); }
.lps-product--2-1 .lps-series-chips{ display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 0; max-width:640px; }

/* --- buy column: h1 + Share → headline spec → blurb → variants → buy zone --- */
.lps-product--2-1 .lps-product__h1row{ display:flex; align-items:flex-start; gap:12px; }
.lps-product--2-1 .lps-product__title{
	flex:1; min-width:0; font-family:var(--lps-font-display); font-weight:500; font-size:clamp(24px,1.8cqw,28px); /* 10-23: was 26–34px; long names ran 5–6 lines */
	line-height:1.1; letter-spacing:-.012em; margin:0 0 6px; color:var(--lps-ink); overflow-wrap:break-word;
}
/* Share in the h1 row: chip-sized; the popover opens from the button's RIGHT edge (it sits at the column edge). */
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap.lps-share{ flex:none; margin:4px 0 0; }
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap .lps-share__btn,
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap .lps-share__btn:focus{
	height:28px; padding:0 11px; gap:6px; border:1px solid var(--lps-line); background:var(--lps-bg,#fff); font-size:12.5px;
}
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap .lps-share__btn:hover,
.lps-product--2-1 .lps-product__h1row .lps-brand-card__sharewrap .lps-share__btn:focus-visible{ border-color:var(--terra); }
.lps-product--2-1 .lps-product__h1row .lps-share__pop{ left:auto; right:0; }
.lps-product--2-1 .lps-product__dims-label{ font-size:14px; color:var(--lps-ink-2); margin:0 0 12px; }
.lps-product--2-1 .lps-product__blurb{ font-size:16px; line-height:1.55; margin:0 0 14px; max-width:58ch; }
.lps-product--2-1 .lps-variations{ margin:16px 0 0; }
.lps-product--2-1 .lps-variations__label{ font-size:13px; margin:0 0 8px; }
.lps-product--2-1 .lps-buy-zone{ max-width:none; margin-top:20px; } /* the column is the cap (480 at wide) */

/* --- details column: Features → Care & materials → specs → Guides → brand links (D47) ---
   Vertical rhythm = 20px fold → next heading. Spacing on the details selectors (the fold trap). */
.lps-product--2-1 details.lps-feats{ margin:0 0 20px; border:1px solid var(--lps-line); border-radius:10px; background:var(--lps-bg,#fff); }
.lps-product--2-1 details.lps-feats .lps-feats__summary{ padding:10px 14px; font-size:13.5px; }
.lps-product--2-1 details.lps-feats .lps-feats__list{ padding:0 14px 12px 32px; font-size:13.5px; line-height:1.55; color:var(--lps-ink-2); }
.lps-product--2-1 details.lps-feats .lps-feats__list li{ margin:0 0 4px; }
/* Care & materials (D48): eyebrow heading + outlined pills (no icon tiles); the group pill opens the fold. */
.lps-product--2-1 .lps-attrs{ margin:0; }
.lps-product--2-1 .lps-attrs__heading{ font-family:inherit; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--lps-ink-2); font-weight:600; margin:0 0 10px; }
.lps-product--2-1 .lps-attrs__tiles{ gap:6px; margin:0 0 10px; }
.lps-product--2-1 .lps-attrs__tile, .lps-product--2-1 .lps-attrs__tile--group{
	position:static; display:inline-flex; align-items:center; gap:4px; height:26px; padding:0 11px;
	border:1px solid #D9CFC0; border-radius:999px; background:var(--lps-bg,#fff); color:var(--lps-ink); font-size:12.5px; line-height:1;
}
.lps-product--2-1 .lps-attrs__tile--group{ cursor:pointer; }
.lps-product--2-1 .lps-attrs__tile--group:hover{ border-color:var(--terra); color:var(--terra-dk); }
.lps-product--2-1 details.lps-attrs__details{ margin:0; padding:0; border:1px solid var(--lps-line); border-radius:10px; background:var(--lps-bg,#fff); }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__summary{ cursor:pointer; padding:10px 14px; font-weight:600; font-size:13.5px; list-style:none; color:var(--lps-ink); }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__summary::-webkit-details-marker{ display:none; }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__summary::after{ content:"+"; float:right; color:var(--terra); }
.lps-product--2-1 details.lps-attrs__details[open] .lps-attrs__summary::after{ content:"\2013"; }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__pills{ margin:0; padding:0 14px; gap:6px; }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__pill{ display:inline-flex; align-items:center; height:22px; padding:0 9px; font-size:11.5px; color:var(--lps-ink-2); border-color:var(--lps-line); }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__care{ margin:10px 0 0; padding:0 14px; font-size:13.5px; line-height:1.55; color:var(--lps-ink-2); }
.lps-product--2-1 details.lps-attrs__details .lps-attrs__note{ margin:8px 0 0; padding:0 14px 12px; font-size:12px; color:var(--lps-ink-2); }
/* Specs: hairline-topped cells, auto-fill */
.lps-product--2-1 .lps-product__specs{
	margin:20px 0 0; padding:0; border:0; border-radius:0; background:transparent;
	display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px 18px; font-size:13px;
}
.lps-product--2-1 .lps-product__spec{ display:block; padding:8px 0 0; border-top:1px solid var(--lps-line); font-size:13px; }
.lps-product--2-1 .lps-product__spec span{ display:block; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--lps-ink-2); margin-bottom:2px; }
.lps-product--2-1 .lps-product__spec strong{ font-weight:600; }
.lps-product--thin .lps-product__specs{ margin-top:0; } /* thin product (D45): specs lead the column */
/* Guides & documents */
.lps-product--2-1 .lps-docs{ margin:22px 0 0; }
.lps-product--2-1 .lps-docs__label{ font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--lps-ink-2); font-weight:600; margin:0 0 10px; }
.lps-product--2-1 .lps-doclink, .lps-product--2-1 .lps-doclink:visited{ gap:12px; padding:10px 12px; border:1px solid var(--lps-line); border-radius:10px; background:var(--lps-bg,#fff); color:var(--lps-ink); text-decoration:none; }
.lps-product--2-1 .lps-doclink:hover, .lps-product--2-1 .lps-doclink:focus-visible{ border-color:var(--terra); }
.lps-product--2-1 .lps-doclink__ic{ width:30px; height:30px; border-radius:8px; background:var(--paper); display:grid; place-items:center; color:var(--terra-dk); }
.lps-product--2-1 .lps-doclink__ic svg{ width:16px; height:16px; }
.lps-product--2-1 .lps-doclink__t b{ font-size:13.5px; }
.lps-product--2-1 .lps-doclink__t small{ font-size:11.5px; color:var(--lps-ink-2); }
.lps-product--2-1 .lps-doclink__arw{ color:var(--terra-dk); }
/* Brand links (D49): name in the display serif + the Brands-card chips at 26px (D44 vocabulary) */
.lps-product--2-1 .lps-product__brand{ margin:26px 0 0; padding-top:18px; border-top:1px solid var(--lps-line); }
.lps-product--2-1 .lps-product__brand-nm{ font-family:var(--lps-font-display); font-size:18px; font-weight:500; color:var(--terra-dk); margin:0 0 10px; }
.lps-product--2-1 .lps-brand__links{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:0; }
.lps-product--2-1 .lps-brand__links .lps-brand-card__lk{ height:26px; padding:0 11px; gap:5px; font-size:12.5px; }
.lps-product--2-1 .lps-brand__links .lps-brand-card__ext{ font-size:11px; }
.lps-product--2-1 .lps-brand__links .lps-brand-card__so{ width:26px; height:26px; }
.lps-product--2-1 .lps-brand__links .lps-brand-card__so svg{ width:13px; height:13px; }

/* --- More from {brand}: full width, one row (D46 — the .lps-picks--onerow clip + [data-lps-onerow] helper) --- */
.lps-product--2-1 .lps-product__more{ margin:44px 0 0; }
.lps-product--2-1 .lps-product__more-in{ max-width:1760px; margin:0 auto; padding:0 var(--lps-bp-gut); }
.lps-product--2-1 .lps-hub__head{ margin:0 0 14px; flex-wrap:wrap; gap:4px 14px; }
.lps-product--2-1 .lps-hub__h2{ font-size:24px; }
.lps-product--2-1 .lps-brand__product-grid{ grid-template-columns:repeat(auto-fill,minmax(200px,260px)); column-gap:14px; }

/* --- WIDE ≥1440: 3 columns — media | buy | details --- */
@container page (min-width:1440px){
	.lps-product__grid{ grid-template-columns:minmax(0,1fr) minmax(360px,480px) minmax(340px,440px); }
	.lps-product--2-1 .lps-product__det{ grid-column:3; margin-top:0; }
}

/* --- TABLET ≤900: stack, image first --- */
@container page (max-width:900px){
	.lps-product__grid{ grid-template-columns:minmax(0,1fr); }
	.lps-product--2-1 .lps-product__media, .lps-product--2-1 .lps-product__buy, .lps-product--2-1 .lps-product__det{ grid-column:1; }
	.lps-product--2-1 .lps-product__media{ position:static; }
	.lps-product--2-1 .lps-hero__stage, .lps-product--2-1 .lps-hero__rail, .lps-product--2-1 .lps-series-chips{ max-width:none; }
	.lps-product--2-1 .lps-product__buy{ margin-top:18px; }
}

/* --- MOBILE ≤600 (the 360 frame) --- */
@container page (max-width:600px){
	.lps-product__grid{ padding:14px 16px 0; }
	.lps-product--2-1 .lps-product__pre{ margin-bottom:10px; gap:6px 14px; }
	.lps-product--2-1 .lps-product__title{ font-size:23px; }
	.lps-product--2-1 .lps-product__specs{ grid-template-columns:repeat(2,minmax(0,1fr)); }
	.lps-product--2-1 .lps-product__more{ margin-top:28px; }
	.lps-product--2-1 .lps-product__more-in{ padding:0 16px; }
	.lps-product--2-1 .lps-hub__h2{ font-size:21px; }
	.lps-product--2-1 .lps-brand__product-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:10px; } /* 2 × 3 — the onerow rule above lifts the clip here */
}

/* Astra clamp release for the PDP (2.1, 2026-08-23) — same pattern as search / brand /
   department / type / home. Without it the article sat in the 1200px box and the
   @container could never reach the 1440 wide frame. */
body.single-product #content .ast-container{ max-width:100%; }
/* Multi-axis selector (2026-10-08) */
.lps-variations--multi .lps-variations__axis + .lps-variations__axis { margin-top: 14px; }
.lps-variations__swatch.is-nearest { opacity: .55; }
/* #16 (2026-10-10): out-of-stock combos stay listed and clickable, greyed - KAF's own
   PDP is the model. Swatch: dimmed + diagonal strike. Text pill: dimmed + line-through. */
.lps-variations__swatch.is-oos { position: relative; opacity: .45; }
.lps-variations__swatch.is-oos[style*="background"]::after { content: ""; position: absolute; left: 50%; top: -2px; bottom: -2px; width: 2px; background: var(--ink, #2C2722); transform: translateX(-50%) rotate(45deg); pointer-events: none; }
.lps-variations__swatch.is-oos:not([style*="background"]) { text-decoration: line-through; color: #8A7866; opacity: .65; } /* text pills: strike already says it; .45 was unreadable */
.lps-variations__swatch.is-oos.is-current { opacity: .7; }

/* Image swatches (2026-10-11): pattern axes show the sibling's hero thumb; desktop hover shows it in the main image (footer script). */
.lps-variations__swatch.lps-variations__swatch--img:not([style*="background"]) { position: relative; width: 56px; height: 56px; padding: 0; border-radius: 8px; border: 1px solid #D8C3A8; background: #fff; }
.lps-variations__swatch--img > img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 7px; }
.lps-variations__swatch.lps-variations__swatch--img.is-current:not([style*="background"]) { border-color: var(--lps-accent, #B85A38); box-shadow: 0 0 0 2px var(--lps-accent, #B85A38); }
.lps-variations__swatch--img.is-oos::after { content: ""; position: absolute; left: 50%; top: -4px; bottom: -4px; width: 2px; background: var(--ink, #2C2722); transform: translateX(-50%) rotate(45deg); pointer-events: none; }
.lps-direct__pr.is-note { font-size: 13px; font-weight: 400; font-family: inherit; color: #8A7866; }
/* Design / color caption (2026-10-11): sits BELOW the photo inside the frame, never over the product. */
.lps-hero__stage:has(.lps-hero__caption) { display: flex; flex-direction: column; align-items: center; }
.lps-hero__stage:has(.lps-hero__caption) > img { flex: 1 1 0; min-height: 0; height: auto; padding-bottom: 4px; }
.lps-hero__caption { flex: 0 0 auto; max-width: calc(100% - 24px); margin: 0 0 12px; padding: 5px 14px; border-radius: 999px; background: #fff; border: 1px solid #E7E1D6; font-size: 14px; font-weight: 600; line-height: 1.3; color: var(--ink, #2C2722); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
/* Card design line (2026-10-11): the member's own design / color name under the shared title. */
/* Design · pack (10-23): the NAME ellipsizes, the pack never does — "Watercolor Lem… · Set of 2". */
.lps-product-card__design { display: flex; min-width: 0; margin: 2px 0 0; font-size: 13px; font-weight: 600; line-height: 1.3; color: var(--lps-accent, #B85A38); white-space: nowrap; }
.lps-product-card__dname { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.lps-product-card__pack { flex: none; white-space: pre; font-weight: 400; color: var(--lps-ink-2, #6B625A); }
/* 360px pass (11-12): on phones the design name wraps in full; the pack drops to its own line when it must. */
@media (max-width: 420px) {
	.lps-product-card__design { flex-wrap: wrap; white-space: normal; }
	.lps-product-card__dname { overflow: visible; }
}
/* Finds save mode (2026-10-11): the PDP shortlist button, saved state. */
.lps-direct__save.is-saved { background: var(--cream, #F3E9D9); }
.lps-buy-zone > .lps-direct__save--list { margin-top: 12px; }

/* ===== Gallery arrows (10-15, Joe) — js/lps-brand-media.js wraps the stage =====
   Round white buttons over the stage, every stage+rail gallery (brand hero, PDP).
   Full-property Astra reset on every state (standing rule). */
.lps-hero__stagewrap{ position: relative; }
.lps-gal-arrow, .lps-gal-arrow:hover, .lps-gal-arrow:focus, .lps-gal-arrow:active{
	position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
	display: flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; margin: 0; padding: 0;
	border: 1px solid var(--lps-line, #E3CDB9); border-radius: 50%;
	background: rgba(255,255,255,.94); color: var(--lps-ink, #3A2E26);
	box-shadow: 0 1px 6px rgba(0,0,0,.14); cursor: pointer; line-height: 1;
	transition: border-color .15s, color .15s;
}
.lps-gal-arrow:hover{ border-color: var(--terra, #B45734); color: var(--terra, #B45734); }
.lps-gal-arrow:focus-visible{ outline: 2px solid var(--lps-accent, #B45734); outline-offset: 2px; }
.lps-gal-arrow[hidden]{ display: none; }
.lps-gal-arrow--prev{ left: 10px; }
.lps-gal-arrow--next{ right: 10px; }
@media (max-width: 600px){
	.lps-gal-arrow, .lps-gal-arrow:hover, .lps-gal-arrow:focus, .lps-gal-arrow:active{ width: 36px; height: 36px; }
	.lps-gal-arrow--prev{ left: 6px; }
	.lps-gal-arrow--next{ right: 6px; }
}
@media (prefers-reduced-motion: reduce){ .lps-gal-arrow{ transition: none; } }

/* Footer menu (About · Contact · Privacy · Terms) — house ink, terra hover, no visited purple (2026-10-23) */
.site-footer .footer-navigation a,
.site-footer #astra-footer-menu .menu-link,
.site-footer #astra-footer-menu .menu-link:visited{ color: var(--ink, #2C2722); font-size: .9rem; text-decoration: none; }
.site-footer .footer-navigation a:hover,
.site-footer #astra-footer-menu .menu-link:hover,
.site-footer #astra-footer-menu .menu-link:focus-visible{ color: var(--terra, #B45734); text-decoration: underline; text-underline-offset: 3px; }
.site-footer #astra-footer-menu{ flex-wrap: wrap; justify-content: center; gap: 4px 6px; }

/* PDP "Product details from {brand}" — option A eyebrow, just above the Features box (10-23). */
.lps-feats__src { margin: 0 0 8px; font-size: 11px; line-height: 1.4; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--lps-ink-soft, #5A4A3E); }
.lps-feats__src a { color: var(--terra-dk, #9E4D2E); text-decoration: underline; text-underline-offset: 2px; } /* 11-06 WCAG: underlined (link-in-text-block) */
.lps-feats__src a:hover { text-decoration-thickness: 2px; }
.lps-feats__src + .lps-feats { margin-top: 0; }
/* 10-28 Studio › Trademarks: licensor notice at the foot of Features — small, muted, never a link */
.lps-feats__notice { margin: 0; padding: 0 14px 12px 32px; font-size: 11.5px; line-height: 1.5; color: var(--lps-ink-soft, #5A4A3E); overflow-wrap: anywhere; }

/* PDP Mfg # line (option A, 10-23): under the at-a-glance line, icon-only copy chip. */
.lps-product__mpn { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: -6px 0 12px; font-size: 12.5px; color: var(--lps-ink-soft, #5A4A3E); }
.lps-product__mpn-v { font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 600; color: var(--lps-ink, #2C2722); overflow-wrap: anywhere; }
.lps-product__mpn-copy { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 28px; padding: 0; border: 1px solid #DCCDB8; border-radius: 14px; background: #fff; color: var(--terra-dk, #9E4D2E); cursor: pointer; }
.lps-product__mpn-copy:hover { border-color: var(--terra-dk, #9E4D2E); }
.lps-product__mpn-copy.is-copied { background: var(--terra-dk, #9E4D2E); border-color: var(--terra-dk, #9E4D2E); color: #fff; }

/* ===== CA Prop 65 toggle — buy zone, option A (2026-10-24) =====
   Native <details>: no JS, keyboard + screen-reader ready. Never on cards. */
.lps-p65 { margin: 10px 0 0; padding-top: 4px; border-top: 1px solid #EFE6D6; }
.lps-p65__toggle {
	display: inline-flex; align-items: center; gap: 8px;
	min-height: 44px; padding: 0 4px; cursor: pointer;
	list-style: none; color: #2C2722;
}
.lps-p65__toggle::-webkit-details-marker { display: none; }
.lps-p65__toggle:focus-visible { outline: 2px solid var(--terra-dk); outline-offset: 2px; border-radius: 4px; }
.lps-p65__tri { width: 20px; height: 18px; flex: 0 0 auto; }
.lps-p65__label {
	font-size: 12px; font-weight: 700; letter-spacing: .08em;
	text-decoration: underline; text-underline-offset: 3px;
}
.lps-p65__chev { width: 12px; height: 12px; transition: transform .15s ease; }
.lps-p65[open] .lps-p65__chev { transform: rotate(180deg); }
.lps-p65__panel {
	margin-top: 6px; padding: 12px 14px;
	background: var(--cream); border: 1px solid #E0D2BB; border-radius: 6px;
	color: #2C2722;
}
.lps-p65__text { margin: 0; font-size: 13px; line-height: 1.55; overflow-wrap: anywhere; }
.lps-p65__text a { color: var(--terra-dk); }
.lps-p65__note { margin: 8px 0 0; font-size: 11.5px; color: #6B6158; }
.lps-p65__statement { /* 11-06: now rendered under Features, outside the warning box — plain sentence, not the eyebrow style */
	margin: 10px 0 0; font-size: 13px; line-height: 1.5; color: #766c62;
	text-transform: none; letter-spacing: 0; font-weight: 400;
}
@media (prefers-reduced-motion: reduce) { .lps-p65__chev { transition: none; } }

/* ===== AI-generated scene label (2026-10-24) =====
   Pill on the stage image + one-line note under it, from first view; small AI tag on scene thumbs.
   Visible disclosure first (EU Art. 50 standard, voluntary for LaPrima); the file also carries an IPTC tag. */
.lps-hero__stage { position: relative; }
.lps-ai-pill {
	display: none; position: absolute; left: 12px; bottom: 12px; z-index: 2;
	align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px;
	background: rgba(255,255,255,.94); border: 1px solid #D9CBB4;
	font-size: 12px; font-weight: 600; line-height: 1.2; color: #2C2722; pointer-events: none;
}
.lps-ai-pill svg { width: 14px; height: 14px; color: var(--violet); flex: 0 0 auto; }
.lps-hero__stage.is-ai .lps-ai-pill, .lps-ai-pill--lb { display: inline-flex; }
.lps-lightbox__box { position: relative; }
.lps-ai-pill--lb { position: absolute; left: 16px; bottom: 16px; }
.lps-ai-note { margin: 8px 2px 0; font-size: 12.5px; line-height: 1.5; color: #6B6158; }
.lps-hero__thumb { position: relative; }
.lps-ai-tag {
	position: absolute; top: 4px; left: 4px; padding: 1px 5px; border-radius: 6px;
	background: rgba(255,255,255,.95); font-size: 10px; font-weight: 700; color: #5B3FB0; line-height: 1.4;
}
@media (max-width: 480px) { .lps-ai-pill { left: 10px; bottom: 10px; font-size: 11.5px; padding: 4px 9px; } }

/* AI note inside the stage's white margin under the photo (10-24); JS sets left/top/width, falls back to flow. */
.lps-hero__gallery { position: relative; }
.lps-ai-note.is-in-stage { position: absolute; margin: 0; z-index: 2; pointer-events: none; text-align: left; }

/* Pill in the white strip above the photo: no shadow box needed, a lighter border. */
.lps-ai-pill.is-above { background: #FBF8F2; border-color: #E6DCCB; }

/* ============================================================
   Header tagline — option C (2026-10-24, Joe).
   Italic serif under the wordmark: "home & kitchen finds, since 2003".
   The row grows from 56px to 64px to hold two lines; phones keep it
   (it is the line that says what LaPrima is). Under 360px it drops so
   the wordmark + icons never crowd.
   ============================================================ */
.lps-header__inner{ height: 64px; }
.lps-header__lockup{ display: flex; flex-direction: column; justify-content: center; gap: 2px; }
.lps-header__tagline{
	font-family: var(--lps-font-display, Georgia, serif);
	font-style: italic; font-weight: 400;
	font-size: .8rem; line-height: 1.1; letter-spacing: 0;
	color: #6B5E54;            /* 6.3:1 on white */
	white-space: nowrap;
}
@media (max-width: 480px){
	.lps-header__inner{ height: 58px; }
	.lps-header__tagline{ font-size: .72rem; }
}
/* Phones: the full line is ~28px wider than the wordmark, and the phone row
   (wordmark · search · Ask · Finds · menu) has no spare width. On phones the
   line drops ", since 2003" (the hero still says it) so it never runs wider
   than the wordmark; the utility icons never shrink. */
.lps-header__brand{ flex-shrink: 0; }
.lps-header__lockup{ align-items: flex-start; }
.lps-header__utility, .lps-header .lps-finds-pill{ flex-shrink: 0; }
@media (max-width: 480px){
	.lps-header__since{ display: none; }
}
@media (max-width: 359px){
	.lps-header__tagline{ display: none; }
	.lps-header__inner{ height: 56px; }
}

/* 2026-10-25: where-to-buy chips — dot + store name, first two then +N (brand tiles, Ask LaPrima cards) */
.lps-where-chip { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; color: var(--lps-ink, #2C2722); }
.lps-where-more { white-space: nowrap; color: var(--lps-ink-2, #7A6E5E); cursor: default; }
.lps-brand-card__where { flex-wrap: wrap; }
/* ============================================================
   Brand states (2026-10-25) — Paused buy zone + brand notice,
   Hidden "not currently featured" page. inc/lps-brand-state.php
   ============================================================ */
.lps-brand-paused{display:flex;align-items:center;gap:12px;border:1px solid #E2D6C2;background:#FAF6EE;border-radius:12px;padding:14px 18px;margin:0 0 18px;font-size:15px;line-height:1.45;color:var(--lps-ink,#3A2E26)}
.lps-brand-paused svg{flex:none;color:#6B5F55}
.lps-buy-paused{border:1px solid #E2D6C2;background:#FAF6EE;border-radius:12px;padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.lps-buy-paused__head{display:flex;align-items:center;gap:10px;margin:0;font-weight:600;font-size:16px}
.lps-buy-paused__head svg{flex:none;color:#6B5F55}
.lps-buy-paused__text{margin:0;font-size:15px;line-height:1.5;color:var(--lps-ink-soft,#5A4A3E)}
.lps-buy-paused__more{font-size:15px;font-weight:600;color:#9E4D2E}
@media (max-width:600px){.lps-buy-paused__more{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #CFC4B3;border-radius:10px;background:#fff;text-decoration:none}}
.lps-notfeat{max-width:620px;margin:0 auto;padding:72px 16px 96px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}
.lps-notfeat__eyebrow{margin:0;font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#9E4D2E}
.lps-notfeat__title{margin:0;font-family:var(--lps-font-display,'Fraunces',Georgia,serif);font-weight:400;font-size:clamp(32px,6vw,48px);line-height:1.1}
.lps-notfeat__lead{margin:0;font-size:17px;line-height:1.55;color:var(--lps-ink-soft,#5A4A3E)}
.lps-notfeat__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px}
.lps-notfeat__btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 22px;border-radius:10px;border:1px solid #CFC4B3;color:var(--lps-ink,#3A2E26);font-weight:600;text-decoration:none}
.lps-notfeat__btn--primary{background:#9E4D2E;border-color:#9E4D2E;color:#fff}
.lps-notfeat__btn--primary:hover{background:#8A4227;color:#fff}
.lps-notfeat__home{color:#9E4D2E}
@media (max-width:600px){.lps-notfeat{text-align:left;align-items:stretch;padding-top:40px}.lps-notfeat__actions{flex-direction:column}}

/* ============================================================
   HOME — Culver demo touch-ups (2026-10-27): bigger photos.
   Brand cards: 3-across, the empty name/pill gap closed, thumbs
   ~50% larger. What we curate: 120px thumbs (64 before), one
   per row on phones. Phone brand row stays a swipe row (wider peek).
   ============================================================ */
@media (min-width:601px){
	.lps-hub__sec--brands .lps-hub__brands{ grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; max-width:1240px; margin-inline:auto; }
	.lps-hub__types{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; max-width:1240px; margin-inline:auto; }
	/* .lps-hub__types prefix: the Astra-reset rule lists :hover, which outranked a bare class and snapped the column back to 64px on hover (11-08). */
	.lps-hub__types .lps-hub__type{ grid-template-columns:120px minmax(0,1fr); gap:14px; padding:14px; border-radius:16px; }
	.lps-hub__type-th{ width:120px; height:120px; border-radius:12px; }
	.lps-hub__type-n{ font-size:20px; line-height:1.2; }
	.lps-hub__type-c{ font-size:13.5px; }
}
@media (min-width:601px) and (max-width:1000px){
	.lps-hub__sec--brands .lps-hub__brands{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:1100px){
	.lps-hub__types{ grid-template-columns:repeat(4,minmax(0,1fr)); }
}
.lps-hub__sec--brands .lps-brand-card{ padding:20px; gap:12px; border-radius:16px; }
.lps-hub__sec--brands .lps-brand-card__name{ height:auto; font-size:26px; }
.lps-hub__sec--brands .lps-brand-card__lane:empty{ display:none; }
.lps-hub__sec--brands .lps-brand-card__why{ height:4.35em; font-size:14.5px; line-height:1.45; }
.lps-hub__sec--brands .lps-brand-card__strip{ gap:10px; }
.lps-hub__sec--brands .lps-brand-card__strip--few .lps-brand-card__th{ flex-basis:calc((100% - 20px) / 3); }
.lps-hub__sec--brands .lps-brand-card__th{ border-radius:10px; }
.lps-hub__sec--brands .lps-brand-card__where{ font-size:13px; }
@media (max-width:600px){
	.lps-hub__sec--brands .lps-hub__brands .lps-brand-card{ flex-basis:86%; padding:16px; }
	.lps-hub__sec--brands .lps-brand-card__name{ font-size:23px; }
	.lps-hub__types{ grid-template-columns:minmax(0,1fr); gap:10px; }
	.lps-hub__types .lps-hub__type{ grid-template-columns:80px minmax(0,1fr); gap:12px; padding:10px; }
	.lps-hub__type-th{ width:80px; height:80px; }
	.lps-hub__type-n{ font-size:18px; }
}

/* === LaPrima Finds signup (2026-10-30) — Home section + footer row =========
   inc/lps-newsletter.php + js/lps-newsletter.js. 16px input text so iOS
   doesn't zoom; row stays side by side down to 360px. */
.lps-nl{ position:relative; margin:0; text-align:left; }
.lps-nl__row{ display:flex; gap:8px; }
.lps-nl__email{ flex:1 1 auto; min-width:0; height:44px; padding:0 16px; border:1px solid var(--lps-line); border-radius:999px; background:#fff; color:var(--lps-ink); font-size:16px; }
.lps-nl__email:focus-visible{ outline:2px solid var(--terra); outline-offset:1px; border-color:transparent; }
.lps-nl__btn{ flex:0 0 auto; height:44px; padding:0 20px; border:0; border-radius:999px; background:var(--lps-ink); color:#fff; font-size:15px; font-weight:600; cursor:pointer; }
.lps-nl__btn:hover,
.lps-nl__btn:focus-visible{ background:var(--terra-dk); }
.lps-nl.is-busy .lps-nl__btn{ opacity:.6; cursor:progress; }
.lps-nl__hp{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }
.lps-nl__fine{ margin:8px 0 0; font-size:12.5px; color:var(--lps-ink-2); text-wrap:balance; }
.lps-nl__fine a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }
.lps-nl__fine span{ display:inline-block; }
.lps-nl__msg{ margin:8px 0 0; font-size:14px; color:var(--lps-ink); }
.lps-nl__msg:empty{ display:none; }
.lps-nl.is-bad .lps-nl__msg{ color:var(--terra-dk); }
.lps-nl.is-done .lps-nl__row,
.lps-nl.is-done .lps-nl__fine{ display:none; }
.lps-nl__pre{ display:inline-block; margin:0 0 8px; padding:2px 10px; border-radius:999px; background:#FFF3CD; color:#6B5300; font-size:11.5px; font-weight:600; }
.lps-hub__news .lps-nl__fine,
.lps-hub__news .lps-nl__msg{ text-align:center; }

.lps-nlfoot{ border-top:1px solid var(--lps-line); background:var(--cream); padding:22px var(--lps-gut); }
.lps-nlfoot__in{ max-width:960px; margin:0 auto; display:flex; flex-wrap:wrap; align-items:center; gap:12px 32px; }
.lps-nlfoot__txt{ flex:1 1 260px; }
.lps-nlfoot__h{ display:block; font-family:var(--lps-font-display); font-weight:500; font-size:19px; color:var(--lps-ink); }
.lps-nlfoot__p{ display:block; margin-top:2px; font-size:13.5px; color:var(--lps-ink-2); }
.lps-nlfoot .lps-nl{ flex:1 1 340px; }
@media (max-width:420px){
	.lps-nlfoot{ padding:18px 16px; }
	.lps-nl__btn{ padding:0 16px; }
}
