/* ============================================================
   Scott Cheng lineage — restyles template v0.1.2 sections to the
   scott-cheng-v3 design language. Loads AFTER sections.css.
   Source of truth for tokens: scott-cheng-v3/style.css :root.
   Site-specific by design (P3.4 classic-lineage rehearsal).
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,400&family=Inter:wght@300;400;500;600;700&display=swap');

body {
	/* Scott's tokens */
	--sc-bg: #FAFAF8;
	--sc-paper: #FFFFFF;
	--sc-paper-2: #F5F5F0;
	--sc-ink: #1A1A1A;
	--sc-ink-light: #444444;
	--sc-muted: #888888;
	--sc-accent: #37B6E9;
	--sc-accent-light: #52C4F0;
	--sc-gold: #B8935A;
	--sc-border: #E8E8E4;
	--sc-radius: 14px;

	/* Recolor template presets so token-driven blocks follow the lineage */
	--wp--preset--color--base: var(--sc-paper);
	--wp--preset--color--base-2: var(--sc-paper-2);
	--wp--preset--color--contrast: var(--sc-ink);
	--wp--preset--color--secondary: var(--sc-accent);
	--wp--preset--color--highlight: var(--sc-gold);

	background: var(--sc-bg);
	color: var(--sc-ink);
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
	font-family: 'Fraunces', serif;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.02em;
}

/* ---------- header: fixed glass nav ---------- */
.as-site-header {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: rgba(250, 250, 248, 0.85);
	backdrop-filter: blur(20px);
	-webkit-backdrop-filter: blur(20px);
	border-bottom: 1px solid var(--sc-border);
}
.as-site-header a { color: var(--sc-ink-light); text-decoration: none; }
.as-site-header a:hover { color: var(--sc-accent); }

/* ---------- hero: cream, left text, photo card right ---------- */
.as-section-hero .as-cover {
	background: var(--sc-bg);
	min-height: 0;
}
.as-section-hero .as-cover::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(0,0,0,0.02) 1px, transparent 1px),
		linear-gradient(90deg, rgba(0,0,0,0.02) 1px, transparent 1px);
	background-size: 60px 60px;
	pointer-events: none;
}
.as-section-hero .as-cover__overlay { display: none; }
/* Editor parity: as/cover renders via ServerSideRender as .as-cover--editor,
   with .block-editor-inner-blocks > .block-editor-block-list__layout standing
   in for .as-cover__inner. Editor selectors are GROUPED into the front-end
   rules so every design value stays defined exactly once. */
.as-section-hero .as-cover__inner,
.editor-styles-wrapper .as-section-hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout {
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
	padding: 120px 24px 60px;
	display: grid;
	grid-template-columns: 1fr 0.5fr;
	gap: 12px 48px;
	align-content: center;
	justify-content: start;
}
.as-section-hero .as-cover__inner > *,
.editor-styles-wrapper .as-section-hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout > * { grid-column: 1; margin: 0; }
.as-section-hero .as-cover__inner::after,
.editor-styles-wrapper .as-section-hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout::after {
	content: '';
	grid-column: 2;
	grid-row: 1 / span 6;
	align-self: center;
	width: 100%;
	aspect-ratio: 4 / 5;
	border-radius: 20px;
	background-image: url('/wp-content/uploads/2026/08/p3scott-scott-profile.png');
	background-size: cover;
	background-position: top center;
	box-shadow: 0 20px 60px rgba(0,0,0,0.12);
}
.as-section-hero .has-pure-white-color { color: var(--sc-ink) !important; }
.as-section-hero .has-text-align-center { text-align: left; }
.as-section-hero h1 {
	font-size: 3.4em;
	letter-spacing: -0.03em;
	color: var(--sc-ink);
	max-width: 12em;
}
.as-section-hero p { color: var(--sc-ink-light); max-width: 480px; }
.as-section-hero .as-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	padding: 8px 16px;
	border-radius: 999px;
	font-size: 0.82em;
	font-weight: 600;
	color: var(--sc-accent) !important;
	letter-spacing: 0.06em;
	justify-self: start;
}
.as-section-hero .as-eyebrow::before {
	content: '';
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--sc-accent);
	animation: sc-pulse-dot 2s ease-in-out infinite;
}
@keyframes sc-pulse-dot {
	0% { box-shadow: 0 0 0 0 rgba(55,182,233,0.4); }
	50% { box-shadow: 0 0 0 8px rgba(55,182,233,0); }
	100% { box-shadow: 0 0 0 0 rgba(55,182,233,0); }
}
.as-taglines {
	text-align: left;
	color: var(--sc-gold);
	font-style: italic;
	font-family: 'Fraunces', serif;
}

/* ---------- buttons: Scott pills ---------- */
.wp-block-button__link {
	background: var(--sc-accent);
	color: #fff;
	padding: 14px 32px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 0.95em;
	border: none;
	transition: background 0.2s, transform 0.2s;
}
.wp-block-button__link:hover { background: var(--sc-accent-light); transform: translateY(-2px); }
.is-style-outline .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: var(--sc-paper);
	color: var(--sc-ink);
	border: 1px solid var(--sc-border);
}
.is-style-outline .wp-block-button__link:hover { border-color: var(--sc-accent); background: var(--sc-paper); }

/* ---------- section rhythm + headings ---------- */
.as-section { padding: 100px 24px; background: var(--sc-bg); }
.as-section:nth-of-type(even) { background: var(--sc-paper-2); }
.as-section > h2, .as-section h2.wp-block-heading {
	font-size: 2.4em;
	color: var(--sc-ink);
	text-align: center;
}
.as-section .as-eyebrow {
	font-size: 0.78em;
	font-weight: 700;
	letter-spacing: 0.12em;
	color: var(--sc-accent);
	text-align: center;
	display: block;
}
.as-section-hero .as-eyebrow { display: inline-flex; } /* hero badge wins */

/* ---------- stats band ---------- */
.as-section-stats {
	background: var(--sc-paper-2);
	border-top: 1px solid var(--sc-border);
	border-bottom: 1px solid var(--sc-border);
}
.as-stat-value,
.as-stat-value.has-text-color {
	font-family: 'Fraunces', serif;
	font-size: 1.9em;
	font-weight: 600;
	color: var(--sc-ink) !important; /* live hero-stats are ink, not preset blue/gold */
}
.as-stat-label { font-size: 0.85em; color: var(--sc-muted); }

/* ---------- cards ---------- */
.as-card {
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	border-radius: var(--sc-radius);
	padding: 30px 24px;
	transition: transform 0.3s cubic-bezier(0.16,1,0.3,1), box-shadow 0.3s;
}
.as-card:hover { transform: translateY(-4px); box-shadow: 0 20px 50px rgba(0,0,0,0.08); }
.as-card__title { font-size: 1.15em; color: var(--sc-ink); margin: 0 0 8px; }
.as-card__body { color: var(--sc-ink-light); font-size: 0.95em; }

/* ---------- communities: image cards w/ overlay title ---------- */
.as-communities-grid .as-card {
	position: relative;
	padding: 0;
	overflow: hidden;
	border: none;
	border-radius: var(--sc-radius);
	aspect-ratio: 4 / 3;
}
.as-communities-grid .as-card__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s cubic-bezier(0.16,1,0.3,1);
}
.as-communities-grid .as-card:hover .as-card__image { transform: scale(1.06); }
.as-communities-grid .as-card__title {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	margin: 0;
	padding: 40px 20px 16px;
	color: #fff;
	background: linear-gradient(transparent, rgba(0,0,0,0.72));
	z-index: 1;
}

/* ---------- testimonials ---------- */
.as-testimonial { border-left: 3px solid var(--sc-accent); }
.as-testimonial__quote { color: var(--sc-ink-light); font-style: italic; }
.as-testimonial__name {
	margin-top: 14px;
	font-weight: 600;
	color: var(--sc-accent);
	font-size: 0.9em;
	font-style: normal;
}

/* ---------- FAQ ---------- */
.as-faq-list { max-width: 780px; margin: 0 auto; }
.as-faq-item {
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	border-radius: var(--sc-radius);
	margin-bottom: 12px;
	padding: 0 20px;
}
.as-faq-item__q {
	font-family: 'Fraunces', serif;
	font-weight: 600;
	font-size: 1.02em;
	padding: 18px 0;
	cursor: pointer;
	color: var(--sc-ink);
	list-style: none;
}
.as-faq-item[open] .as-faq-item__q { color: var(--sc-accent); }
.as-faq-item__a { padding: 0 0 18px; color: var(--sc-ink-light); }

/* ---------- CTA: animated sky gradient ---------- */
.as-section-cta .as-cover,
.as-section-cta {
	background: linear-gradient(135deg, #2A9DD4 0%, #37B6E9 30%, #2A9DD4 60%, #1E88C7 100%);
	background-size: 300% 300%;
	animation: sc-cta-shift 8s ease infinite;
}
@keyframes sc-cta-shift {
	0% { background-position: 0% 50%; }
	50% { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}
.as-section-cta .as-cover__overlay { display: none; }
.as-section-cta h2, .as-section-cta p { color: #fff; }
.as-section-cta .wp-block-button__link {
	background: #fff;
	color: var(--sc-ink);
}
.as-section-cta .wp-block-button__link:hover { background: var(--sc-paper-2); }

/* ---------- about ---------- */
.as-about-photo img, .as-about-photo {
	border-radius: 16px;
}
.as-about-badge {
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	border-radius: var(--sc-radius);
	color: var(--sc-accent);
	font-family: 'Fraunces', serif;
}
.as-about-role { color: var(--sc-muted); }

/* ---------- blog ---------- */
.as-blog-grid .as-card { padding: 0; overflow: hidden; }
.as-blog-grid .as-card__image { width: 100%; aspect-ratio: 16/10; object-fit: cover; transition: transform 0.6s cubic-bezier(0.16,1,0.3,1); }
.as-blog-grid .as-card:hover .as-card__image { transform: scale(1.06); }
.as-blog-grid .as-card__title, .as-blog-grid .as-card__body { padding: 0 20px; }
.as-blog-grid .as-card__title { padding-top: 16px; }
.as-blog-card__date { display: block; padding: 8px 20px 18px; color: var(--sc-muted); font-size: 0.85em; }

/* ---------- footer: dark gradient ---------- */
.as-site-footer {
	background: linear-gradient(135deg, #1A1A1A 0%, #0D0D0D 50%, #1A1A1A 100%);
	color: #CFCFCB;
	padding: 60px 24px 30px;
}
.as-site-footer a { color: #CFCFCB; }
.as-site-footer a:hover { color: var(--sc-accent); }
.as-footer-note { color: var(--sc-muted); font-size: 0.85em; }

/* ---------- light overrides for template dark bands ----------
   Template gives testimonials/blog a contrast background; Scott's site keeps
   them light (paper-2). Beat the preset background/text classes. */
.as-section-testimonials, .as-section-blog,
.as-section-testimonials.has-background, .as-section-blog.has-background,
.as-section-testimonials .has-contrast-background-color,
.as-section-blog .has-contrast-background-color {
	background: var(--sc-paper-2) !important;
}
.as-section-testimonials, .as-section-blog { color: var(--sc-ink); }
.as-section-testimonials h2, .as-section-blog h2,
.as-section-testimonials .has-pure-white-color, .as-section-blog .has-pure-white-color,
.as-section-testimonials .has-base-color, .as-section-blog .has-base-color {
	color: var(--sc-ink) !important;
}
.as-section-testimonials p, .as-section-blog > p { color: var(--sc-muted); }

/* communities: 3-up like live */
@media (min-width: 861px) {
	.as-communities-grid { grid-template-columns: repeat(3, 1fr) !important; }
}

/* Known editor-only drift (logged in DRIFT-GAP-LOG): stats band computes
   #F5F6F8 in the editor vs #F5F5F0 front (template editor styles win there).
   Visually imperceptible; a .editor-styles-wrapper shim tested 2026-08-07
   did NOT win the cascade and was removed rather than shipped dead. */

/* ---------- mobile ---------- */
@media (max-width: 860px) {
	.as-section-hero .as-cover__inner { grid-template-columns: 1fr; }
	.as-section-hero .as-cover__inner::after {
		grid-column: 1;
		grid-row: auto;
		max-width: 300px;
		margin: 24px auto 0;
	}
	.as-section-hero h1 { font-size: 2.4em; }
}

/* ============================================================ v0.1.5→v0.2.1
   Community sub-page hero. v0.2.1 (fidelity round 2026-08-11) replaces the
   v0.1.5 approximation with live `.page-hero` parity: eyebrow kicker +
   white serif h1 + one-line subline, photo full-bleed to DOCUMENT TOP with
   the fixed glass nav overlaying it (live behaviour on every inner page),
   content padding 140px/80px, 0.5 scrim (stamped as dim:50 — live is a flat
   rgba(0,0,0,.5) gradient). v0.1.5's text-shadows dropped: live has none;
   its dim was 0.7 so shadows compensated. Watermark note stands: "DEL MAR"
   in the photo is baked in — the title overlays it by design, not CSS.
   Editor parity: grouped stand-in selectors per the v0.1.4 pattern. */

/* Live inner pages start at document top under the fixed nav — kill the
   theme's first-block offset on ALL astype routes (foundation for gaps 2–4;
   community routes gated now, remaining routes in their own rounds). */
.page-template-page-astype .entry-content { margin-top: 0; }

/* Hero section: NO side padding — alignfull can only bleed to the viewport
   edge when the parent doesn't pad it (non-root padding isn't compensated
   by the breakout margins). The entity paragraph gets its own side padding
   instead; bottom keeps section rhythm. */
.as-section-community_hero { padding: 0 0 100px; }
.as-section-community_hero .as-community-entity { padding-left: 24px; padding-right: 24px; }

.as-section-community_hero .as-cover { display: flex; align-items: center; }
.as-section-community_hero .as-cover__inner,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout {
	width: 100%;
	padding: 140px 24px 80px; /* live .page-hero: 140px 0 80px */
	text-align: center;
}
/* The cover inner ships as a flex column with gap:16 — flex margins don't
   collapse (measured +16 on both gaps) and flex BLOCKIFIES the eyebrow's
   inline-block, deleting live's 4px baseline seating. Restore live's layout
   model: plain block flow (the flex centering was for the min-height era;
   with minHeight 0 the inner is the sole child and centering is moot). */
.as-section-community_hero .as-cover__inner,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: block;
	gap: 0;
}
.as-section-community_hero .as-cover__inner > *,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout > * {
	margin-block-start: 0;
	margin-block-end: 0;
}
/* Eyebrow — live span.section-label with inline white override:
   uppercase 0.78em/700/0.12em, rgba(255,255,255,0.6), 12px below-gap. */
.as-section-community_hero .as-eyebrow,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout .as-eyebrow {
	display: inline-block; /* live: inline-block — its baseline seating adds the 4px
	                          line-box offset the live page shows; block loses it */
	align-self: center;    /* flex column: center the shrink-wrapped box */
	background: none;
	border: none;
	padding: 0;
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	line-height: 1.7; /* live inherits body 1.7 */
	color: rgba(255, 255, 255, 0.6) !important; /* base .as-eyebrow paints accent */
	margin: 0 0 12px;
}
.as-section-community_hero .as-cover__inner h1,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout h1 {
	color: #fff;
	font-family: "Fraunces", Georgia, serif;
	font-size: 2.4rem;  /* live .section-title 2.4em on 16px base */
	line-height: 1.2;   /* theme heading preset is 1.15; live is 1.2 */
	margin: 0 0 16px;
}
/* Subline — live p.section-sub: 1.05em, rgba(255,255,255,0.8), 1.7 body
   line-height, and the base .section-sub 50px bottom margin (uncancelled on
   live, so it's part of the hero's height). */
.as-section-community_hero .as-community-subline,
.editor-styles-wrapper .as-section-community_hero .as-cover--editor > .block-editor-inner-blocks > .block-editor-block-list__layout .as-community-subline {
	color: rgba(255, 255, 255, 0.8);
	font-size: 1.05rem;
	font-weight: 400;
	line-height: 1.7;
	margin: 0 0 50px;
}

/* Bound highlight slots read as a checked list (client-editable paragraphs). */
.as-community-highlights { max-width: 680px; margin-left: auto; margin-right: auto; }
.as-community-highlights .as-community-highlight {
	position: relative;
	padding-left: 1.5em;
	margin: 0.45em 0;
}
.as-community-highlights .as-community-highlight::before {
	content: "\2713";
	position: absolute;
	left: 0;
	color: #37B6E9;
	font-weight: 700;
}

/* ============================================================ v0.1.6
   Site-wide HEADER parity with the live scott-cheng-v3 nav (2026-08-10).
   Live markup is classic: `nav > .nav-inner > a.nav-logo + ul.nav-links`.
   The clone rebuilds that shape from EDITABLE block primitives (site-logo
   block + a wordmark paragraph + a 6-item navigation block) declared in a
   p3scott-only `header` template part — the shared theme file is untouched,
   so p1ref/Jamie are unaffected. Values below are lifted verbatim from
   scott-cheng-v3/style.css so the two render identically.
   No visible copy is hardcoded here; all of it stays Site-Editor editable. */

.as-nav {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	background: rgba(250, 250, 248, 0.85);
	-webkit-backdrop-filter: blur(20px);
	backdrop-filter: blur(20px);
	border-bottom: 1px solid var(--sc-border);
	transition: box-shadow 0.3s, background 0.3s;
}
.as-nav.scrolled { box-shadow: 0 2px 20px rgba(0, 0, 0, 0.06); }

.as-nav-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 24px;
	height: 70px;
	align-items: center;
	flex-wrap: nowrap;
}

/* Logo lockup — mark + wordmark 12px apart (live .nav-logo).
   The site-logo block ships an inline wrapper width from its {"width":36}
   attribute; left alone it measured 70px on / and 82px on /faq/, which slid
   the wordmark 12px between routes. Pinning the wrapper to auto makes the
   lockup identical on every route. */
/* Gap carries the nav element for specificity: WP prints a per-page layout
   rule (.wp-container-core-group-is-layout-<hash>) whose gap comes from that
   template's blockGap — 12px on the front page but 24px on page-astype
   routes. It ties a bare .as-nav-logo and wins on load order, which slid the
   wordmark 12px on every inner page. Same reason the nav-links gap below is
   qualified. */
nav.as-nav .as-nav-logo { gap: 12px; align-items: center; flex-wrap: nowrap; }
.as-nav-logo .wp-block-site-logo,
.as-nav-logo .wp-block-site-logo > a {
	margin: 0;
	line-height: 0;
	width: auto;
	max-width: none;
}
.as-nav-logo .wp-block-site-logo img.custom-logo {
	height: 36px;
	width: auto;
	max-width: none;
	display: block;
}
/* rem, not em: live resolves 1.15em against a 16px body, the block theme's
   inherited base is 15.92px — em here would land 0.5% short. */
.as-nav-wordmark {
	margin: 0;
	font-family: 'Fraunces', Georgia, serif;
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.7;
	white-space: nowrap;
}
.as-nav-wordmark a { color: var(--sc-ink); text-decoration: none; }

/* Links — 32px gutter, muted ink, accent on hover (live .nav-links).
   Selector carries the nav element so it outranks the global-styles rule
   `.wp-block-navigation .wp-block-navigation-item__content`, which ties on
   specificity and would otherwise win on load order (it painted #1A1A1A). */
nav.as-nav .as-nav-links,
nav.as-nav .as-nav-links .wp-block-navigation__container { gap: 32px; align-items: center; }
nav.as-nav .as-nav-links .wp-block-navigation-item__content {
	text-decoration: none;
	color: var(--sc-ink-light);
	/* Stated, not inherited: on page-astype routes the navigation block picks
	   up a theme.json system stack with Inter missing, which rendered the link
	   row 7px narrower than live. The front page inherited body correctly, so
	   this only showed up on inner pages. */
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	font-size: 0.92rem;
	font-weight: 500;
	transition: color 0.2s;
}
nav.as-nav .as-nav-links .wp-block-navigation-item__content:hover { color: var(--sc-accent); }

/* Contact renders as the accent pill (live .nav-cta).
   line-height is explicit: live's anchor is inline so its box is font-metric
   height (38px pill); the block nav's anchor is a block box and inherited
   1.7 line-height made the pill 44px. */
nav.as-nav .as-nav-links .as-nav-cta .wp-block-navigation-item__content {
	background: var(--sc-accent);
	color: var(--sc-paper);
	padding: 10px 24px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 0.9rem;
	line-height: 1.22;
	transition: background 0.2s, transform 0.2s;
}
nav.as-nav .as-nav-links .as-nav-cta .wp-block-navigation-item__content:hover {
	background: var(--sc-accent-light);
	transform: translateY(-1px);
}

/* Live collapses to the burger at 768px; core's overlay default is 600px. */
@media (max-width: 768px) {
	.as-nav-links .wp-block-navigation__responsive-container-open { display: flex; }
	.as-nav-links .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
}

/* ============================================================ v0.2.6
   Community BODY parity (round 3, deltas 1/2/5 of the 2026-08-11 spec).
   Values are LIVE COMPUTED numbers probed on findyourhomesandiego.com
   /communities/del-mar/ 2026-08-11 (not the inline-style fallbacks): col
   800px, paras 1.05rem/1.8/#444 LEFT with ZERO paragraph gaps (the theme's
   global `* { margin:0 }` reset), highlights + prices card at 40px gaps.
   Selectors carry the div element where WP's per-template blockGap rule
   (.wp-container-…) would tie and win on load order (header-round lesson). */

/* Live hero section ends AT the cover (heroBottom == bodyTop == 398); the
   entity paragraph is visually ¶1 of the body's 800px column, 80px below
   the cover. Keep the entity block in the hero section (markup untouched,
   hero gate stands) and move the 80px above it. */
.as-section-community_hero { padding: 0; }
div.as-section-community_hero > .as-community-entity {
	max-width: 800px;
	margin: 80px auto 0;
	padding-left: 24px;
	padding-right: 24px;
	text-align: left;
}

/* Body column: 80px top padding is carried by the hero-side entity above,
   so desc_1 continues the paragraph flow with no seam (live pGap = 0). */
.as-section-community_body,
.as-section-community_faq {
	background: var(--sc-bg) !important;
	color: var(--sc-ink);
}
.as-section-community_body { padding: 0 24px 80px; }
div.as-section-community_body > * {
	max-width: 800px;
	margin-left: auto;
	margin-right: auto;
}
div.as-section-community_hero > .as-community-entity,
.as-section-community_body p {
	font-size: 1.05rem;
	line-height: 1.8;
	color: var(--sc-ink-light); /* live computes #444 (token), not the #555 fallback */
}
div.as-section-community_body > p {
	margin-block-start: 0;
	margin-block-end: 0;
	text-align: left;
}

/* Highlights: chip grid (live: auto-fit minmax(200px,1fr), 16px gap, 40px
   above). Replaces the v0.2.1 check-list rendering. */
div.as-section-community_body > .as-community-highlights {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 16px;
	margin-block-start: 40px;
	max-width: 800px;
}
.as-community-highlights .as-community-highlight {
	position: static;
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 12px 16px;
	background: var(--sc-paper-2);
	border-radius: 10px;
	font-size: 0.95rem;
	line-height: 1.7; /* live inherits body 1.7 — the body column's 1.8 must not leak in */
	color: var(--sc-ink);
	text-align: left;
}
.as-community-highlights .as-community-highlight::before {
	content: "\2713";
	position: static;
	color: var(--sc-accent);
	font-size: 1.2rem;
	font-weight: 400;
	flex-shrink: 0;
}

/* FAQ cards (delta 5) — live .faq-* rules from scott-cheng-v3/style.css:
   800px list, border-bottom rows, Inter 1.02em/600 questions with a "+"
   icon that rotates 45° when open. Scoped to the community section; the
   FAQ page's own card pass is gap 3, its own round. */
.as-section-community_faq .as-eyebrow { margin: 0 0 12px; }
.as-section-community_faq .as-faq-list { max-width: 800px; }
.as-section-community_faq .as-faq-item {
	background: none;
	border: none;
	border-bottom: 1px solid var(--sc-border);
	border-radius: 0;
	margin-bottom: 0;
	padding: 0;
}
.as-section-community_faq .as-faq-item__q {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	padding: 24px 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	font-size: 1.02em;
	font-weight: 600;
	color: var(--sc-ink);
	text-align: left;
}
.as-section-community_faq .as-faq-item__q::-webkit-details-marker { display: none; }
.as-section-community_faq .as-faq-item__q::after {
	content: "+";
	font-size: 1.4em;
	font-weight: 300;
	color: var(--sc-muted);
	flex-shrink: 0;
	transition: transform 0.3s;
}
.as-section-community_faq .as-faq-item:hover .as-faq-item__q { color: var(--sc-accent); }
.as-section-community_faq .as-faq-item[open] .as-faq-item__q { color: var(--sc-accent); }
.as-section-community_faq .as-faq-item[open] .as-faq-item__q::after {
	transform: rotate(45deg);
	color: var(--sc-accent);
}
.as-section-community_faq .as-faq-item__a {
	padding: 0 0 24px;
	font-size: 0.95em;
	color: var(--sc-ink-light);
	line-height: 1.8;
}

/* ============================================================ v0.3.0
   Round 3 set B: prices card in the body column, provider-agnostic
   community_search skin, nearby PHOTO cards, and the inter-section seam.
   All numbers are live computed values (probe 2026-08-11). */

/* Live sections abut — the theme's root blockGap inserted a 24px seam
   between adjacent sections on astype routes (measured entity→desc_1). */
.page-template-page-astype .entry-content > .as-section { margin-block-start: 0; }

/* Stated, not inherited (nav-links lesson, round 3 recurrence): theme.json
   swaps the astype body stack to a system stack WITHOUT Inter, so Inter never
   loads and the first body paragraph wrapped 4 lines vs live's 5. */
.page-template-page-astype .entry-content {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
}

/* rem, not em (header-round lesson): the block theme's inherited base is
   15.92px, so em sizes land 0.5% short of live's 16px-based values. */
.as-section-community_faq { padding: 80px 24px; text-align: center; }
.as-section-community_faq .as-faq-list { text-align: left; }
/* inline-block like live's .section-label — its baseline seating adds the
   ~4px line-box offset (hero-eyebrow lesson); parent text-align centers it. */
.as-section-community_faq .as-eyebrow {
	display: inline-block;
	font-size: 0.78rem;
	line-height: 1.7;
}
.as-section-community_faq h2.wp-block-heading { font-size: 2.4rem; line-height: 1.2; }
.as-section-community_faq .as-faq-item__q { font-size: 1.02rem; line-height: 1.7; }
.as-section-community_faq .as-faq-item__q::after { line-height: 1; }
.as-section-community_faq .as-faq-item__a { font-size: 0.95rem; }
/* Qualified blockGap overrides — live rhythm: eyebrow +12, h2 +16, list +0. */
div.as-section-community_faq > .as-eyebrow { margin: 0 0 12px; }
div.as-section-community_faq > h2.wp-block-heading { margin: 0 0 16px; }
div.as-section-community_faq > .as-faq-list { margin-block-start: 0; }

/* Prices card — live: 40px above, 30px padding, paper-2, radius 16, centered;
   h3 1.1rem Fraunces #444, range 1.8rem/700 ink, median 0.95rem #444 8px up. */
div.as-section-community_body > .as-community-prices {
	margin-block-start: 40px;
	padding: 30px;
	background: var(--sc-paper-2);
	border-radius: 16px;
	text-align: center;
}
.as-community-prices h3.wp-block-heading {
	margin: 0 0 8px;
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1.2; /* live global h rule; theme preset is 1.15 */
	color: var(--sc-ink-light);
	text-align: center;
}
.as-community-prices .as-community-prices__range {
	margin: 0;
	font-size: 1.8rem;
	font-weight: 700;
	line-height: 1.7;
	color: var(--sc-ink);
	text-align: center;
}
.as-community-prices .as-community-prices__median {
	margin: 8px 0 0;
	font-size: 0.95rem;
	color: var(--sc-ink-light);
	text-align: center;
}

/* community_search — live IDX band: paper-2, 60px 0, centered header
   (.section-title / .section-sub), widget + button 20px steps. */
.as-section-community_search {
	background: var(--sc-paper-2) !important;
	color: var(--sc-ink);
	padding: 60px 24px;
	text-align: center;
}
.as-section-community_search h2.wp-block-heading {
	font-size: 2.4rem;
	line-height: 1.2;
	color: var(--sc-ink);
	margin-bottom: 16px;
}
.as-section-community_search .as-community-search-sub {
	font-size: 1.05rem;
	line-height: 1.7;
	color: var(--sc-muted);
	max-width: 560px;
	margin: 0 auto 50px;
}
/* Qualified: the bare class ties with WP's blockGap rule (24px) and loses. */
div.as-section-community_search > .as-community-search-embed,
div.as-section-community_search > .as-community-search-cta { margin-block-start: 20px; }
.as-community-search-embed { text-align: center; }
/* Inline like live's .btn-primary — inline-block + inherited 1.6 line-height
   made the pill 52px vs live's 47. */
.as-community-search-btn {
	background: var(--sc-accent);
	color: #fff;
	padding: 14px 32px;
	border-radius: 999px;
	text-decoration: none;
	font-weight: 600;
	font-size: 0.95rem;
	line-height: 1.7;
	transition: background 0.2s, transform 0.2s;
}
.as-community-search-btn:hover { background: var(--sc-accent-light); transform: translateY(-2px); }
/* Scott's RealScout widget skin — lifted from the live inline style block. */
.as-community-search-embed realscout-simple-search {
	--rs-ss-font-primary-color: #6a6d72;
	--rs-ss-searchbar-border-color: #7ed321;
	--rs-ss-box-shadow: 0 10px 15px -3px #0000001a;
	--rs-ss-widget-width: 600px !important;
}

/* Nearby — live: paper-2 band 60px 0, h3 2.4rem title, flex row of 280px
   photo cards (radius 16, shadow, white, image 160px cover, 16px body). */
.as-section-community_nearby {
	background: var(--sc-paper-2) !important;
	color: var(--sc-ink);
	padding: 60px 24px;
}
.as-section-community_nearby h3.wp-block-heading {
	font-size: 2.4rem;
	line-height: 1.2;
	color: var(--sc-ink);
	text-align: center;
	margin-bottom: 16px;
}
div.as-section-community_nearby > .as-community-nearby-grid {
	display: flex;
	gap: 20px;
	justify-content: center;
	flex-wrap: wrap;
	margin-block-start: 20px;
	max-width: none;
}
.as-community-nearby-grid .as-community-nearby-card {
	display: block;
	width: 280px;
	padding: 0;
	border: none;
	border-radius: 16px;
	overflow: hidden;
	background: #fff;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
	text-decoration: none;
	transition: transform 0.3s, box-shadow 0.3s;
}
.as-community-nearby-grid .as-community-nearby-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
}
/* Image stays INLINE like live's (no display:block) — the baseline gap under
   an inline image is part of live's 248px card height. */
.as-community-nearby-card__image {
	width: 100%;
	height: 160px;
	object-fit: cover;
}
.as-community-nearby-card__body { padding: 16px; }
.as-community-nearby-card__name {
	margin: 0 0 4px;
	color: var(--sc-ink);
	font-size: 1rem;
	line-height: 1.2;
}
.as-community-nearby-card__blurb {
	margin: 0;
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--sc-ink-light);
}

/* ============================================================ v0.4.0
   Route TAIL (D-C/D-D/D-E, 2026-08-11): per-community CTA band, global cta
   eyebrow + secondary contact link, live-parity footer. Values from
   scott-cheng-v3/style.css (.cta-section/.btn-white/.footer-*). */

/* Live computes a FLAT accent band: style.css line 993 (.cta-section
   {background: var(--accent)}) comes after the animated-gradient rule at 344
   and wins. !important beats the template's .as-section:nth-of-type(even)
   striping, whose pseudo-class outranks a single class. */
.as-section-community_cta,
.as-section-page_cta,
.as-section-cta,
.as-section-cta .as-cover {
	background: var(--sc-accent) !important;
	animation: none;
}
.as-section-community_cta,
.as-section-page_cta {
	color: #fff;
	text-align: center;
	padding: 80px 24px;
}
.as-section-community_cta h2.wp-block-heading,
.as-section-page_cta h2.wp-block-heading {
	color: #fff;
	font-size: 2.4rem;
	line-height: 1.2;
	margin: 0 0 16px;
}
/* Live .cta-section p: 1.08em, white .8, 500px column, 32px below. */
div.as-section-community_cta > p:not(.as-eyebrow),
div.as-section-page_cta > p:not(.as-eyebrow),
.as-section-cta .as-cover__inner p:not(.as-eyebrow) {
	color: rgba(255, 255, 255, 0.8);
	font-size: 1.08rem;
	max-width: 500px;
	margin: 0 auto 32px;
}
/* CTA eyebrows — live .section-label with white .6 inline override. */
.as-section-community_cta .as-eyebrow,
.as-section-page_cta .as-eyebrow,
.as-section-cta .as-eyebrow {
	display: inline-block;
	font-size: 0.78rem;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6) !important; /* base rule paints accent */
	margin: 0 0 12px;
}
/* Primary pill = live .btn-white: white bg, ACCENT text, 16/36, 700. */
.as-section-community_cta .wp-block-button__link,
.as-section-page_cta .wp-block-button__link,
.as-section-cta .wp-block-button__link {
	background: #fff;
	color: var(--sc-accent);
	padding: 16px 36px;
	font-weight: 700;
	font-size: 1rem;
	line-height: 1.7;
}
.as-section-community_cta .wp-block-button__link:hover,
.as-section-page_cta .wp-block-button__link:hover,
.as-section-cta .wp-block-button__link:hover {
	background: #fff;
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}
/* Secondary contact link row = live .cta-contact-row/.cta-email-link. */
div.as-section-community_cta > .wp-block-buttons + .wp-block-buttons,
div.as-section-page_cta > .wp-block-buttons + .wp-block-buttons,
.as-section-cta .wp-block-buttons + .wp-block-buttons { margin-block-start: 24px; margin-top: 24px; }
.as-cta-secondary .wp-block-button__link,
.as-section-community_cta .as-cta-secondary .wp-block-button__link,
.as-section-page_cta .as-cta-secondary .wp-block-button__link,
.as-section-cta .as-cta-secondary .wp-block-button__link {
	background: none;
	color: rgba(255, 255, 255, 0.75);
	padding: 0;
	border-radius: 0;
	font-size: 0.95rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	transition: color 0.2s;
}
.as-cta-secondary .wp-block-button__link::before { content: "\2709\FE0E\00A0 "; font-size: 0.9em; }
.as-section-community_cta .as-cta-secondary .wp-block-button__link:hover,
.as-section-page_cta .as-cta-secondary .wp-block-button__link:hover,
.as-section-cta .as-cta-secondary .wp-block-button__link:hover {
	color: #fff;
	transform: none;
	box-shadow: none;
}
/* Global cta: live is a flat 80px-padded band, not a 420px cover. The cover
   inner ships as a flex column with gap (hero lesson) — restore block flow
   and hand spacing back to explicit margins. */
.as-section-cta { padding: 0; }
.as-section-cta .as-cover { min-height: 0 !important; }
.as-section-cta .as-cover__inner {
	padding: 80px 24px;
	display: block;
	gap: 0;
	text-align: center;
}
.as-section-cta .as-cover__inner > * { margin-block-start: 0; margin-block-end: 0; }
/* Outranks the > * zeroing above (0,3,1) — live .section-label mb 12. */
.as-section-cta .as-cover__inner .as-eyebrow { margin: 0 0 12px; }
.as-section-cta .as-cover__inner h2 {
	color: #fff;
	font-size: 2.4rem !important; /* the stamped has-xx-large-font-size preset carries !important */
	line-height: 1.2;
	margin: 0 0 16px;
}
div.as-section-community_cta > *,
div.as-section-page_cta > * { margin-block-start: 0; }
div.as-section-community_cta > h2.wp-block-heading,
div.as-section-page_cta > h2.wp-block-heading { margin: 0 0 16px; }
/* Live /services/ styles its contact link 0.8 inline; /about/ keeps the .75
   default. Page-scoped (this file is site-specific by design). */
.page-id-122 .as-cta-secondary .wp-block-button__link { color: rgba(255, 255, 255, 0.8); }

/* ============================================================ v0.6.0
   R-A (gap 4, D-I/D-J 2026-08-11): shared inner-route page hero — live's
   NAVY GRADIENT band (no photo; --gradient-hero fallback lifted verbatim),
   120/60 padding, white centered header trio. The FAQ route's :has-scoped
   frame outranks these and keeps its authored-column look. */
.page-template-page-astype .as-section-page_header {
	background: linear-gradient(135deg, #0a1628 0%, #0d2847 50%, #0067FF 100%) !important;
	color: #fff;
	text-align: center;
	padding: 120px 24px 60px;
}
div.as-section-page_header > * { margin-block-start: 0; }
.page-template-page-astype .as-section-page_header .as-eyebrow {
	display: inline-block;
	font-size: 0.78rem !important; /* stamped x-small preset (13px) carries !important */
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6) !important;
	margin: 0 0 12px;
}
.page-template-page-astype .as-section-page_header h1 {
	color: #fff;
	font-size: 2.4rem !important; /* preset classes carry !important */
	line-height: 1.2;
	margin: 0 0 16px;
}
.page-template-page-astype .as-section-page_header p:not(.as-eyebrow) {
	color: rgba(255, 255, 255, 0.7);
	font-size: 1.05rem;
	line-height: 1.7;
	max-width: 560px;
	margin: 0 auto 50px;
}
/* Live subtitle line-height is body 1.7 (theme hands the cover p 1.6). */
div.as-section-community_cta > p:not(.as-eyebrow),
div.as-section-page_cta > p:not(.as-eyebrow),
.as-section-cta .as-cover__inner p:not(.as-eyebrow) { line-height: 1.7; }
/* Live community page overrides its email link to white .8 inline. */
.as-section-community_cta .as-cta-secondary .wp-block-button__link { color: rgba(255, 255, 255, 0.8); }

/* ---------- footer (D-E): live .footer-* rules ---------- */
.as-fyhs-footer {
	background: linear-gradient(135deg, #1A1A1A 0%, #0D0D0D 50%, #1A1A1A 100%);
	background-size: 200% 200%;
	animation: sc-footer-shift 12s ease infinite;
	color: rgba(255, 255, 255, 0.5);
	padding: 60px 24px 30px;
	font-size: 1rem;
}
@keyframes sc-footer-shift {
	0% { background-position: 0% 50%; }
	50% { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}
.as-fyhs-footer a { color: rgba(255, 255, 255, 0.5); text-decoration: none; transition: color 0.2s; }
.as-fyhs-footer a:hover { color: #fff; }
/* Live's .container is 1200 max with 24px side padding ⇒ 1152 content. */
div.as-fyhs-footer > .as-fyhs-footer__grid {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr 1fr;
	gap: 40px;
	margin: 0 0 40px;
	max-width: 1152px;
}
.as-fyhs-footer__grid .wp-block-column { flex-basis: auto !important; margin: 0; }
.as-fyhs-footer__logo { margin: 0; }
.as-fyhs-footer__logo img { height: 30px; width: auto; filter: brightness(10); }
.as-fyhs-footer__bio { font-size: 0.88rem; line-height: 1.7; margin: 12px 0 0; }
.as-fyhs-footer__social { display: flex; gap: 14px; margin: 16px 0 0; padding: 0; }
/* Core paints per-service BRAND backgrounds on the li — live is uniform
   white-.08 circles (probe blind spot #2: compare backgroundColor). */
.as-fyhs-footer__social .wp-block-social-link {
	margin: 0;
	background: rgba(255, 255, 255, 0.08) !important;
	color: rgba(255, 255, 255, 0.6) !important;
	border-radius: 50%;
}
.as-fyhs-footer__social .wp-block-social-link:hover { background: var(--sc-accent) !important; color: #fff !important; }
.as-fyhs-footer__social .wp-block-social-link a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	box-sizing: border-box;
	padding: 0; /* core block ships .25em padding — live circles are 38px flat */
	border-radius: 50%;
	background: none;
	color: inherit;
	transition: background 0.2s, color 0.2s;
}
.as-fyhs-footer__social .wp-block-social-link svg { width: 16px; height: 16px; }
.as-fyhs-footer__col-title {
	color: #fff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	font-size: 0.9rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin: 0 0 16px;
	line-height: 1.2; /* live inherits the global h rule */
}
.as-fyhs-footer__links { margin: 0; }
.as-fyhs-footer__links a {
	display: block;
	font-size: 0.88rem;
	margin-bottom: 10px;
	line-height: 1.7;
}
div.as-fyhs-footer > .as-fyhs-footer__entity {
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	padding-top: 24px;
	margin: 0 0 20px;
	font-size: 0.85rem;
	line-height: 1.8;
	max-width: 1152px;
}
div.as-fyhs-footer > .as-fyhs-footer__bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	padding-top: 20px;
	font-size: 0.82rem;
	margin: 0;
	max-width: 1152px;
}
.as-fyhs-footer__bottom p { margin: 0; }
div.as-fyhs-footer > .as-fyhs-footer__powered {
	color: rgba(255, 255, 255, 0.35);
	font-size: 0.8rem;
	margin: 12px 0 0;
	max-width: 1152px;
}
/* Sections and footer abut on live — kill the root blockGap seam above the
   footer template part (same class of fix as the astype section seam). */
footer.wp-block-template-part { margin-block-start: 0; }

/* ============================================================ v0.5.0
   FAQ page cards (gap 3, D-F/D-G/D-H) — values byte-lifted from the live
   page's inline .fyhs-faqp style block. Deliberately off-token (navy/orange,
   system text stack) because that is what live ships; headings still pick up
   Fraunces from the global h rule, same as live's cascade. */
/* Carries the section class: a bare .as-faqp lost max-width to a same-tier
   layout rule (measured 1140) while its other declarations applied. */
.as-section-faq .as-faqp,
.as-faqp {
	max-width: 712px; /* live: 900px cap inside the 760px blog-post-inner (48px padding) */
	box-sizing: border-box; /* live box = 712 incl. its 16px pads → 680px cards */
	margin: 0 auto;
	padding: 24px 16px 64px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;
	text-align: left;
}

/* FAQ ROUTE frame (scoped via :has — page_header is shared by other routes,
   which get their own rounds). Live: h1 140px under the nav in a 712px LEFT
   column, intro 44px below it, first category 40px under the intro. */
body:has(.as-faqp) .as-section-page_header,
body:has(.as-faqp) .as-section-faq {
	background: var(--sc-bg) !important;
}
body:has(.as-faqp) .as-section-page_header { padding: 140px 24px 0; }
body:has(.as-faqp) .as-section-faq { padding: 0 24px 80px; } /* live blog-post-full pb 80 */
body:has(.as-faqp) .as-section-page_header h1 {
	font-size: 2.4rem !important; /* preset font-size classes carry !important */
	line-height: 1.2;
	text-align: left;
	max-width: 712px;
	margin: 0 auto 44px;
}
body:has(.as-faqp) .as-section-page_header p:not(.as-eyebrow) {
	font-size: 17px;
	color: #555;
	line-height: 1.7;
	text-align: left;
	max-width: 680px;
	margin: 0 auto;
}
/* Intro lives in page_header on the clone, so the card block starts flush —
   the first category's own 40px top margin recreates live's rhythm. */
body:has(.as-faqp) .as-section-faq .as-faqp { padding-top: 0; }
.as-faqp__category {
	font-size: 22px;
	color: #1a3a52;
	margin: 40px 0 16px;
	border-bottom: 2px solid #ff6b35;
	padding-bottom: 8px;
}
.as-faqp__card {
	background: #fff;
	border-radius: 10px;
	padding: 24px 28px;
	margin-bottom: 14px;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);
	border-left: 4px solid #ff6b35;
}
.as-faqp__q {
	font-size: 18px;
	font-weight: 600;
	color: #1a3a52;
	margin: 0 0 10px;
	line-height: 1.4;
}
.as-faqp__a { font-size: 15px; color: #555; line-height: 1.7; }
.as-faqp__a p { margin: 0; font-size: inherit; color: inherit; line-height: inherit; }
.as-faqp__card a { color: #e85520; font-weight: 600; }

/* Live appends a centered phone/testimonials row inside the footer. */
div.as-fyhs-footer > .as-fyhs-footer__phone-row {
	padding: 10px 0;
	margin: 0;
	font-size: 14px;
	max-width: 1152px;
}
.as-fyhs-footer__phone-row a { color: #4fc3f7; }
.as-fyhs-footer__phone-row a:hover { color: #4fc3f7; }

/* ============================================================ v0.6.2
   R-B contact page (2026-08-11) — live /contact/ form + info columns,
   measured at 1280w. SCOPED to .page-id-118: home (3410) still carries the
   pre-R-B stamped contact markup until the home mid-page round; unscoped
   rules here would restyle it (nth-of-type lesson: pin explicit backgrounds
   on every NEW section). Form/info card colors byte-lifted from live. */

.page-id-118 .as-section-contact {
	background: transparent !important; /* live: transparent over body --sc-bg; beats has-base-2-background-color */
	padding: 80px 40px;
}
/* Live: grid 1.5fr/1fr, 60px gap, 1152px content column. */
.page-id-118 .as-section-contact .wp-block-columns {
	display: grid;
	grid-template-columns: 1.5fr 1fr;
	gap: 60px;
	max-width: 1152px;
	margin: 0 auto;
}
.page-id-118 .as-section-contact .wp-block-column { margin: 0; }

/* Form column heading + intro (left-aligned, unlike the canonical center). */
.page-id-118 h2.as-contact-form-heading {
	font-family: 'Fraunces', serif;
	font-size: 1.6rem;
	font-weight: 600;
	color: var(--sc-ink);
	line-height: 1.2;
	text-align: left; /* theme centers h2s otherwise; live computes start ≡ left */
	margin: 0 0 8px;
}
.page-id-118 p.as-contact-form-intro {
	font-size: 1rem;
	color: var(--sc-ink-light);
	line-height: 1.7;
	text-align: left;
	margin: 0 0 30px;
}

/* Form controls (live .fyhs-form measurements). */
.as-contact-form .as-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}
.as-contact-form .as-form-group { margin: 0 0 16px; }
.as-contact-form label {
	display: block;
	font-size: 0.95rem;
	font-weight: 600;
	color: var(--sc-ink);
	line-height: 1.7;
	margin: 0 0 6px;
}
.as-contact-form input,
.as-contact-form select,
.as-contact-form textarea {
	width: 100%;
	background: #fff;
	border: 1px solid #d0d0d0;
	border-radius: 10px;
	padding: 12px 16px;
	font-size: 1rem;
	font-family: 'Lato', sans-serif; /* live declares Lato (unloaded → same sans fallback) */
	color: #000;
	box-sizing: border-box;
}
.as-contact-form textarea { height: 116px; resize: vertical; }
.as-contact-form .as-form-consent {
	font-size: 0.85rem;
	color: var(--sc-ink-light);
	line-height: 1.7;
	margin: 0 0 16px;
}
.as-contact-form .as-form-submit {
	display: inline-block;
	width: 100%;
	background: var(--sc-accent);
	color: #fff;
	border: 0;
	border-radius: 999px;
	padding: 16px;
	font-size: 1.1rem;
	font-weight: 600;
	cursor: pointer;
	/* no font-family: live leaves the UA button default (computed Arial) */
}

/* Info card. */
.page-id-118 .as-contact-info-card {
	background: var(--sc-paper-2);
	border-radius: 16px;
	padding: 40px;
	margin-bottom: 30px; /* live puts the gap here, not on the map wrapper */
}
.page-id-118 h3.as-contact-info-heading {
	font-family: 'Fraunces', serif;
	font-size: 1.3rem;
	font-weight: 600;
	color: var(--sc-ink);
	line-height: 1.2;
	margin: 0 0 24px;
}
.page-id-118 .as-contact-item {
	display: flex;
	flex-wrap: nowrap;
	align-items: center; /* live centers the icon tile against the text stack */
	gap: 16px;
	margin: 0 0 20px;
}
.page-id-118 .as-contact-item:last-child { margin-bottom: 0; }
.as-contact-icon {
	width: 48px;
	height: 48px;
	border-radius: 12px;
	background: var(--sc-accent);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.page-id-118 .as-contact-item-body { margin: 0; }
.page-id-118 p.as-contact-item-label {
	font-size: 1rem;
	font-weight: 600;
	color: var(--sc-ink);
	line-height: 1.7;
	margin: 0;
}
/* Bound tel/mailto buttons render as live's bare accent links. */
.page-id-118 .as-contact-item .wp-block-buttons { margin: 0; gap: 0; }
.page-id-118 .as-contact-item-link .wp-block-button__link {
	background: none;
	border: 0;
	border-radius: 0;
	padding: 0;
	color: var(--sc-accent);
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.7;
	display: inline; /* live is a bare inline anchor */
	text-decoration: none;
}
.page-id-118 p.as-contact-item-value {
	font-size: 1rem;
	color: var(--sc-ink-light);
	line-height: 1.7;
	white-space: pre-line; /* textarea meta \n → live's <br> lines */
	margin: 0;
}

/* Map card. */
.page-id-118 .as-contact-map {
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
	margin-top: 0; /* gap comes from the info card's margin-bottom (live), not the layout block-gap */
}
.page-id-118 .as-contact-map iframe {
	/* live keeps the UA inline display — the wrapper's 308px (300 + descender)
	   is part of the measured geometry, so no display:block here */
	width: 100%;
	height: 300px;
	border: 0;
}

/* License card. */
.page-id-118 .as-contact-license-card {
	border: 1px solid #e0e0e0;
	border-radius: 12px;
	padding: 20px;
	margin-top: 30px;
}
.page-id-118 p.as-contact-license-line {
	font-size: 0.9rem;
	color: var(--sc-ink-light);
	line-height: 1.7;
	margin: 0 0 4px;
}
.page-id-118 p.as-contact-license-line:last-child { margin-bottom: 0; }

/* ============================================================ v0.6.6
   R-C communities index (2026-08-11) — live /communities/ measured at 1280w:
   IDX search band (paper-2, 60/60) + showcase photo cards (white r16, image
   220 w/ bottom-gradient overlay, median info bar) + browse pill + closing
   blurb band (paper-2, 40/40). Card rules hang off as-cshow-* (only the
   showcase layout emits them — inert everywhere else); band paddings are
   page-scoped like the contact round. Pin explicit backgrounds on every NEW
   section (nth-of-type striping lesson). */

.page-id-130 .as-section-community_search {
	background: var(--sc-paper-2) !important;
	padding: 60px 40px;
	text-align: center;
}
/* Community pages give the embed a 20px top margin; the index band doesn't. */
.page-id-130 .as-section-community_search .as-community-search-embed { margin: 0; }
.page-id-130 .as-section-communities {
	background: transparent !important;
	padding: 80px 40px;
}
/* Qualified: WP's inline constrained-layout rule caps bare classes at 1140. */
.page-id-130 .as-section-communities .as-cshow-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 30px;
	max-width: 1152px;
	margin: 0 auto;
}
.as-cshow-card {
	display: block;
	background: #fff;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
	text-decoration: none;
	transition: transform 0.3s, box-shadow 0.3s;
	/* live locks the card to 4/3 — the info bar's bottom padding is genuinely
	   clipped by overflow:hidden on live; reproduce, don't "fix" */
	aspect-ratio: 4 / 3;
	/* reset the inherited 15.92px/25.472px context so descender + line
	   heights match live's 16px/1.7 */
	font-size: 1rem;
	line-height: 1.7;
}
.as-cshow-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
}
.as-cshow-card__media { position: relative; overflow: hidden; }
.as-cshow-card__image {
	/* live img stays inline — the wrapper's extra descender px is part of the
	   measured geometry (map-iframe lesson) */
	width: 100%;
	height: 220px;
	object-fit: cover;
}
.as-cshow-card__overlay {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: 20px;
	background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
}
h3.as-cshow-card__name {
	margin: 0;
	color: #fff;
	font-family: 'Fraunces', serif;
	font-size: 1.4rem;
	font-weight: 600;
	line-height: 1.2;
}
.as-cshow-card__tagline {
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.9rem;
	line-height: 1.7;
}
.as-cshow-card__info { padding: 20px; }
.as-cshow-card__flex {
	display: flex;
	justify-content: space-between;
	align-items: center;
}
p.as-cshow-card__price-label {
	margin: 0;
	font-size: 0.85rem;
	color: var(--sc-ink-light);
}
p.as-cshow-card__price {
	margin: 0;
	font-weight: 700;
	color: var(--sc-ink);
	font-size: 1.1rem;
}
.as-cshow-card__explore {
	color: var(--sc-accent);
	font-weight: 600;
	font-size: 0.9rem;
}
.page-id-130 .as-section-communities .as-cshow-browse {
	text-align: center;
	margin-top: 50px; /* qualified: WP block-gap margin wins over a bare class */
}
.as-cshow-browse__btn {
	display: inline; /* live is an inline anchor — box height comes from its line */
	background: var(--sc-accent);
	color: #fff;
	border-radius: 999px;
	padding: 14px 32px;
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1.7;
	text-decoration: none;
}
.page-id-130 .as-section-communities_blurb {
	background: var(--sc-paper-2) !important;
	padding: 40px;
}
.page-id-130 p.as-communities-blurb {
	max-width: 700px;
	margin: 0 auto;
	font-size: 1rem;
	color: var(--sc-ink-light);
	line-height: 1.7;
}
.as-fyhs-footer__phone-row .as-fyhs-footer__reviews-link { text-decoration: underline; }

/* ============================================================
   v0.6.8 — R-D /about/ body: live two-column bio layout
   (page-scoped .page-id-111 until the home round, R-B precedent)
   Live probe 2026-08-12: grid 364/728 gap 60, sticky sidebar,
   white section, bio p 17.6/31.68 #444, badges + cred card #f5f5f0.
   ============================================================ */
.page-id-111 .as-section-about {
	background: #fff !important; /* explicit pin — pseudo-class striping outranks single-class bg */
	padding-top: 80px;
	padding-bottom: 80px;
}
.page-id-111 .as-section-about > .wp-block-columns {
	display: grid;
	grid-template-columns: 364px 728px;
	gap: 60px;
	align-items: start !important; /* WP layout CSS out-competes the bare declaration */
	max-width: 1152px; /* qualified: beats WP constrained 1140px cap */
	margin: 0 auto;
}
.page-id-111 .as-section-about .wp-block-column {
	flex-basis: auto !important;
	margin: 0 !important; /* kill injected block-gap margins */
}
.page-id-111 .as-section-about .wp-block-column:first-child {
	position: sticky;
	top: 100px;
	align-self: start;
}

/* — sidebar — */
.page-id-111 .as-section-about figure.as-about-photo {
	margin: 0;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: rgba(0, 0, 0, 0.15) 0px 20px 60px;
}
.page-id-111 .as-section-about figure.as-about-photo img {
	display: block;
	width: 100%;
	height: 360px;
	object-fit: cover;
	border-radius: 16px;
}
.page-id-111 .as-about-reviews {
	margin-top: 24px !important;
}
.page-id-111 p.as-about-stars {
	font-size: 2rem;
	line-height: 1.7;
	color: #f5a623;
	margin: 0 !important;
}
.page-id-111 p.as-about-reviews-line {
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.7;
	color: var(--sc-ink);
	margin: 0 !important;
}
.page-id-111 .as-social-row {
	margin: 16px 0 0 !important;
	justify-content: center;
	gap: 12px;
}
.page-id-111 .as-social-row .wp-social-link {
	width: 40px;
	height: 40px;
	margin: 0;
	border-radius: 50%;
	background: var(--sc-paper-2) !important; /* uniform circles — override core per-service brand colors (footer lesson) */
	color: var(--sc-ink) !important;
	display: flex;
	align-items: center;
	justify-content: center;
}
.page-id-111 .as-social-row .wp-social-link a {
	padding: 0;
	color: inherit;
	line-height: 0;
}
.page-id-111 .as-social-row .wp-social-link svg {
	width: 16px;
	height: 16px;
	fill: currentColor;
}

/* — bio column typography — */
.page-id-111 .as-section-about h2.as-about-bio-heading {
	font-size: 1.8rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 0 0 20px !important;
	text-align: start;
	letter-spacing: normal; /* theme -0.02em kills live's 2-line wrap */
}
.page-id-111 .as-section-about .wp-block-column > p {
	font-size: 1.1rem;
	font-family: 'Inter', sans-serif;
	line-height: 1.8;
	color: var(--sc-ink-light);
	margin: 0 0 20px !important;
}
.page-id-111 .as-section-about h3.as-about-subheading {
	font-size: 1.4rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 40px 0 16px !important; /* live gap 40 = collapsed max(p mb 20, h3 mt 40) */
	letter-spacing: normal;
}

/* — badge cards — */
.page-id-111 .as-about-badges {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin: 40px 0 !important;
	max-width: none;
}
.page-id-111 .as-about-badge-card {
	text-align: center;
	padding: 30px 20px;
	background: var(--sc-paper-2);
	border-radius: 12px;
	margin: 0 !important;
}
.page-id-111 .as-about-badge-card figure.as-about-badge-icon {
	margin: 0;
	font-size: 1rem;   /* live line-box context (16/27.2) — the 15.92px card */
	line-height: 1.7;  /* inheritance lesson from R-C */
}
.page-id-111 .as-about-badge-card figure.as-about-badge-icon img {
	display: inline; /* live quirk: inline img on the BASELINE — its 8px descender is part of the geometry */
	vertical-align: baseline;
	width: 60px;
	height: auto;
	margin-bottom: 12px;
}
.page-id-111 .as-about-badge-card h4 {
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 0 0 4px !important;
	letter-spacing: normal;
}
.page-id-111 .as-about-badge-card p {
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--sc-ink-light); /* live --ink-light resolves #444, not the #555 HTML fallback */
	margin: 0 !important;
}

/* — credentials card — */
.page-id-111 .as-about-card {
	background: var(--sc-paper-2);
	border-radius: 12px;
	padding: 30px;
	margin: 40px 0 0 !important;
	max-width: none;
}
.page-id-111 .as-about-card h3.as-about-card-heading {
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 0 0 16px !important;
	letter-spacing: normal;
}
.page-id-111 .as-about-card p.as-about-card-line {
	font-size: 1rem;
	line-height: 1.7;
	color: var(--sc-ink);
	margin: 0 0 8px !important;
}
.page-id-111 .as-about-card p.as-about-card-line:last-child {
	margin-bottom: 0 !important;
}
.page-id-111 .as-about-card .as-about-card-linkline {
	margin: 0 0 8px !important;
	gap: 5px; /* live: one inline space between label and link */
	align-items: baseline;
}
.page-id-111 .as-about-card .as-about-card-linkline p.as-about-card-line,
.page-id-111 .as-about-card .as-about-card-linkline .wp-block-buttons {
	margin: 0 !important;
	gap: 0;
}
.page-id-111 .as-about-card .as-about-card-link .wp-block-button__link {
	background: none;
	border: 0;
	padding: 0;
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.7;
	color: rgb(0, 0, 238); /* live: browser-default link blue + underline */
	text-decoration: underline;
	border-radius: 0;
}

/* ============================================================
   v0.7.2 — R-E /services/ body: live per-service detail rows
   (page-scoped .page-id-122; loop 'detail' layout via
   as_services_page_layout). Live probe 2026-08-12: rows grid
   80/1032 gap 40 mb 60, tile 80×80 r20 paper-2 fs 2.5rem,
   h2 25.6/30.72 mb16, p 16.8/30.24 #444 mb16.
   ============================================================ */
.page-id-122 .as-section-services {
	background: #fff !important; /* explicit pin — striping outranks single-class bg */
	padding-top: 80px;
	padding-bottom: 80px;
}
.page-id-122 .as-services-detail {
	max-width: 1152px; /* qualified: beats WP constrained 1140px cap */
	margin: 0 auto;
}
.page-id-122 .as-service-detail {
	display: grid;
	grid-template-columns: 80px 1032px;
	gap: 40px;
	margin: 0 0 60px;
	padding-bottom: 60px; /* live: 60px inside + 1px separator between services */
	border-bottom: 1px solid #e8e8e8;
}
.page-id-122 .as-service-detail:last-child {
	margin-bottom: 40px; /* live keeps 40 before the section padding */
	padding-bottom: 0;
	border-bottom: 0;
}
.page-id-122 .as-service-detail__icon {
	width: 80px;
	height: 80px;
	background: var(--sc-paper-2);
	border-radius: 20px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 2.5rem;
	line-height: 1;
}
.page-id-122 .as-service-detail__body h2 {
	font-size: 1.6rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	text-align: start;
	letter-spacing: normal; /* wrap lesson from R-D */
	margin: 0 0 16px;
}
.page-id-122 .as-service-detail__body p {
	font-size: 1.05rem;
	line-height: 1.8;
	color: var(--sc-ink-light);
	margin: 0 0 16px;
}
.page-id-122 .as-service-detail__body p:last-child {
	margin-bottom: 0;
}

/* ============================================================
   v0.7.4 — R-F /testimonials/: live blog-post-full article column
   (page-scoped .page-id-2487; loop 'article' layout). Live probe
   2026-08-12: frame #fafaf8 pad 140/80, inner 760/pad 24 → 712 col,
   quotes borderless, cite italic, default-blue links.
   ============================================================ */
.page-id-2487 .as-section-testimonials {
	background: #fafaf8 !important; /* overrides the section's navy cards skin */
	padding-top: 140px;
	padding-bottom: 80px;
	color: var(--sc-ink);
}
.page-id-2487 .as-article {
	max-width: 760px;
	box-sizing: border-box; /* live inner is 760 border-box → 712 content */
	margin: 0 auto;
	padding: 0 24px;
	text-align: start;
}
.page-id-2487 .as-article hr.wp-block-separator {
	border: 0;
	border-top: 2px solid rgb(128, 128, 128);
	height: 0;
	width: 100%;
	margin: 0; /* live: flush — the following heading's margin-top makes the gap */
	background: none;
	opacity: 1;
}
.page-id-2487 .as-article h1 {
	font-size: 2.4rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 0 0 16px;
}
.page-id-2487 .as-article h2 {
	font-size: 1.5rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 40px 0 16px;
}
.page-id-2487 .as-article h3 {
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--sc-ink);
	margin: 28px 0 12px;
}
.page-id-2487 .as-article p {
	font-size: 1.05rem;
	line-height: 1.8;
	color: var(--sc-ink-light);
	margin: 0 0 20px;
}
.page-id-2487 .as-article blockquote {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-style: normal;
}
.page-id-2487 .as-article blockquote cite {
	display: block;
	font-size: 1rem;
	line-height: 1.7; /* live 27.2px — theme cite rule renders tighter */
	font-style: italic;
	font-weight: 400;
	color: var(--sc-ink);
	margin: 0;
}
.page-id-2487 .as-article ul.wp-block-list {
	margin: 0 0 20px;
	padding-left: 24px;
	list-style: disc;
}
.page-id-2487 .as-article ul.wp-block-list li {
	font-size: 1.05rem;
	line-height: 1.8;
	color: var(--sc-ink-light);
	margin: 0 0 8px;
}
.page-id-2487 .as-article a {
	color: rgb(0, 0, 238); /* live: browser-default links */
	text-decoration: underline;
}

/* ============================================================ v0.7.7
   R-G /blogs/: live's LIGHT blog hero (bg #fafaf8, pill search form) — its own
   blog_hero section, so the shared navy page_header skin never applies — plus
   the category pill bar, 12-card index grid, and pagination rendered by the
   blog-loop 'index' layout. Live geometry: hero 140/60 pad, sub 520 cap,
   search 560; listing pad-top 60, content 1152, 3×368 grid gap 24. */
.as-section-blog_hero {
	background: var(--sc-bg) !important;
	text-align: center;
	padding: 140px 24px 60px;
}
div.as-section-blog_hero > * { margin-block-start: 0; max-width: 1152px; }
.as-section-blog_hero .as-eyebrow {
	display: inline-block;
	font-size: 0.78rem !important; /* stamped x-small preset carries !important */
	line-height: 1.7;
	color: var(--sc-accent) !important;
	margin: 0 0 12px;
}
.as-section-blog_hero h1 {
	color: var(--sc-ink);
	font-size: 2.4rem !important; /* preset classes carry !important */
	font-weight: 600; /* live: 600, not the heading default 700 */
	line-height: 1.2;
	margin: 0 auto 12px;
}
.as-section-blog_hero p:not(.as-eyebrow) {
	color: var(--sc-muted);
	font-size: 1.05rem;
	line-height: 1.7;
	max-width: 520px;
	margin: 0 auto 36px;
}
.as-section-blog_hero .as-blog-search { max-width: 560px; margin: 0 auto; }
.as-blog-search__wrap {
	display: flex;
	align-items: center;
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	border-radius: 999px;
	padding: 6px 6px 6px 20px;
}
.as-blog-search__icon { color: var(--sc-muted); flex: none; }
.as-blog-search__input {
	flex: 1;
	border: 0;
	background: transparent;
	font-size: 0.95rem;
	line-height: 23px; /* live input is 39px tall (23 line + 16 pad) */
	color: var(--sc-ink);
	padding: 8px 12px;
	outline: none;
	font-family: inherit;
}
.as-blog-search__btn {
	background: var(--sc-accent);
	color: #fff;
	border: 0;
	border-radius: 999px;
	font-size: 0.88rem;
	font-weight: 600;
	line-height: 19px; /* live button is 37px tall (19 line + 18 pad) */
	padding: 9px 24px;
	cursor: pointer;
	font-family: inherit;
}

/* Listing: live pads 60/100 (stamped section preset is 100/100). */
body.page-id-86 .as-section-blog_index { padding-top: 60px; }
body.page-id-86 .as-section-blog_index > * { max-width: 1152px; }
.as-blogidx-cats {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	padding-bottom: 24px; /* live: bar box = pills + 24 pad */
	margin: 0;
}
/* WP prints layout styles late — pin the listing rhythm over block-gap. */
.as-blogidx-grid { margin-block-start: 32px !important; }
.as-blogidx-pagination { margin-block-start: 48px !important; }
.as-blogidx-pill {
	display: inline-flex;
	align-items: center;
	padding: 8px 18px;
	border-radius: 999px;
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	font-size: 0.85rem;
	font-weight: 600;
	line-height: 1.7;
	color: var(--sc-ink-light);
	text-decoration: none;
}
.as-blogidx-pill.is-active { background: var(--sc-accent); border-color: var(--sc-accent); color: #fff; }
.as-blogidx-pill { box-sizing: border-box; }
.as-blogidx-pill__count {
	font-size: 0.68rem;
	font-weight: 700;
	line-height: 1.7;
	color: var(--sc-muted);
	background: var(--sc-paper-2);
	border-radius: 999px;
	padding: 1px 6px;
	margin-left: 0;
}
.as-blogidx-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}
.as-blogidx-card {
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	border-radius: var(--sc-radius);
	overflow: hidden;
}
.as-blogidx-card > a { display: block; color: inherit; text-decoration: none; }
/* height:auto beats the stamped height="" attr so aspect-ratio can apply. */
.as-blogidx-card__img { width: 100%; height: auto; aspect-ratio: 16/10; object-fit: cover; display: block; }
.as-blogidx-card__body { padding: 24px; }
.as-blogidx-card__tag {
	display: inline-block;
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.7;
	color: var(--sc-accent);
	background: var(--sc-paper-2); /* live: grey pill behind the blue tag */
	border-radius: 999px;
	padding: 4px 12px;
	margin: 0 0 10px;
}
.as-blogidx-card__title {
	font-size: 1.08rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--sc-ink);
	margin: 0 0 8px;
}
.as-blogidx-card__excerpt {
	font-size: 0.88rem;
	color: var(--sc-muted);
	line-height: 1.6;
	margin: 0;
}
.as-blogidx-card__meta {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 0.82rem;
	color: var(--sc-muted);
	margin-top: 12px;
}
.as-blogidx-card__more { font-size: 0.7rem; font-weight: 600; color: var(--sc-accent); }
.as-blogidx-pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 5px;
	margin: 48px auto 0;
}
.as-blogidx-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box; /* live: 42 includes the border */
	min-width: 42px;
	height: 42px;
	border-radius: 999px;
	background: var(--sc-paper);
	border: 1px solid var(--sc-border);
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--sc-ink-light);
	text-decoration: none;
}
.as-blogidx-pagination .page-numbers.current { background: var(--sc-accent); border-color: var(--sc-accent); color: #fff; }
.as-blogidx-pagination .page-numbers.dots { background: transparent; border: 0; min-width: 22px; color: var(--sc-muted); }
.as-blogidx-pagination .page-numbers.next,
.as-blogidx-pagination .page-numbers.prev { width: auto; padding: 0 18px; }
/* v0.7.8 — R-G probe round 1: img height:auto (attr beat aspect-ratio),
   search input/btn line-heights pinned to live's 39/37, h1 weight 600.
   v0.7.9 — R-G probe round 2, live computed spacing: cats pad-b 24 + gap 32
   (pinned !important over late WP layout styles), grey pill behind card tag,
   h3 mb 8 / excerpt mb 0 / meta mt 12, pagination border-box + mt 48.
   v0.7.10 — clamps dropped: live does NOT clamp card titles/excerpts (its
   cards vary 483–509 and grid rows stretch); uniform clamping was ours. */

/* ============================================================ v0.8.0
   GAP 5 M-A (2026-08-12) — MOBILE STRUCTURAL COLLAPSE.
   Root cause of the 390px horizontal scroll was NOT the nav: a fixed nav with
   left/right:0 reports the DOCUMENT scroll width, so it measured 1176 on
   /about/ and /services/ while merely reflecting the real offenders — the
   fixed-px grid tracks below (364px+728px, 80px+1032px). Collapse those and
   the nav follows. No overflow-x:hidden band-aid anywhere; that hides the
   symptom and the next one lands unseen.
   Breakpoint 768 = live's, and already our burger breakpoint (D-M).
   Canonical baseline for core-rendered grids lives in the theme's
   sections.css (D-N); these are the fyhs page-scoped skins, which out-rank it.
   COLLAPSED because live collapses them; badges (3-up) and the contact name
   row (2-up) are deliberately LEFT multi-column — live keeps both at 390. */
@media (max-width: 768px) {
	.page-id-111 .as-section-about > .wp-block-columns {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	.page-id-122 .as-service-detail {
		grid-template-columns: 1fr;
		gap: 20px;
	}
	.page-id-130 .as-section-communities .as-cshow-grid {
		grid-template-columns: 1fr;
	}
	.as-blogidx-grid {
		grid-template-columns: 1fr;
	}
	.page-id-118 .as-section-contact .wp-block-columns {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	div.as-fyhs-footer > .as-fyhs-footer__grid {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

/* ============================================================ v0.9.0
   GAP 5 M-C (2026-08-17) — MOBILE TYPE SCALE.
   Live runs TWO h1 sizes on mobile, not six per-route values:
     hero pages (about/services/communities/community/blogs/contact) 1.8rem
     article pages (testimonials, faq)                               2.4rem
   ...both at weight 600. Clone rendered everything at 2.4rem/700, so this is
   one hero rule + one weight correction, not a route-by-route pass.
   Every cta-family h2 on live is 1.8rem/600 on EVERY route, uniformly.
   MEASURED, not assumed: live values captured per route by
   editor-recon/diag-mc3.js at 390x844 (log /tmp/diag-mc3.log).
   !important is required on font-size only: these headings carry WP's
   .has-xx-large-font-size preset class, which theme.json emits with
   !important, so an unflagged rule loses regardless of specificity.
   Desktop is untouched — everything here is inside the 768px query that
   gap-4 desktop work must survive. */
@media (max-width: 768px) {

	/* --- hero h1 -> live's 28.8/34.56 w600 ---------------------------- */
	/* :has() rather than page-ids so this holds for ANY site with an FAQ
	   page: FAQ reuses the page_header section but live styles it as an
	   ARTICLE (2.4rem), so it must keep the larger size. Testimonials needs
	   no exclusion — it has no page_header section at all. */
	.as-section-page_header h1,
	.as-section-community_hero h1,
	.as-section-blog_hero h1 {
		font-size: 1.8rem !important;
		line-height: 1.2;
		font-weight: 600;
	}
	body:has(.as-section-faq) .as-section-page_header h1 {
		font-size: 2.4rem !important;   /* live keeps article h1 at 38.4 */
		line-height: 1.2;
		font-weight: 600;               /* was 700 — weight delta no probe caught */
	}

	/* --- cta-family h2 -> live's 28.8/34.56 w600 ---------------------- */
	/* One rule: live renders all five of these at the same size on mobile. */
	.as-section-cta h2,
	.as-section-page_cta h2,
	.as-section-community_cta h2,
	.as-section-community_search h2,
	.as-section-community_faq h2 {
		font-size: 1.8rem !important;
		line-height: 1.2;
		font-weight: 600;
	}

	/* --- article body headings: weight only --------------------------- */
	/* Sizes already match live (faq 22, testimonials 24); the weight did not. */
	.as-section-faq h2 {
		font-weight: 600;
	}
}

/* ============================================================ v0.9.1
   M-C CORRECTION — specificity, not selectors, was the bug.
   v0.9.0's .as-section-page_header h1 (0,1,1) and .as-section-cta h2 (0,1,1)
   were both outranked by desktop rules THIS FILE already carries at higher
   specificity WITH !important:
       .page-template-page-astype .as-section-page_header h1   (0,2,1)!
       .as-section-cta .as-cover__inner h2                     (0,3,1)!
   Those earlier rules use !important because WP's stamped preset classes
   (.has-xx-large-font-size) resolve through a fluid clamp() that carries
   !important — so every size in this file is pinned, and any mobile override
   must MATCH the pinned selector's specificity or lose silently.
   The v0.9.0 rules that DID land (community_hero, blog_hero, page_cta,
   community_search, community_faq) had no such high-specificity desktop twin,
   which is exactly why the same declaration block applied unevenly.
   Also corrected: the FAQ route frame keys on .as-faqp (this file's existing
   convention), not .as-section-faq, so the article-h1 exclusion now matches
   the frame it is meant to pair with.
   `lesson:css` — in a stylesheet where !important is the norm, !important
   grants nothing; specificity still decides. Match the selector you mean to
   override, verbatim. */
@media (max-width: 768px) {

	/* hero h1 -> live 28.8/34.56 w600, at the pinned rule's own specificity */
	.page-template-page-astype .as-section-page_header h1 {
		font-size: 1.8rem !important;
		line-height: 1.2;
		font-weight: 600;
	}

	/* ...but the FAQ route is an ARTICLE on live and keeps 2.4rem. (0,3,2)
	   outranks the rule directly above, which is the point. */
	body:has(.as-faqp) .page-template-page-astype .as-section-page_header h1 {
		font-size: 2.4rem !important;
		line-height: 1.2;
		font-weight: 600;
	}

	/* global CTA h2 -> live 28.8/34.56 w600 */
	.as-section-cta .as-cover__inner h2 {
		font-size: 1.8rem !important;
		line-height: 1.2;
		font-weight: 600;
	}
}

/* ============================================================ v0.9.2
   STICKY MOBILE CALL BAR (2026-08-17) — restores an element the clone never
   had. Eli spotted it; every geometry/type gate had passed over it, because
   nothing was asserting that interactive elements EXIST. New probe-cta.js
   now gates this class of defect permanently.
   Live's element: div.mobile-cta#mobileCta, body-level, position:fixed,
   mobile-only, one tel: link. Measured off live at 390x844:
     wrapper  padding 12px 20px
     link     display block, bg #37B6E9, #fff, radius 999px,
              font 15.2px/700 Inter, padding 14px, text-align center
   Breakpoint verified by sweep: visible at 768 and below, hidden at 800+ —
   the same 768 we already use for grids and type (D-M), so no new system.
   DELIBERATE DEVIATION: live slides the bar in/out on scroll via JS
   (inline transform:translateY(100%) at rest). Ours is always visible on
   mobile — CSS only, no JS, nothing to break, and the call target is never
   more than a thumb away. Flagged for Eli; revert = add the scroll handler.
   PLACEMENT: it lives in the p3scott header template part (DB post 3508),
   NOT in a shared theme file — same pattern as the 08-10 header override.
   position:fixed means DOM position is visually irrelevant, so riding the
   existing part avoids editing any shared template. It stays fully
   Site-Editor editable: the client can change number and label. */
.as-mobile-cta {
	display: none;
}
@media (max-width: 768px) {
	.as-mobile-cta {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 999;
		padding: 12px 20px;
		margin: 0;
		/* box-sizing so the 20px side padding stays INSIDE 100vw — live's own
		   bar reports 459px wide in a 390px viewport (it overflows). Per D-O
		   we fix past live's bleed rather than reproduce it. */
		box-sizing: border-box;
	}
	.as-mobile-cta .wp-block-button__link,
	.as-mobile-cta__btn .wp-block-button__link {
		display: block;
		width: 100%;
		box-sizing: border-box;
		background: #37b6e9;
		color: #fff;
		border-radius: 999px;
		font-family: Inter, sans-serif;
		font-size: 15.2px;
		font-weight: 700;
		line-height: 1.2;
		padding: 14px;
		text-align: center;
		text-decoration: none;
	}
	.as-mobile-cta .wp-block-button__link:hover {
		background: #2ea3d4;
		color: #fff;
	}
}

/* ============================================================ v0.9.3
   CALL BAR SPECIFICITY FIX — caught by the desktop regression gate, which is
   why that gate exists: every desktop route grew ~50px and headerH went 0->51.
   `.as-mobile-cta` is (0,1,0) and WP emits `.wp-block-buttons.is-layout-flex
   { display:flex }` at (0,2,0), so `display:none` lost and the bar rendered
   in-flow on desktop. On mobile it still looked right only because
   position:fixed is uncontested, so it left the flow anyway.
   This is the SECOND instance today of the same root cause (see v0.9.1).
   Standing rule for this file: when overriding `display` on a core block
   wrapper, qualify with the block's own class — `.wp-block-buttons.x`, never
   bare `.x`. WP's layout classes are always two-class selectors. */
.wp-block-buttons.as-mobile-cta {
	display: none;
}
@media (max-width: 768px) {
	.wp-block-buttons.as-mobile-cta {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 999;
		padding: 12px 20px;
		margin: 0;
		box-sizing: border-box;
		gap: 0;
	}
	.wp-block-buttons.as-mobile-cta .wp-block-button {
		width: 100%;
		margin: 0;
	}
}

/* ---------------------------------------------------------------------------
   v0.9.4 — mobile call bar: the BAR, not just the pill  (2026-08-17)
   ---------------------------------------------------------------------------
   v0.9.3 shipped a correctly-positioned pill with no plate behind it, so the
   button floated naked over page content (screenshot: it sat on top of Scott
   headshot on /about/). Live wraps the same pill in a frosted bar:
       background rgba(250,250,248,.92) + backdrop-filter blur(16px)
       + border-top 1px solid #e8e8e4
   Measured live vs clone at 390x844 (probe-callbar-wrap.js):
       wrapper h   live 78.8  clone 70.2
       button  h   live 53.8  clone 46.2   <- line-height 25.84 vs 18.24
   78.8 = 53.8 button + 12 + 12 padding + 1px border-top. Restoring both the
   plate and the line-height reproduces live exactly.

   NOT copied from live (Eli ruling 2026-08-17): live slides the bar in/out on
   scroll via JS (translateY(78.84px) at scroll 0 -> translateY(0) at 1200).
   Ours stays visible. CSS-only, no JS, phone CTA always reachable. This is a
   deliberate divergence — do not "fix" it to match live.

   line-height is set as a ratio (1.7 x 15.2px = 25.84px) rather than a pixel
   value so it survives any future change to the button font size.
   Selector is .wp-block-buttons.as-mobile-cta .wp-block-button__link (0,3,0)
   per the v0.9.1/v0.9.3 lesson: !important grants nothing here, specificity
   decides, and WP layout classes are always two-class selectors.
   --------------------------------------------------------------------------- */
@media (max-width: 768px) {
	.wp-block-buttons.as-mobile-cta {
		background: rgba(250, 250, 248, 0.92);
		-webkit-backdrop-filter: blur(16px);
		backdrop-filter: blur(16px);
		border-top: 1px solid #e8e8e4;
	}
	.wp-block-buttons.as-mobile-cta .wp-block-button__link {
		line-height: 1.7 !important;
	}
}

/* ---------------------------------------------------------------------------
   v0.9.5 — phone CTA buttons are pills, not rounded rects  (2026-08-17)
   ---------------------------------------------------------------------------
   Measured live vs clone at 390x844 across all 8 inner routes
   (diag-btnradius.js): every white "Call (858) 405-0002" CTA renders
   border-radius 999px on live and 6px on the clone. 12 buttons, 8 routes:
     about 2 | services 2 | communities 2 | delmar 2 | testimonials 1
     | faq 1 | blogs 1 | contact 1
   The 6px comes from the global theme button radius; nothing was overriding
   it for phone CTAs.

   Scope is deliberately narrow. The same probe confirmed EVERY other button
   already matches live exactly — community cards 16px, "Browse All ..." 999px,
   the 16 blog filter pills 999px, contact "Send Message" 999px. So this rule
   targets the phone CTA by href rather than by section: the href is what
   identifies these buttons, they appear in more than one section, and a
   section-scoped selector would have to be repeated per route.

   Specificity: a.wp-block-button__link[href^="tel:"] is (0,2,1), which beats
   the (0,1,0) theme button rule on its own. The !important is belt-and-braces
   only — per the v0.9.1/v0.9.3 lesson it is specificity doing the work here,
   not the !important.

   No-op on the fixed mobile call bar (already 999px via v0.9.3).
   --------------------------------------------------------------------------- */
a.wp-block-button__link[href^="tel:"] {
	border-radius: 999px !important;
}

/* ---------------------------------------------------------------------------
   v0.9.6 — about: sticky photo column is desktop-only  (2026-08-17, M-D)
   ---------------------------------------------------------------------------
   Line ~1542 sets:
       .page-id-111 .as-section-about .wp-block-column:first-child {
           position: sticky; top: 100px; align-self: start; }
   That is correct and deliberate for the DESKTOP two-column about layout
   (364px + 728px grid) — the portrait/credentials rail stays in view while the
   long bio scrolls beside it.

   It was never scoped to a breakpoint. The M-A/M-B round collapsed the grid to
   a single column at <=768px but did not reset the sticky, so on mobile the
   portrait card pins to the viewport and the bio text scrolls UNDERNEATH it:
   the headshot covered ~8 lines of body copy, and the star rating, the
   "295+ Five-Star Google Reviews" line and the social icon row all rendered on
   top of paragraph text. Live has no sticky element anywhere in its main.

   Why no probe caught it: sticky overlap changes NO measured value. Page height,
   scrollWidth, overflow, section count, grid column count, type scale and every
   per-element box were all still correct — about passed the 390x844 gate three
   rounds running. It was only visible in a scrolled real-viewport screenshot.
   Same blind spot class as the missing call bar: assert what the eye sees, not
   only what the box model reports.

   Specificity: the pinned rule is (0,4,0) — three classes plus :first-child.
   This override restates that selector verbatim inside the mobile media query,
   so it matches at (0,4,0) and wins on source order per the v0.9.1/v0.9.3
   lesson. No !important needed and none used.
   --------------------------------------------------------------------------- */
@media (max-width: 768px) {
	.page-id-111 .as-section-about .wp-block-column:first-child {
		position: static;
	}
}

/* ============================================================ v0.9.7
   Home video band (2026-09-07). Live's `.fyhs-vid-sec` is a deliberately
   tighter band than the canonical 100px section rhythm: 60px top and bottom,
   measured live at 1280 (section height 743 vs our 1001). Matching it here in
   the lineage rather than in canonical `sections.css`, because the tighter
   band is a fyhs look decision, not a template default.
   ============================================================ */
.as-section.as-section-video {
	padding-top: 60px;
	padding-bottom: 60px;
}
